mirror of
https://github.com/zebrajr/ladybird.git
synced 2026-01-15 12:15:15 +00:00
LibCrypto: Add wrapper to EVP_PKEY_get_octet_string_param
This commit is contained in:
@@ -67,4 +67,15 @@ ErrorOr<StringView> hash_kind_to_openssl_digest_name(Hash::HashKind hash)
|
||||
}
|
||||
}
|
||||
|
||||
ErrorOr<ByteBuffer> get_byte_buffer_param_from_key(OpenSSL_PKEY& key, char const* key_name)
|
||||
{
|
||||
size_t size;
|
||||
OPENSSL_TRY(EVP_PKEY_get_octet_string_param(key.ptr(), key_name, nullptr, 0, &size));
|
||||
|
||||
auto buffer = TRY(ByteBuffer::create_uninitialized(size));
|
||||
|
||||
OPENSSL_TRY(EVP_PKEY_get_octet_string_param(key.ptr(), key_name, buffer.data(), buffer.size(), &size));
|
||||
return buffer;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -125,4 +125,6 @@ ErrorOr<UnsignedBigInteger> openssl_bignum_to_unsigned_big_integer(OpenSSL_BN co
|
||||
|
||||
ErrorOr<StringView> hash_kind_to_openssl_digest_name(Hash::HashKind hash);
|
||||
|
||||
ErrorOr<ByteBuffer> get_byte_buffer_param_from_key(OpenSSL_PKEY& key, char const* key_name);
|
||||
|
||||
}
|
||||
|
||||
@@ -157,18 +157,9 @@ ErrorOr<MLDSA::KeyPairType> MLDSA::generate_key_pair(MLDSASize size, ByteBuffer
|
||||
auto* key_ptr = key.ptr();
|
||||
OPENSSL_TRY(EVP_PKEY_generate(ctx.ptr(), &key_ptr));
|
||||
|
||||
// We reserve enough memory for the key size to be able to fit them all
|
||||
auto pub = TRY(ByteBuffer::create_uninitialized(2592));
|
||||
auto priv = TRY(ByteBuffer::create_uninitialized(4896));
|
||||
seed = TRY(ByteBuffer::create_uninitialized(32));
|
||||
|
||||
size_t priv_len, pub_len, seed_len;
|
||||
OPENSSL_TRY(EVP_PKEY_get_octet_string_param(key.ptr(), OSSL_PKEY_PARAM_ML_DSA_SEED, seed.data(), seed.size(), &seed_len));
|
||||
OPENSSL_TRY(EVP_PKEY_get_octet_string_param(key.ptr(), OSSL_PKEY_PARAM_PRIV_KEY, priv.data(), priv.size(), &priv_len));
|
||||
OPENSSL_TRY(EVP_PKEY_get_octet_string_param(key.ptr(), OSSL_PKEY_PARAM_PUB_KEY, pub.data(), pub.size(), &pub_len));
|
||||
|
||||
pub.trim(pub_len, true);
|
||||
priv.trim(priv_len, true);
|
||||
auto pub = TRY(get_byte_buffer_param_from_key(key, OSSL_PKEY_PARAM_PUB_KEY));
|
||||
auto priv = TRY(get_byte_buffer_param_from_key(key, OSSL_PKEY_PARAM_PRIV_KEY));
|
||||
seed = TRY(get_byte_buffer_param_from_key(key, OSSL_PKEY_PARAM_ML_DSA_SEED));
|
||||
|
||||
return KeyPairType {
|
||||
{ pub },
|
||||
|
||||
Reference in New Issue
Block a user