#include <gcrypt.h>
#include <assert.h>
+#include "asn1.h"
#include "rsa.h"
#include "pem.h"
#include "../rsagen.h"
#include "../xalloc.h"
-
-// ASN.1 tags.
-typedef enum {
- TAG_INTEGER = 2,
- TAG_SEQUENCE = 16,
-} asn1_tag_t;
+#include "../utils.h"
static size_t der_tag_len(size_t n) {
if(n < 128) {
gcry_mpi_release(params[dq]);
gcry_mpi_release(params[u]);
- return pem_encode(fp, "RSA PRIVATE KEY", derbuf, derlen);
+ bool success = pem_encode(fp, "RSA PRIVATE KEY", derbuf, derlen);
+ memzero(derbuf, sizeof(derbuf));
+ return success;
}
static gcry_mpi_t find_mpi(const gcry_sexp_t rsa, const char *token) {
return NULL;
}
- rsa_t *rsa = xzalloc(sizeof(*rsa));
+ rsa_t *rsa = rsa_new();
rsa->n = find_mpi(s_rsa, "n");
rsa->e = find_mpi(s_rsa, "e");