diff --git a/src/mezz/codec-ssh-key.reb b/src/mezz/codec-ssh-key.reb index 633eb34f72..aace2608f9 100644 --- a/src/mezz/codec-ssh-key.reb +++ b/src/mezz/codec-ssh-key.reb @@ -142,6 +142,17 @@ wrap [ ] "RSA PUBLIC KEY" [ return init-rsa-public-key data ] "RSA PRIVATE KEY" [ return init-rsa-private-key data ] + "DH PARAMETERS" [ + parse data [ + 'SEQUENCE into [ + 'INTEGER set p binary! + 'INTEGER set g binary! + ] ( + return dh-init :g :p + ) + ] + + ] ] none ; no success! ] diff --git a/src/tests/units/crypt-test.r3 b/src/tests/units/crypt-test.r3 index 5ad2010f0b..70d8eb62ac 100644 --- a/src/tests/units/crypt-test.r3 +++ b/src/tests/units/crypt-test.r3 @@ -224,6 +224,13 @@ sY29ouezv4Xz2PuMch5VGPP+CDqzCM4loWgV --test-- "Init RSA key from file" --assert handle? try [key: decode 'ssh-key read %units/files/rebol-public.ppk] rsa key none ; release it, as it is not GCed yet. + +--test-- "Init public DH params from file" + --assert all [ + handle? key: load %units/files/dhparam2048.key + 'dhm = query/mode key 'type + dh/release key + ] ===end-group=== ===start-group=== "PPK codec" diff --git a/src/tests/units/files/dhparam2048.key b/src/tests/units/files/dhparam2048.key new file mode 100644 index 0000000000..e6410fca32 --- /dev/null +++ b/src/tests/units/files/dhparam2048.key @@ -0,0 +1,8 @@ +-----BEGIN DH PARAMETERS----- +MIIBCAKCAQEAhR9gLa+RbIUY+u3qZHRwTfw4Q0VoJOv4FK3et9HQNSvZmmUqzcG/ +t3v3TPD3NRsLTh7hrvQcWFR7dsgqLFjqrMvthcRXsLYOxsT9ERL3nMPloEItggRG +9hk3RzGFYb9nx56RXDJ3Nh+/pYfG3Ab+3gt+V/7Ato+Ws61lHVQmQ1cBUvkdjy4i +uIm5vr91VVgMc8Bi9PvhsPhjU4f9LQIykiY7+nsJpbgNdlU55Db8/Atc3PnL11z/ +xXjmnj1QBjWymkz5LDEMJYCkMcFGwiToL6+jYjAkG1GpU6Jt4C5Z00E4LERy/jCi +geGoH8yNQvldeqw5lTcNpaWWB2+ROqUj0wIBAg== +-----END DH PARAMETERS----- \ No newline at end of file