md_size = EVP_MD_size(digest),SM2算法采用SM3算法,因此md_size等于32。 由此可知,sm2_plaintext_size函数中的overhead取值等于106(10+2*32+32)。 msg_len:整个加密后的数据长度,加密后的数据格式参见GM/T 0009-2012的7.2节“加密数据格式”: 这里,XCoordinate和YCoordinate是加密过程基于随机数计算出的椭圆...
}intmain(){OpenSSL_add_all_algorithms();tDigest();return0; }
这里ecdsa with sha256可能需要换成sm3,不过在RFC 5349中规定为ecdsa SHA做digest,所以需要做二次开发,这次暂时用这个. 2 生成服务端证书 生成服务端密钥 ecparam -genkey -name SM2 -out server_sm2_private.pem 1 生成服务端代签名证书 req -new -key server_sm2_private.pem -out server.csr 1 使用CA证...
查看SM2_pIaintext_size函数: field_size = ec_field_size(EC_KEY_get0_group(key)),对于SM2算法,field_size等于32。 md_size = EVP_MD_size(digest),SM2算法采用SM3算法,因此md_size等于32。 从上述2点可知,SM2_pIaintext_size函数中的overhead取值等于106(10+2*32+32)。这里的magic number 10背后有...
接下来,我们将使用Java代码生成SM2签名。 importorg.bouncycastle.crypto.AsymmetricCipherKeyPair;importorg.bouncycastle.crypto.CipherParameters;importorg.bouncycastle.crypto.digests.SM3Digest;importorg.bouncycastle.crypto.engines.SM2Engine;importorg.bouncycastle.crypto.params.ECPrivateKeyParameters;importorg.bouncycastle...
这里sm2_plaintext_size函数返回outlen,作为接下来分配堆内存的大小。 4、sm2_plaintext_size实现 sm2_plaintext_size函数位于crypto/sm2/sm2_crypt.c int sm2_plaintext_size(const EC_KEY *key, const EVP_MD *digest, size_t msg_len, size_t *pt_size) ...
1、SM2实现( 利openssl的evp)加解密#include #include #include #include openssl/ec.h #include openssl/evp.h/* Main function return value:0: main function executes successfully-1: an error occurs*/ int main(void)int ret = -1, i;EVP_PKEY_CTX *pctx = NULL, *ectx = NULL; EVP_PKEY *p...
int SM2_decrypt(const EC_KEY *key, const EVP_MD *digest, const uint8_t *ciphertext, size_t ciphertext_len, uint8_t *ptext_buf, size_t *ptext_len); 每个参数没有备注,就问你怕不怕。API的话,你可以去 https://www.feistyduck.com/library/openssl-cookbook/ ...
目前常见的证书算法为RSA和ECC,ECC在国内又成为SM2。SM2是国家密码管理局基于椭圆算法(ECC)制定的国内非对称算法标准。 四、证书用途 证书从用途来分,分为“签名证书”和“加密证书”两大类。“签名证书”的公钥用来验证签名,而“加密证书”的公钥则用来加密数据。我们可以通过调用X509中的ex_kusage字段来判断证书的...
这里sm2_plaintext_size函数返回outlen,作为接下来分配堆内存的大小。 4、sm2_plaintext_size实现 sm2_plaintext_size函数位于crypto/sm2/sm2_crypt.c int sm2_plaintext_size(const EC_KEY *key, const EVP_MD *digest, size_t msg_len, size_t *pt_size) ...