Skip to content

Commit 783c927

Browse files
Merge pull request #111 from cconlon/oidFix
Get ASN algorithm enum values dynamically
2 parents be7df09 + 4fa8642 commit 783c927

File tree

4 files changed

+105
-27
lines changed

4 files changed

+105
-27
lines changed

jni/include/com_wolfssl_wolfcrypt_Asn.h

Lines changed: 40 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

jni/jni_asn.c

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,36 @@
3535
/* #define WOLFCRYPT_JNI_DEBUG_ON */
3636
#include <wolfcrypt_jni_debug.h>
3737

38+
JNIEXPORT jint JNICALL Java_com_wolfssl_wolfcrypt_Asn_getDSAk
39+
(JNIEnv* env, jclass class)
40+
{
41+
return DSAk;
42+
}
43+
44+
JNIEXPORT jint JNICALL Java_com_wolfssl_wolfcrypt_Asn_getRSAk
45+
(JNIEnv* env, jclass class)
46+
{
47+
return RSAk;
48+
}
49+
50+
JNIEXPORT jint JNICALL Java_com_wolfssl_wolfcrypt_Asn_getRSAPSSk
51+
(JNIEnv* env, jclass class)
52+
{
53+
return RSAPSSk;
54+
}
55+
56+
JNIEXPORT jint JNICALL Java_com_wolfssl_wolfcrypt_Asn_getRSAESOAEPk
57+
(JNIEnv* env, jclass class)
58+
{
59+
return RSAESOAEPk;
60+
}
61+
62+
JNIEXPORT jint JNICALL Java_com_wolfssl_wolfcrypt_Asn_getECDSAk
63+
(JNIEnv* env, jclass class)
64+
{
65+
return ECDSAk;
66+
}
67+
3868
JNIEXPORT void JNICALL Java_com_wolfssl_wolfcrypt_Asn_encodeSignature__Ljava_nio_ByteBuffer_2Ljava_nio_ByteBuffer_2JI(
3969
JNIEnv* env, jclass class, jobject encoded_object, jobject hash_object,
4070
jlong hashSize, jint hashOID)

src/main/java/com/wolfssl/provider/jce/WolfSSLKeyStore.java

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -661,16 +661,14 @@ public synchronized Key engineGetKey(String alias, char[] password)
661661
"unprotected key");
662662
}
663663

664-
switch (algoId) {
665-
case Asn.RSAk:
666-
keyFact = KeyFactory.getInstance("RSA");
667-
break;
668-
case Asn.ECDSAk:
669-
keyFact = KeyFactory.getInstance("EC");
670-
break;
671-
default:
672-
throw new NoSuchAlgorithmException(
673-
"Only RSA and EC private key encoding supported");
664+
if (algoId == Asn.RSAk) {
665+
keyFact = KeyFactory.getInstance("RSA");
666+
} else if (algoId == Asn.ECDSAk) {
667+
keyFact = KeyFactory.getInstance("EC");
668+
} else {
669+
throw new NoSuchAlgorithmException(
670+
"Only RSA and EC private key encoding " +
671+
"supported: " + algoId);
674672
}
675673

676674
try {

src/main/java/com/wolfssl/wolfcrypt/Asn.java

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -36,18 +36,38 @@ public class Asn extends WolfObject {
3636
/* Key Sum values, from asn.h Key_Sum enum */
3737

3838
/** DSA key value, from asn.h Key_Sum enum */
39-
public static final int DSAk = 515;
39+
public static final int DSAk;
4040
/** RSA key value, from asn.h Key_Sum enum */
41-
public static final int RSAk = 645;
41+
public static final int RSAk;
4242
/** RSA-PSS key value, from asn.h Key_Sum enum */
43-
public static final int RSAPSSk = 654;
43+
public static final int RSAPSSk;
4444
/** RSA-OAEP key value, from asn.h Key_Sum enum */
45-
public static final int RSAESOAEPk = 651;
45+
public static final int RSAESOAEPk;
4646
/** ECDSA key value, from asn.h Key_Sum enum */
47-
public static final int ECDSAk = 518;
47+
public static final int ECDSAk;
4848

49-
/** Default Asn constructor */
50-
public Asn() { }
49+
static {
50+
DSAk = getDSAk();
51+
RSAk = getRSAk();
52+
RSAPSSk = getRSAPSSk();
53+
RSAESOAEPk = getRSAESOAEPk();
54+
ECDSAk = getECDSAk();
55+
}
56+
57+
/** Return value of native DSAk enum */
58+
private static native int getDSAk();
59+
60+
/** Return value of native RSAk enum */
61+
private static native int getRSAk();
62+
63+
/** Return value of native RSAPSSk enum */
64+
private static native int getRSAPSSk();
65+
66+
/** Return value of native RSAESOAEPk enum */
67+
private static native int getRSAESOAEPk();
68+
69+
/** Return value of native ECDSAk enum */
70+
private static native int getECDSAk();
5171

5272
/** ASN.1 encode message digest, before it is signed
5373
*

0 commit comments

Comments
 (0)