From da6b8a2d9b940cd75cf07a9e3012182d42788262 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Niels=20M=C3=B6ller?= <nisse@lysator.liu.se>
Date: Mon, 27 Nov 2006 23:13:28 +0100
Subject: [PATCH] (rsa_sha256_sign, rsa_sha256_verify) (rsa_sha256_sign_digest,
 rsa_sha256_verify_digest): New declarations. (RSA_MINIMUM_N_OCTETS,
 RSA_MINIMUM_N_BITS): Increased to 62 octets and  489 bits, respectively, for
 supporting sha256.

Rev: src/nettle/rsa.h:1.27
---
 rsa.h | 34 +++++++++++++++++++++++++++++-----
 1 file changed, 29 insertions(+), 5 deletions(-)

diff --git a/rsa.h b/rsa.h
index a4ea4de7..70d8b136 100644
--- a/rsa.h
+++ b/rsa.h
@@ -50,10 +50,14 @@ extern "C" {
 #define rsa_md5_verify nettle_rsa_md5_verify
 #define rsa_sha1_sign nettle_rsa_sha1_sign
 #define rsa_sha1_verify nettle_rsa_sha1_verify
+#define rsa_sha256_sign nettle_rsa_sha256_sign
+#define rsa_sha256_verify nettle_rsa_sha256_verify
 #define rsa_md5_sign_digest nettle_rsa_md5_sign_digest
 #define rsa_md5_verify_digest nettle_rsa_md5_verify_digest
 #define rsa_sha1_sign_digest nettle_rsa_sha1_sign_digest
 #define rsa_sha1_verify_digest nettle_rsa_sha1_verify_digest
+#define rsa_sha256_sign_digest nettle_rsa_sha256_sign_digest
+#define rsa_sha256_verify_digest nettle_rsa_sha256_verify_digest
 #define rsa_encrypt nettle_rsa_encrypt
 #define rsa_decrypt nettle_rsa_decrypt
 #define rsa_compute_root nettle_rsa_compute_root
@@ -71,12 +75,12 @@ extern "C" {
 /* For PKCS#1 to make sense, the size of the modulo, in octets, must
  * be at least 11 + the length of the DER-encoded Digest Info.
  *
- * And a DigestInfo is 34 octets for md5, and 35 octets for sha1. 46
- * octets is 368 bits, and as the upper 7 bits may be zero, the
- * smallest useful size of n is 361 bits. */
+ * And a DigestInfo is 34 octets for md5, 35 octets for sha1, and 51
+ * octets for sha256. 62 octets is 496 bits, and as the upper 7 bits
+ * may be zero, the smallest useful size of n is 489 bits. */
 
-#define RSA_MINIMUM_N_OCTETS 46
-#define RSA_MINIMUM_N_BITS 361
+#define RSA_MINIMUM_N_OCTETS 62
+#define RSA_MINIMUM_N_BITS 489
 
 struct rsa_public_key
 {
@@ -180,6 +184,16 @@ rsa_sha1_verify(const struct rsa_public_key *key,
                 struct sha1_ctx *hash,
 		const mpz_t signature);
 
+void
+rsa_sha256_sign(const struct rsa_private_key *key,
+		struct sha256_ctx *hash,
+		mpz_t signature);
+
+int
+rsa_sha256_verify(const struct rsa_public_key *key,
+		  struct sha256_ctx *hash,
+		  const mpz_t signature);
+
 /* Variants taking the digest as argument. */
 void
 rsa_md5_sign_digest(const struct rsa_private_key *key,
@@ -201,6 +215,16 @@ rsa_sha1_verify_digest(const struct rsa_public_key *key,
 		       const uint8_t *digest,
 		       const mpz_t signature);
 
+void
+rsa_sha256_sign_digest(const struct rsa_private_key *key,
+		       const uint8_t *digest,
+		       mpz_t s);
+
+int
+rsa_sha256_verify_digest(const struct rsa_public_key *key,
+			 const uint8_t *digest,
+			 const mpz_t signature);
+
 
 /* RSA encryption, using PKCS#1 */
 /* FIXME: These functions uses the v1.5 padding. What should the v2
-- 
GitLab