Merge pull request #111 from cconlon/oidFix

Get ASN algorithm enum values dynamically
pull/108/head
JacobBarthelmeh 2025-05-08 16:03:19 -06:00 committed by GitHub
commit 783c9275de
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 105 additions and 27 deletions

View File

@ -9,16 +9,46 @@ extern "C" {
#endif
#undef com_wolfssl_wolfcrypt_Asn_MAX_ENCODED_SIG_SIZE
#define com_wolfssl_wolfcrypt_Asn_MAX_ENCODED_SIG_SIZE 512L
#undef com_wolfssl_wolfcrypt_Asn_DSAk
#define com_wolfssl_wolfcrypt_Asn_DSAk 515L
#undef com_wolfssl_wolfcrypt_Asn_RSAk
#define com_wolfssl_wolfcrypt_Asn_RSAk 645L
#undef com_wolfssl_wolfcrypt_Asn_RSAPSSk
#define com_wolfssl_wolfcrypt_Asn_RSAPSSk 654L
#undef com_wolfssl_wolfcrypt_Asn_RSAESOAEPk
#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: getDSAk
* Signature: ()I
*/
JNIEXPORT jint JNICALL Java_com_wolfssl_wolfcrypt_Asn_getDSAk
(JNIEnv *, jclass);
/*
* 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
* Method: encodeSignature

View File

@ -35,6 +35,36 @@
/* #define WOLFCRYPT_JNI_DEBUG_ON */
#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(
JNIEnv* env, jclass class, jobject encoded_object, jobject hash_object,
jlong hashSize, jint hashOID)

View File

@ -661,16 +661,14 @@ public class WolfSSLKeyStore extends KeyStoreSpi {
"unprotected key");
}
switch (algoId) {
case Asn.RSAk:
keyFact = KeyFactory.getInstance("RSA");
break;
case Asn.ECDSAk:
keyFact = KeyFactory.getInstance("EC");
break;
default:
throw new NoSuchAlgorithmException(
"Only RSA and EC private key encoding supported");
if (algoId == Asn.RSAk) {
keyFact = KeyFactory.getInstance("RSA");
} else if (algoId == Asn.ECDSAk) {
keyFact = KeyFactory.getInstance("EC");
} else {
throw new NoSuchAlgorithmException(
"Only RSA and EC private key encoding " +
"supported: " + algoId);
}
try {

View File

@ -36,18 +36,38 @@ public class Asn extends WolfObject {
/* Key Sum values, 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 */
public static final int RSAk = 645;
public static final int RSAk;
/** 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 */
public static final int RSAESOAEPk = 651;
public static final int RSAESOAEPk;
/** ECDSA key value, from asn.h Key_Sum enum */
public static final int ECDSAk = 518;
public static final int ECDSAk;
/** Default Asn constructor */
public Asn() { }
static {
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
*