资源简介
在GmSSL 2.0 - OpenSSL 1.1.0d 26 Jan 2017 版本上,编写的sm2 加解密 ,签名验签,sm3摘要的测试程序
代码片段和文件信息
/*
update time :
author : create by helloworld
need: GmSSL 2.0 - OpenSSL 1.1.0d 26 Jan 2017
*/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define ERROR(...) \
do{ \
fprintf(stderr “[ERROR ]%s %s(Line %d): “__FILE____FUNCTION____LINE__); \
fprintf(stderr __VA_ARGS__); \
printf(“\n“); \
}while(0) ;
#define INFO(...) \
do{ \
fprintf(stdout “[INFO ]%s %s(Line %d): “__FILE____FUNCTION____LINE__); \
fprintf(stdout __VA_ARGS__); \
printf(“\n“); \
}while(0) ;
void print_arr(const char *string unsigned char*data int size)
{
int i;
printf(“---------------------------------------------\n“);
printf(“%s len=%d\n“ stringsize);
for(i=0; i {
printf(“%02x “ data[i]);
if((i%16) == 15)
printf(“\n“);
}
if(size%16)
printf(“\n“);
printf(“---------------------------------------------\n“);
}
BIO *bio_err ;
BIO *bio_stdout ;
char g_pubkey[] = ““
“-----BEGIN PUBLIC KEY-----\r\n“
“MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEu4kSnox0T5SND9KGGlpTvcQ5hiz0\r\n“
“Wm7kigVRTEc0+5wrSoyvnZYuYKLFSSzK2ZbMH+etX7UeRSiPplD63fChNw==\r\n“
“-----END PUBLIC KEY-----\r\n“
““;
char g_prikey[] = ““
“-----BEGIN PRIVATE KEY-----\r\n“
“MIGHAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBG0wawIBAQQgQnx5UCnYOJv558pc\r\n“
“rU9mgorePGbbF8/JxsR9N8LrKAmhRANCAAS7iRKejHRPlI0P0oYaWlO9xDmGLPRa\r\n“
“buSKBVFMRzT7nCtKjK+dli5gosVJLMrZlswf561ftR5FKI+mUPrd8KE3\r\n“
“-----END PRIVATE KEY-----\r\n“
““;
static EVP_PKEY *getPEMPublicKeyFromBuf(const char* bufsize_t len)
{
EVP_PKEY *pkey = NULL;
BIO* key = NULL;
key = BIO_new(BIO_s_mem());
BIO_write(keybuflen);
BIO_seek(key0);
pkey = PEM_read_bio_PUBKEY(key NULL 0 NULL);
BIO_free(key);
return pkey;
}
static EVP_PKEY *getPEMPrivateKeyFromBuf(const char* bufsize_t len)
{
EVP_PKEY *pkey = NULL;
BIO* key = NULL;
key = BIO_new(BIO_s_mem());
BIO_write(keybuflen);
BIO_seek(key0);
pkey = PEM_read_bio_PrivateKey(key NULL 0 NULL);
BIO_free(key);
return pkey;
}
static int test_sm2_encrypt(EVP_PKEY *pkey unsigned char *cbuf size_t buflenunsigned char * out size_t* poutlen)
{
int ret = 0;
if(SM2_encrypt_with_recommended(cbuf buflen out poutlen EVP_PKEY_get0_EC_KEY(pkey)) != 1){
ERR_print_errors_fp(stderr);
printf(“SM2_encrypt_with_recommended failed \n“);
ret = -1; goto end;
}
size_t i;
printf(“ciphertext (%d bytes) = \n“ *poutlen);
for (i = 0; i < *poutlen; i++) {
printf(“%02X “ out[i]);
if(i % 16 == 15){
printf(“\n“);
}
}
printf(“\n“);
ret = 1;
end:
return ret;
}
static int test_sm2_decrypt(EVP_PKEY *pkey unsigned char *cbuf size_t cbuflen)
{
int
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 6868 2018-12-14 16:57 test-gmssl.cpp
- 上一篇:Linux_C函数库参考手册(清晰版完整版)
- 下一篇:Vue全套教程视频
相关资源
- ILASM32位 + 64位
- 慧荣SM32X_K0530量产工具
- 慧荣Test_SM32x_H0229汉化版
- 国密SM3算法Delphi实现
- Delphi 版 SM3 SM4加解密
- SM2国密算法实现基于mircal的实现
- 国密文档合集大部分GMT系列
- SM2椭圆曲线算法软件.rar
- SM2_SM3_SM4计算常用工具
- SM2258东芝颗粒
- 基于SM32F103C8T6的环境传感器
- SM2椭圆曲线门限方案
- UBNT NSM2 官方5.3.5固件
- 商密SM4-SM3-SM2FPGA实现源码.rar
- 国密SM2 / SM3 / SM4 / SM9 / ZUC算法的官方
- Radasm中文版安装包
- 国密算法SM2 SM3 SM4相关算法及推荐参数
- SM2椭圆曲线公钥密码算法
- LSM303DLH 中文pdf (磁力计+ 线性加速
- iOS国密demoSM2 SM3 SM4 ZUC EEA3 EIA3
- GM T 0009-2012 SM2密码算法使用规范
- 国密算法SM3验证与SM4文件加密工具C
- 基于GMSSL的SM9签名,密钥交换,加密,
- 基于MIRACL库下的SM2密钥交换的实现
- NIITsm3在线考试切图有答案
- 修订后的GmSSL-2.0
- 慧荣SM3267ABS(USB3.0)量产工具.rar
- Star_SM3281series_T0702.rar
- 慧荣SM3257ENBB量产工具
- 慧荣SM2256主控开卡工具包
评论
共有 条评论