X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilccrypt%2Frsa.c;h=cc5e09885906813975be848d2d2e8a6b819d2b19;hb=bd548b5771a325d3dc051887d3fd0225550d4418;hp=b09693a591976c56e8d5599833415cc1ea785bc0;hpb=410642a14d4185abd75715cee3f5177cd55b1ceb;p=crypto.git diff --git a/lib/silccrypt/rsa.c b/lib/silccrypt/rsa.c index b09693a5..cc5e0988 100644 --- a/lib/silccrypt/rsa.c +++ b/lib/silccrypt/rsa.c @@ -5,7 +5,7 @@ Author: Pekka Riikonen - Copyright (C) 1997 - 2006 Pekka Riikonen + Copyright (C) 1997 - 2008 Pekka Riikonen 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 @@ -46,7 +46,6 @@ everything else too about cryptography. */ -/* $Id$ */ /* ChangeLog @@ -72,22 +71,17 @@ Fixed double free in public key setting. Use a bit larger e as starting point in key generation. - - o Fri Dec 30 13:39:51 EET 2005 Pekka - - Support PKCS #1 format public and private keys. Support for new - PKCS API. */ -#include "silc.h" +#include "silccrypto.h" #include "rsa.h" /* Generates RSA public and private keys. Primes p and q that are used to compute the modulus n has to be generated before calling this. They are then sent as argument for the function. */ -SilcBool rsa_generate_keys(SilcUInt32 bits, SilcMPInt *p, SilcMPInt *q, - void **ret_public_key, void **ret_private_key) +SilcBool silc_rsa_generate_keys(SilcUInt32 bits, SilcMPInt *p, SilcMPInt *q, + void **ret_public_key, void **ret_private_key) { RsaPublicKey *pubkey; RsaPrivateKey *privkey; @@ -103,6 +97,10 @@ SilcBool rsa_generate_keys(SilcUInt32 bits, SilcMPInt *p, SilcMPInt *q, if (!privkey) return FALSE; + /* Default hash shall be sha1 */ + silc_hash_alloc("sha1", &pubkey->hash); + silc_hash_alloc("sha1", &privkey->hash); + /* Initialize variables */ silc_mp_init(&privkey->n); silc_mp_init(&privkey->e); @@ -172,8 +170,8 @@ SilcBool rsa_generate_keys(SilcUInt32 bits, SilcMPInt *p, SilcMPInt *q, /* RSA public key operation */ -SilcBool rsa_public_operation(RsaPublicKey *key, SilcMPInt *src, - SilcMPInt *dst) +SilcBool silc_rsa_public_operation(RsaPublicKey *key, SilcMPInt *src, + SilcMPInt *dst) { /* dst = src ^ e mod n */ silc_mp_pow_mod(dst, src, &key->e, &key->n); @@ -182,8 +180,8 @@ SilcBool rsa_public_operation(RsaPublicKey *key, SilcMPInt *src, /* RSA private key operation */ -SilcBool rsa_private_operation(RsaPrivateKey *key, SilcMPInt *src, - SilcMPInt *dst) +SilcBool silc_rsa_private_operation(RsaPrivateKey *key, SilcMPInt *src, + SilcMPInt *dst) { SilcMPInt tmp;