diff options
Diffstat (limited to 'rsa.h')
-rw-r--r-- | rsa.h | 35 |
1 files changed, 30 insertions, 5 deletions
@@ -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) |