mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 04:27:45 +00:00
LibCrypto: Parse and store all RSA private key components
This commit is contained in:
parent
dc1180d6b2
commit
15836cc865
5 changed files with 168 additions and 73 deletions
|
@ -4,8 +4,8 @@
|
|||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include <LibCrypto/ASN1/PEM.h>
|
||||
#include <LibCrypto/Hash/SHA2.h>
|
||||
#include <LibCrypto/PK/PK.h>
|
||||
#include <LibCrypto/PK/RSA.h>
|
||||
#include <LibTest/TestCase.h>
|
||||
#include <cstring>
|
||||
|
@ -108,6 +108,39 @@ l3vmuDEF3/Bo1C1HTg0xRV/l
|
|||
}
|
||||
}
|
||||
|
||||
TEST_CASE(test_RSA_keygen_enc)
|
||||
{
|
||||
auto keypem = R"(-----BEGIN PRIVATE KEY-----
|
||||
MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEA5HMXMnY+RhEcYXsa
|
||||
OyB/YkcrO1nxIeyDCMqwg5MDrSXO8vPXSEb9AZUNMF1jKiFWPoHxZ+foRxrLv4d9
|
||||
sV/ETwIDAQABAkBpC37UJkjWQRHyxP83xuasExuO6/mT5sQN692kcppTJ9wHNWoD
|
||||
9ZcREk4GGiklu4qx48/fYt8Cv6z6JuQ0ZQExAiEA9XRZVUnCJ2xOcCFCbyIF+d3F
|
||||
9Kht5rR77F9KsRlgUbkCIQDuQ7YzLpQ8V8BJwKbDeXw1vQvcPEnyKnTOoALpF6bq
|
||||
RwIhAIDSm8Ajgf7m3RQEoLVrCe/l8WtCqsuWliOsr6rbQq4hAiEAx8R16wvOtZlN
|
||||
W4jvSU1+WwAaBZl21lfKf8OhLRXrmNkCIG9IRdcSiNR/Ut8QfD3N9Bb1HsUm+Bvz
|
||||
c8yGzl89pYST
|
||||
-----END PRIVATE KEY-----)"sv;
|
||||
auto decoded = Crypto::decode_pem(keypem.bytes());
|
||||
auto keypair = Crypto::PK::RSA::parse_rsa_key(decoded);
|
||||
auto priv_der = MUST(keypair.private_key.export_as_der());
|
||||
auto priv_pem = MUST(Crypto::encode_pem(priv_der, Crypto::PEMType::PrivateKey));
|
||||
auto rsa_from_pair = Crypto::PK::RSA(keypair.public_key, keypair.private_key);
|
||||
auto rsa_from_pem = Crypto::PK::RSA(priv_pem);
|
||||
|
||||
u8 enc_buffer[rsa_from_pair.output_size()];
|
||||
u8 dec_buffer[rsa_from_pair.output_size()];
|
||||
|
||||
auto enc = Bytes { enc_buffer, rsa_from_pair.output_size() };
|
||||
auto dec = Bytes { dec_buffer, rsa_from_pair.output_size() };
|
||||
|
||||
dec.overwrite(0, "WellHelloFriends", 16);
|
||||
|
||||
rsa_from_pair.encrypt(dec, enc);
|
||||
rsa_from_pem.decrypt(enc, dec);
|
||||
|
||||
EXPECT_EQ(memcmp(dec.data(), "WellHelloFriends", 16), 0);
|
||||
}
|
||||
|
||||
TEST_CASE(test_RSA_encrypt_decrypt)
|
||||
{
|
||||
Crypto::PK::RSA rsa(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue