diff options
author | Paul Gardiner <paulg.artifex@glidos.net> | 2013-08-13 13:44:40 +0100 |
---|---|---|
committer | Paul Gardiner <paulg.artifex@glidos.net> | 2013-08-13 16:36:18 +0100 |
commit | 00fbe2446c7ca2c291b785da99f6e0b293574001 (patch) | |
tree | 9e0e2c9e28c418abfb602368483a80128fb3ec3e /include | |
parent | 7b11a823f9e35c971cc4f1719a6f9c3947a2ba47 (diff) | |
download | mupdf-00fbe2446c7ca2c291b785da99f6e0b293574001.tar.xz |
Signature creation
Diffstat (limited to 'include')
-rw-r--r-- | include/mupdf/pdf/crypt.h | 26 | ||||
-rw-r--r-- | include/mupdf/pdf/document.h | 19 | ||||
-rw-r--r-- | include/mupdf/pdf/field.h | 1 | ||||
-rw-r--r-- | include/mupdf/pdf/object.h | 3 |
4 files changed, 48 insertions, 1 deletions
diff --git a/include/mupdf/pdf/crypt.h b/include/mupdf/pdf/crypt.h index 79a72aaa..0e692941 100644 --- a/include/mupdf/pdf/crypt.h +++ b/include/mupdf/pdf/crypt.h @@ -23,6 +23,25 @@ unsigned char *pdf_crypt_key(pdf_document *doc); void pdf_print_crypt(pdf_crypt *crypt); #endif +typedef struct pdf_designated_name_s +{ + char *cn; + char *o; + char *ou; + char *email; + char *c; +} +pdf_designated_name; + +void pdf_free_designated_name(pdf_designated_name *dn); + + +pdf_signer *pdf_read_pfx(fz_context *ctx, char *sigfile, char *password); +pdf_signer *pdf_keep_signer(pdf_signer *signer); +void pdf_drop_signer(pdf_signer *signer); +pdf_designated_name *pdf_signer_designated_name(pdf_signer *signer); +void pdf_write_digest(pdf_document *doc, char *filename, pdf_obj *byte_range, int digest_offset, int digest_length, pdf_signer *signer); + /* pdf_signature_widget_byte_range: retrieve the byte range for a signature widget */ @@ -34,8 +53,13 @@ int pdf_signature_widget_byte_range(pdf_document *doc, pdf_widget *widget, int ( int pdf_signature_widget_contents(pdf_document *doc, pdf_widget *widget, char **contents); /* - fz_check_signature: check a signature's certificate chain and digest + pdf_check_signature: check a signature's certificate chain and digest */ int pdf_check_signature(pdf_document *doc, pdf_widget *widget, char *file, char *ebuf, int ebufsize); +/* + pdf_sign_signature: sign a signature form field +*/ +void pdf_sign_signature(pdf_document *doc, pdf_widget *widget, char *sigfile, char *password); + #endif diff --git a/include/mupdf/pdf/document.h b/include/mupdf/pdf/document.h index 3afabfdb..a1837f4a 100644 --- a/include/mupdf/pdf/document.h +++ b/include/mupdf/pdf/document.h @@ -180,6 +180,23 @@ struct } pdf_obj_read_state_s; +typedef struct pdf_signer_s pdf_signer; + +/* Unsaved signature fields */ +typedef struct pdf_unsaved_sig_s pdf_unsaved_sig; + +struct pdf_unsaved_sig_s +{ + pdf_obj *field; + int byte_range_start; + int byte_range_end; + int contents_start; + int contents_end; + pdf_signer *signer; + pdf_unsaved_sig *next; +}; + + struct pdf_document_s { fz_document super; @@ -256,6 +273,8 @@ struct pdf_document_s pdf_js *js; int recalculating; int dirty; + pdf_unsaved_sig *unsaved_sigs; + void (*update_appearance)(pdf_document *doc, pdf_annot *annot); pdf_doc_event_cb *event_cb; diff --git a/include/mupdf/pdf/field.h b/include/mupdf/pdf/field.h index 83a626f4..d31051a2 100644 --- a/include/mupdf/pdf/field.h +++ b/include/mupdf/pdf/field.h @@ -28,6 +28,7 @@ void pdf_field_set_border_style(pdf_document *doc, pdf_obj *field, char *text); void pdf_field_set_button_caption(pdf_document *doc, pdf_obj *field, char *text); void pdf_field_set_fill_color(pdf_document *doc, pdf_obj *field, pdf_obj *col); void pdf_field_set_text_color(pdf_document *doc, pdf_obj *field, pdf_obj *col); +void pdf_signature_set_value(pdf_document *doc, pdf_obj *field, pdf_signer *signer); int pdf_field_display(pdf_document *doc, pdf_obj *field); char *pdf_field_name(pdf_document *doc, pdf_obj *field); void pdf_field_set_display(pdf_document *doc, pdf_obj *field, int d); diff --git a/include/mupdf/pdf/object.h b/include/mupdf/pdf/object.h index 38c9166d..15886233 100644 --- a/include/mupdf/pdf/object.h +++ b/include/mupdf/pdf/object.h @@ -105,6 +105,9 @@ void pdf_sort_dict(pdf_obj *dict); */ void pdf_set_obj_parent(pdf_obj *obj, int num); +int pdf_obj_parent_num(pdf_obj *obj); + +int pdf_sprint_obj(char *s, int n, pdf_obj *obj, int tight); int pdf_fprint_obj(FILE *fp, pdf_obj *obj, int tight); #ifndef NDEBUG |