summaryrefslogtreecommitdiff
path: root/rsa.h
diff options
context:
space:
mode:
Diffstat (limited to 'rsa.h')
-rw-r--r--rsa.h35
1 files changed, 30 insertions, 5 deletions
diff --git a/rsa.h b/rsa.h
index dbdace22..9c29587b 100644
--- a/rsa.h
+++ b/rsa.h
@@ -52,12 +52,16 @@ extern "C" {
#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_sha512_sign nettle_rsa_sha512_sign
+#define rsa_sha512_verify nettle_rsa_sha512_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_sha512_sign_digest nettle_rsa_sha512_sign_digest
+#define rsa_sha512_verify_digest nettle_rsa_sha512_verify_digest
#define rsa_encrypt nettle_rsa_encrypt
#define rsa_decrypt nettle_rsa_decrypt
#define rsa_compute_root nettle_rsa_compute_root
@@ -75,12 +79,13 @@ 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, 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. */
+ * And a DigestInfo is 34 octets for md5, 35 octets for sha1, 51
+ * octets for sha256, and 83 octetss for sha512. 94 octets is 752
+ * bits, and as the upper 7 bits may be zero, the smallest useful size
+ * of n is 745 bits. */
-#define RSA_MINIMUM_N_OCTETS 62
-#define RSA_MINIMUM_N_BITS 489
+#define RSA_MINIMUM_N_OCTETS 94
+#define RSA_MINIMUM_N_BITS (8*RSA_MINIMUM_N_OCTETS - 7)
struct rsa_public_key
{
@@ -194,6 +199,16 @@ rsa_sha256_verify(const struct rsa_public_key *key,
struct sha256_ctx *hash,
const mpz_t signature);
+void
+rsa_sha512_sign(const struct rsa_private_key *key,
+ struct sha512_ctx *hash,
+ mpz_t signature);
+
+int
+rsa_sha512_verify(const struct rsa_public_key *key,
+ struct sha512_ctx *hash,
+ const mpz_t signature);
+
/* Variants taking the digest as argument. */
void
rsa_md5_sign_digest(const struct rsa_private_key *key,
@@ -225,6 +240,16 @@ rsa_sha256_verify_digest(const struct rsa_public_key *key,
const uint8_t *digest,
const mpz_t signature);
+void
+rsa_sha512_sign_digest(const struct rsa_private_key *key,
+ const uint8_t *digest,
+ mpz_t s);
+
+int
+rsa_sha512_verify_digest(const struct rsa_public_key *key,
+ const uint8_t *digest,
+ const mpz_t signature);
+
/* RSA encryption, using PKCS#1 */
/* These functions uses the v1.5 padding. What should the v2 (OAEP)