android: Add utility JNI function to validate proposal strings
authorTobias Brunner <tobias@strongswan.org>
Fri, 17 Nov 2017 16:26:51 +0000 (17:26 +0100)
committerTobias Brunner <tobias@strongswan.org>
Fri, 17 Nov 2017 17:11:39 +0000 (18:11 +0100)
src/frontends/android/app/src/main/java/org/strongswan/android/utils/Utils.java
src/frontends/android/app/src/main/jni/libandroidbridge/charonservice.c

index b5c447f..f2e8e00 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Copyright (C) 2014 Tobias Brunner
- * Hochschule fuer Technik Rapperswil
+ * Copyright (C) 2014-2017 Tobias Brunner
+ * HSR Hochschule fuer Technik Rapperswil
  *
  * This program is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License as published by the
@@ -37,4 +37,13 @@ public class Utils
                }
                return new String(hex);
        }
+
+       /**
+        * Validate the given proposal string
+        *
+        * @param ike true for IKE, false for ESP
+        * @param proposal proposal string
+        * @return true if valid
+        */
+       public native static boolean isProposalValid(boolean ike, String proposal);
 }
index 2891eab..06c5cad 100644 (file)
@@ -716,3 +716,29 @@ JNI_METHOD(CharonVpnService, initiate, void,
 
        initiate(settings);
 }
+
+/**
+ * Utility function to verify proposal strings (static, so `this` is the class)
+ */
+JNI_METHOD_P(org_strongswan_android_utils, Utils, isProposalValid, jboolean,
+       jboolean ike, jstring proposal)
+{
+       proposal_t *prop;
+       char *str;
+       bool valid;
+
+       dbg = dbg_android;
+
+       if (!library_init(NULL, "charon"))
+       {
+               library_deinit();
+               return FALSE;
+       }
+       str = androidjni_convert_jstring(env, proposal);
+       prop = proposal_create_from_string(ike ? PROTO_IKE : PROTO_ESP, str);
+       valid = prop != NULL;
+       DESTROY_IF(prop);
+       free(str);
+       library_deinit();
+       return valid;
+}