对数字签名部分的结构体有一个了解之后,下面开始来介绍相关的基本函数,比如签名的新建与释放,ECDSA_DATA的基本操作,ECDSA_METHOD的基本操作等。
───────────────────────────────────────
ECDSA_SIG *ECDSA_SIG_new(void)
功能: 新建并初始化签名
输入: -
输出: -
返回: 新建签名值
───────────────────────────────────────
───────────────────────────────────────
void ECDSA_SIG_free(ECDSA_SIG *a)
功能: 释放签名值
输入: a
输出: -
返回: -
───────────────────────────────────────
───────────────────────────────────────
ECDSA_DATA *ecdsa_check(EC_KEY *key)
功能: 检查并获取密钥中的method_data,并转给ECDSA_DATA
输入: key
输出: -
返回: 对应的ECDSA_DATA
出处: ecdsa\ecs_lib.c
备注: 如果key中有method_data信息,则将这些信息转给ECDSA_DATA;
否则将系统默认的method_data信息写入key和ECDSA_DATA。
───────────────────────────────────────
───────────────────────────────────────
void *EC_KEY_get_key_method_data(EC_KEY *key, void *(*dup_func)(void *), void (*free_func)(void *), void (*clear_free_func)(void *))
功能: 读取密钥的方法
输入: key
输出: dup_func,free_func,clear_free_func【方法】
返回: -
出处: ec\ec_key.c
备注: (data, dup_func, free_func, clear_free_func) ← key->method_data
───────────────────────────────────────
───────────────────────────────────────
static void *ecdsa_data_new(void)
功能: 新建ECDSA_DATA
输入: -
输出: -
返回: 新建的ECDSA_DATA
出处: ecdsa\ecs_lib.c
备注: return (void *)ECDSA_DATA_new_method(NULL)
将新建的ECDSA_DATA内的信息都设置为默认值。
调用: ▼ static ECDSA_DATA *ECDSA_DATA_new_method(ENGINE *engine)
───────────────────────────────────────
───────────────────────────────────────
void ECDSA_set_default_method(const ECDSA_METHOD *meth)
功能: 设置默认的ECDSA方法
输入: meth
输出: -
返回: -
出处: ecdsa\ecs_lib.c
备注: 本函数修改全局变量——默认的ECDSA方法:default_ECDSA_method ← meth。
───────────────────────────────────────
───────────────────────────────────────
const ECDSA_METHOD *ECDSA_get_default_method(void)
功能: 获取默认的ECDSA方法
输入: -
输出: -
返回: 默认的ECDSA方法
出处: ecdsa\ecs_lib.c
备注: 如果default_ECDSA_method 不空,返回default_ECDSA_method;
否则,返回系统默认方法ECDSA_OpenSSL()。
调用: ▼ const ECDSA_METHOD *ECDSA_OpenSSL(void)
───────────────────────────────────────
系统默认方法const ECDSA_METHOD *ECDSA_OpenSSL(void)实际上是做return &openssl_ecdsa_meth, openssl_ecdsa_meth的定义是:
openssl_ecdsa_meth = {"OpenSSL ECDSA method", ecdsa_do_sign, ecdsa_sign_setup, ecdsa_do_verify, 0, NULL}。
───────────────────────────────────────
int ECDSA_set_method(EC_KEY *eckey, const ECDSA_METHOD *meth)
功能: 设置密钥的method_data
输入: eckey,meth
输出: eckey【设置好密钥的method_data】
返回: 1【正常】 or 0【出错】
出处: ecdsa\ecs_lib.c