From 1aa6adddef3be562c84ed92e055b2968da366f51 Mon Sep 17 00:00:00 2001 From: merlokk Date: Mon, 4 Dec 2017 23:58:19 +0200 Subject: [PATCH] rsa init --- client/emv/crypto_polarssl.c | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/client/emv/crypto_polarssl.c b/client/emv/crypto_polarssl.c index ce532aa0..25755f9e 100644 --- a/client/emv/crypto_polarssl.c +++ b/client/emv/crypto_polarssl.c @@ -89,21 +89,23 @@ struct crypto_pk_polarssl { static struct crypto_pk *crypto_pk_polarssl_open_rsa(va_list vl) { struct crypto_pk_polarssl *cp = malloc(sizeof(*cp)); - //gcry_error_t err; -/* char *mod = va_arg(vl, char *); + + char *mod = va_arg(vl, char *); // N int modlen = va_arg(vl, size_t); - char *exp = va_arg(vl, char *); + char *exp = va_arg(vl, char *); // E int explen = va_arg(vl, size_t); -*/ -/* err = gcry_sexp_build(&cp->pk, NULL, "(public-key (rsa (n %b) (e %b)))", - modlen, mod, explen, exp); - if (err) { - fprintf(stderr, "LibGCrypt error %s/%s\n", - gcry_strsource (err), - gcry_strerror (err)); - free(cp); - return NULL; - }*/ + + rsa_init(&(cp->ctx), RSA_PKCS_V15, 0); + + cp->ctx.len = modlen * 2; // size(N) in chars + mpi_read_binary(&cp->ctx.N, (const unsigned char *)mod, modlen); + mpi_read_binary(&cp->ctx.E, (const unsigned char *)exp, explen); + + if(rsa_check_privkey(&(cp->ctx)) != 0) { + fprintf(stderr, "PolarSSL key error.\n"); + + return NULL; + } return &cp->cp; }