/*
rsagen.c -- RSA key generation and export
- Copyright (C) 2008-2012 Guus Sliepen <guus@tinc-vpn.org>
+ Copyright (C) 2008-2022 Guus Sliepen <guus@tinc-vpn.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
-#include "system.h"
+#include "../system.h"
#include <gcrypt.h>
#include <assert.h>
-#include "../rsagen.h"
-#include "xalloc.h"
+#include "asn1.h"
#include "rsa.h"
#include "pem.h"
-
-// ASN.1 tags.
-typedef enum {
- TAG_INTEGER = 2,
- TAG_SEQUENCE = 16,
-} asn1_tag_t;
+#include "../rsagen.h"
+#include "../xalloc.h"
+#include "../utils.h"
static size_t der_tag_len(size_t n) {
if(n < 128) {
der += len;
}
- assert(der - derbuf == derlen);
+ assert((size_t)(der - derbuf) == derlen);
return derlen;
}
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");