syntax = "proto3";
package ironpdfengineproto;
import "google/protobuf/timestamp.proto";
import "basic.proto";

option java_package = "com.ironsoftware.ironpdf.internal.proto";
option java_multiple_files = true;

message PdfiumSignRequestStreamP {
  oneof request {
    InfoP info = 1;
    bytes certificate_file_bytes_chunk = 2;
    bytes signature_image_chunk = 3;
  }
  message InfoP {
    PdfDocumentP document = 1;
    string password = 2;
    optional google.protobuf.Timestamp signature_date = 3;
    optional string signing_contact = 4;
    optional string signing_location = 5;
    optional string signing_reason = 6;
    PdfiumSignaturePermissionsP signature_permission = 7;
    optional string time_stamp_url = 8;
    optional string internal_name = 9;
    optional int32 page_index = 10;
    optional int32 signature_image_x = 11;
    optional int32 signature_image_y = 12;
    optional int32 signature_image_w = 13;
    optional int32 signature_image_h = 14;
    optional string contact_information = 15;
  }
}

message GetDataToSignRequestStreamP {
    PdfDocumentP document = 1;
    optional int32 page_index = 2;
    PdfiumSignaturePermissionsP signature_permission = 3;
    string internal_name = 4;
    string signing_name = 5;
    string signing_contact = 6;
    string signing_location = 7;
    string filter = 8;
    string sub_filter = 9;
    int32 sign_placeholder_len = 10;
    bytes img_bytes = 11;
    bytes img_alpha = 12;
    int32 img_x = 13;
    int32 img_y = 14;
    int32 img_wight = 15;
    int32 img_height = 16;
    int32 img_d_width = 17;
    int32 img_d_height = 18;
    int32 bytes_per_pixel = 19;
    int32 is_jpeg = 20;
}

message PdfiumSignResultP {
  oneof result_or_exception{
    int32 result = 1;
    RemoteExceptionP exception = 2;
  }
}

message GetDataToSignResultP {
  oneof result_or_exception{
    DataToSignResultP result = 1;
    RemoteExceptionP exception = 2;
  }
}

message DataToSignResultP {
   bytes data_to_sign = 1;
   bytes pdf_bytes = 2;
   int32 sign_start_in_bytes = 3;
   int32 sign_end_in_bytes = 4;
   int32 signature_index = 5;
}

message PdfiumRemoveSignaturesRequestP {
  PdfDocumentP document = 1;
}

message PdfiumSignaturePermissionsP {
  int32 enum_value = 1;
}

message PdfiumGetVerifiedSignatureRequestStreamP {
  oneof request {
    InfoP info = 1;
    bytes data_chunk = 2;
  }
  message InfoP {
    PdfDocumentP document = 1;
  }
}

message PdfiumGetVerifySignatureResultP {
  oneof result_or_exception{
    PdfiumVerifiedSignatureCollectionP verified_signatures = 1;
    RemoteExceptionP exception = 2;
  }
}
message PdfiumGetSignatureCountResultP {
  oneof result_or_exception {
    int32 result = 1;
    RemoteExceptionP exception = 2;
  }
}
message PdfiumGetSignatureCountRequestP {
  PdfDocumentP document = 1;
}

message PdfiumVerifiedSignatureCollectionP {
  repeated PdfiumVerifiedSignatureP verified_signatures = 1;
}

message PdfiumVerifiedSignatureP {
  string signature_name = 1;
  string signing_contact = 2;
  string signing_reason = 3;
  string signing_location = 4;
  google.protobuf.Timestamp signing_date = 5;
  bool is_valid = 6;
  string filter = 7;
}

message PdfiumAddSignatureImageRequestStreamP {
  oneof request {
    InfoP info = 1;
    bytes data_chunk = 2;
  }
  message InfoP {
    PdfDocumentP document = 1;
    int32 page_index = 2;
    int32 signature_index = 3;
    double x = 4;
    double y = 5;
    double desired_width = 6;
    double desired_height = 7;
  }
}

message PdfiumGetSignatureByteRangeRequestP {
    PdfDocumentP document = 1;
    int32 index =2;
}