From f9e3fbf9c84ada22370b8557e443d0f2572f99ed Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Niels=20M=C3=B6ller?= <nisse@lysator.liu.se>
Date: Mon, 14 Jan 2002 02:16:42 +0100
Subject: [PATCH] rsa.h is now obsolete.

Rev: src/nettle/hmac-md5.h:1.1
Rev: src/nettle/rsa.h:1.5
Rev: src/nettle/rsa_md5.c:1.3
Rev: src/nettle/rsa_sha1.c:1.3
Rev: src/nettle/testsuite/Makefile.am:1.18
Rev: src/nettle/testsuite/aes-test.c:1.2
Rev: src/nettle/testsuite/arcfour-test.c:1.2
Rev: src/nettle/testsuite/bignum-test.c:1.2
Rev: src/nettle/testsuite/blowfish-test.c:1.2
Rev: src/nettle/testsuite/cast128-test.c:1.2
Rev: src/nettle/testsuite/cbc-test.c:1.2
Rev: src/nettle/testsuite/des-compat-test.c:1.3
Rev: src/nettle/testsuite/des-test.c:1.2
Rev: src/nettle/testsuite/des3-test.c:1.2
Rev: src/nettle/testsuite/md5-compat-test.c:1.2
Rev: src/nettle/testsuite/md5-test.c:1.2
Rev: src/nettle/testsuite/serpent-test.c:1.2
Rev: src/nettle/testsuite/sha1-test.c:1.2
Rev: src/nettle/testsuite/sha256-test.c:1.2
Rev: src/nettle/testsuite/testutils.c:1.6
Rev: src/nettle/testsuite/testutils.h:1.4
Rev: src/nettle/testsuite/twofish-test.c:1.2
Rev: src/nettle/testsuite/yarrow-test.c:1.11
---
 hmac-md5.h                  | 46 +++++++++++++++++++++++++++++++++++++
 rsa.h                       |  9 ++++++++
 rsa_md5.c                   |  3 ++-
 rsa_sha1.c                  |  5 ++--
 testsuite/Makefile.am       |  2 +-
 testsuite/aes-test.c        |  2 +-
 testsuite/arcfour-test.c    |  2 +-
 testsuite/bignum-test.c     |  8 +++----
 testsuite/blowfish-test.c   |  2 +-
 testsuite/cast128-test.c    |  2 +-
 testsuite/cbc-test.c        |  2 +-
 testsuite/des-compat-test.c |  4 +++-
 testsuite/des-test.c        |  2 +-
 testsuite/des3-test.c       |  2 +-
 testsuite/md5-compat-test.c |  2 +-
 testsuite/md5-test.c        |  2 +-
 testsuite/serpent-test.c    |  2 +-
 testsuite/sha1-test.c       |  2 +-
 testsuite/sha256-test.c     |  2 +-
 testsuite/testutils.c       | 31 +++++++++++++++++++++++++
 testsuite/testutils.h       |  8 ++++++-
 testsuite/twofish-test.c    |  2 +-
 testsuite/yarrow-test.c     |  9 +-------
 23 files changed, 119 insertions(+), 32 deletions(-)
 create mode 100644 hmac-md5.h

diff --git a/hmac-md5.h b/hmac-md5.h
new file mode 100644
index 00000000..014e51b9
--- /dev/null
+++ b/hmac-md5.h
@@ -0,0 +1,46 @@
+/* hmac-md5.h
+ *
+ * HMAC message authentication code.
+ */
+
+/* nettle, low-level cryptographics library
+ *
+ * Copyright (C) 2001 Niels M�ller
+ *  
+ * The nettle library is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License, or (at your
+ * option) any later version.
+ * 
+ * The nettle library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
+ * License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with the nettle library; see the file COPYING.LIB.  If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+#ifndef NETTLE_HMAC_MD5_H_INCLUDED
+#define NETTLE_HMAC_MD5_H_INCLUDED
+
+#include "hmac.h"
+#include "md5.h"
+
+struct hmac_md5_ctx HMAC_CTX(struct md5_ctx);
+
+void
+hmac_md5_set_key(struct hmac_md5_ctx *ctx,
+		 unsigned key_length, const uint8_t *key);
+
+void
+hmac_md5_update(struct hmac_md5_ctx *ctx,
+		unsigned length, const uint8_t *data);
+
+void
+hmac_md5_digest(struct hmac_md5_ctx *ctx,
+		unsigned length, uint8_t *digest);
+
+#endif /* NETTLE_HMAC_MD5_H_INCLUDED */
diff --git a/rsa.h b/rsa.h
index 08df531d..295abc31 100644
--- a/rsa.h
+++ b/rsa.h
@@ -137,5 +137,14 @@ rsa_sha1_verify(struct rsa_public_key *key,
 void
 rsa_compute_root(struct rsa_private_key *key, mpz_t x, const mpz_t m);
 
+#define RSA_SIGN(key, algorithm, ctx, length, data, signature) ( \
+  algorithm##_update(ctx, length, data), \
+  rsa_##algorithm##_sign(key, ctx, signature) \
+)
+
+#define RSA_VERIFY(key, algorithm, ctx, length, data, signature) ( \
+  algorithm##_update(ctx, length, data), \
+  rsa_##algorithm##_verify(key, ctx, signature) \
+)
 
 #endif /* NETTLE_RSA_H_INCLUDED */
diff --git a/rsa_md5.c b/rsa_md5.c
index a0a0109c..a8cf622c 100644
--- a/rsa_md5.c
+++ b/rsa_md5.c
@@ -90,7 +90,8 @@ rsa_md5_verify(struct rsa_public_key *key,
  *   md5Identifier ::= AlgorithmIdentifier {md5, NULL}
  */
 
-static const uint8_t md5_prefix[] =
+static const uint8_t
+md5_prefix[] =
 {
   /* 18 octets prefix, 16 octets hash, 34 total. */
   0x30,       32, /* SEQUENCE */
diff --git a/rsa_sha1.c b/rsa_sha1.c
index 21c70f29..864e44a0 100644
--- a/rsa_sha1.c
+++ b/rsa_sha1.c
@@ -90,7 +90,8 @@ rsa_sha1_verify(struct rsa_public_key *key,
  *   sha1Identifier ::= AlgorithmIdentifier {id-sha1, NULL}
  */
 
-static const uint8_t sha1_prefix[] =
+static const uint8_t
+sha1_prefix[] =
 {
   /* 15 octets prefix, 20 octets hash, total 35 */
   0x30,       33, /* SEQUENCE */
@@ -102,8 +103,6 @@ static const uint8_t sha1_prefix[] =
       /* Here comes the raw hash value */
 };
     
-
-
 static void
 pkcs1_encode_sha1(mpz_t m, unsigned length, struct sha1_ctx *hash)
 {
diff --git a/testsuite/Makefile.am b/testsuite/Makefile.am
index 3229f03c..b9eb25c3 100644
--- a/testsuite/Makefile.am
+++ b/testsuite/Makefile.am
@@ -5,7 +5,7 @@ TS_PROGS = aes-test arcfour-test blowfish-test cast128-test \
 	   des-test des3-test des-compat-test \
 	   md5-test md5-compat-test sha1-test sha256-test \
 	   serpent-test twofish-test \
-	   cbc-test bignum-test yarrow-test
+	   cbc-test rsa-test bignum-test yarrow-test
 
 # M4_FILES = aes-test.m4 arcfour-test.m4 blowfish-test.m4 cast128-test.m4 \
 # 	   des-test.m4 des3-test.m4 \
diff --git a/testsuite/aes-test.c b/testsuite/aes-test.c
index 42b3cda1..1da4d518 100644
--- a/testsuite/aes-test.c
+++ b/testsuite/aes-test.c
@@ -2,7 +2,7 @@
 #include "aes.h"
 
 int
-main(int argc, char **argv)
+test_main(void)
 {
   /* 128 bit keys */
   test_cipher(&nettle_aes128, 
diff --git a/testsuite/arcfour-test.c b/testsuite/arcfour-test.c
index 47886dfb..5b1021a8 100644
--- a/testsuite/arcfour-test.c
+++ b/testsuite/arcfour-test.c
@@ -2,7 +2,7 @@
 #include "arcfour.h"
 
 int
-main(int argc, char **argv)
+test_main(void)
 {
   test_cipher(&nettle_arcfour128,
 	      HL("01234567 89ABCDEF 00000000 00000000"),
diff --git a/testsuite/bignum-test.c b/testsuite/bignum-test.c
index 905eef0e..bfdcddb0 100644
--- a/testsuite/bignum-test.c
+++ b/testsuite/bignum-test.c
@@ -4,12 +4,12 @@
 #include "config.h"
 #endif
 
-#if HAVE_LIBGMP
-#include "bignum.h"
-
 #include <stdlib.h>
 #include <string.h>
 
+#if HAVE_LIBGMP
+#include "bignum.h"
+
 static void
 test_bignum(const char *hex, unsigned length, const uint8_t *base256)
 {
@@ -38,7 +38,7 @@ test_bignum(const char *hex, unsigned length, const uint8_t *base256)
 #endif /* HAVE_LIBGMP */
 
 int
-main(int argc, char **argv)
+test_main(void)
 {
 #if HAVE_LIBGMP
   test_bignum("0", 0, "");
diff --git a/testsuite/blowfish-test.c b/testsuite/blowfish-test.c
index 9d160bd6..c4311bb7 100644
--- a/testsuite/blowfish-test.c
+++ b/testsuite/blowfish-test.c
@@ -3,7 +3,7 @@
 #include "blowfish.h"
 
 int
-main(int argc, char **argv)
+test_main(void)
 {
   /* 208 bit key. Test from GNUPG. */
   test_cipher(&nettle_blowfish128,
diff --git a/testsuite/cast128-test.c b/testsuite/cast128-test.c
index 611733ec..e4b7830e 100644
--- a/testsuite/cast128-test.c
+++ b/testsuite/cast128-test.c
@@ -2,7 +2,7 @@
 #include "cast128.h"
 
 int
-main(int argc, char **argv)
+test_main(void)
 {
   /* Test vectors from B.1. Single Plaintext-Key-Ciphertext Sets, RFC
    * 2144 */
diff --git a/testsuite/cbc-test.c b/testsuite/cbc-test.c
index 6e1a9463..4645ee83 100644
--- a/testsuite/cbc-test.c
+++ b/testsuite/cbc-test.c
@@ -3,7 +3,7 @@
 #include "cbc.h"
 
 int
-main(int argc, char **argv)
+test_main(void)
 {
   uint8_t msg[2 * AES_BLOCK_SIZE] = "Listen, I'll say this only once!";
 
diff --git a/testsuite/des-compat-test.c b/testsuite/des-compat-test.c
index 9a950e0f..b77a3e3a 100644
--- a/testsuite/des-compat-test.c
+++ b/testsuite/des-compat-test.c
@@ -62,6 +62,7 @@
 #include <string.h>
 
 #include "des-compat.h"
+#include "testutils.h"
 
 #define C_Block des_cblock
 #define Key_schedule des_key_schedule
@@ -300,7 +301,8 @@ static int cfb64_test();
 static int ede_cfb64_test();
 #endif
 
-int main(int argc, char **argv)
+int
+test_main(void)
 	{
 	int i,j,err=0;
 	des_cblock in,out,outin,iv3;
diff --git a/testsuite/des-test.c b/testsuite/des-test.c
index 1ca8dd9e..fd47fbac 100644
--- a/testsuite/des-test.c
+++ b/testsuite/des-test.c
@@ -3,7 +3,7 @@
 #include "des.h"
 
 int
-main(int argc, char **argv)
+test_main(void)
 {
   struct des_ctx ctx;
   
diff --git a/testsuite/des3-test.c b/testsuite/des3-test.c
index b3a44291..678a235e 100644
--- a/testsuite/des3-test.c
+++ b/testsuite/des3-test.c
@@ -3,7 +3,7 @@
 #include "des.h"
 
 int
-main(int argc, char **argv)
+test_main(void)
 {
   /* Intermediate values:
    *   After first DES encryption:  "cd ea 2a 20 c2 e0 9e 48"
diff --git a/testsuite/md5-compat-test.c b/testsuite/md5-compat-test.c
index 4304ea85..bffb6232 100644
--- a/testsuite/md5-compat-test.c
+++ b/testsuite/md5-compat-test.c
@@ -2,7 +2,7 @@
 #include "md5-compat.h"
 
 int
-main(int argc, char **argv)
+test_main(void)
 {
   MD5_CTX ctx;
   unsigned char digest[MD5_DIGEST_SIZE];
diff --git a/testsuite/md5-test.c b/testsuite/md5-test.c
index a65958ab..fece067f 100644
--- a/testsuite/md5-test.c
+++ b/testsuite/md5-test.c
@@ -2,7 +2,7 @@
 #include "md5.h"
 
 int
-main(int argc, char **argv)
+test_main(void)
 {
   test_hash(&nettle_md5, 0, "",
 	    H("D41D8CD98F00B204 E9800998ECF8427E"));
diff --git a/testsuite/serpent-test.c b/testsuite/serpent-test.c
index 345417e4..b1101ea3 100644
--- a/testsuite/serpent-test.c
+++ b/testsuite/serpent-test.c
@@ -2,7 +2,7 @@
 #include "serpent.h"
 
 int
-main(int argc, char **argv)
+test_main(void)
 {
   /* The first test for each key size from the ecb_vk.txt and ecb_vt.txt
    * files in the serpent package. */
diff --git a/testsuite/sha1-test.c b/testsuite/sha1-test.c
index 5f602c97..cd65ecab 100644
--- a/testsuite/sha1-test.c
+++ b/testsuite/sha1-test.c
@@ -2,7 +2,7 @@
 #include "sha.h"
 
 int
-main(int argc, char **argv)
+test_main(void)
 {
   test_hash(&nettle_sha1, 0, "",
 	    H("DA39A3EE5E6B4B0D 3255BFEF95601890 AFD80709")); 
diff --git a/testsuite/sha256-test.c b/testsuite/sha256-test.c
index 89a0a234..77995351 100644
--- a/testsuite/sha256-test.c
+++ b/testsuite/sha256-test.c
@@ -2,7 +2,7 @@
 #include "sha.h"
 
 int
-main(int argc, char **argv)
+test_main(void)
 {
   test_hash(&nettle_sha256, 3, "abc",
 	    H("ba7816bf8f01cfea 414140de5dae2223"
diff --git a/testsuite/testutils.c b/testsuite/testutils.c
index 152b4f35..41ae5771 100644
--- a/testsuite/testutils.c
+++ b/testsuite/testutils.c
@@ -5,9 +5,13 @@
 #include "cbc.h"
 
 #include <ctype.h>
+#include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 
+/* For getopt() */
+#include <unistd.h>
+
 /* -1 means invalid */
 const signed char hex_digits[0x100] =
   {
@@ -103,6 +107,33 @@ decode_hex_dup(const char *hex)
     }
 }
 
+int verbose = 0;
+
+int
+main(int argc, char **argv)
+{
+  int c;
+
+  while ((c = getopt (argc, argv, "v")) != -1)
+    switch (c)
+      {
+      case 'v':
+	verbose = 1;
+	break;
+      case '?':
+	if (isprint (optopt))
+	  fprintf (stderr, "Unknown option `-%c'.\n", optopt);
+	else
+	  fprintf (stderr,
+		   "Unknown option character `\\x%x'.\n",
+		   optopt);
+      default:
+	abort();
+      }
+
+  return test_main();
+}
+
 void
 test_cipher(const struct nettle_cipher *cipher,
 	    unsigned key_length,
diff --git a/testsuite/testutils.h b/testsuite/testutils.h
index efdb6d66..ff51d215 100644
--- a/testsuite/testutils.h
+++ b/testsuite/testutils.h
@@ -20,6 +20,12 @@ decode_hex(uint8_t *dst, const char *hex);
 const uint8_t *
 decode_hex_dup(const char *hex);
 
+/* The main program */
+int
+test_main(void);
+
+extern int verbose;
+
 void
 test_cipher(const struct nettle_cipher *cipher,
 	    unsigned key_length,
@@ -42,7 +48,7 @@ test_hash(const struct nettle_hash *hash,
 	  unsigned length,
 	  const uint8_t *data,
 	  const uint8_t *digest);
-	  
+
 #define H2(d, s) decode_hex((d), (s))
 #define H(x) decode_hex_dup(x)
 #define HL(x) decode_hex_length(x), decode_hex_dup(x)
diff --git a/testsuite/twofish-test.c b/testsuite/twofish-test.c
index 935c0523..65558d37 100644
--- a/testsuite/twofish-test.c
+++ b/testsuite/twofish-test.c
@@ -2,7 +2,7 @@
 #include "twofish.h"
 
 int
-main(int argc, char **argv)
+test_main(void)
 {
   /* 128 bit key */
   test_cipher(&nettle_twofish128,
diff --git a/testsuite/yarrow-test.c b/testsuite/yarrow-test.c
index 938e51c4..955fe2ef 100644
--- a/testsuite/yarrow-test.c
+++ b/testsuite/yarrow-test.c
@@ -9,8 +9,6 @@
 #include <stdlib.h>
 #include <string.h>
 
-static int verbose = 0;
-
 /* Lagged fibonacci sequence as described in Knuth 3.6 */
 
 #define KK 100
@@ -166,7 +164,7 @@ open_file(const char *name)
 }
 
 int
-main(int argc, char **argv)
+test_main(void)
 {
   FILE *input;
   
@@ -200,11 +198,6 @@ main(int argc, char **argv)
   
   static const char zeroes[100];
 
-  if ((argc == 2)
-      && (argv[1][0] == '-')
-      && (argv[1][1] == 'v'))
-    verbose = 1;
-  
   yarrow256_init(&yarrow, 2, sources);
   memset(&yarrow.seed_file, 0, sizeof(yarrow.seed_file));
   
-- 
GitLab