• 大小: 6KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-06-18
  • 语言: 其他
  • 标签: sm2  

资源简介

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

评论

共有 条评论