OSSL_PARAM *params = NULL;
EVP_PKEY_CTX *ctx = NULL;
BIGNUM *priv = NULL;
- size_t len = 0;
unsigned char buf[DNS_KEY_ECDSA384SIZE + 1];
if (key_alg == DST_ALG_ECDSA256) {
groupname = "P-256";
- len = private ? DNS_KEY_ECDSA256SIZE / 2 : DNS_KEY_ECDSA256SIZE;
} else if (key_alg == DST_ALG_ECDSA384) {
groupname = "P-384";
- len = private ? DNS_KEY_ECDSA384SIZE / 2 : DNS_KEY_ECDSA384SIZE;
} else {
DST_RET(ISC_R_NOTIMPLEMENTED);
}
- ret = (private ? DST_R_INVALIDPRIVATEKEY : DST_R_INVALIDPUBLICKEY);
- if (*key_len < len) {
- DST_RET(ret);
- }
-
bld = OSSL_PARAM_BLD_new();
if (bld == NULL) {
DST_RET(dst__openssl_toresult2("OSSL_PARAM_BLD_new",
}
if (private) {
- priv = BN_bin2bn(key, len, NULL);
+ priv = BN_bin2bn(key, *key_len, NULL);
if (priv == NULL) {
DST_RET(dst__openssl_toresult2("BN_bin2bn",
DST_R_OPENSSLFAILURE));
DST_R_OPENSSLFAILURE));
}
} else {
+ INSIST(*key_len < sizeof(buf));
buf[0] = POINT_CONVERSION_UNCOMPRESSED;
- memmove(buf + 1, key, len);
+ memmove(buf + 1, key, *key_len);
status = OSSL_PARAM_BLD_push_octet_string(
- bld, OSSL_PKEY_PARAM_PUB_KEY, buf, 1 + len);
+ bld, OSSL_PKEY_PARAM_PUB_KEY, buf, 1 + *key_len);
if (status != 1) {
DST_RET(dst__openssl_toresult2("OSSL_PARAM_BLD_push_"
"octet_string",
DST_R_OPENSSLFAILURE));
}
- *key_len = len;
ret = ISC_R_SUCCESS;
err:
#if OPENSSL_VERSION_NUMBER < 0x30000000L
EC_KEY *eckey = NULL;
EC_KEY *pubeckey = NULL;
-#else
- size_t len;
#endif /* OPENSSL_VERSION_NUMBER < 0x30000000L */
const char *engine = NULL;
const char *label = NULL;
key->keydata.pkey = NULL;
}
- if (key->key_alg == DST_ALG_ECDSA256) {
- len = DNS_KEY_ECDSA256SIZE / 2;
- } else {
- len = DNS_KEY_ECDSA384SIZE / 2;
- }
-
ret = raw_key_to_ossl(key->key_alg, 1,
- priv.elements[privkey_index].data, &len,
+ priv.elements[privkey_index].data,
+ &priv.elements[privkey_index].length,
&key->keydata.pkey);
#endif /* OPENSSL_VERSION_NUMBER < 0x30000000L */