summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeffrey Walton <noloader@gmail.com>2023-04-20 19:08:02 -0400
committerJeffrey Walton <noloader@gmail.com>2023-04-20 19:08:02 -0400
commit3b8c9303b46219ab4fa080066d903360493873f8 (patch)
tree74a179ad8306e9dae9f950fb66a34f667e030f85
parent03e9fa0942ad22fb419c64429e40275e50e9e158 (diff)
downloadcryptopp-git-3b8c9303b46219ab4fa080066d903360493873f8.tar.gz
Add typedefs for RSAES and RSASS using SHA256
Also see https://groups.google.com/g/cryptopp-users/c/0GXv5oj7RgI/m/MVZt_V8eBAAJ
-rw-r--r--rsa.h25
-rw-r--r--validat8.cpp11
2 files changed, 34 insertions, 2 deletions
diff --git a/rsa.h b/rsa.h
index 62c1111e..4a5c3cbe 100644
--- a/rsa.h
+++ b/rsa.h
@@ -203,18 +203,31 @@ struct RSASS_ISO : public TF_SS<RSA_ISO, P1363_EMSA2, H>
/// \brief \ref RSAES<STANDARD> "RSAES<PKCS1v15>::Decryptor" typedef
/// \details RSA encryption scheme defined in PKCS #1 v2.0
+/// \since Crypto++ 1.0
DOCUMENTED_TYPEDEF(RSAES<PKCS1v15>::Decryptor, RSAES_PKCS1v15_Decryptor);
/// \brief \ref RSAES<STANDARD> "RSAES<PKCS1v15>::Encryptor" typedef
/// \details RSA encryption scheme defined in PKCS #1 v2.0
+/// \since Crypto++ 1.0
DOCUMENTED_TYPEDEF(RSAES<PKCS1v15>::Encryptor, RSAES_PKCS1v15_Encryptor);
/// \brief \ref RSAES<STANDARD> "RSAES<OAEP<SHA1>>::Decryptor" typedef
/// \details RSA encryption scheme defined in PKCS #1 v2.0
+/// \since Crypto++ 1.0
DOCUMENTED_TYPEDEF(RSAES<OAEP<SHA1> >::Decryptor, RSAES_OAEP_SHA_Decryptor);
/// \brief \ref RSAES<STANDARD> "RSAES<OAEP<SHA1>>::Encryptor" typedef
/// \details RSA encryption scheme defined in PKCS #1 v2.0
+/// \since Crypto++ 1.0
DOCUMENTED_TYPEDEF(RSAES<OAEP<SHA1> >::Encryptor, RSAES_OAEP_SHA_Encryptor);
+/// \brief \ref RSAES<STANDARD> "RSAES<OAEP<SHA256>>::Decryptor" typedef
+/// \details RSA encryption scheme defined in PKCS #1 v2.0
+/// \since Crypto++ 8.7
+DOCUMENTED_TYPEDEF(RSAES<OAEP<SHA256> >::Decryptor, RSAES_OAEP_SHA256_Decryptor);
+/// \brief \ref RSAES<STANDARD> "RSAES<OAEP<SHA256>>::Encryptor" typedef
+/// \details RSA encryption scheme defined in PKCS #1 v2.0
+/// \since Crypto++ 8.7
+DOCUMENTED_TYPEDEF(RSAES<OAEP<SHA256> >::Encryptor, RSAES_OAEP_SHA256_Encryptor);
+
#ifdef CRYPTOPP_DOXYGEN_PROCESSING
/// \brief \ref RSASS<STANDARD,HASH> "RSASS<PKCS1v15,SHA1>::Signer" typedef
/// \details RSA signature schemes defined in PKCS #1 v2.0
@@ -225,6 +238,15 @@ class RSASSA_PKCS1v15_SHA_Signer : public RSASS<PKCS1v15,SHA1>::Signer {};
/// \since Crypto++ 1.0
class RSASSA_PKCS1v15_SHA_Verifier : public RSASS<PKCS1v15,SHA1>::Verifier {};
+/// \brief \ref RSASS<STANDARD,HASH> "RSASS<PKCS1v15,SHA256>::Signer" typedef
+/// \details RSA signature schemes defined in PKCS #1 v2.0
+/// \since Crypto++ 8.7
+class RSASSA_PKCS1v15_SHA256_Signer : public RSASS<PKCS1v15,SHA256>::Signer {};
+/// \brief \ref RSASS<STANDARD,HASH> "RSASS<PKCS1v15,SHA256>::Verifier" typedef
+/// \details RSA signature schemes defined in PKCS #1 v2.0
+/// \since Crypto++ 8.7
+class RSASSA_PKCS1v15_SHA256_Verifier : public RSASS<PKCS1v15,SHA256>::Verifier {};
+
namespace Weak {
/// \brief \ref RSASS<STANDARD,HASH> "RSASS<PKCS1v15, Weak::MD2>::Signer" typedef
@@ -250,6 +272,9 @@ class RSASSA_PKCS1v15_MD5_Verifier : public RSASS<PKCS1v15, Weak1::MD5>::Verifie
typedef RSASS<PKCS1v15,SHA1>::Signer RSASSA_PKCS1v15_SHA_Signer;
typedef RSASS<PKCS1v15,SHA1>::Verifier RSASSA_PKCS1v15_SHA_Verifier;
+typedef RSASS<PKCS1v15,SHA256>::Signer RSASSA_PKCS1v15_SHA256_Signer;
+typedef RSASS<PKCS1v15,SHA256>::Verifier RSASSA_PKCS1v15_SHA256_Verifier;
+
namespace Weak {
typedef RSASS<PKCS1v15, Weak1::MD2>::Signer RSASSA_PKCS1v15_MD2_Signer;
typedef RSASS<PKCS1v15, Weak1::MD2>::Verifier RSASSA_PKCS1v15_MD2_Verifier;
diff --git a/validat8.cpp b/validat8.cpp
index d7772e6e..e41d1cf4 100644
--- a/validat8.cpp
+++ b/validat8.cpp
@@ -177,8 +177,15 @@ bool ValidateRSA_Encrypt()
pass = pass && !fail;
}
{
- RSAES<OAEP<SHA1> >::Decryptor rsaPriv(GlobalRNG(), 512);
- RSAES<OAEP<SHA1> >::Encryptor rsaPub(rsaPriv);
+ RSAES_OAEP_SHA_Decryptor rsaPriv(GlobalRNG(), 512);
+ RSAES_OAEP_SHA_Encryptor rsaPub(rsaPriv);
+
+ fail = !CryptoSystemValidate(rsaPriv, rsaPub);
+ pass = pass && !fail;
+ }
+ {
+ RSAES_OAEP_SHA256_Decryptor rsaPriv(GlobalRNG(), 1024);
+ RSAES_OAEP_SHA256_Encryptor rsaPub(rsaPriv);
fail = !CryptoSystemValidate(rsaPriv, rsaPub);
pass = pass && !fail;