资源简介
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国密算法实现基于mircal的实现
- SM2椭圆曲线算法软件.rar
- SM2_SM3_SM4计算常用工具
- SM2258东芝颗粒
- SM2椭圆曲线门限方案
- UBNT NSM2 官方5.3.5固件
- 商密SM4-SM3-SM2FPGA实现源码.rar
- 国密SM2 / SM3 / SM4 / SM9 / ZUC算法的官方
- 国密算法SM2 SM3 SM4相关算法及推荐参数
- SM2椭圆曲线公钥密码算法
- iOS国密demoSM2 SM3 SM4 ZUC EEA3 EIA3
- GM T 0009-2012 SM2密码算法使用规范
- 基于MIRACL库下的SM2密钥交换的实现
- 慧荣SM2256主控开卡工具包
- 慧荣SMI SM2246ENAA_2246AB芯片量产工具V
- SM2椭圆曲线公钥密码算法(完整)
- AB modbus通讯模块手册
- 基于SM2密码算法的证书认证系统密码
- openssl1.1.1RSA、ECC、SM2身份认证Demo及文
- sm2_ssl.rar
- 慧荣SM2246EN SSD固态硬盘开卡工具(东
- sm2 sm9 加密 解密 签名 验签工具
- 国密算法pdf文档及SM2算法JS实现
- 国密算法SM系列
- GMT 0034-2014 基于SM2密码算法的证书认证
- GMT 0010-2012 SM2 密码算法加密签名消息
- SM2246XT开卡.rar
- 国密算法SM234及demo
- iOS demo SM2,SM4 加密算法,SM2+SM3签名
- MASM2012 支持win7 64 位
评论
共有 条评论