资源简介
1)公钥解压;该函数运行依赖于openssl1.1.1,编译时需要引入libssl.so;libcrypto.so。
2)本代码非本人原创,只修复了原来代码中 内存泄漏及部分公钥解压不正确的两个bug。
代码片段和文件信息
//
// Created by jxl on 18-3-3.
//
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include “openssl/bn.h“
BIGNUM* g_pBG_p=NULL;
BIGNUM* g_pBG_a=NULL;
BIGNUM* g_pBG_b=NULL;
BIGNUM* g_pBG_n=NULL;
BIGNUM* g_pBG_Gx=NULL;
BIGNUM* g_pBG_Gy=NULL;
BIGNUM* g_pBGXp=NULL;
BIGNUM* g_pBGX3=NULL;
BIGNUM* g_pBGX=NULL;
BIGNUM* g_pBGY=NULL;
BIGNUM* g_pR=NULL;
BIGNUM* g_pTemp=NULL;
BN_CTX *ctx=NULL;
void static print_hex(const char *ptitle const char *pSendBuff int SendLen)
{
/*
int i;
printf(“%s ---> (%d)(%d): [“ ptitle SendLen SendLen);
for(i = 0; i < SendLen; i ++)
{
printf(“%02X“ pSendBuff[i]);
}
printf(“]\r\n“);*/
}
void static print_bn(char *pchT BIGNUM* pBG_p)
{
/*
unsigned char aucY[1024+1] = {0};
int iYLen = 0;
iYLen = BN_bn2bin ( pBG_p aucY);
print_hex(pchT aucY iYLen);*/
}
/**********************************************************************************************//**
* @fn void sm2_point_ini(void);
* @brief 点压缩算法的初始化
*
* @param [io] void
* @return - void
* -
* @bug (bug修复的描述问题)
* - 1.
* - 2.
***************************************************************************************************/
void static sm2_point_ini(void)
{
g_pBGX3 = BN_new ();
g_pBGX = BN_new ();
g_pBGY = BN_new ();
g_pR = BN_new ();
g_pTemp = BN_new ();
ctx = BN_CTX_new ();
}
void static sm2_point_destroy(void)
{
if(g_pBG_p!=NULL)
{
BN_free(g_pBG_p);
g_pBG_p=NULL;
}
if(g_pBG_a!=NULL)
{
BN_free(g_pBG_a);
g_pBG_a=NULL;
}
if(g_pBG_b!=NULL)
{
BN_free(g_pBG_b);
g_pBG_b=NULL;
}
if(g_pBG_n!=NULL)
{
BN_free(g_pBG_n);
g_pBG_n=NULL;
}
if(g_pBG_Gx!=NULL)
{
BN_free(g_pBG_Gx);
g_pBG_Gx=NULL;
}
if(g_pBG_Gy!=NULL)
{
BN_free(g_pBG_Gy);
g_pBG_Gy=NULL;
}
if(g_pBGXp!=NULL)
{
BN_free(g_pBGXp);
g_pBGXp=NULL;
}
if(g_pBGX3!=NULL)
{
BN_free(g_pBGX3);
g_pBGX3=NULL;
}
if(g_pBGX!=NULL)
{
BN_free(g_pBGX);
g_pBGX=NULL;
}
if(g_pBGY!=NULL)
{
BN_free(g_pBGY);
g_pBGY=NULL;
}
if(g_pR!=NULL)
{
BN_free(g_pR);
g_pR=NULL;
}
if(g_pTemp!=NULL)
{
BN_free(g_pTemp);
g_pTemp=NULL;
}
if(ctx!=NULL)
{
BN_CTX_free(ctx);
ctx=NULL;
}
}
/**********************************************************************************************//**
p=FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFF
a=FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFC
b=28E9FA9E9D9F5E344D5A9E4BCF6509A7F39789F515AB8F92DDBCBD414D940E93
n=FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF7203DF6B21C6052B53BBF40939D54123
Gx=32C4AE2C1F1981195F9904466A39C9948FE30BBFF2660BE1715A4589334C74C7
Gy=BC3736A2F4F6779C59BDCEE36B692153D0A
相关资源
- SM2密码算法使用规范
- 非常全且非常好用的国密算法DoubleC
- SM2和SM3算法
- 国密算法计算工具SM2SM3SM4
- 国密算法SM2公私钥加解密及签名验签
- SM2、SM3、SM4 测试工具
- 开卡工具 固态硬盘
- 纯Csm2算法源码
- sm2/sm3算法验证工具,预运算、大数计
- SM2.rar
- 用openssl实现sm2算法
- SM2密钥生成、加解密、签名验签、密
- SM2 SM4 国密算法 运算工具测试必备
- 国密sm2算法c实现
- gmssl 2.0测试sm2加解密、签名 sm3摘要
- openssl_sm2_sm3_c.zip
- 国密SM2文档详细
- ilasm2.0 用于将ildasm生成的il文件重新编
- 国密SM2算法基于Openssl实现
- sm2、sm3源代码,openssl可直接调用
- SM2 加密解密
- 国密SM2算法规范
- 国密 SM2 SM3 签名 验签 加解密 公私钥
- 国密SM2SM3SM4计算工具
- 典型密码算法FPGA实现-DESAES3DESECCSM2,
- security-sm2-sm3.zip
- sm2签名验签解压公钥sm.zip
- 使用openssl 1.1.1版本调试国密SM2 P7 Si
- 使用openssl 1.1.1版本调试国密SM2签名、
- hp_s700开卡工具SM2258XT_PKGR1026A_FWR0831B
评论
共有 条评论