資源簡介
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?????{
????????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
評論
共有 條評論