default:
return 0;
}
+ } else if ((strlen(value) == 3)
+ && (toupper((unsigned char)value[0]) == 'T')
+ && (toupper((unsigned char)value[1]) == 'C')) {
+ switch (toupper((unsigned char)value[2])) {
+ case 'A':
+ param_nid = NID_id_tc26_gost_3410_2012_256_paramSetA;
+ break;
+ case 'B':
+ param_nid = NID_id_tc26_gost_3410_2012_256_paramSetB;
+ break;
+ case 'C':
+ param_nid = NID_id_tc26_gost_3410_2012_256_paramSetC;
+ break;
+ case 'D':
+ param_nid = NID_id_tc26_gost_3410_2012_256_paramSetD;
+ break;
+ default:
+ return 0;
+ }
} else {
R3410_ec_params *p = R3410_2001_paramset;
param_nid = OBJ_txt2nid(value);
param_nid = NID_id_tc26_gost_3410_2012_512_paramSetB;
break;
+ case 'C':
+ param_nid = NID_id_tc26_gost_3410_2012_512_paramSetC;
+ break;
+
default:
return 0;
}
switch (data->sign_param_nid) {
case NID_id_tc26_gost_3410_2012_512_paramSetA:
case NID_id_tc26_gost_3410_2012_512_paramSetB:
+ case NID_id_tc26_gost_3410_2012_512_paramSetC:
result =
(EVP_PKEY_assign(pkey, NID_id_GostR3410_2012_512, ec)) ? 1 : 0;
break;
case NID_id_GostR3410_2001_CryptoPro_XchA_ParamSet:
case NID_id_GostR3410_2001_CryptoPro_XchB_ParamSet:
case NID_id_GostR3410_2001_TestParamSet:
+ case NID_id_tc26_gost_3410_2012_256_paramSetA:
+ case NID_id_tc26_gost_3410_2012_256_paramSetB:
+ case NID_id_tc26_gost_3410_2012_256_paramSetC:
+ case NID_id_tc26_gost_3410_2012_256_paramSetD:
result =
(EVP_PKEY_assign(pkey, NID_id_GostR3410_2012_256, ec)) ? 1 : 0;
break;
return 0;
#ifdef DEBUG_SIGN
fprintf(stderr, "R=");
- BN_print_fp(stderr, s->r);
+ BN_print_fp(stderr, ECDSA_SIG_get0_r(s));
fprintf(stderr, "\nS=");
- BN_print_fp(stderr, s->s);
+ BN_print_fp(stderr, ECDSA_SIG_get0_s(s));
fprintf(stderr, "\n");
#endif
if (pub_key)
static int pkey_gost_magma_mac_init(EVP_PKEY_CTX *ctx)
{
- return pkey_gost_omac_init(ctx, 4);
+ return pkey_gost_omac_init(ctx, 8);
}
static int pkey_gost_grasshopper_mac_init(EVP_PKEY_CTX *ctx)
{
- return pkey_gost_omac_init(ctx, 8);
+ return pkey_gost_omac_init(ctx, 16);
}
static void pkey_gost_mac_cleanup(EVP_PKEY_CTX *ctx)
case EVP_PKEY_CTRL_MD:
{
int nid = EVP_MD_type((const EVP_MD *)p2);
- if (nid != NID_magma_mac && nid != NID_grasshopper_mac) {
+ if (nid != NID_magma_mac && nid != NID_grasshopper_mac
+ && nid != NID_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac /* FIXME beldmit */
+ && nid != NID_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac) {
GOSTerr(GOST_F_PKEY_GOST_OMAC_CTRL,
GOST_R_INVALID_DIGEST_TYPE);
return 0;
EVP_PKEY_meth_set_copy(*pmeth, pkey_gost_mac_copy);
return 1;
case NID_grasshopper_mac:
+ case NID_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac: /* FIXME beldmit */
EVP_PKEY_meth_set_ctrl(*pmeth, pkey_gost_grasshopper_mac_ctrl,
pkey_gost_grasshopper_mac_ctrl_str);
EVP_PKEY_meth_set_signctx(*pmeth, pkey_gost_grasshopper_mac_signctx_init,