• 大小: 4.65MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-09-18
  • 语言: 其他
  • 标签: 国密算法  openssl  

资源简介

国密算法SM2,SM3,SM4,有源码,VC工程,基于OPENSSL.

资源截图

代码片段和文件信息

// \file:sm2.c
//SM2 Algorithm
//depending:opnessl library

//SM2 Standards: http://www.oscca.gov.cn/News/201012/News_1197.htm

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include “kdf.h“

#define  NID_X9_62_prime_field 406
static void BNPrintf(BIGNUM* bn)
{
char *p=NULL;
p=BN_bn2hex(bn);
printf(“%s“p);
OPENSSL_free(p);
}


static int sm2_sign_setup(EC_KEY *eckey BN_CTX *ctx_in BIGNUM **kp BIGNUM **rp)
{
BN_CTX   *ctx = NULL;
BIGNUM  *k = NULL *r = NULL *order = NULL *X = NULL;
EC_POINT *tmp_point=NULL;
const EC_GROUP *group;
int   ret = 0;

if (eckey == NULL || (group = EC_KEY_get0_group(eckey)) == NULL)
{
ECDSAerr(ECDSA_F_ECDSA_SIGN_SETUP ERR_R_PASSED_NULL_PARAMETER);
return 0;
}

if (ctx_in == NULL) 
{
if ((ctx = BN_CTX_new()) == NULL)
{
ECDSAerr(ECDSA_F_ECDSA_SIGN_SETUPERR_R_MALLOC_FAILURE);
return 0;
}
}
else
ctx = ctx_in;

k     = BN_new(); /* this value is later returned in *kp */
r     = BN_new(); /* this value is later returned in *rp */
order = BN_new();
X     = BN_new();
if (!k || !r || !order || !X)
{
ECDSAerr(ECDSA_F_ECDSA_SIGN_SETUP ERR_R_MALLOC_FAILURE);
goto err;
}
if ((tmp_point = EC_POINT_new(group)) == NULL)
{
ECDSAerr(ECDSA_F_ECDSA_SIGN_SETUP ERR_R_EC_LIB);
goto err;
}
if (!EC_GROUP_get_order(group order ctx))
{
ECDSAerr(ECDSA_F_ECDSA_SIGN_SETUP ERR_R_EC_LIB);
goto err;
}

do
{
/* get random k */
do
if (!BN_rand_range(k order))
{
ECDSAerr(ECDSA_F_ECDSA_SIGN_SETUP ECDSA_R_RANDOM_NUMBER_GENERATION_FAILED);
goto err;
}
while (BN_is_zero(k));

/* compute r the x-coordinate of generator * k */
if (!EC_POINT_mul(group tmp_point k NULL NULL ctx))
{
ECDSAerr(ECDSA_F_ECDSA_SIGN_SETUP ERR_R_EC_LIB);
goto err;
}
if (EC_METHOD_get_field_type(EC_GROUP_method_of(group)) == NID_X9_62_prime_field)
{
if (!EC_POINT_get_affine_coordinates_GFp(group
tmp_point X NULL ctx))
{
ECDSAerr(ECDSA_F_ECDSA_SIGN_SETUPERR_R_EC_LIB);
goto err;
}
}
else /* NID_X9_62_characteristic_two_field */
{
if (!EC_POINT_get_affine_coordinates_GF2m(group
tmp_point X NULL ctx))
{
ECDSAerr(ECDSA_F_ECDSA_SIGN_SETUPERR_R_EC_LIB);
goto err;
}
}
if (!BN_nnmod(r X order ctx))
{
ECDSAerr(ECDSA_F_ECDSA_SIGN_SETUP ERR_R_BN_LIB);
goto err;
}
}
while (BN_is_zero(r));

/* compute the inverse of k */
//  if (!BN_mod_inverse(k k order ctx))
//  {
//  ECDSAerr(ECDSA_F_ECDSA_SIGN_SETUP ERR_R_BN_LIB);
//  goto err;
//  }
/* clear old values if necessary */
if (*rp != NULL)
BN_clear_free(*rp);
if (*kp != NULL) 
BN_clear_free(*kp);
/* save the pre-computed values  */
*rp = r;
*kp = k;
ret = 1;
err:
if (!ret)
{
if

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件    1100800  2013-02-06 05:35  sm0\libeay32.dll

     文件         40  2013-03-08 22:46  sm0\read me.txt

     文件     155683  2013-03-07 16:55  sm0\SM.exe

     文件    1069056  2014-01-19 12:43  sm0\SM2\Debug\libeay32.dll

     文件     674176  2014-01-19 12:43  sm0\SM2\Debug\libeay32.lib

     文件     196668  2014-02-12 11:39  sm0\SM2\Debug\sm2.exe

     文件     270016  2014-02-12 11:39  sm0\SM2\Debug\sm2.ilk

     文件      33802  2014-02-12 11:39  sm0\SM2\Debug\sm2.obj

     文件    4407800  2014-02-12 11:39  sm0\SM2\Debug\sm2.pch

     文件     394240  2014-02-12 11:39  sm0\SM2\Debug\sm2.pdb

     文件    1272255  2014-02-12 11:39  sm0\SM2\Debug\sm2.sbr

     文件      41988  2014-02-12 11:39  sm0\SM2\Debug\sm2test.obj

     文件    1163120  2014-02-12 11:39  sm0\SM2\Debug\sm2test.sbr

     文件      50176  2014-02-12 11:42  sm0\SM2\Debug\vc60.idb

     文件      69632  2014-02-12 11:39  sm0\SM2\Debug\vc60.pdb

     文件       1368  2011-11-10 17:49  sm0\SM2\kdf.h

     文件      19111  2013-03-08 22:48  sm0\SM2\sm2.c

     文件       3611  2014-02-11 21:34  sm0\SM2\sm2.dsp

     文件        529  2011-11-09 18:45  sm0\SM2\sm2.dsw

     文件        807  2013-03-08 22:48  sm0\SM2\sm2.h

     文件      66560  2014-02-12 11:42  sm0\SM2\sm2.ncb

     文件     931328  2014-02-12 11:42  sm0\SM2\sm2.opt

     文件        240  2014-02-12 11:42  sm0\SM2\sm2.plg

     文件      13569  2013-03-08 22:48  sm0\SM2\sm2test.c

     文件     945731  2013-01-22 14:51  sm0\SM2_SM3_SM4_技术规范\国密算法SM2-1.pdf

     文件      22552  2013-01-22 14:51  sm0\SM2_SM3_SM4_技术规范\国密算法SM2-2.pdf

     文件     103677  2013-01-22 14:51  sm0\SM2_SM3_SM4_技术规范\国密算法SM3.pdf

     文件     205356  2011-10-12 22:31  sm0\SM2_SM3_SM4_技术规范\国密算法SMS4.pdf

     文件      16365  2013-02-26 17:50  sm0\SM3\Debug\sm3.obj

     文件     168003  2013-02-26 17:50  sm0\SM3\Debug\sm3test.exe

............此处省略45个文件信息

评论

共有 条评论