Skip to content

Commit 1712a6f

Browse files
committed
ssl: Add hybrid PQA support
1 parent 5732517 commit 1712a6f

File tree

1 file changed

+20
-1
lines changed

1 file changed

+20
-1
lines changed

lib/ssl/test/property_test/ssl_eqc_handshake.erl

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -689,7 +689,7 @@ elliptic_curves(Version) when ?TLS_LT(Version, ?TLS_1_3) ->
689689

690690
%% RFC 8446 (TLS 1.3) renamed the "elliptic_curve" extension.
691691
supported_groups(Version) when ?TLS_GTE(Version, ?TLS_1_3) ->
692-
SupportedGroups = tls_v1:groups(),
692+
SupportedGroups = tls_v1:groups(),
693693
#supported_groups{supported_groups = SupportedGroups}.
694694

695695

@@ -773,11 +773,30 @@ generate_public_key(Group) when
773773
Group =:= mlkem1024 ->
774774
{PublicKey, _} = crypto:generate_key(Group, []),
775775
PublicKey;
776+
generate_public_key(x25519mlkem768 = Group) ->
777+
{Curve, MLKem} = hybrid_algs(Group),
778+
P2 = generate_public_key(Curve),
779+
{P1,_} = crypto:generate_key(MLKem, []),
780+
<<P1/binary, P2/binary>>;
781+
generate_public_key(Group) when
782+
Group =:= secp256r1mlkem768 orelse
783+
Group =:= secp384r1mlkem1024 ->
784+
{Curve, MLKem} = hybrid_algs(Group),
785+
P1 = generate_public_key(Curve),
786+
{P2, _} = crypto:generate_key(MLKem, []),
787+
<<P1/binary, P2/binary>>;
776788
generate_public_key(Group) ->
777789
{PublicKey, _} =
778790
public_key:generate_key(ssl_dh_groups:dh_params(Group)),
779791
PublicKey.
780792

793+
hybrid_algs(x25519mlkem768)->
794+
{x25519, mlkem768};
795+
hybrid_algs(secp256r1mlkem768) ->
796+
{secp256r1, mlkem768};
797+
hybrid_algs(secp384r1mlkem1024) ->
798+
{secp384r1, mlkem1024}.
799+
781800
groups() ->
782801
Max = length(ssl:groups()),
783802
?LET(Size, choose(1,Max), group_list(Size)).

0 commit comments

Comments
 (0)