static isc_result_t
raw_key_to_ossl(const eddsa_alginfo_t *alginfo, int private,
- const unsigned char *key, size_t *key_len, EVP_PKEY **pkey) {
+ const unsigned char *key, size_t key_len, EVP_PKEY **pkey) {
isc_result_t result;
int pkey_type = alginfo->pkey_type;
size_t len = alginfo->key_size;
result = (private ? DST_R_INVALIDPRIVATEKEY : DST_R_INVALIDPUBLICKEY);
- if (*key_len != len) {
+ if (key_len != len) {
return result;
}
return dst__openssl_toresult(result);
}
- *key_len = len;
return ISC_R_SUCCESS;
}
openssleddsa_fromdns(dst_key_t *key, isc_buffer_t *data) {
const eddsa_alginfo_t *alginfo = openssleddsa_alg_info(key->key_alg);
isc_region_t r;
- size_t len;
EVP_PKEY *pkey = NULL;
REQUIRE(alginfo != NULL);
return ISC_R_SUCCESS;
}
- len = r.length;
- RETERR(raw_key_to_ossl(alginfo, 0, r.base, &len, &pkey));
+ RETERR(raw_key_to_ossl(alginfo, 0, r.base, r.length, &pkey));
- isc_buffer_forward(data, len);
+ isc_buffer_forward(data, alginfo->key_size);
key->keydata.pkeypair.pub = pkey;
- key->key_size = len * 8;
+ key->key_size = alginfo->key_size * 8;
return ISC_R_SUCCESS;
}
int i, privkey_index = -1;
const char *label = NULL;
EVP_PKEY *pkey = NULL;
- size_t len;
isc_mem_t *mctx = key->mctx;
REQUIRE(alginfo != NULL);
CLEANUP(DST_R_INVALIDPRIVATEKEY);
}
- len = priv.elements[privkey_index].length;
CHECK(raw_key_to_ossl(alginfo, 1, priv.elements[privkey_index].data,
- &len, &pkey));
+ priv.elements[privkey_index].length, &pkey));
/* Check that the public component matches if given */
if (pub != NULL && EVP_PKEY_eq(pkey, pub->keydata.pkeypair.pub) != 1) {
CLEANUP(DST_R_INVALIDPRIVATEKEY);
key->keydata.pkeypair.priv = pkey;
key->keydata.pkeypair.pub = pkey;
- key->key_size = len * 8;
+ key->key_size = alginfo->key_size * 8;
pkey = NULL;
result = ISC_R_SUCCESS;
}
INSIST(alginfo != NULL);
- CHECK(raw_key_to_ossl(alginfo, 0, key, &key_len, &pkey));
+ CHECK(raw_key_to_ossl(alginfo, 0, key, key_len, &pkey));
/*
* Check that we can verify the signature.