summaryrefslogtreecommitdiff
path: root/lib/gnutls_rsa_export.c
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@gnutls.org>2003-03-14 09:01:35 +0000
committerNikos Mavrogiannopoulos <nmav@gnutls.org>2003-03-14 09:01:35 +0000
commit60cc21b7eb14ad54b2693cfcf0edb28a6d676f2f (patch)
treeae60e9a110418b29c9ebbdccd694771ead087f68 /lib/gnutls_rsa_export.c
parent57638b36fa11716c52a4b3eaeaa7c7f76189a6b5 (diff)
downloadgnutls-60cc21b7eb14ad54b2693cfcf0edb28a6d676f2f.tar.gz
The RSA parameters handling functions, are now implemented using the rsa privkey functions.
Diffstat (limited to 'lib/gnutls_rsa_export.c')
-rw-r--r--lib/gnutls_rsa_export.c201
1 files changed, 17 insertions, 184 deletions
diff --git a/lib/gnutls_rsa_export.c b/lib/gnutls_rsa_export.c
index ecf03e6c6e..a5226786d6 100644
--- a/lib/gnutls_rsa_export.c
+++ b/lib/gnutls_rsa_export.c
@@ -1,7 +1,7 @@
/*
- * Copyright (C) 2002,2003 Nikos Mavroyanopoulos
+ * Copyright (C) 2002,2003 Nikos Mavroyanopoulos
*
- * This file is part of GNUTLS.
+ * This file is part of GNUTLS.
*
* The GNUTLS library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -27,6 +27,7 @@
#include <gnutls_errors.h>
#include <gnutls_datum.h>
#include <gnutls_rsa_export.h>
+#include "x509/x509.h"
#include "debug.h"
/* This function takes a number of bits and returns a supported
@@ -36,27 +37,16 @@
#define MAX_SUPPORTED_BITS 512
-static int normalize_bits(int bits)
-{
- if (bits >= MAX_SUPPORTED_BITS)
- bits = MAX_SUPPORTED_BITS;
-
- return bits;
-}
-
-
/* returns e and m, depends on the requested bits.
* We only support limited key sizes.
*/
-const GNUTLS_MPI* _gnutls_get_rsa_params(gnutls_rsa_params rsa_params, int bits)
+const GNUTLS_MPI* _gnutls_get_rsa_params(gnutls_rsa_params rsa_params)
{
if (rsa_params == NULL) {
gnutls_assert();
return NULL;
}
- bits = normalize_bits(bits);
-
return rsa_params->params;
}
@@ -153,9 +143,6 @@ int _gnutls_rsa_generate_params(GNUTLS_MPI* resarr, int bits)
}
-#define FREE_PRIVATE_PARAMS for (i=0;i<RSA_PRIVATE_PARAMS;i++) \
- _gnutls_mpi_release(&rsa_params->params[i])
-
/**
* gnutls_rsa_params_import_raw - This function will replace the old RSA parameters
@@ -172,60 +159,12 @@ int _gnutls_rsa_generate_params(GNUTLS_MPI* resarr, int bits)
*
**/
int gnutls_rsa_params_import_raw(gnutls_rsa_params rsa_params,
- gnutls_datum m, gnutls_datum e,
- gnutls_datum d, gnutls_datum p, gnutls_datum q, gnutls_datum u)
+ const gnutls_datum *m, const gnutls_datum *e,
+ const gnutls_datum *d, const gnutls_datum *p,
+ const gnutls_datum *q, const gnutls_datum *u)
{
- int i = 0;
- size_t siz = 0;
-
- for (i=0;i<RSA_PRIVATE_PARAMS;i++) {
- _gnutls_mpi_release(&rsa_params->params[i]);
- }
-
- siz = m.size;
- if (_gnutls_mpi_scan(&rsa_params->params[0], m.data, &siz)) {
- gnutls_assert();
- FREE_PRIVATE_PARAMS;
- return GNUTLS_E_MPI_SCAN_FAILED;
- }
-
- siz = e.size;
- if (_gnutls_mpi_scan(&rsa_params->params[1], e.data, &siz)) {
- gnutls_assert();
- FREE_PRIVATE_PARAMS;
- return GNUTLS_E_MPI_SCAN_FAILED;
- }
-
- siz = d.size;
- if (_gnutls_mpi_scan(&rsa_params->params[2], d.data, &siz)) {
- gnutls_assert();
- FREE_PRIVATE_PARAMS;
- return GNUTLS_E_MPI_SCAN_FAILED;
- }
-
- siz = p.size;
- if (_gnutls_mpi_scan(&rsa_params->params[3], p.data, &siz)) {
- gnutls_assert();
- FREE_PRIVATE_PARAMS;
- return GNUTLS_E_MPI_SCAN_FAILED;
- }
-
- siz = q.size;
- if (_gnutls_mpi_scan(&rsa_params->params[4], q.data, &siz)) {
- gnutls_assert();
- FREE_PRIVATE_PARAMS;
- return GNUTLS_E_MPI_SCAN_FAILED;
- }
-
- siz = u.size;
- if (_gnutls_mpi_scan(&rsa_params->params[5], u.data, &siz)) {
- gnutls_assert();
- FREE_PRIVATE_PARAMS;
- return GNUTLS_E_MPI_SCAN_FAILED;
- }
-
- return 0;
-
+ return gnutls_x509_privkey_import_rsa_raw( rsa_params,
+ m, e, d, p, q, u);
}
/**
@@ -238,14 +177,7 @@ int gnutls_rsa_params_import_raw(gnutls_rsa_params rsa_params,
int gnutls_rsa_params_init(gnutls_rsa_params * rsa_params)
{
- *rsa_params = gnutls_calloc( 1, sizeof(_gnutls_rsa_params));
- if (*rsa_params==NULL) {
- gnutls_assert();
- return GNUTLS_E_MEMORY_ERROR;
- }
-
- return 0;
-
+ return gnutls_x509_privkey_init( rsa_params);
}
/**
@@ -257,16 +189,7 @@ int gnutls_rsa_params_init(gnutls_rsa_params * rsa_params)
**/
void gnutls_rsa_params_deinit(gnutls_rsa_params rsa_params)
{
-int i;
-
- if (rsa_params == NULL)
- return;
-
- for (i=0; i< RSA_PRIVATE_PARAMS;i++)
- _gnutls_mpi_release( &rsa_params->params[i]);
-
- gnutls_free(rsa_params);
-
+ gnutls_x509_privkey_deinit(rsa_params);
}
/**
@@ -286,17 +209,7 @@ int i;
**/
int gnutls_rsa_params_generate2(gnutls_rsa_params params, int bits)
{
-
- int ret;
-
- ret = _gnutls_rsa_generate_params( params->params, bits);
- if (ret < 0) {
- gnutls_assert();
- return ret;
- }
-
- return 0;
-
+ return gnutls_x509_privkey_generate( params, GNUTLS_PK_RSA, bits, 0);
}
/**
@@ -320,94 +233,14 @@ int gnutls_rsa_params_export_raw(gnutls_rsa_params params,
gnutls_datum *d, gnutls_datum *p, gnutls_datum* q,
gnutls_datum* u, int *bits)
{
- size_t siz;
-
- siz = 0;
- _gnutls_mpi_print(NULL, &siz, params->params[0]);
-
- m->data = gnutls_malloc(siz);
- if (m->data == NULL) {
- return GNUTLS_E_MEMORY_ERROR;
- }
-
- m->size = siz;
- _gnutls_mpi_print( m->data, &siz, params->params[0]);
+int ret;
- /* E */
- siz = 0;
- _gnutls_mpi_print(NULL, &siz, params->params[1]);
-
- e->data = gnutls_malloc(siz);
- if (e->data == NULL) {
- _gnutls_free_datum( m);
- return GNUTLS_E_MEMORY_ERROR;
- }
-
- e->size = siz;
- _gnutls_mpi_print( e->data, &siz, params->params[1]);
-
- /* D */
- siz = 0;
- _gnutls_mpi_print(NULL, &siz, params->params[2]);
-
- d->data = gnutls_malloc(siz);
- if (d->data == NULL) {
- _gnutls_free_datum( m);
- _gnutls_free_datum( e);
- return GNUTLS_E_MEMORY_ERROR;
- }
-
- d->size = siz;
- _gnutls_mpi_print( d->data, &siz, params->params[2]);
-
- /* P */
- siz = 0;
- _gnutls_mpi_print(NULL, &siz, params->params[3]);
-
- p->data = gnutls_malloc(siz);
- if (p->data == NULL) {
- _gnutls_free_datum( m);
- _gnutls_free_datum( e);
- _gnutls_free_datum( d);
- return GNUTLS_E_MEMORY_ERROR;
- }
-
- p->size = siz;
- _gnutls_mpi_print(p->data, &siz, params->params[3]);
-
- /* Q */
- siz = 0;
- _gnutls_mpi_print(NULL, &siz, params->params[4]);
-
- q->data = gnutls_malloc(siz);
- if (q->data == NULL) {
- _gnutls_free_datum( m);
- _gnutls_free_datum( e);
- _gnutls_free_datum( d);
- _gnutls_free_datum( p);
- return GNUTLS_E_MEMORY_ERROR;
- }
-
- q->size = siz;
- _gnutls_mpi_print(q->data, &siz, params->params[4]);
-
- /* U */
- siz = 0;
- _gnutls_mpi_print(NULL, &siz, params->params[5]);
-
- u->data = gnutls_malloc(siz);
- if (u->data == NULL) {
- _gnutls_free_datum( m);
- _gnutls_free_datum( e);
- _gnutls_free_datum( d);
- _gnutls_free_datum( p);
- _gnutls_free_datum( q);
- return GNUTLS_E_MEMORY_ERROR;
+ ret = gnutls_x509_privkey_export_rsa_raw( params, m, e, d, p, q, u);
+ if ( ret < 0) {
+ gnutls_assert();
+ return ret;
}
- u->size = siz;
- _gnutls_mpi_print(u->data, &siz, params->params[5]);
-
if (bits)
*bits = _gnutls_mpi_get_nbits(params->params[3]);