ECDSA_METHOD主要描述了生成签名和验证签名时使用的函数。
typedef struct ecdsa_method ECDSA_METHOD;
struct ecdsa_method {
const char *name;
ECDSA_SIG *(*ecdsa_do_sign)(const unsigned char *dgst, int dgst_len, const BIGNUM *inv, const BIGNUM *rp, EC_KEY *eckey);
int (*ecdsa_sign_setup)(EC_KEY *eckey, BN_CTX *ctx, BIGNUM **kinv, BIGNUM **r);
int (*ecdsa_do_verify)(const unsigned char *dgst, int dgst_len, const ECDSA_SIG *sig, EC_KEY *eckey);
int flags;
char *app_data;
};
其中:
- name是为了便于记忆,给某个ECDSA_METHOD取的名字。
- ecdsa_do_sign 记载了生成签名所调用的函数。
- ecdsa_sign_setup 生成签名中所需的预计算函数。
- ecdsa_do_verify记载了验证签名所调用的函数。
下面举例说明ECDSA_METHOD,例子来源于文件ecdsa\ecs_ossl.c。
static ECDSA_METHOD openssl_ecdsa_meth =
{
"OpenSSL ECDSA method",
ecdsa_do_sign,
ecdsa_sign_setup,
ecdsa_do_verify,
0, /* flags */
NULL /* app_data */
};