summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorPaul Gardiner <paulg.artifex@glidos.net>2013-08-13 13:44:40 +0100
committerPaul Gardiner <paulg.artifex@glidos.net>2013-08-13 16:36:18 +0100
commit00fbe2446c7ca2c291b785da99f6e0b293574001 (patch)
tree9e0e2c9e28c418abfb602368483a80128fb3ec3e /include
parent7b11a823f9e35c971cc4f1719a6f9c3947a2ba47 (diff)
downloadmupdf-00fbe2446c7ca2c291b785da99f6e0b293574001.tar.xz
Signature creation
Diffstat (limited to 'include')
-rw-r--r--include/mupdf/pdf/crypt.h26
-rw-r--r--include/mupdf/pdf/document.h19
-rw-r--r--include/mupdf/pdf/field.h1
-rw-r--r--include/mupdf/pdf/object.h3
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