-
-#define ERR_INFINITY_POINT 0x00000001
-#define ERR_NOT_VALID_ELEMENT 0x00000002
-#define ERR_NOT_VALID_POINT 0x00000003
-#define ERR_ORDER 0x00000004
-#define ERR_ECURVE_INIT 0x00000005
-#define ERR_KEYEX_RA 0x00000006
-#define ERR_KEYEX_RB 0x00000007
-#define ERR_EQUAL_S1SB 0x00000008
-#define ERR_EQUAL_S2SA 0x00000009
-#define ERR_SELFTEST_Z 0x0000000A
-#define ERR_SELFTEST_INI_I 0x0000000B
-#define ERR_SELFTEST_RES_I 0x0000000C
-#define ERR_SELFTEST_INI_II 0x0000000D
-#define ERR_GENERATE_R 0x0000000E
-#define ERR_GENERATE_S 0x0000000F
-#define ERR_OUTRANGE_R 0x00000010
-#define ERR_OUTRANGE_S 0x00000011
-#define ERR_GENERATE_T 0x00000012
-#define ERR_PUBKEY_INIT 0x00000013
-#define ERR_DATA_MEMCMP 0x00000014
-#define ERR_ARRAY_NULL 0x00000015
-#define ERR_C3_MATCH 0x00000016
-#define ERR_SELFTEST_KG 0x00000017
-#define ERR_SELFTEST_ENC 0x00000018
-#define ERR_SELFTEST_DEC 0x00000019
-
-
-static unsigned char SM2_p[32] = {0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
-static unsigned char SM2_a[32] = {0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC};
-static unsigned char SM2_b[32] = {0x28, 0xE9, 0xFA, 0x9E, 0x9D, 0x9F, 0x5E, 0x34, 0x4D, 0x5A, 0x9E, 0x4B, 0xCF, 0x65, 0x09, 0xA7,
- 0xF3, 0x97, 0x89, 0xF5, 0x15, 0xAB, 0x8F, 0x92, 0xDD, 0xBC, 0xBD, 0x41, 0x4D, 0x94, 0x0E, 0x93};
-static unsigned char SM2_n[32] = {0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0x72, 0x03, 0xDF, 0x6B, 0x21, 0xC6, 0x05, 0x2B, 0x53, 0xBB, 0xF4, 0x09, 0x39, 0xD5, 0x41, 0x23};
-static unsigned char SM2_Gx[32] = {0x32, 0xC4, 0xAE, 0x2C, 0x1F, 0x19, 0x81, 0x19, 0x5F, 0x99, 0x04, 0x46, 0x6A, 0x39, 0xC9, 0x94,
- 0x8F, 0xE3, 0x0B, 0xBF, 0xF2, 0x66, 0x0B, 0xE1, 0x71, 0x5A, 0x45, 0x89, 0x33, 0x4C, 0x74, 0xC7};
-static unsigned char SM2_Gy[32] = {0xBC, 0x37, 0x36, 0xA2, 0xF4, 0xF6, 0x77, 0x9C, 0x59, 0xBD, 0xCE, 0xE3, 0x6B, 0x69, 0x21, 0x53,
- 0xD0, 0xA9, 0x87, 0x7C, 0xC6, 0x2A, 0x47, 0x40, 0x02, 0xDF, 0x32, 0xE5, 0x21, 0x39, 0xF0, 0xA0};
-static unsigned char SM2_h[32] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01};
-
-big para_p, para_a, para_b, para_n, para_Gx, para_Gy, para_h;
-epoint *G;
-miracl *mip;
-
-
-int SM2_w(big n);
-void SM3_z(unsigned char ID[], unsigned short int ELAN, epoint* pubKey, unsigned char hash[]);
-static int Test_Point(epoint* point);
-static int Test_PubKey(epoint *pubKey);
-int Test_Null(unsigned char array[], int len);
-int Test_Zero(big x);
-int Test_n(big x);
-int Test_Range(big x);
-static int SM2_standard_init();
-static int SM2_standard_keygeneration(big priKey, epoint *pubKey);
-int SM2_standard_sign_keygeneration(unsigned char PriKey[], unsigned char Px[], unsigned char Py[]);
-int SM2_standard_keyex_init_i(big ra, epoint* RA);
-int SM2_standard_keyex_re_i(big rb, big dB, epoint* RA, epoint* PA, unsigned char ZA[], unsigned char ZB[], unsigned char K[], int klen, epoint* RB, epoint* V, unsigned char hash[]);
-int SM2_standard_keyex_init_ii(big ra, big dA, epoint* RA, epoint* RB, epoint* PB, unsigned char ZA[], unsigned char ZB[], unsigned char SB[], unsigned char K[], int klen, unsigned char SA[]);
-int SM2_standard_keyex_re_ii(epoint *V, epoint *RA, epoint *RB, unsigned char ZA[], unsigned char ZB[], unsigned char SA[]);
-int SM2_standard_keyex_selftest();
-int SM2_standard_encrypt(unsigned char* randK, epoint *pubKey, unsigned char M[], int klen, unsigned char C[]);
-int SM2_standard_decrypt(big dB, unsigned char C[], int Clen, unsigned char M[]);
-int SM2_standard_enc_selftest();
-int SM2_standard_sign(unsigned char *message, int len, unsigned char ZA[], unsigned char rand[], unsigned char d[], unsigned char R[], unsigned char S[]);
-int SM2_standard_verify(unsigned char *message, int len, unsigned char ZA[], unsigned char Px[], unsigned char Py[], unsigned char R[], unsigned char S[]);
-int SM2_standard_selfcheck();
-
-
-/* Initiate SM2 curve */
-static int SM2_standard_init()
-{
- epoint *nG;
- para_p = mirvar(0);
- para_a = mirvar(0);
- para_b = mirvar(0);
- para_n = mirvar(0);
- para_Gx = mirvar(0);
- para_Gy = mirvar(0);
- para_h = mirvar(0);
-
- G = epoint_init();
- nG = epoint_init();
-
- bytes_to_big(SM2_NUMWORD, SM2_p, para_p);
- bytes_to_big(SM2_NUMWORD, SM2_a, para_a);
- bytes_to_big(SM2_NUMWORD, SM2_b, para_b);
- bytes_to_big(SM2_NUMWORD, SM2_n, para_n);
- bytes_to_big(SM2_NUMWORD, SM2_Gx, para_Gx);
- bytes_to_big(SM2_NUMWORD, SM2_Gy, para_Gy);
- bytes_to_big(SM2_NUMWORD, SM2_h, para_h);
-
- ecurve_init(para_a, para_b, para_p, MR_PROJECTIVE); //Initialises GF(p) elliptic curve.
- //MR_PROJECTIVE specifying projective coordinates
- if (!epoint_set(para_Gx, para_Gy, 0, G)) //initialise point G
- {
- return ERR_ECURVE_INIT;
- }
- ecurve_mult(para_n, G, nG);
- if (!point_at_infinity(nG)) //test if the order of the point is n
- {
- return ERR_ORDER;
- }
- return 0;
-}
-
-
-/* test if the given point is on SM2 curve */
-static int Test_Point(epoint* point)
-{
- big x, y, x_3, tmp;
- x = mirvar(0);
- y = mirvar(0);
- x_3 = mirvar(0);
- tmp = mirvar(0);
-
- //test if y^2 = x^3 + ax + b
- epoint_get(point, x, y);
- power(x, 3, para_p, x_3); //x_3 = x^3 mod p
- multiply(x, para_a, x); //x = a * x
- divide(x, para_p, tmp); //x = a * x mod p, tmp = a * x / p
- add(x_3, x, x); //x = x^3 + ax
- add(x, para_b, x); //x = x^3 + ax + b
- divide(x, para_p, tmp); //x = x^3 + ax + b mod p
- power(y, 2, para_p, y); //y = y^2 mod p
- if (mr_compare(x, y) != 0)
- return ERR_NOT_VALID_POINT;
- else
- return 0;
-}
-
-
-/* test if the given public key is valid */
-static int Test_PubKey(epoint *pubKey)
-{
- big x, y, x_3, tmp;
- epoint *nP;
- x = mirvar(0);
- y = mirvar(0);
- x_3 = mirvar(0);
- tmp = mirvar(0);
-
- nP = epoint_init();
-
- //test if the pubKey is the point at infinity
- if (point_at_infinity(pubKey)) //if pubKey is point at infinity, return error;
- return ERR_INFINITY_POINT;
-
- //test if x < p and yIOBASE = 16;
-
- ecurve_mult(priKey, G, pubKey);
- epoint_get(pubKey, x, y);
-
- i = Test_PubKey(pubKey);
- if (i)
- return i;
- else
- return 0;
-}
-
-#ifdef __cplusplus
-}
-# endif
-#endif
-
-
diff --git a/include/openssl/sm3_standard.h b/include/openssl/sm3_standard.h
deleted file mode 100644
index 737b028e..00000000
--- a/include/openssl/sm3_standard.h
+++ /dev/null
@@ -1,42 +0,0 @@
-#include
-
-#define SM3_len 256
-#define SM3_T1 0x79CC4519
-#define SM3_T2 0x7A879D8A
-#define SM3_IVA 0x7380166f
-#define SM3_IVB 0x4914b2b9
-#define SM3_IVC 0x172442d7
-#define SM3_IVD 0xda8a0600
-#define SM3_IVE 0xa96f30bc
-#define SM3_IVF 0x163138aa
-#define SM3_IVG 0xe38dee4d
-#define SM3_IVH 0xb0fb0e4e
-
-/* Various logical functions */
-#define SM3_p1(x) (x^SM3_rotl32(x,15)^SM3_rotl32(x,23))
-#define SM3_p0(x) (x^SM3_rotl32(x,9)^SM3_rotl32(x,17))
-#define SM3_ff0(a,b,c) (a^b^c)
-#define SM3_ff1(a,b,c) ((a&b)|(a&c)|(b&c))
-#define SM3_gg0(e,f,g) (e^f^g)
-#define SM3_gg1(e,f,g) ((e&f)|((~e)&g))
-#define SM3_rotl32(x,n) ((((unsigned int) x) << n) | (((unsigned int) x) >> (32 - n)))
-#define SM3_rotr32(x,n) ((((unsigned int) x) >> n) | (((unsigned int) x) << (32 - n)))
-
-
-typedef struct {
- unsigned int state[8];
- unsigned int length;
- unsigned int curlen;
- unsigned char buf[64];
-} SM3_STATE;
-
-
-void BiToWj(unsigned int Bi[], unsigned int Wj[]);
-void WjToWj1(unsigned int Wj[], unsigned int Wj1[]);
-void CF(unsigned int Wj[], unsigned int Wj1[], unsigned int V[]);
-void BigEndian(unsigned char src[], unsigned int bytelen, unsigned char des[]);
-void SM3_init(SM3_STATE *md);
-void SM3_compress(SM3_STATE * md);
-void SM3_process(SM3_STATE * md, unsigned char buf[], int len);
-void SM3_done(SM3_STATE *md, unsigned char *hash);
-void SM3_256(unsigned char buf[], int len, unsigned char hash[]);
diff --git a/util/libcrypto.num b/util/libcrypto.num
index a61d4310..7073abf7 100644
--- a/util/libcrypto.num
+++ b/util/libcrypto.num
@@ -732,7 +732,7 @@ SHA384_Final 707 1_1_0d EXIST:!VMSVAX:FUNCTION:
RIPEMD160_Final 708 1_1_0d EXIST::FUNCTION:RMD160
RSA_PSS_PARAMS_free 709 1_1_0d EXIST::FUNCTION:RSA
ERR_load_SDF_strings 710 1_1_0d EXIST::FUNCTION:
-speck_encrypt 711 1_1_0d EXIST::FUNCTION:
+speck_encrypt 711 1_1_0d NOEXIST::FUNCTION:
RSA_padding_check_PKCS1_OAEP_mgf1 712 1_1_0d EXIST::FUNCTION:RSA
EVP_DigestSignInit 713 1_1_0d EXIST::FUNCTION:
X509V3_EXT_add_nconf_sk 714 1_1_0d EXIST::FUNCTION:
@@ -1034,7 +1034,7 @@ X509_REQ_dup 997 1_1_0d EXIST::FUNCTION:
OPENSSL_gmtime_diff 998 1_1_0d EXIST::FUNCTION:
AES_cfb128_encrypt 999 1_1_0d EXIST::FUNCTION:
PEM_write_bio_PKCS8 1000 1_1_0d EXIST::FUNCTION:
-speck_expand 1001 1_1_0d EXIST::FUNCTION:
+speck_expand 1001 1_1_0d NOEXIST::FUNCTION:
PKCS7_cert_from_signer_info 1002 1_1_0d EXIST::FUNCTION:
a2i_GENERAL_NAME 1003 1_1_0d EXIST::FUNCTION:
OCSP_ONEREQ_get_ext_by_critical 1004 1_1_0d EXIST::FUNCTION:OCSP
@@ -1491,7 +1491,7 @@ BN_mod_exp_recp 1444 1_1_0d EXIST::FUNCTION:
BN_GFP2_sub_bn 1445 1_1_0d EXIST::FUNCTION:
EVP_CIPHER_meth_free 1446 1_1_0d EXIST::FUNCTION:
PKCS8_set0_pbe 1447 1_1_0d EXIST::FUNCTION:
-speck_decrypt 1448 1_1_0d EXIST::FUNCTION:
+speck_decrypt 1448 1_1_0d NOEXIST::FUNCTION:
X509_STORE_CTX_set_time 1449 1_1_0d EXIST::FUNCTION:
OCSP_BASICRESP_add1_ext_i2d 1450 1_1_0d EXIST::FUNCTION:OCSP
i2d_PKCS8_PRIV_KEY_INFO_bio 1451 1_1_0d EXIST::FUNCTION:
@@ -4480,7 +4480,7 @@ EVP_PKEY_security_bits 4338 1_1_0d EXIST::FUNCTION:
CMS_RecipientInfo_ktri_get0_signer_id 4339 1_1_0d EXIST::FUNCTION:CMS
OCSP_REQ_CTX_free 4340 1_1_0d EXIST::FUNCTION:OCSP
X509_PURPOSE_add 4341 1_1_0d EXIST::FUNCTION:
-speck_set_encrypt_key 4342 1_1_0d EXIST::FUNCTION:
+speck_set_encrypt_key 4342 1_1_0d NOEXIST::FUNCTION:
s2i_ASN1_OCTET_STRING 4343 1_1_0d EXIST::FUNCTION:
RSA_padding_add_PKCS1_PSS_mgf1 4344 1_1_0d EXIST::FUNCTION:RSA
i2t_ASN1_OBJECT 4345 1_1_0d EXIST::FUNCTION:
@@ -4843,5 +4843,20 @@ o2i_SM2CiphertextValue 4684 1_1_0d EXIST::FUNCTION:
i2o_SM2CiphertextValue 4685 1_1_0d EXIST::FUNCTION:
SM2_compute_message_digest 4686 1_1_0d EXIST::FUNCTION:
serpent_set_decrypt_key 4687 1_1_0d EXIST::FUNCTION:
-sms4_standard_encrypt 4688 1_1_0d EXIST::FUNCTION:
-sms4_standard_decrypt 4689 1_1_0d EXIST::FUNCTION:
+sms4_standard_encrypt 4688 1_1_0d NOEXIST::FUNCTION:
+sms4_standard_decrypt 4689 1_1_0d NOEXIST::FUNCTION:
+speck_decrypt16 4690 1_1_0d EXIST::FUNCTION:
+speck_decrypt32 4691 1_1_0d EXIST::FUNCTION:
+speck_expand32 4692 1_1_0d EXIST::FUNCTION:
+speck_set_encrypt_key64 4693 1_1_0d EXIST::FUNCTION:
+speck_decrypt64 4694 1_1_0d EXIST::FUNCTION:
+speck_encrypt32 4695 1_1_0d EXIST::FUNCTION:
+speck_expand64 4696 1_1_0d EXIST::FUNCTION:
+speck_set_decrypt_key32 4697 1_1_0d EXIST::FUNCTION:
+speck_encrypt16 4698 1_1_0d EXIST::FUNCTION:
+speck_set_encrypt_key32 4699 1_1_0d EXIST::FUNCTION:
+speck_encrypt64 4700 1_1_0d EXIST::FUNCTION:
+speck_set_encrypt_key16 4701 1_1_0d EXIST::FUNCTION:
+speck_expand16 4702 1_1_0d EXIST::FUNCTION:
+speck_set_decrypt_key64 4703 1_1_0d EXIST::FUNCTION:
+speck_set_decrypt_key16 4704 1_1_0d EXIST::FUNCTION: