]> andersk Git - openssh.git/blobdiff - rsa.c
- (djm) OpenBSD CVS Sync:
[openssh.git] / rsa.c
diff --git a/rsa.c b/rsa.c
index 8f644403237cc38ebf727530012f7d246bdec879..1005246077b320ec2742c7f8d7cc04e480d1a226 100644 (file)
--- a/rsa.c
+++ b/rsa.c
  */
 
 #include "includes.h"
-RCSID("$OpenBSD: rsa.c,v 1.16 2000/09/07 20:27:53 deraadt Exp $");
+RCSID("$OpenBSD: rsa.c,v 1.20 2001/01/29 19:47:30 markus Exp $");
 
 #include "rsa.h"
-#include "ssh.h"
+#include "log.h"
 #include "xmalloc.h"
-#include "entropy.h"
-
-int rsa_verbose = 1;
-
-int
-rsa_alive()
-{
-       RSA *key;
-
-       seed_rng();
-       key = RSA_generate_key(32, 3, NULL, NULL);
-       if (key == NULL)
-               return (0);
-       RSA_free(key);
-       return (1);
-}
-
-/*
- * Key generation progress meter callback
- */
-void
-keygen_progress(int p, int n, void *arg)
-{
-       const char progress_chars[] = ".o+O?";
-
-       if ((p < 0) || (p > (sizeof(progress_chars) - 2)))
-               p = sizeof(progress_chars) - 2;
-
-       putchar(progress_chars[p]);
-       fflush(stdout);
-}
-
-/*
- * Generates RSA public and private keys.  This initializes the data
- * structures; they should be freed with rsa_clear_private_key and
- * rsa_clear_public_key.
- */
-
-void
-rsa_generate_key(RSA *prv, RSA *pub, unsigned int bits)
-{
-       RSA *key;
-
-       seed_rng();
-       
-       if (rsa_verbose) {
-               printf("Generating RSA keys:  ");
-               fflush(stdout);
-               key = RSA_generate_key(bits, 35, keygen_progress, NULL);
-               printf("\n");
-       } else {
-               key = RSA_generate_key(bits, 35, NULL, NULL);
-       }
-       if (key == NULL)
-               fatal("rsa_generate_key: key generation failed.");
-
-       /* Copy public key parameters */
-       pub->n = BN_new();
-       BN_copy(pub->n, key->n);
-       pub->e = BN_new();
-       BN_copy(pub->e, key->e);
-
-       /* Copy private key parameters */
-       prv->n = BN_new();
-       BN_copy(prv->n, key->n);
-       prv->e = BN_new();
-       BN_copy(prv->e, key->e);
-       prv->d = BN_new();
-       BN_copy(prv->d, key->d);
-       prv->p = BN_new();
-       BN_copy(prv->p, key->p);
-       prv->q = BN_new();
-       BN_copy(prv->q, key->q);
-
-       prv->dmp1 = BN_new();
-       BN_copy(prv->dmp1, key->dmp1);
-
-       prv->dmq1 = BN_new();
-       BN_copy(prv->dmq1, key->dmq1);
-
-       prv->iqmp = BN_new();
-       BN_copy(prv->iqmp, key->iqmp);
-
-       RSA_free(key);
-
-       if (rsa_verbose)
-               printf("Key generation complete.\n");
-}
 
 void
 rsa_public_encrypt(BIGNUM *out, BIGNUM *in, RSA *key)
 {
-       unsigned char *inbuf, *outbuf;
+       u_char *inbuf, *outbuf;
        int len, ilen, olen;
 
        if (BN_num_bits(key->e) < 2 || !BN_is_odd(key->e))
@@ -182,10 +94,10 @@ rsa_public_encrypt(BIGNUM *out, BIGNUM *in, RSA *key)
        xfree(inbuf);
 }
 
-void
+int
 rsa_private_decrypt(BIGNUM *out, BIGNUM *in, RSA *key)
 {
-       unsigned char *inbuf, *outbuf;
+       u_char *inbuf, *outbuf;
        int len, ilen, olen;
 
        olen = BN_num_bytes(key->n);
@@ -196,21 +108,14 @@ rsa_private_decrypt(BIGNUM *out, BIGNUM *in, RSA *key)
        BN_bn2bin(in, inbuf);
 
        if ((len = RSA_private_decrypt(ilen, inbuf, outbuf, key,
-           RSA_PKCS1_PADDING)) <= 0)
-               fatal("rsa_private_decrypt() failed");
-
-       BN_bin2bn(outbuf, len, out);
-
+           RSA_PKCS1_PADDING)) <= 0) {
+               error("rsa_private_decrypt() failed");
+       } else {
+               BN_bin2bn(outbuf, len, out);
+       }
        memset(outbuf, 0, olen);
        memset(inbuf, 0, ilen);
        xfree(outbuf);
        xfree(inbuf);
-}
-
-/* Set whether to output verbose messages during key generation. */
-
-void
-rsa_set_verbose(int verbose)
-{
-       rsa_verbose = verbose;
+       return len;
 }
This page took 0.079803 seconds and 4 git commands to generate.