资源简介
国密算法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个文件信息
相关资源
- openssl1.1.1RSA、ECC、SM2身份认证Demo及文
- openssl 32位 包
- openssl-1.0.1p.tar.gz
- openssl-1.0.1t.tar.gz
- RedHat 6.5离线安装openssl-devel顺序
- openssl-1.0.0o.tar.gz
- openssl1.0.1e_x86_x64lib和dll文件
- win64openssl_light-1-0-2.exe
- OpenSSL接口说明文档
- OPENSSL算法库之rc4算法使用
- openssl密钥生成工具
- openSSL头文件和静态库文件以及动态库
- openssl-1.0.1e-57.el6.x86_64.rpm
- 国密算法pdf文档及SM2算法JS实现
- openssl-fips-2.0.12.tar.gz
- Open SSl 1.1
- 国密算法SM系列
- 编译好的openssl
- openssl1.1.1源码
- openldap-2.2.29-db-4.3.29-openssl-0.9.8a-win32
- openssl-cookbook 中文版
- centos 7.x openssh7.8p RPM包
- win10上编译好的openssl
- ios openssl 1.0.1g
- QT5.12所需ssleay32.dll,libeay32.dll 1.0.2q
- OpenSSL头文件和lib我的系统是windows7/
- centos7 离线安装gcc pcre-devel openssl-dev
- openssl 安装包
- 国密算法SM234及demo
- vs2015编译的openssl-1.0.2l包含静态库(
评论
共有 条评论