-bool rsa_write_pem_private_key(rsa_t *rsa, FILE *fp) {
- uint8_t derbuf1[8096];
- uint8_t derbuf2[8096];
- uint8_t *derp1 = derbuf1;
- uint8_t *derp2 = derbuf2;
- size_t derlen1 = sizeof(derbuf1);
- size_t derlen2 = sizeof(derbuf2);
-
- if(!ber_write_mpi(&derp1, &derlen1, &bits)
- || ber_write_mpi(&derp1, &derlen1, &rsa->n) // modulus
- || ber_write_mpi(&derp1, &derlen1, &rsa->e) // public exponent
- || ber_write_mpi(&derp1, &derlen1, &rsa->d) // private exponent
- || ber_write_mpi(&derp1, &derlen1, &p)
- || ber_write_mpi(&derp1, &derlen1, &q)
- || ber_write_mpi(&derp1, &derlen1, &exp1)
- || ber_write_mpi(&derp1, &derlen1, &exp2)
- || ber_write_mpi(&derp1, &derlen1, &coeff)) {
- logger(DEBUG_ALWAYS, LOG_ERR, "Error while encoding RSA private key");
- }
-
- return false;
-}
+ if(!s_rsa) {
+ fprintf(stderr, "RSA not found in gcrypt result.\n");
+ gcry_sexp_release(s_priv);
+ gcry_sexp_release(s_key);
+ return NULL;
+ }