const BIGNUM *p = NULL, *q = NULL;
const BIGNUM *dmp1 = NULL, *dmq1 = NULL, *iqmp = NULL;
+ if (key->external) {
+ priv.nelements = 0;
+ return (dst__privstruct_writefile(key, &priv, directory));
+ }
+
if (key->keydata.pkey == NULL) {
return (DST_R_NULLKEY);
}
RSA_get0_factors(rsa, &p, &q);
RSA_get0_crt_params(rsa, &dmp1, &dmq1, &iqmp);
- if (key->external) {
- priv.nelements = 0;
- result = dst__privstruct_writefile(key, &priv, directory);
- goto fail;
- }
-
for (i = 0; i < 8; i++) {
bufs[i] = isc_mem_get(key->mctx, BN_num_bytes(n));
}
priv.nelements = i;
result = dst__privstruct_writefile(key, &priv, directory);
-fail:
+
RSA_free(rsa);
for (i = 0; i < 8; i++) {
if (bufs[i] == NULL) {