@@ -364,6 +364,18 @@ def test_export_ed255_to_pem(self):
364
364
365
365
self .assertEqual (vk_pem , vk .to_pem ())
366
366
367
+ def test_export_ed255_to_ssh (self ):
368
+ vk_str = (
369
+ b"\x23 \x00 \x50 \xd0 \xd6 \x64 \x22 \x28 \x8e \xe3 \x55 \x89 \x7e \x6e \x41 \x57 "
370
+ b"\x8d \xae \xde \x44 \x26 \xee \x56 \x27 \xbc \x85 \xe6 \x0b \x2f \x2a \xcb \x65 "
371
+ )
372
+
373
+ vk = VerifyingKey .from_string (vk_str , Ed25519 )
374
+
375
+ vk_ssh = b"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICMAUNDWZCIojuNViX5uQVeNrt5EJu5WJ7yF5gsvKstl\n "
376
+
377
+ self .assertEqual (vk_ssh , vk .to_ssh ())
378
+
367
379
def test_ed25519_export_import (self ):
368
380
sk = SigningKey .generate (Ed25519 )
369
381
vk = sk .verifying_key
@@ -428,8 +440,8 @@ def test_ed448_to_pem(self):
428
440
429
441
vk_pem = (
430
442
b"-----BEGIN PUBLIC KEY-----\n "
431
- b"MEMwBQYDK2VxAzoAeQtetSu7CMEzE+XWB10Bg47LCA0giNikOxHzdp+tZ/eK/En0 \n "
432
- b"dTdYD2ll94g58MhSnBiBQB9A1MMA \n "
443
+ b"MEMwBQYDK2VxAzoAeQtetSu7CMEzE+XWB10Bg47LCA0giNikOxHzdp+tZ/eK/En0dTdYD2ll94g5 \n "
444
+ b"8MhSnBiBQB9A1MMA \n "
433
445
b"-----END PUBLIC KEY-----\n "
434
446
)
435
447
@@ -629,6 +641,25 @@ def test_ed25519_to_pem(self):
629
641
630
642
self .assertEqual (sk .to_pem (format = "pkcs8" ), pem_str )
631
643
644
+ def test_ed25519_to_ssh (self ):
645
+ sk = SigningKey .from_string (
646
+ b"\x34 \xBA \xC7 \xD1 \x4E \xD4 \xF1 \xBC \x4F \x8C \x48 \x3E \x0F \x19 \x77 \x4C "
647
+ b"\xFC \xB8 \xBE \xAC \x54 \x66 \x45 \x11 \x9A \xD7 \xD7 \xB8 \x07 \x0B \xF5 \xD4 " ,
648
+ Ed25519 ,
649
+ )
650
+
651
+ ssh_str = (
652
+ b"-----BEGIN OPENSSH PRIVATE KEY-----\n "
653
+ b"b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZWQyNTUx\n "
654
+ b"OQAAACAjAFDQ1mQiKI7jVYl+bkFXja7eRCbuVie8heYLLyrLZQAAAIgAAAAAAAAAAAAAAAtzc2gt\n "
655
+ b"ZWQyNTUxOQAAACAjAFDQ1mQiKI7jVYl+bkFXja7eRCbuVie8heYLLyrLZQAAAEA0usfRTtTxvE+M\n "
656
+ b"SD4PGXdM/Li+rFRmRRGa19e4Bwv11CMAUNDWZCIojuNViX5uQVeNrt5EJu5WJ7yF5gsvKstlAAAA\n "
657
+ b"AAECAwQF\n "
658
+ b"-----END OPENSSH PRIVATE KEY-----\n "
659
+ )
660
+
661
+ self .assertEqual (sk .to_ssh (), ssh_str )
662
+
632
663
def test_ed25519_to_and_from_pem (self ):
633
664
sk = SigningKey .generate (Ed25519 )
634
665
@@ -665,8 +696,8 @@ def test_ed448_to_pem(self):
665
696
)
666
697
pem_str = (
667
698
b"-----BEGIN PRIVATE KEY-----\n "
668
- b"MEcCAQAwBQYDK2VxBDsEOTyFuXqFLXgJlV8uDqcOw9nG4IqzLiZ/i5NfBDoHPzmP \n "
669
- b"OP0JMYaLGlTzwovmvCDJ2zLaezu9NLz9aQ ==\n "
699
+ b"MEcCAQAwBQYDK2VxBDsEOTyFuXqFLXgJlV8uDqcOw9nG4IqzLiZ/i5NfBDoHPzmPOP0JMYaLGlTz \n "
700
+ b"wovmvCDJ2zLaezu9NLz9aQ ==\n "
670
701
b"-----END PRIVATE KEY-----\n "
671
702
)
672
703
0 commit comments