keylen = opensslecdsa_key_alg_to_publickey_size(key->key_alg) / 2;
INSIST(keylen <= sizeof(buf));
- if (!opensslecdsa_extract_private_key(key, buf, keylen)) {
- DST_RET(DST_R_OPENSSLFAILURE);
- }
i = 0;
- priv.elements[i].tag = TAG_ECDSA_PRIVATEKEY;
- priv.elements[i].length = keylen;
- priv.elements[i].data = buf;
- i++;
-
+ if (opensslecdsa_extract_private_key(key, buf, keylen)) {
+ priv.elements[i].tag = TAG_ECDSA_PRIVATEKEY;
+ priv.elements[i].length = keylen;
+ priv.elements[i].data = buf;
+ i++;
+ }
if (key->engine != NULL) {
priv.elements[i].tag = TAG_ECDSA_ENGINE;
priv.elements[i].length = (unsigned short)strlen(key->engine) +
}
}
- if (privkey_index < 0) {
- DST_RET(dst__openssl_toresult(DST_R_INVALIDPRIVATEKEY));
- }
-
if (label != NULL) {
ret = opensslecdsa_fromlabel(key, engine, label, NULL);
if (ret != ISC_R_SUCCESS) {
DST_RET(ISC_R_SUCCESS);
}
+ if (privkey_index < 0) {
+ DST_RET(dst__openssl_toresult(DST_R_INVALIDPRIVATEKEY));
+ }
+
ret = opensslecdsa_create_pkey(
key->key_alg, true, priv.elements[privkey_index].data,
priv.elements[privkey_index].length, &pkey);