From: "Chris Ruffin via groups.io" <cruffin=millcore.com@groups.io>
To: devel@edk2.groups.io
Subject: [edk2-devel] [PATCH 3/3] CryptoPkg/BaseCryptLibUnitTest: add unit test functions
Date: Thu, 14 Mar 2024 21:16:13 -0400 [thread overview]
Message-ID: <20240315011613.1512-3-cruffin@millcore.com> (raw)
In-Reply-To: <20240315011613.1512-1-cruffin@millcore.com>
From: Chris Ruffin <v-chruffin@microsoft.com>
Add unit test functions:
TestVerifyPkcs1v2Decrypt()
TestVerifyTestRsaOaepEncrypt()
TestVerifyTestRsaOaepDecrypt()
Signed-off-by: Chris Ruffin <v-chruffin@microsoft.com>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Yi Li <yi1.li@intel.com>
Cc: Wenxing Hou <wenxing.hou@intel.com>
---
.../Library/BaseCryptLib/OaepEncryptTests.c | 184 +++++++++++++++++-
1 file changed, 182 insertions(+), 2 deletions(-)
diff --git a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/OaepEncryptTests.c b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/OaepEncryptTests.c
index 22a4ea7e46..2b5c6d04da 100644
--- a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/OaepEncryptTests.c
+++ b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/OaepEncryptTests.c
@@ -153,9 +153,42 @@ GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 PrivateKey[] = {
0x86, 0x10, 0x09, 0x88, 0x6C, 0x35, 0x60, 0xF2,
};
+//
+// Public Modulus of RSA Key
+//
+GLOBAL_REMOVE_IF_UNREFERENCED STATIC CONST UINT8 RsaN[] = {
+ 0xBB, 0xF8, 0x2F, 0x09, 0x06, 0x82, 0xCE, 0x9C, 0x23, 0x38, 0xAC, 0x2B, 0x9D, 0xA8, 0x71, 0xF7,
+ 0x36, 0x8D, 0x07, 0xEE, 0xD4, 0x10, 0x43, 0xA4, 0x40, 0xD6, 0xB6, 0xF0, 0x74, 0x54, 0xF5, 0x1F,
+ 0xB8, 0xDF, 0xBA, 0xAF, 0x03, 0x5C, 0x02, 0xAB, 0x61, 0xEA, 0x48, 0xCE, 0xEB, 0x6F, 0xCD, 0x48,
+ 0x76, 0xED, 0x52, 0x0D, 0x60, 0xE1, 0xEC, 0x46, 0x19, 0x71, 0x9D, 0x8A, 0x5B, 0x8B, 0x80, 0x7F,
+ 0xAF, 0xB8, 0xE0, 0xA3, 0xDF, 0xC7, 0x37, 0x72, 0x3E, 0xE6, 0xB4, 0xB7, 0xD9, 0x3A, 0x25, 0x84,
+ 0xEE, 0x6A, 0x64, 0x9D, 0x06, 0x09, 0x53, 0x74, 0x88, 0x34, 0xB2, 0x45, 0x45, 0x98, 0x39, 0x4E,
+ 0xE0, 0xAA, 0xB1, 0x2D, 0x7B, 0x61, 0xA5, 0x1F, 0x52, 0x7A, 0x9A, 0x41, 0xF6, 0xC1, 0x68, 0x7F,
+ 0xE2, 0x53, 0x72, 0x98, 0xCA, 0x2A, 0x8F, 0x59, 0x46, 0xF8, 0xE5, 0xFD, 0x09, 0x1D, 0xBD, 0xCB
+};
+
+//
+// Public Exponent of RSA Key
+//
+GLOBAL_REMOVE_IF_UNREFERENCED STATIC CONST UINT8 RsaE[] = { 0x11 };
+
+//
+// Private Exponent of RSA Key
+//
+GLOBAL_REMOVE_IF_UNREFERENCED STATIC CONST UINT8 RsaD[] = {
+ 0xA5, 0xDA, 0xFC, 0x53, 0x41, 0xFA, 0xF2, 0x89, 0xC4, 0xB9, 0x88, 0xDB, 0x30, 0xC1, 0xCD, 0xF8,
+ 0x3F, 0x31, 0x25, 0x1E, 0x06, 0x68, 0xB4, 0x27, 0x84, 0x81, 0x38, 0x01, 0x57, 0x96, 0x41, 0xB2,
+ 0x94, 0x10, 0xB3, 0xC7, 0x99, 0x8D, 0x6B, 0xC4, 0x65, 0x74, 0x5E, 0x5C, 0x39, 0x26, 0x69, 0xD6,
+ 0x87, 0x0D, 0xA2, 0xC0, 0x82, 0xA9, 0x39, 0xE3, 0x7F, 0xDC, 0xB8, 0x2E, 0xC9, 0x3E, 0xDA, 0xC9,
+ 0x7F, 0xF3, 0xAD, 0x59, 0x50, 0xAC, 0xCF, 0xBC, 0x11, 0x1C, 0x76, 0xF1, 0xA9, 0x52, 0x94, 0x44,
+ 0xE5, 0x6A, 0xAF, 0x68, 0xC5, 0x6C, 0x09, 0x2C, 0xD3, 0x8D, 0xC3, 0xBE, 0xF5, 0xD2, 0x0A, 0x93,
+ 0x99, 0x26, 0xED, 0x4F, 0x74, 0xA1, 0x3E, 0xDD, 0xFB, 0xE1, 0xA1, 0xCE, 0xCC, 0x48, 0x94, 0xAF,
+ 0x94, 0x28, 0xC2, 0xB7, 0xB8, 0x88, 0x3F, 0xE4, 0x46, 0x3A, 0x4B, 0xC8, 0x5B, 0x1C, 0xB3, 0xC1
+};
+
UNIT_TEST_STATUS
EFIAPI
-TestVerifyOaepEncrypt (
+TestVerifyPkcs1v2Encrypt (
IN UNIT_TEST_CONTEXT Context
)
{
@@ -296,11 +329,158 @@ TestVerifyOaepEncrypt (
return UNIT_TEST_PASSED;
}
+UNIT_TEST_STATUS
+EFIAPI
+TestVerifyPkcs1v2Decrypt (
+ IN UNIT_TEST_CONTEXT Context
+ )
+{
+ BOOLEAN Status;
+ UINT8 PlaintextBuffer[4];
+ UINT8 *EncryptedBuffer;
+ UINTN EncryptedBufferSize;
+ UINT8 *DecryptedBuffer;
+ UINTN DecryptedBufferSize;
+
+ // Create a file and add content '123' in it
+ PlaintextBuffer[0] = '1';
+ PlaintextBuffer[1] = '2';
+ PlaintextBuffer[2] = '3';
+ PlaintextBuffer[3] = 0;
+
+ Status = Pkcs1v2Encrypt (
+ SelfTestCert,
+ (UINTN)sizeof (SelfTestCert),
+ PlaintextBuffer,
+ (UINTN)sizeof (PlaintextBuffer),
+ NULL,
+ 0,
+ &EncryptedBuffer,
+ (UINTN *)&EncryptedBufferSize
+ );
+ UT_ASSERT_TRUE (Status);
+
+ Status = Pkcs1v2Decrypt (
+ PrivateKey,
+ (UINTN)sizeof (PrivateKey),
+ EncryptedBuffer,
+ EncryptedBufferSize,
+ &DecryptedBuffer,
+ (UINTN *)&DecryptedBufferSize
+ );
+ UT_ASSERT_TRUE (Status);
+
+ UT_ASSERT_TRUE ((CompareMem (PlaintextBuffer, DecryptedBuffer, DecryptedBufferSize) == 0));
+
+ return UNIT_TEST_PASSED;
+}
+
+UNIT_TEST_STATUS
+EFIAPI
+TestVerifyRsaOaepEncrypt (
+ IN UNIT_TEST_CONTEXT Context
+ )
+{
+ BOOLEAN Status;
+ UINT8 PlaintextBuffer[4];
+ UINT8 *EncryptedBuffer;
+ UINTN EncryptedBufferSize;
+ VOID *RsaContext = NULL;
+
+ // Create a file and add content '123' in it
+ PlaintextBuffer[0] = '1';
+ PlaintextBuffer[1] = '2';
+ PlaintextBuffer[2] = '3';
+ PlaintextBuffer[3] = 0;
+
+ RsaContext = RsaNew ();
+ UT_ASSERT_FALSE (RsaContext == NULL);
+
+ Status = RsaSetKey (RsaContext, RsaKeyN, RsaN, sizeof (RsaN));
+ UT_ASSERT_TRUE (Status);
+
+ Status = RsaSetKey (RsaContext, RsaKeyE, RsaE, sizeof (RsaE));
+ UT_ASSERT_TRUE (Status);
+
+ Status = RsaOaepEncrypt (
+ RsaContext,
+ PlaintextBuffer,
+ sizeof (PlaintextBuffer),
+ NULL,
+ 0,
+ &EncryptedBuffer,
+ &EncryptedBufferSize
+ );
+ UT_ASSERT_TRUE (Status);
+
+ return UNIT_TEST_PASSED;
+}
+
+UNIT_TEST_STATUS
+EFIAPI
+TestVerifyRsaOaepDecrypt (
+ IN UNIT_TEST_CONTEXT Context
+ )
+{
+ BOOLEAN Status;
+ UINT8 PlaintextBuffer[4];
+ UINT8 *EncryptedBuffer;
+ UINTN EncryptedBufferSize;
+ UINT8 *DecryptedBuffer;
+ UINTN DecryptedBufferSize;
+ VOID *RsaContext = NULL;
+
+ // Create a file and add content '123' in it
+ PlaintextBuffer[0] = '1';
+ PlaintextBuffer[1] = '2';
+ PlaintextBuffer[2] = '3';
+ PlaintextBuffer[3] = 0;
+
+ RsaContext = RsaNew ();
+ UT_ASSERT_FALSE (RsaContext == NULL);
+
+ Status = RsaSetKey (RsaContext, RsaKeyN, RsaN, sizeof (RsaN));
+ UT_ASSERT_TRUE (Status);
+
+ Status = RsaSetKey (RsaContext, RsaKeyE, RsaE, sizeof (RsaE));
+ UT_ASSERT_TRUE (Status);
+
+ Status = RsaOaepEncrypt (
+ RsaContext,
+ PlaintextBuffer,
+ sizeof (PlaintextBuffer),
+ NULL,
+ 0,
+ &EncryptedBuffer,
+ &EncryptedBufferSize
+ );
+ UT_ASSERT_TRUE (Status);
+
+ Status = RsaSetKey (RsaContext, RsaKeyD, RsaD, sizeof (RsaD));
+ UT_ASSERT_TRUE (Status);
+
+ Status = RsaOaepDecrypt (
+ RsaContext,
+ EncryptedBuffer,
+ EncryptedBufferSize,
+ &DecryptedBuffer,
+ &DecryptedBufferSize
+ );
+ UT_ASSERT_TRUE (Status);
+
+ UT_ASSERT_TRUE ((CompareMem (PlaintextBuffer, DecryptedBuffer, DecryptedBufferSize) == 0));
+
+ return UNIT_TEST_PASSED;
+}
+
TEST_DESC mOaepTest[] = {
//
// -----Description--------------------------------------Class----------------------Function-----------------Pre---Post--Context
//
- { "TestVerifyOaepEncrypt()", "CryptoPkg.BaseCryptLib.Pkcs1v2Encrypt", TestVerifyOaepEncrypt, NULL, NULL, NULL },
+ { "TestVerifyPkcs1v2Encrypt()", "CryptoPkg.BaseCryptLib.Pkcs1v2Encrypt", TestVerifyPkcs1v2Encrypt, NULL, NULL, NULL },
+ { "TestVerifyPkcs1v2Decrypt()", "CryptoPkg.BaseCryptLib.Pkcs1v2Decrypt", TestVerifyPkcs1v2Decrypt, NULL, NULL, NULL },
+ { "TestVerifyRsaOaepEncrypt()", "CryptoPkg.BaseCryptLib.RsaOaepEncrypt", TestVerifyRsaOaepEncrypt, NULL, NULL, NULL },
+ { "TestVerifyRsaOaepDecrypt()", "CryptoPkg.BaseCryptLib.RsaOaepDecrypt", TestVerifyRsaOaepDecrypt, NULL, NULL, NULL },
};
UINTN mOaepTestNum = ARRAY_SIZE (mOaepTest);
--
2.44.0.windows.1
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#116863): https://edk2.groups.io/g/devel/message/116863
Mute This Topic: https://groups.io/mt/105014759/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-
next prev parent reply other threads:[~2024-03-18 23:17 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-15 1:16 [edk2-devel] [PATCH 1/3] CryptoPkg/BaseCryptLib: add additional RSAEP-OAEP crypto functions Chris Ruffin via groups.io
2024-03-15 1:16 ` [edk2-devel] [PATCH 2/3] CryptoPkg/Driver: " Chris Ruffin via groups.io
2024-03-15 1:16 ` Chris Ruffin via groups.io [this message]
-- strict thread matches above, loose matches on Subject: below --
2024-03-18 21:52 [edk2-devel] [PATCH 1/3] CryptoPkg/BaseCryptLib: " Chris Ruffin via groups.io
2024-03-18 21:52 ` [edk2-devel] [PATCH 3/3] CryptoPkg/BaseCryptLibUnitTest: add unit test functions Chris Ruffin via groups.io
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240315011613.1512-3-cruffin@millcore.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox