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 */
};