Loading crypto/ec/ec_pmeth.c +10 −6 Original line number Diff line number Diff line Loading @@ -223,8 +223,10 @@ static int pkey_ecies_encrypt(EVP_PKEY_CTX *ctx, md_type = NID_sm3; if (out == NULL) { *outlen = SM2_ciphertext_size(ec, EVP_get_digestbynid(md_type), inlen); if (!SM2_ciphertext_size(ec, EVP_get_digestbynid(md_type), inlen, outlen)) ret = -1; else ret = 1; } else { Loading Loading @@ -261,8 +263,10 @@ static int pkey_ecies_decrypt(EVP_PKEY_CTX *ctx, md_type = NID_sm3; if (out == NULL) { *outlen = SM2_plaintext_size(ec, EVP_get_digestbynid(md_type), inlen); if (!SM2_plaintext_size(ec, EVP_get_digestbynid(md_type), inlen, outlen)) ret = -1; else ret = 1; } else { Loading crypto/include/internal/sm2.h +4 −8 Original line number Diff line number Diff line Loading @@ -57,13 +57,11 @@ int SM2_verify(int type, const unsigned char *dgst, int dgstlen, /* * SM2 encryption */ size_t SM2_ciphertext_size(const EC_KEY *key, const EVP_MD *digest, size_t msg_len); int SM2_ciphertext_size(const EC_KEY *key, const EVP_MD *digest, size_t msg_len, size_t *ct_size); size_t SM2_plaintext_size(const EC_KEY *key, const EVP_MD *digest, size_t msg_len); int SM2_plaintext_size(const EC_KEY *key, const EVP_MD *digest, size_t msg_len, size_t *pt_size); int SM2_encrypt(const EC_KEY *key, const EVP_MD *digest, Loading @@ -76,8 +74,6 @@ int SM2_decrypt(const EC_KEY *key, const uint8_t *ciphertext, size_t ciphertext_len, uint8_t *ptext_buf, size_t *ptext_len); int ERR_load_SM2_strings(void); # ifdef __cplusplus } # endif Loading crypto/sm2/sm2_crypt.c +29 −9 Original line number Diff line number Diff line Loading @@ -59,23 +59,43 @@ static size_t EC_field_size(const EC_GROUP *group) return field_size; } size_t SM2_plaintext_size(const EC_KEY *key, const EVP_MD *digest, size_t msg_len) int SM2_plaintext_size(const EC_KEY *key, const EVP_MD *digest, size_t msg_len, size_t *pt_size) { const size_t field_size = EC_field_size(EC_KEY_get0_group(key)); const size_t md_size = EVP_MD_size(digest); const int md_size = EVP_MD_size(digest); size_t overhead; const size_t overhead = 10 + 2 * field_size + md_size; if(msg_len <= overhead) if (md_size < 0) { SM2err(SM2_F_SM2_ENCRYPT, SM2_R_INVALID_DIGEST); return 0; } if (field_size == 0) { SM2err(SM2_F_SM2_ENCRYPT, SM2_R_INVALID_FIELD); return 0; } return msg_len - overhead; overhead = 10 + 2 * field_size + (size_t)md_size; if(msg_len <= overhead) { SM2err(SM2_F_SM2_ENCRYPT, SM2_R_INVALID_ENCODING); return 0; } size_t SM2_ciphertext_size(const EC_KEY *key, const EVP_MD *digest, size_t msg_len) *pt_size = msg_len - overhead; return 1; } int SM2_ciphertext_size(const EC_KEY *key, const EVP_MD *digest, size_t msg_len, size_t *ct_size) { const size_t field_size = EC_field_size(EC_KEY_get0_group(key)); const size_t md_size = EVP_MD_size(digest); return 10 + 2 * field_size + md_size + msg_len; const int md_size = EVP_MD_size(digest); if (field_size == 0 || md_size < 0) return 0; *ct_size = 10 + 2 * field_size + (size_t)md_size + msg_len; return 1; } int SM2_encrypt(const EC_KEY *key, Loading test/build.info +4 −8 Original line number Diff line number Diff line Loading @@ -440,7 +440,7 @@ INCLUDE_MAIN___test_libtestutil_OLB = /INCLUDE=MAIN PROGRAMS_NO_INST=siphash_internal_test ENDIF IF[{- !$disabled{sm2} -}] PROGRAMS_NO_INST=sm2_crypt_internal_test sm2_sign_internal_test PROGRAMS_NO_INST=sm2_internal_test ENDIF IF[{- !$disabled{sm4} -}] PROGRAMS_NO_INST=sm4_internal_test Loading Loading @@ -485,13 +485,9 @@ INCLUDE_MAIN___test_libtestutil_OLB = /INCLUDE=MAIN INCLUDE[siphash_internal_test]=.. ../include ../crypto/include DEPEND[siphash_internal_test]=../libcrypto.a libtestutil.a SOURCE[sm2_sign_internal_test]=sm2_sign_internal_test.c INCLUDE[sm2_sign_internal_test]=../include ../crypto/include DEPEND[sm2_sign_internal_test]=../libcrypto.a libtestutil.a SOURCE[sm2_crypt_internal_test]=sm2_crypt_internal_test.c INCLUDE[sm2_crypt_internal_test]=../include ../crypto/include DEPEND[sm2_crypt_internal_test]=../libcrypto.a libtestutil.a SOURCE[sm2_internal_test]=sm2_internal_test.c INCLUDE[sm2_internal_test]=../include ../crypto/include DEPEND[sm2_internal_test]=../libcrypto.a libtestutil.a SOURCE[sm4_internal_test]=sm4_internal_test.c INCLUDE[sm4_internal_test]=.. ../include ../crypto/include Loading test/recipes/03-test_sm2_sign_internal.t→test/recipes/03-test_internal_sm2.t +2 −2 Original line number Diff line number Diff line Loading @@ -11,9 +11,9 @@ use OpenSSL::Test; # get 'plan' use OpenSSL::Test::Simple; use OpenSSL::Test::Utils; setup("test_sm2_sign_internal"); setup("test_internal_sm2"); plan skip_all => "This test is unsupported in a shared library build on Windows" if $^O eq 'MSWin32' && !disabled("shared"); simple_test("test_sm2_sign_internal", "sm2_sign_internal_test", "sm2"); simple_test("test_internal_sm2", "sm2_internal_test", "sm2"); Loading
crypto/ec/ec_pmeth.c +10 −6 Original line number Diff line number Diff line Loading @@ -223,8 +223,10 @@ static int pkey_ecies_encrypt(EVP_PKEY_CTX *ctx, md_type = NID_sm3; if (out == NULL) { *outlen = SM2_ciphertext_size(ec, EVP_get_digestbynid(md_type), inlen); if (!SM2_ciphertext_size(ec, EVP_get_digestbynid(md_type), inlen, outlen)) ret = -1; else ret = 1; } else { Loading Loading @@ -261,8 +263,10 @@ static int pkey_ecies_decrypt(EVP_PKEY_CTX *ctx, md_type = NID_sm3; if (out == NULL) { *outlen = SM2_plaintext_size(ec, EVP_get_digestbynid(md_type), inlen); if (!SM2_plaintext_size(ec, EVP_get_digestbynid(md_type), inlen, outlen)) ret = -1; else ret = 1; } else { Loading
crypto/include/internal/sm2.h +4 −8 Original line number Diff line number Diff line Loading @@ -57,13 +57,11 @@ int SM2_verify(int type, const unsigned char *dgst, int dgstlen, /* * SM2 encryption */ size_t SM2_ciphertext_size(const EC_KEY *key, const EVP_MD *digest, size_t msg_len); int SM2_ciphertext_size(const EC_KEY *key, const EVP_MD *digest, size_t msg_len, size_t *ct_size); size_t SM2_plaintext_size(const EC_KEY *key, const EVP_MD *digest, size_t msg_len); int SM2_plaintext_size(const EC_KEY *key, const EVP_MD *digest, size_t msg_len, size_t *pt_size); int SM2_encrypt(const EC_KEY *key, const EVP_MD *digest, Loading @@ -76,8 +74,6 @@ int SM2_decrypt(const EC_KEY *key, const uint8_t *ciphertext, size_t ciphertext_len, uint8_t *ptext_buf, size_t *ptext_len); int ERR_load_SM2_strings(void); # ifdef __cplusplus } # endif Loading
crypto/sm2/sm2_crypt.c +29 −9 Original line number Diff line number Diff line Loading @@ -59,23 +59,43 @@ static size_t EC_field_size(const EC_GROUP *group) return field_size; } size_t SM2_plaintext_size(const EC_KEY *key, const EVP_MD *digest, size_t msg_len) int SM2_plaintext_size(const EC_KEY *key, const EVP_MD *digest, size_t msg_len, size_t *pt_size) { const size_t field_size = EC_field_size(EC_KEY_get0_group(key)); const size_t md_size = EVP_MD_size(digest); const int md_size = EVP_MD_size(digest); size_t overhead; const size_t overhead = 10 + 2 * field_size + md_size; if(msg_len <= overhead) if (md_size < 0) { SM2err(SM2_F_SM2_ENCRYPT, SM2_R_INVALID_DIGEST); return 0; } if (field_size == 0) { SM2err(SM2_F_SM2_ENCRYPT, SM2_R_INVALID_FIELD); return 0; } return msg_len - overhead; overhead = 10 + 2 * field_size + (size_t)md_size; if(msg_len <= overhead) { SM2err(SM2_F_SM2_ENCRYPT, SM2_R_INVALID_ENCODING); return 0; } size_t SM2_ciphertext_size(const EC_KEY *key, const EVP_MD *digest, size_t msg_len) *pt_size = msg_len - overhead; return 1; } int SM2_ciphertext_size(const EC_KEY *key, const EVP_MD *digest, size_t msg_len, size_t *ct_size) { const size_t field_size = EC_field_size(EC_KEY_get0_group(key)); const size_t md_size = EVP_MD_size(digest); return 10 + 2 * field_size + md_size + msg_len; const int md_size = EVP_MD_size(digest); if (field_size == 0 || md_size < 0) return 0; *ct_size = 10 + 2 * field_size + (size_t)md_size + msg_len; return 1; } int SM2_encrypt(const EC_KEY *key, Loading
test/build.info +4 −8 Original line number Diff line number Diff line Loading @@ -440,7 +440,7 @@ INCLUDE_MAIN___test_libtestutil_OLB = /INCLUDE=MAIN PROGRAMS_NO_INST=siphash_internal_test ENDIF IF[{- !$disabled{sm2} -}] PROGRAMS_NO_INST=sm2_crypt_internal_test sm2_sign_internal_test PROGRAMS_NO_INST=sm2_internal_test ENDIF IF[{- !$disabled{sm4} -}] PROGRAMS_NO_INST=sm4_internal_test Loading Loading @@ -485,13 +485,9 @@ INCLUDE_MAIN___test_libtestutil_OLB = /INCLUDE=MAIN INCLUDE[siphash_internal_test]=.. ../include ../crypto/include DEPEND[siphash_internal_test]=../libcrypto.a libtestutil.a SOURCE[sm2_sign_internal_test]=sm2_sign_internal_test.c INCLUDE[sm2_sign_internal_test]=../include ../crypto/include DEPEND[sm2_sign_internal_test]=../libcrypto.a libtestutil.a SOURCE[sm2_crypt_internal_test]=sm2_crypt_internal_test.c INCLUDE[sm2_crypt_internal_test]=../include ../crypto/include DEPEND[sm2_crypt_internal_test]=../libcrypto.a libtestutil.a SOURCE[sm2_internal_test]=sm2_internal_test.c INCLUDE[sm2_internal_test]=../include ../crypto/include DEPEND[sm2_internal_test]=../libcrypto.a libtestutil.a SOURCE[sm4_internal_test]=sm4_internal_test.c INCLUDE[sm4_internal_test]=.. ../include ../crypto/include Loading
test/recipes/03-test_sm2_sign_internal.t→test/recipes/03-test_internal_sm2.t +2 −2 Original line number Diff line number Diff line Loading @@ -11,9 +11,9 @@ use OpenSSL::Test; # get 'plan' use OpenSSL::Test::Simple; use OpenSSL::Test::Utils; setup("test_sm2_sign_internal"); setup("test_internal_sm2"); plan skip_all => "This test is unsupported in a shared library build on Windows" if $^O eq 'MSWin32' && !disabled("shared"); simple_test("test_sm2_sign_internal", "sm2_sign_internal_test", "sm2"); simple_test("test_internal_sm2", "sm2_internal_test", "sm2");