資源簡介
國密算法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個文件信息
評論
共有 條評論