diff options
author | Paul Gardiner <paulg.artifex@glidos.net> | 2013-08-22 15:04:18 +0100 |
---|---|---|
committer | Paul Gardiner <paulg.artifex@glidos.net> | 2013-08-27 09:53:40 +0100 |
commit | ae69f90ec82a8f19557c385c1bb25a3fb4fd5ae3 (patch) | |
tree | c620c60d892dfdc0621aef412f1cb6da4d633c88 /platform/android/jni | |
parent | 57ceaf3fe8ea3c180d52d6c01b083bc293835664 (diff) | |
download | mupdf-ae69f90ec82a8f19557c385c1bb25a3fb4fd5ae3.tar.xz |
Android: add signature checking
Diffstat (limited to 'platform/android/jni')
-rw-r--r-- | platform/android/jni/mupdf.c | 48 |
1 files changed, 47 insertions, 1 deletions
diff --git a/platform/android/jni/mupdf.c b/platform/android/jni/mupdf.c index 889abe07..a5bae5a7 100644 --- a/platform/android/jni/mupdf.c +++ b/platform/android/jni/mupdf.c @@ -42,7 +42,8 @@ enum NONE, TEXT, LISTBOX, - COMBOBOX + COMBOBOX, + SIGNATURE }; typedef struct rect_node_s rect_node; @@ -747,6 +748,7 @@ static char *widget_type_string(int t) case PDF_WIDGET_TYPE_TEXT: return "text"; case PDF_WIDGET_TYPE_LISTBOX: return "listbox"; case PDF_WIDGET_TYPE_COMBOBOX: return "combobox"; + case PDF_WIDGET_TYPE_SIGNATURE: return "signature"; default: return "non-widget"; } } @@ -2169,11 +2171,55 @@ JNI_FN(MuPDFCore_getFocusedWidgetTypeInternal)(JNIEnv * env, jobject thiz) case PDF_WIDGET_TYPE_TEXT: return TEXT; case PDF_WIDGET_TYPE_LISTBOX: return LISTBOX; case PDF_WIDGET_TYPE_COMBOBOX: return COMBOBOX; + case PDF_WIDGET_TYPE_SIGNATURE: return SIGNATURE; } return NONE; } +JNIEXPORT jboolean JNICALL +JNI_FN(MuPDFCore_getFocusedWidgetSignatureState)(JNIEnv * env, jobject thiz) +{ + globals *glo = get_globals(env, thiz); + pdf_document *idoc = pdf_specifics(glo->doc); + pdf_widget *focus; + + if (idoc == NULL) + return JNI_FALSE; + + focus = pdf_focused_widget(idoc); + + if (focus == NULL) + return JNI_FALSE; + + return pdf_dict_gets(((pdf_annot *)focus)->obj, "V") ? JNI_TRUE : JNI_FALSE; +} + +JNIEXPORT jstring JNICALL +JNI_FN(MuPDFCore_checkFocusedSignatureInternal)(JNIEnv * env, jobject thiz) +{ + globals *glo = get_globals(env, thiz); + pdf_document *idoc = pdf_specifics(glo->doc); + pdf_widget *focus; + char ebuf[256] = "Failed"; + + if (idoc == NULL) + goto exit; + + focus = pdf_focused_widget(idoc); + + if (focus == NULL) + goto exit; + + if (pdf_check_signature(idoc, focus, glo->current_path, ebuf, sizeof(ebuf))) + { + strcpy(ebuf, "Signature is valid"); + } + +exit: + return (*env)->NewStringUTF(env, ebuf); +} + JNIEXPORT jobject JNICALL JNI_FN(MuPDFCore_waitForAlertInternal)(JNIEnv * env, jobject thiz) { |