DAY17_openssl的正确打开使用方式
2016-08-17 12:46
477 查看
1.openssl文件+openssl算法
http://blog.chinaunix.net/uid-23615729-id-313371.html
2.DH为例,实现在crypt/dh目录中,各个源码功能:
http://blog.csdn.net/sjtu_chenchen/article/details/46404933
3.DH为例,数据结构定义在crypto/dh/dh.h中,主要包含两项:
struct dh_method {
const char *name;
/* Methods here */
int (*generate_key) (DH *dh);
int (*compute_key) (unsigned char *key, const BIGNUM *pub_key, DH *dh);
/* Can be null */
int (*bn_mod_exp) (const DH *dh, BIGNUM *r, const BIGNUM *a,
const BIGNUM *p, const BIGNUM *m, BN_CTX *ctx,
BN_MONT_CTX *m_ctx);
int (*init) (DH *dh);
int (*finish) (DH *dh);
int flags;
char *app_data;
/* If this is non-NULL, it will be used to generate parameters */
int (*generate_params) (DH *dh, int prime_len, int generator,
BN_GENCB *cb);
};
DH_METHOD指明了一个DH密钥所有的计算方法函数。用户可以实现自己的DH_METHOD来替换openssl提供默认方法。各项意义如下:
name:DH_METHOD方法名称。
generate_key:生成DH公私钥的函数。
compute_key:根据对方公钥和己方DH密钥来生成共享密钥的函数。
bn_mod_exp:大数模运算函数,如果用户实现了它,生成DH密钥时,将采用用户实现的该回调函数。用于干预DH密钥生成。
init:初始化函数。
finish:结束函数。
flags:用于记录标记。
app_data:用于存放应用数据。
generate_params:生成DH密钥参数的回调函数,生成的密钥参数是可以公开的。
struct dh_st {
/*
* This first argument is used to pick up errors when a DH is passed
* instead of a EVP_PKEY
*/
int pad;
int version;
BIGNUM *p;
BIGNUM *g;
long length; /* optional */
BIGNUM *pub_key; /* g^x */
BIGNUM *priv_key; /* x */
int flags;
BN_MONT_CTX *method_mont_p;
/* Place holders if we want to do X9.42 DH */
BIGNUM *q;
BIGNUM *j;
unsigned char *seed;
int seedlen;
BIGNUM *counter;
int references;
CRYPTO_EX_DATA ex_data;
const DH_METHOD *meth;
ENGINE *engine;
};
p、g、length:DH密钥参数;
pub_key:DH公钥;
priv_key:DH私钥;
references:引用;
ex_data:扩展数据;
meth:DH_METHOD,本DH密钥的各种计算方法,明确指明了DH的各种运算方式;
engine:硬件引擎。
http://blog.chinaunix.net/uid-23615729-id-313371.html
2.DH为例,实现在crypt/dh目录中,各个源码功能:
http://blog.csdn.net/sjtu_chenchen/article/details/46404933
3.DH为例,数据结构定义在crypto/dh/dh.h中,主要包含两项:
struct dh_method {
const char *name;
/* Methods here */
int (*generate_key) (DH *dh);
int (*compute_key) (unsigned char *key, const BIGNUM *pub_key, DH *dh);
/* Can be null */
int (*bn_mod_exp) (const DH *dh, BIGNUM *r, const BIGNUM *a,
const BIGNUM *p, const BIGNUM *m, BN_CTX *ctx,
BN_MONT_CTX *m_ctx);
int (*init) (DH *dh);
int (*finish) (DH *dh);
int flags;
char *app_data;
/* If this is non-NULL, it will be used to generate parameters */
int (*generate_params) (DH *dh, int prime_len, int generator,
BN_GENCB *cb);
};
DH_METHOD指明了一个DH密钥所有的计算方法函数。用户可以实现自己的DH_METHOD来替换openssl提供默认方法。各项意义如下:
name:DH_METHOD方法名称。
generate_key:生成DH公私钥的函数。
compute_key:根据对方公钥和己方DH密钥来生成共享密钥的函数。
bn_mod_exp:大数模运算函数,如果用户实现了它,生成DH密钥时,将采用用户实现的该回调函数。用于干预DH密钥生成。
init:初始化函数。
finish:结束函数。
flags:用于记录标记。
app_data:用于存放应用数据。
generate_params:生成DH密钥参数的回调函数,生成的密钥参数是可以公开的。
struct dh_st {
/*
* This first argument is used to pick up errors when a DH is passed
* instead of a EVP_PKEY
*/
int pad;
int version;
BIGNUM *p;
BIGNUM *g;
long length; /* optional */
BIGNUM *pub_key; /* g^x */
BIGNUM *priv_key; /* x */
int flags;
BN_MONT_CTX *method_mont_p;
/* Place holders if we want to do X9.42 DH */
BIGNUM *q;
BIGNUM *j;
unsigned char *seed;
int seedlen;
BIGNUM *counter;
int references;
CRYPTO_EX_DATA ex_data;
const DH_METHOD *meth;
ENGINE *engine;
};
p、g、length:DH密钥参数;
pub_key:DH公钥;
priv_key:DH私钥;
references:引用;
ex_data:扩展数据;
meth:DH_METHOD,本DH密钥的各种计算方法,明确指明了DH的各种运算方式;
engine:硬件引擎。
相关文章推荐
- PullToRefreshListView 使用 onItemLongClick 的正确打开方式
- Python24中使用urllib时遇到IOError的正确打开方式
- 您的网页浏览器已阻止此站点以不安全的方式打开使用Active控件。因此,此页可能显示不正确
- 异常使用原理--异常的正确打开方式
- PyQt5 ScroolArea创建及使用的正确打开方式
- Java 异常的使用清单 —— 原来这才是异常的正确打开方式
- Github使用之Pull Request的正确打开方式(如何在GitHub上贡献开源项目)
- C#语法——泛型的多种应用 C#语法——await与async的正确打开方式 C#线程安全使用(五) C#语法——元组类型 好好耕耘 redis和memcached的区别
- excel使用技巧,激活Administrator用户方法, 创建"以管理员身份打开"的命令行快捷方式
- 利用json和prototype来做用户是否正确的判断,传统的方式是提交后做判断,这里使用的是ajax异步传输的方式。
- (2356)使用NSIS打包的应用程序,在Vista中无法正确删除开始菜单快捷方式的问题解决方案
- sharepoint 2007 使用explorer 的方式打开文档库,无法复制大于50M的文件
- 使用Win API 获取文件大小(可获取正在使用的文件,包括独占方式打开的文件GetFileSize)
- 使用JavaScript打开新窗口的两种方式
- 使用按钮控制以何种方式打开新窗口的属性介绍
- 使用window.open打开新窗口,以post方式传参数
- django:数据库修改工具South的正确使用方式
- 如何在运行 Windows XP Service Pack 2 的系统上使用脚本以编程方式打开端口供 SQL Server 使用
- 使用Python为程序添加右键菜单打开方式