diff --git a/kona-crypto/src/main/jni/include/kona/kona_sm2.h b/kona-crypto/src/main/jni/include/kona/kona_sm2.h index f052ef84..9f4301f2 100644 --- a/kona-crypto/src/main/jni/include/kona/kona_sm2.h +++ b/kona-crypto/src/main/jni/include/kona/kona_sm2.h @@ -54,12 +54,12 @@ const EC_GROUP* sm2_group(); BIGNUM* sm2_pri_key(const uint8_t* pri_key_bytes); EC_POINT* sm2_pub_key(const uint8_t* pub_key_bytes, size_t pub_key_len); -int sm2_validate_point(EC_POINT *point); EVP_PKEY* sm2_load_pub_key(const uint8_t* pub_key, size_t pub_key_len); EVP_PKEY* sm2_load_key_pair(const uint8_t* pri_key, const uint8_t* pub_key); int sm2_gen_pub_key(const uint8_t* pri_key, uint8_t* pub_key); EVP_PKEY_CTX* sm2_create_pkey_ctx(EVP_PKEY* pkey); +int sm2_validate_point(EC_POINT *point); int sm2_gen_key_pair(EVP_PKEY_CTX* ctx, uint8_t* key_pair, size_t* key_pair_len); diff --git a/kona-crypto/src/main/jni/include/kona/kona_sm3.h b/kona-crypto/src/main/jni/include/kona/kona_sm3.h index a7e07a00..f07f8052 100644 --- a/kona-crypto/src/main/jni/include/kona/kona_sm3.h +++ b/kona-crypto/src/main/jni/include/kona/kona_sm3.h @@ -17,8 +17,12 @@ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. */ +#include + +#include "kona/kona_common.h" + EVP_MD_CTX* sm3_create_ctx(); -int sm3_reset(EVP_MD_CTX*); +int sm3_reset(EVP_MD_CTX* ctx); -EVP_MAC_CTX* sm3hmac_create_ctx(EVP_MAC*, const uint8_t*, size_t); -int sm3hmac_reset(EVP_MAC_CTX*); +EVP_MAC_CTX* sm3hmac_create_ctx(EVP_MAC* mac, const uint8_t* key, size_t key_len); +int sm3hmac_reset(EVP_MAC_CTX* ctx); diff --git a/kona-crypto/src/main/jni/kona_sm2_common.c b/kona-crypto/src/main/jni/kona_sm2_common.c index a14f2b2e..ea890144 100644 --- a/kona-crypto/src/main/jni/kona_sm2_common.c +++ b/kona-crypto/src/main/jni/kona_sm2_common.c @@ -17,9 +17,6 @@ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. */ -#include -#include - #include #include @@ -204,25 +201,28 @@ EVP_PKEY* sm2_load_pub_key(const uint8_t* pub_key, size_t pub_key_len) { EVP_PKEY_CTX* key_ctx = EVP_PKEY_CTX_new_from_name(NULL, "SM2", NULL); if (key_ctx == NULL) { OPENSSL_print_err(); + return NULL; } if (!EVP_PKEY_fromdata_init(key_ctx)) { OPENSSL_print_err(); EVP_PKEY_CTX_free(key_ctx); + return NULL; } OSSL_PARAM params[] = { - OSSL_PARAM_construct_utf8_string(OSSL_PKEY_PARAM_GROUP_NAME, "SM2", 0), - OSSL_PARAM_construct_octet_string(OSSL_PKEY_PARAM_PUB_KEY, (void*)pub_key, pub_key_len), - OSSL_PARAM_construct_end() + OSSL_PARAM_construct_utf8_string(OSSL_PKEY_PARAM_GROUP_NAME, "SM2", 0), + OSSL_PARAM_construct_octet_string(OSSL_PKEY_PARAM_PUB_KEY, (void*)pub_key, pub_key_len), + OSSL_PARAM_construct_end() }; EVP_PKEY* pkey = NULL; if (!EVP_PKEY_fromdata(key_ctx, &pkey, EVP_PKEY_PUBLIC_KEY, params)) { OPENSSL_print_err(); EVP_PKEY_CTX_free(key_ctx); + return NULL; } @@ -305,7 +305,7 @@ EVP_PKEY* sm2_load_key_pair(const uint8_t* pri_key, const uint8_t* pub_key) { BN_free(pri_key_bn); EC_POINT_free(pub_point); - ec_key = NULL; // ec_key cannot be freed due pkey is using it. + ec_key = NULL; // ec_key cannot be freed due to pkey is using it. return pkey; } @@ -319,12 +319,14 @@ int sm2_gen_pub_key(const uint8_t* pri_key, uint8_t* pub_key) { BIGNUM* bn_pri_key = BN_bin2bn(pri_key, SM2_PRI_KEY_LEN, NULL); if (bn_pri_key == NULL) { EC_KEY_free(ec_key); + return OPENSSL_FAILURE; } if (!EC_KEY_set_private_key(ec_key, bn_pri_key)) { EC_KEY_free(ec_key); BN_free(bn_pri_key); + return OPENSSL_FAILURE; } @@ -332,6 +334,7 @@ int sm2_gen_pub_key(const uint8_t* pri_key, uint8_t* pub_key) { if (group == NULL) { EC_KEY_free(ec_key); BN_free(bn_pri_key); + return OPENSSL_FAILURE; } @@ -339,6 +342,7 @@ int sm2_gen_pub_key(const uint8_t* pri_key, uint8_t* pub_key) { if (pub_point == NULL) { EC_KEY_free(ec_key); BN_free(bn_pri_key); + return OPENSSL_FAILURE; } @@ -346,6 +350,7 @@ int sm2_gen_pub_key(const uint8_t* pri_key, uint8_t* pub_key) { EC_KEY_free(ec_key); BN_free(bn_pri_key); EC_POINT_free(pub_point); + return OPENSSL_FAILURE; } @@ -353,6 +358,7 @@ int sm2_gen_pub_key(const uint8_t* pri_key, uint8_t* pub_key) { EC_KEY_free(ec_key); BN_free(bn_pri_key); EC_POINT_free(pub_point); + return OPENSSL_FAILURE; } @@ -361,6 +367,7 @@ int sm2_gen_pub_key(const uint8_t* pri_key, uint8_t* pub_key) { EC_KEY_free(ec_key); BN_free(bn_pri_key); EC_POINT_free(pub_point); + return OPENSSL_FAILURE; } @@ -370,6 +377,7 @@ int sm2_gen_pub_key(const uint8_t* pri_key, uint8_t* pub_key) { BN_free(bn_pri_key); EC_POINT_free(pub_point); BN_CTX_free(bn_ctx); + return OPENSSL_FAILURE; } @@ -378,6 +386,7 @@ int sm2_gen_pub_key(const uint8_t* pri_key, uint8_t* pub_key) { BN_free(bn_pri_key); EC_POINT_free(pub_point); BN_CTX_free(bn_ctx); + return OPENSSL_FAILURE; } @@ -400,6 +409,7 @@ EVP_PKEY_CTX* sm2_create_pkey_ctx(EVP_PKEY* pkey) { if (ctx == NULL) { OPENSSL_print_err(); + return NULL; } diff --git a/kona-crypto/src/main/jni/kona_sm2_keyagreement.c b/kona-crypto/src/main/jni/kona_sm2_keyagreement.c index cf178eca..8d40c524 100644 --- a/kona-crypto/src/main/jni/kona_sm2_keyagreement.c +++ b/kona-crypto/src/main/jni/kona_sm2_keyagreement.c @@ -17,7 +17,6 @@ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. */ -#include #include #include #include @@ -37,12 +36,14 @@ SM2_KEYEX_CTX* sm2_create_keyex_ctx() { EVP_MD_CTX* sm3_ctx = sm3_create_ctx(); if (sm3_ctx == NULL) { OPENSSL_print_err(); + return NULL; } BN_CTX* bn_ctx = BN_CTX_new(); if (bn_ctx == NULL) { OPENSSL_print_err(); + return NULL; } @@ -66,8 +67,8 @@ void sm2_free_keyex_ctx(SM2_KEYEX_CTX* ctx) { } int z(uint8_t* out, SM2_KEYEX_CTX* ctx, - const uint8_t* id, const size_t id_len, - const EC_GROUP* group, const EC_POINT* point) { + const uint8_t* id, const size_t id_len, + const EC_GROUP* group, const EC_POINT* point) { const SM2_ID* default_id = sm2_id(); const SM2_CURVE* curve = sm2_curve(); @@ -102,6 +103,7 @@ int z(uint8_t* out, SM2_KEYEX_CTX* ctx, BN_free(x_bn); BN_free(y_bn); + return OPENSSL_FAILURE; } @@ -380,10 +382,10 @@ JNIEXPORT void JNICALL Java_com_tencent_kona_crypto_provider_nativeImpl_NativeCr } JNIEXPORT jbyteArray JNICALL Java_com_tencent_kona_crypto_provider_nativeImpl_NativeCrypto_sm2DeriveKey - (JNIEnv* env, jobject thisObj, jlong pointer, - jbyteArray priKey, jbyteArray pubKey, jbyteArray ePriKey, jbyteArray id, - jbyteArray peerPubKey, jbyteArray peerEPubKey, jbyteArray peerId, - jboolean isInitiator, jint sharedKeyLength) { + (JNIEnv* env, jobject thisObj, jlong pointer, + jbyteArray priKey, jbyteArray pubKey, jbyteArray ePriKey, jbyteArray id, + jbyteArray peerPubKey, jbyteArray peerEPubKey, jbyteArray peerId, + jboolean isInitiator, jint sharedKeyLength) { SM2_KEYEX_CTX* ctx = (SM2_KEYEX_CTX*)pointer; if (ctx == NULL) { return NULL; diff --git a/kona-crypto/src/main/jni/kona_sm2_keypair.c b/kona-crypto/src/main/jni/kona_sm2_keypair.c index 28a6109b..2adbe420 100644 --- a/kona-crypto/src/main/jni/kona_sm2_keypair.c +++ b/kona-crypto/src/main/jni/kona_sm2_keypair.c @@ -17,8 +17,6 @@ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. */ -#include -#include #include #include @@ -46,6 +44,7 @@ JNIEXPORT jbyteArray JNICALL Java_com_tencent_kona_crypto_provider_nativeImpl_Na if (group == NULL) { OPENSSL_print_err(); (*env)->ReleaseByteArrayElements(env, compPubKey, comp_pub_key_bytes, JNI_ABORT); + return NULL; } @@ -54,6 +53,7 @@ JNIEXPORT jbyteArray JNICALL Java_com_tencent_kona_crypto_provider_nativeImpl_Na OPENSSL_print_err(); (*env)->ReleaseByteArrayElements(env, compPubKey, comp_pub_key_bytes, JNI_ABORT); EC_GROUP_free(group); + return NULL; } @@ -63,6 +63,7 @@ JNIEXPORT jbyteArray JNICALL Java_com_tencent_kona_crypto_provider_nativeImpl_Na (*env)->ReleaseByteArrayElements(env, compPubKey, comp_pub_key_bytes, JNI_ABORT); EC_GROUP_free(group); EC_POINT_free(point); + return NULL; } @@ -74,6 +75,7 @@ JNIEXPORT jbyteArray JNICALL Java_com_tencent_kona_crypto_provider_nativeImpl_Na (*env)->ReleaseByteArrayElements(env, compPubKey, comp_pub_key_bytes, JNI_ABORT); EC_GROUP_free(group); EC_POINT_free(point); + return NULL; } @@ -104,6 +106,7 @@ JNIEXPORT jbyteArray JNICALL Java_com_tencent_kona_crypto_provider_nativeImpl_Na uint8_t pub_key_buf[SM2_PUB_KEY_LEN]; if (!sm2_gen_pub_key((const uint8_t*)pri_key_bytes, pub_key_buf)) { (*env)->ReleaseByteArrayElements(env, priKey, pri_key_bytes, JNI_ABORT); + return NULL; } (*env)->ReleaseByteArrayElements(env, priKey, pri_key_bytes, JNI_ABORT); @@ -157,58 +160,64 @@ int sm2_gen_key_pair(EVP_PKEY_CTX* ctx, uint8_t* key_pair, size_t* key_pair_len) if (!EVP_PKEY_keygen_init(ctx)) { OPENSSL_print_err(); + return OPENSSL_FAILURE; } EVP_PKEY* pkey = NULL; if (!EVP_PKEY_keygen(ctx, &pkey)) { OPENSSL_print_err(); + return OPENSSL_FAILURE; } - BIGNUM* priv_key_bn = NULL; - if (!EVP_PKEY_get_bn_param(pkey, OSSL_PKEY_PARAM_PRIV_KEY, &priv_key_bn)) { + BIGNUM* pri_key_bn = NULL; + if (!EVP_PKEY_get_bn_param(pkey, OSSL_PKEY_PARAM_PRIV_KEY, &pri_key_bn)) { OPENSSL_print_err(); EVP_PKEY_free(pkey); + return OPENSSL_FAILURE; } - if (BN_num_bytes(priv_key_bn) > SM2_PRI_KEY_LEN) { + if (BN_num_bytes(pri_key_bn) > SM2_PRI_KEY_LEN) { EVP_PKEY_free(pkey); - BN_free(priv_key_bn); + BN_free(pri_key_bn); + return OPENSSL_FAILURE; } - uint8_t priv_key_buf[SM2_PRI_KEY_LEN] = {0}; - BN_bn2binpad(priv_key_bn, priv_key_buf, SM2_PRI_KEY_LEN); - BN_free(priv_key_bn); + uint8_t pri_key_buf[SM2_PRI_KEY_LEN] = {0}; + BN_bn2binpad(pri_key_bn, pri_key_buf, SM2_PRI_KEY_LEN); + BN_free(pri_key_bn); size_t pub_key_len = 0; if (!EVP_PKEY_get_octet_string_param(pkey, OSSL_PKEY_PARAM_PUB_KEY, NULL, 0, &pub_key_len)) { OPENSSL_print_err(); EVP_PKEY_free(pkey); - OPENSSL_cleanse(priv_key_buf, SM2_PRI_KEY_LEN); + OPENSSL_cleanse(pri_key_buf, SM2_PRI_KEY_LEN); + return OPENSSL_FAILURE; } uint8_t* pub_key_buf = OPENSSL_malloc(pub_key_len); if (pub_key_buf == NULL) { EVP_PKEY_free(pkey); - OPENSSL_cleanse(priv_key_buf, SM2_PRI_KEY_LEN); + OPENSSL_cleanse(pri_key_buf, SM2_PRI_KEY_LEN); return OPENSSL_FAILURE; } if (!EVP_PKEY_get_octet_string_param(pkey, OSSL_PKEY_PARAM_PUB_KEY, pub_key_buf, pub_key_len, &pub_key_len)) { OPENSSL_print_err(); EVP_PKEY_free(pkey); - OPENSSL_cleanse(priv_key_buf, SM2_PRI_KEY_LEN); + OPENSSL_cleanse(pri_key_buf, SM2_PRI_KEY_LEN); OPENSSL_free(pub_key_buf); + return OPENSSL_FAILURE; } *key_pair_len = SM2_PRI_KEY_LEN + pub_key_len; - memcpy(key_pair, priv_key_buf, SM2_PRI_KEY_LEN); + memcpy(key_pair, pri_key_buf, SM2_PRI_KEY_LEN); memcpy(key_pair + SM2_PRI_KEY_LEN, pub_key_buf, pub_key_len); EVP_PKEY_free(pkey); - OPENSSL_cleanse(priv_key_buf, SM2_PRI_KEY_LEN); + OPENSSL_cleanse(pri_key_buf, SM2_PRI_KEY_LEN); OPENSSL_free(pub_key_buf); return OPENSSL_SUCCESS; diff --git a/kona-crypto/src/main/jni/kona_sm2_signature.c b/kona-crypto/src/main/jni/kona_sm2_signature.c index 97f29c5a..ab469e0b 100644 --- a/kona-crypto/src/main/jni/kona_sm2_signature.c +++ b/kona-crypto/src/main/jni/kona_sm2_signature.c @@ -18,7 +18,6 @@ */ #include -#include #include #include @@ -39,12 +38,14 @@ SM2_SIGNATURE_CTX* sm2_create_md_ctx(EVP_PKEY* pkey, const uint8_t* id, size_t i EVP_PKEY_CTX* pctx = EVP_PKEY_CTX_new(pkey, NULL); if (pctx == NULL) { OPENSSL_print_err(); + return NULL; } if (!EVP_PKEY_CTX_set1_id(pctx, id, id_len)) { OPENSSL_print_err(); EVP_PKEY_CTX_free(pctx); + return NULL; } @@ -52,6 +53,7 @@ SM2_SIGNATURE_CTX* sm2_create_md_ctx(EVP_PKEY* pkey, const uint8_t* id, size_t i if (mctx == NULL) { OPENSSL_print_err(); EVP_PKEY_CTX_free(pctx); + return NULL; } @@ -62,6 +64,7 @@ SM2_SIGNATURE_CTX* sm2_create_md_ctx(EVP_PKEY* pkey, const uint8_t* id, size_t i OPENSSL_print_err(); EVP_PKEY_CTX_free(pctx); EVP_MD_CTX_free(mctx); + return NULL; } } else { @@ -69,6 +72,7 @@ SM2_SIGNATURE_CTX* sm2_create_md_ctx(EVP_PKEY* pkey, const uint8_t* id, size_t i OPENSSL_print_err(); EVP_PKEY_CTX_free(pctx); EVP_MD_CTX_free(mctx); + return NULL; } } @@ -102,11 +106,13 @@ JNIEXPORT jlong JNICALL Java_com_tencent_kona_crypto_provider_nativeImpl_NativeC int id_len = (*env)->GetArrayLength(env, id); if (id_len <= 0) { (*env)->ReleaseByteArrayElements(env, key, key_bytes, JNI_ABORT); + return OPENSSL_FAILURE; } jbyte* id_bytes = (*env)->GetByteArrayElements(env, id, NULL); if (id_bytes == NULL) { (*env)->ReleaseByteArrayElements(env, key, key_bytes, JNI_ABORT); + return OPENSSL_FAILURE; } @@ -141,6 +147,7 @@ JNIEXPORT jlong JNICALL Java_com_tencent_kona_crypto_provider_nativeImpl_NativeC OPENSSL_free(pub_key_buf); (*env)->ReleaseByteArrayElements(env, key, key_bytes, JNI_ABORT); (*env)->ReleaseByteArrayElements(env, id, id_bytes, JNI_ABORT); + return OPENSSL_FAILURE; } @@ -156,6 +163,7 @@ JNIEXPORT jlong JNICALL Java_com_tencent_kona_crypto_provider_nativeImpl_NativeC if (pkey == NULL) { (*env)->ReleaseByteArrayElements(env, key, key_bytes, JNI_ABORT); (*env)->ReleaseByteArrayElements(env, id, id_bytes, JNI_ABORT); + return OPENSSL_FAILURE; } @@ -189,23 +197,27 @@ uint8_t* sm2_sign(EVP_MD_CTX* ctx, const uint8_t* msg, size_t msg_len, size_t* s if (!EVP_DigestSignUpdate(ctx, msg, msg_len)) { OPENSSL_print_err(); + return NULL; } if (!EVP_DigestSignFinal(ctx, NULL, sig_len)) { OPENSSL_print_err(); + return NULL; } uint8_t* sig_buf = (uint8_t*)OPENSSL_malloc(*sig_len); if (sig_buf == NULL) { OPENSSL_print_err(); + return NULL; } if (!EVP_DigestSignFinal(ctx, sig_buf, sig_len)) { OPENSSL_print_err(); OPENSSL_free(sig_buf); + return NULL; } @@ -240,6 +252,7 @@ JNIEXPORT jbyteArray JNICALL Java_com_tencent_kona_crypto_provider_nativeImpl_Na jbyteArray sig_bytes = (*env)->NewByteArray(env, sig_len); if (sig_bytes == NULL) { OPENSSL_free(sig_buf); + return NULL; } @@ -257,11 +270,13 @@ int sm2_verify(EVP_MD_CTX* ctx, const uint8_t* msg, size_t msg_len, const uint8_ if (!EVP_DigestVerifyUpdate(ctx, msg, msg_len)) { OPENSSL_print_err(); + return OPENSSL_FAILURE; } if (!EVP_DigestVerifyFinal(ctx, sig, sig_len)) { OPENSSL_print_err(); + return OPENSSL_FAILURE; } @@ -285,11 +300,12 @@ JNIEXPORT jint JNICALL Java_com_tencent_kona_crypto_provider_nativeImpl_NativeCr jbyte* sig_bytes = (*env)->GetByteArrayElements(env, signature, NULL); if (sig_bytes == NULL) { (*env)->ReleaseByteArrayElements(env, message, msg_bytes, JNI_ABORT); + return OPENSSL_FAILURE; } int verified = sm2_verify(ctx->mctx, (uint8_t*)msg_bytes, msg_len, (uint8_t*)sig_bytes, sig_len) - ? OPENSSL_SUCCESS : OPENSSL_FAILURE; + ? OPENSSL_SUCCESS : OPENSSL_FAILURE; (*env)->ReleaseByteArrayElements(env, message, msg_bytes, JNI_ABORT); (*env)->ReleaseByteArrayElements(env, signature, sig_bytes, JNI_ABORT); diff --git a/kona-crypto/src/main/jni/kona_sm3.c b/kona-crypto/src/main/jni/kona_sm3.c index 79fe8349..8c004322 100644 --- a/kona-crypto/src/main/jni/kona_sm3.c +++ b/kona-crypto/src/main/jni/kona_sm3.c @@ -17,9 +17,6 @@ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. */ -#include -#include - #include #include @@ -32,17 +29,20 @@ EVP_MD_CTX* sm3_create_ctx() { EVP_MD_CTX* ctx = EVP_MD_CTX_new(); if (ctx == NULL) { OPENSSL_print_err(); + return NULL; } const EVP_MD* md = EVP_sm3(); if (md == NULL) { OPENSSL_print_err(); + return NULL; } if (!EVP_DigestInit_ex(ctx, md, NULL)) { OPENSSL_print_err(); + return NULL; } @@ -56,6 +56,7 @@ int sm3_reset(EVP_MD_CTX* ctx) { if (!EVP_DigestInit_ex(ctx, NULL, NULL)) { OPENSSL_print_err(); + return OPENSSL_FAILURE; } @@ -65,6 +66,7 @@ int sm3_reset(EVP_MD_CTX* ctx) { JNIEXPORT jlong JNICALL Java_com_tencent_kona_crypto_provider_nativeImpl_NativeCrypto_sm3CreateCtx (JNIEnv* env, jobject thisObj) { EVP_MD_CTX* ctx = sm3_create_ctx(); + return ctx == NULL ? OPENSSL_FAILURE : (jlong)ctx; } @@ -102,6 +104,7 @@ JNIEXPORT jint JNICALL Java_com_tencent_kona_crypto_provider_nativeImpl_NativeCr result = OPENSSL_SUCCESS; } else { OPENSSL_print_err(); + result = OPENSSL_FAILURE; } @@ -122,6 +125,7 @@ JNIEXPORT jbyteArray JNICALL Java_com_tencent_kona_crypto_provider_nativeImpl_Na if (!EVP_DigestFinal_ex(ctx, digest, &digest_len)) { OPENSSL_print_err(); + return NULL; } @@ -168,6 +172,7 @@ JNIEXPORT jlong JNICALL Java_com_tencent_kona_crypto_provider_nativeImpl_NativeC if (!EVP_MD_CTX_copy_ex(new_ctx, orig_ctx)) { OPENSSL_print_err(); EVP_MD_CTX_free(new_ctx); + return OPENSSL_FAILURE; } @@ -186,6 +191,7 @@ EVP_MAC_CTX* sm3hmac_create_ctx(EVP_MAC* mac, const uint8_t* key, size_t key_len EVP_MAC_CTX* ctx = EVP_MAC_CTX_new(mac); if (ctx == NULL) { OPENSSL_print_err(); + return OPENSSL_FAILURE; } @@ -197,6 +203,7 @@ EVP_MAC_CTX* sm3hmac_create_ctx(EVP_MAC* mac, const uint8_t* key, size_t key_len if (!EVP_MAC_init(ctx, key, key_len, params)) { OPENSSL_print_err(); EVP_MAC_CTX_free(ctx); + return OPENSSL_FAILURE; } @@ -286,6 +293,7 @@ JNIEXPORT jint JNICALL Java_com_tencent_kona_crypto_provider_nativeImpl_NativeCr int result = OPENSSL_SUCCESS; if (!EVP_MAC_update(ctx, (const uint8_t*)data_bytes, data_len)) { OPENSSL_print_err(); + result = OPENSSL_FAILURE; } @@ -306,6 +314,7 @@ JNIEXPORT jbyteArray JNICALL Java_com_tencent_kona_crypto_provider_nativeImpl_Na if (!EVP_MAC_final(ctx, mac, &mac_len, sizeof(mac))) { OPENSSL_print_err(); + return NULL; } @@ -348,6 +357,7 @@ JNIEXPORT jlong JNICALL Java_com_tencent_kona_crypto_provider_nativeImpl_NativeC EVP_MAC_CTX* new_ctx = EVP_MAC_CTX_dup(orig_ctx); if (new_ctx == NULL) { OPENSSL_print_err(); + return OPENSSL_FAILURE; } diff --git a/kona-crypto/src/main/jni/kona_sm4.c b/kona-crypto/src/main/jni/kona_sm4.c index 6d4a9e2f..2495680c 100644 --- a/kona-crypto/src/main/jni/kona_sm4.c +++ b/kona-crypto/src/main/jni/kona_sm4.c @@ -17,7 +17,6 @@ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. */ -#include #include #include @@ -46,6 +45,7 @@ JNIEXPORT jlong JNICALL Java_com_tencent_kona_crypto_provider_nativeImpl_NativeC sm4_mode = "SM4-GCM"; } else { (*env)->ReleaseStringUTFChars(env, mode, mode_str); + return OPENSSL_FAILURE; } @@ -53,6 +53,7 @@ JNIEXPORT jlong JNICALL Java_com_tencent_kona_crypto_provider_nativeImpl_NativeC if (cipher == NULL) { OPENSSL_print_err(); (*env)->ReleaseStringUTFChars(env, mode, mode_str); + return OPENSSL_FAILURE; } @@ -60,6 +61,7 @@ JNIEXPORT jlong JNICALL Java_com_tencent_kona_crypto_provider_nativeImpl_NativeC if (ctx == NULL) { OPENSSL_print_err(); (*env)->ReleaseStringUTFChars(env, mode, mode_str); + return OPENSSL_FAILURE; } @@ -115,6 +117,7 @@ JNIEXPORT jbyteArray JNICALL Java_com_tencent_kona_crypto_provider_nativeImpl_Na uint8_t* out_buf = (uint8_t*)OPENSSL_malloc(out_len); if (out_buf == NULL) { (*env)->ReleaseByteArrayElements(env, in, in_bytes, JNI_ABORT); + return NULL; } diff --git a/kona-crypto/src/main/resources/libKonaCrypto-linux-aarch64.so b/kona-crypto/src/main/resources/libKonaCrypto-linux-aarch64.so index 574ccf69..0fecda6a 100755 Binary files a/kona-crypto/src/main/resources/libKonaCrypto-linux-aarch64.so and b/kona-crypto/src/main/resources/libKonaCrypto-linux-aarch64.so differ diff --git a/kona-crypto/src/main/resources/libKonaCrypto-linux-x86_64.so b/kona-crypto/src/main/resources/libKonaCrypto-linux-x86_64.so index 2310fa24..85ca25df 100755 Binary files a/kona-crypto/src/main/resources/libKonaCrypto-linux-x86_64.so and b/kona-crypto/src/main/resources/libKonaCrypto-linux-x86_64.so differ