JNI: get ASN algo enum values dynamically in static class block, more flexible if native enum values change
parent
be7df09642
commit
4fa8642264
|
@ -9,16 +9,46 @@ extern "C" {
|
||||||
#endif
|
#endif
|
||||||
#undef com_wolfssl_wolfcrypt_Asn_MAX_ENCODED_SIG_SIZE
|
#undef com_wolfssl_wolfcrypt_Asn_MAX_ENCODED_SIG_SIZE
|
||||||
#define com_wolfssl_wolfcrypt_Asn_MAX_ENCODED_SIG_SIZE 512L
|
#define com_wolfssl_wolfcrypt_Asn_MAX_ENCODED_SIG_SIZE 512L
|
||||||
#undef com_wolfssl_wolfcrypt_Asn_DSAk
|
/*
|
||||||
#define com_wolfssl_wolfcrypt_Asn_DSAk 515L
|
* Class: com_wolfssl_wolfcrypt_Asn
|
||||||
#undef com_wolfssl_wolfcrypt_Asn_RSAk
|
* Method: getDSAk
|
||||||
#define com_wolfssl_wolfcrypt_Asn_RSAk 645L
|
* Signature: ()I
|
||||||
#undef com_wolfssl_wolfcrypt_Asn_RSAPSSk
|
*/
|
||||||
#define com_wolfssl_wolfcrypt_Asn_RSAPSSk 654L
|
JNIEXPORT jint JNICALL Java_com_wolfssl_wolfcrypt_Asn_getDSAk
|
||||||
#undef com_wolfssl_wolfcrypt_Asn_RSAESOAEPk
|
(JNIEnv *, jclass);
|
||||||
#define com_wolfssl_wolfcrypt_Asn_RSAESOAEPk 651L
|
|
||||||
#undef com_wolfssl_wolfcrypt_Asn_ECDSAk
|
/*
|
||||||
#define com_wolfssl_wolfcrypt_Asn_ECDSAk 518L
|
* Class: com_wolfssl_wolfcrypt_Asn
|
||||||
|
* Method: getRSAk
|
||||||
|
* Signature: ()I
|
||||||
|
*/
|
||||||
|
JNIEXPORT jint JNICALL Java_com_wolfssl_wolfcrypt_Asn_getRSAk
|
||||||
|
(JNIEnv *, jclass);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Class: com_wolfssl_wolfcrypt_Asn
|
||||||
|
* Method: getRSAPSSk
|
||||||
|
* Signature: ()I
|
||||||
|
*/
|
||||||
|
JNIEXPORT jint JNICALL Java_com_wolfssl_wolfcrypt_Asn_getRSAPSSk
|
||||||
|
(JNIEnv *, jclass);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Class: com_wolfssl_wolfcrypt_Asn
|
||||||
|
* Method: getRSAESOAEPk
|
||||||
|
* Signature: ()I
|
||||||
|
*/
|
||||||
|
JNIEXPORT jint JNICALL Java_com_wolfssl_wolfcrypt_Asn_getRSAESOAEPk
|
||||||
|
(JNIEnv *, jclass);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Class: com_wolfssl_wolfcrypt_Asn
|
||||||
|
* Method: getECDSAk
|
||||||
|
* Signature: ()I
|
||||||
|
*/
|
||||||
|
JNIEXPORT jint JNICALL Java_com_wolfssl_wolfcrypt_Asn_getECDSAk
|
||||||
|
(JNIEnv *, jclass);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Class: com_wolfssl_wolfcrypt_Asn
|
* Class: com_wolfssl_wolfcrypt_Asn
|
||||||
* Method: encodeSignature
|
* Method: encodeSignature
|
||||||
|
|
|
@ -35,6 +35,36 @@
|
||||||
/* #define WOLFCRYPT_JNI_DEBUG_ON */
|
/* #define WOLFCRYPT_JNI_DEBUG_ON */
|
||||||
#include <wolfcrypt_jni_debug.h>
|
#include <wolfcrypt_jni_debug.h>
|
||||||
|
|
||||||
|
JNIEXPORT jint JNICALL Java_com_wolfssl_wolfcrypt_Asn_getDSAk
|
||||||
|
(JNIEnv* env, jclass class)
|
||||||
|
{
|
||||||
|
return DSAk;
|
||||||
|
}
|
||||||
|
|
||||||
|
JNIEXPORT jint JNICALL Java_com_wolfssl_wolfcrypt_Asn_getRSAk
|
||||||
|
(JNIEnv* env, jclass class)
|
||||||
|
{
|
||||||
|
return RSAk;
|
||||||
|
}
|
||||||
|
|
||||||
|
JNIEXPORT jint JNICALL Java_com_wolfssl_wolfcrypt_Asn_getRSAPSSk
|
||||||
|
(JNIEnv* env, jclass class)
|
||||||
|
{
|
||||||
|
return RSAPSSk;
|
||||||
|
}
|
||||||
|
|
||||||
|
JNIEXPORT jint JNICALL Java_com_wolfssl_wolfcrypt_Asn_getRSAESOAEPk
|
||||||
|
(JNIEnv* env, jclass class)
|
||||||
|
{
|
||||||
|
return RSAESOAEPk;
|
||||||
|
}
|
||||||
|
|
||||||
|
JNIEXPORT jint JNICALL Java_com_wolfssl_wolfcrypt_Asn_getECDSAk
|
||||||
|
(JNIEnv* env, jclass class)
|
||||||
|
{
|
||||||
|
return ECDSAk;
|
||||||
|
}
|
||||||
|
|
||||||
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Asn_encodeSignature__Ljava_nio_ByteBuffer_2Ljava_nio_ByteBuffer_2JI(
|
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Asn_encodeSignature__Ljava_nio_ByteBuffer_2Ljava_nio_ByteBuffer_2JI(
|
||||||
JNIEnv* env, jclass class, jobject encoded_object, jobject hash_object,
|
JNIEnv* env, jclass class, jobject encoded_object, jobject hash_object,
|
||||||
jlong hashSize, jint hashOID)
|
jlong hashSize, jint hashOID)
|
||||||
|
|
|
@ -661,16 +661,14 @@ public class WolfSSLKeyStore extends KeyStoreSpi {
|
||||||
"unprotected key");
|
"unprotected key");
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (algoId) {
|
if (algoId == Asn.RSAk) {
|
||||||
case Asn.RSAk:
|
|
||||||
keyFact = KeyFactory.getInstance("RSA");
|
keyFact = KeyFactory.getInstance("RSA");
|
||||||
break;
|
} else if (algoId == Asn.ECDSAk) {
|
||||||
case Asn.ECDSAk:
|
|
||||||
keyFact = KeyFactory.getInstance("EC");
|
keyFact = KeyFactory.getInstance("EC");
|
||||||
break;
|
} else {
|
||||||
default:
|
|
||||||
throw new NoSuchAlgorithmException(
|
throw new NoSuchAlgorithmException(
|
||||||
"Only RSA and EC private key encoding supported");
|
"Only RSA and EC private key encoding " +
|
||||||
|
"supported: " + algoId);
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -36,18 +36,38 @@ public class Asn extends WolfObject {
|
||||||
/* Key Sum values, from asn.h Key_Sum enum */
|
/* Key Sum values, from asn.h Key_Sum enum */
|
||||||
|
|
||||||
/** DSA key value, from asn.h Key_Sum enum */
|
/** DSA key value, from asn.h Key_Sum enum */
|
||||||
public static final int DSAk = 515;
|
public static final int DSAk;
|
||||||
/** RSA key value, from asn.h Key_Sum enum */
|
/** RSA key value, from asn.h Key_Sum enum */
|
||||||
public static final int RSAk = 645;
|
public static final int RSAk;
|
||||||
/** RSA-PSS key value, from asn.h Key_Sum enum */
|
/** RSA-PSS key value, from asn.h Key_Sum enum */
|
||||||
public static final int RSAPSSk = 654;
|
public static final int RSAPSSk;
|
||||||
/** RSA-OAEP key value, from asn.h Key_Sum enum */
|
/** RSA-OAEP key value, from asn.h Key_Sum enum */
|
||||||
public static final int RSAESOAEPk = 651;
|
public static final int RSAESOAEPk;
|
||||||
/** ECDSA key value, from asn.h Key_Sum enum */
|
/** ECDSA key value, from asn.h Key_Sum enum */
|
||||||
public static final int ECDSAk = 518;
|
public static final int ECDSAk;
|
||||||
|
|
||||||
/** Default Asn constructor */
|
static {
|
||||||
public Asn() { }
|
DSAk = getDSAk();
|
||||||
|
RSAk = getRSAk();
|
||||||
|
RSAPSSk = getRSAPSSk();
|
||||||
|
RSAESOAEPk = getRSAESOAEPk();
|
||||||
|
ECDSAk = getECDSAk();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Return value of native DSAk enum */
|
||||||
|
private static native int getDSAk();
|
||||||
|
|
||||||
|
/** Return value of native RSAk enum */
|
||||||
|
private static native int getRSAk();
|
||||||
|
|
||||||
|
/** Return value of native RSAPSSk enum */
|
||||||
|
private static native int getRSAPSSk();
|
||||||
|
|
||||||
|
/** Return value of native RSAESOAEPk enum */
|
||||||
|
private static native int getRSAESOAEPk();
|
||||||
|
|
||||||
|
/** Return value of native ECDSAk enum */
|
||||||
|
private static native int getECDSAk();
|
||||||
|
|
||||||
/** ASN.1 encode message digest, before it is signed
|
/** ASN.1 encode message digest, before it is signed
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue