summaryrefslogtreecommitdiff
path: root/platform/android/jni
diff options
context:
space:
mode:
authorPaul Gardiner <paulg.artifex@glidos.net>2013-08-22 15:04:18 +0100
committerPaul Gardiner <paulg.artifex@glidos.net>2013-08-27 09:53:40 +0100
commitae69f90ec82a8f19557c385c1bb25a3fb4fd5ae3 (patch)
treec620c60d892dfdc0621aef412f1cb6da4d633c88 /platform/android/jni
parent57ceaf3fe8ea3c180d52d6c01b083bc293835664 (diff)
downloadmupdf-ae69f90ec82a8f19557c385c1bb25a3fb4fd5ae3.tar.xz
Android: add signature checking
Diffstat (limited to 'platform/android/jni')
-rw-r--r--platform/android/jni/mupdf.c48
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)
{