@@ -1131,26 +1131,28 @@ def test_loads_ssh_cert(self, backend):
1131
1131
# secp256r1 public key, ed25519 signing key
1132
1132
cert = load_ssh_public_identity (
1133
1133
b"[email protected] AAAAKGVjZHNhLXNoYTItbm"
1134
- b"lzdHAyNTYtY2VydC12MDFAb3BlbnNzaC5jb20AAAAgtdU+dl9vD4xPi8afxERYo"
1135
- b"s0c0d9/3m7XGY6fGeSkqn0AAAAIbmlzdHAyNTYAAABBBAsuVFNNj/mMyFm2xB99"
1136
- b"G4xiaUJE1lZNjcp+S2tXYW5KorcHpusSlSqOkUPZ2l0644dgiNPDKR/R+BtYENC"
1137
- b"8aq8AAAAAAAAAAAAAAAEAAAAUdGVzdEBjcnlwdG9ncmFwaHkuaW8AAAAaAAAACm"
1138
- b"NyeXB0b3VzZXIAAAAIdGVzdHVzZXIAAAAAY7KyZAAAAAB2frXAAAAAAAAAAIIAA"
1139
- b"AAVcGVybWl0LVgxMS1mb3J3YXJkaW5nAAAAAAAAABdwZXJtaXQtYWdlbnQtZm9y"
1140
- b"d2FyZGluZwAAAAAAAAAWcGVybWl0LXBvcnQtZm9yd2FyZGluZwAAAAAAAAAKcGV"
1141
- b"ybWl0LXB0eQAAAAAAAAAOcGVybWl0LXVzZXItcmMAAAAAAAAAAAAAADMAAAALc3"
1142
- b"NoLWVkMjU1MTkAAAAg3P0eyGf2crKGwSlnChbLzTVOFKwQELE1Ve+EZ6rXF18AA"
1143
- b"ABTAAAAC3NzaC1lZDI1NTE5AAAAQKoij8BsPj/XLb45+wHmRWKNqXeZYXyDIj8J"
1144
- b"IE6dIymjEqq0TP6ntu5t59hTmWlDO85GnMXAVGBjFbeikBMfAQc= reaperhulk"
1145
- b"@despoina.local"
1134
+ b"lzdHAyNTYtY2VydC12MDFAb3BlbnNzaC5jb20AAAAgLfsFv9Gbc6LZSiJFWdYQl"
1135
+ b"IMNI50GExXW0fBpgGVf+Y4AAAAIbmlzdHAyNTYAAABBBIzVyRgVLR4F38bIOLBN"
1136
+ b"8CNm8Nf+eBHCVkKDKb9WDyLLD61CEmzjK/ORwFuSE4N60eIGbFidBf0D0xh7G6o"
1137
+ b"TNxsAAAAAAAAAAAAAAAEAAAAUdGVzdEBjcnlwdG9ncmFwaHkuaW8AAAAaAAAACm"
1138
+ b"NyeXB0b3VzZXIAAAAIdGVzdHVzZXIAAAAAY7KyZAAAAAB2frXAAAAAWAAAAA1mb"
1139
+ b"3JjZS1jb21tYW5kAAAALAAAAChlY2hvIGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh"
1140
+ b"YWFhYWFhYWFhYWFhAAAAD3ZlcmlmeS1yZXF1aXJlZAAAAAAAAACCAAAAFXBlcm1"
1141
+ b"pdC1YMTEtZm9yd2FyZGluZwAAAAAAAAAXcGVybWl0LWFnZW50LWZvcndhcmRpbm"
1142
+ b"cAAAAAAAAAFnBlcm1pdC1wb3J0LWZvcndhcmRpbmcAAAAAAAAACnBlcm1pdC1wd"
1143
+ b"HkAAAAAAAAADnBlcm1pdC11c2VyLXJjAAAAAAAAAAAAAAAzAAAAC3NzaC1lZDI1"
1144
+ b"NTE5AAAAICH6csEOmGbOfT2B/S/FJg3uyPsaPSZUZk2SVYlfs0KLAAAAUwAAAAt"
1145
+ b"zc2gtZWQyNTUxOQAAAEDz2u7X5/TFbN7Ms7DP4yArhz1oWWYKkdAk7FGFkHfjtY"
1146
+ b"/YfNQ8Oky3dCZRi7PnSzScEEjos7723dhF8/y99WwH reaperhulk@despoina."
1147
+ b"local"
1146
1148
)
1147
1149
assert isinstance (cert , SSHCertificate )
1148
1150
cert .verify_cert_signature ()
1149
1151
signature_key = cert .signature_key ()
1150
1152
assert isinstance (signature_key , ed25519 .Ed25519PublicKey )
1151
1153
assert cert .nonce == (
1152
- b" \xb5 \xd5 >v_o \x0f \x8c O \x8b \xc6 \x9f \xc4 DX \xa2 \xcd \x1c \xd1 \xdf "
1153
- b"\x7f \xde n \xd7 \x19 \x8e \x9f \x19 \xe4 \xa4 \xaa } "
1154
+ b'- \xfb \x05 \xbf \xd1 \x9b s \xa2 \xd9 J"EY \xd6 \x10 \x94 \x83 \r # \x9d '
1155
+ b"\x06 \x13 \x15 \xd6 \xd1 \xf0 i \x80 e_ \xf9 \x8e "
1154
1156
)
1155
1157
public_key = cert .public_key ()
1156
1158
assert isinstance (public_key , ec .EllipticCurvePublicKey )
@@ -1161,7 +1163,10 @@ def test_loads_ssh_cert(self, backend):
1161
1163
assert cert .valid_principals == [b"cryptouser" , b"testuser" ]
1162
1164
assert cert .valid_before == 1988015552
1163
1165
assert cert .valid_after == 1672655460
1164
- assert cert .critical_options == {}
1166
+ assert cert .critical_options == {
1167
+ b"force-command" : b"echo aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" ,
1168
+ b"verify-required" : b"" ,
1169
+ }
1165
1170
assert cert .extensions == {
1166
1171
b"permit-X11-forwarding" : b"" ,
1167
1172
b"permit-agent-forwarding" : b"" ,
@@ -1283,6 +1288,8 @@ def test_invalid_cert_type(self):
1283
1288
"p256-p256-non-lexical-extensions.pub" ,
1284
1289
"p256-p256-duplicate-crit-opts.pub" ,
1285
1290
"p256-p256-non-lexical-crit-opts.pub" ,
1291
+ "p256-ed25519-non-singular-crit-opt-val.pub" ,
1292
+ "p256-ed25519-non-singular-ext-val.pub" ,
1286
1293
],
1287
1294
)
1288
1295
def test_invalid_encodings (self , filename ):
@@ -1709,6 +1716,11 @@ def test_sign_and_byte_compare_rsa(self, monkeypatch):
1709
1716
.valid_after (1672531200 )
1710
1717
.valid_before (1672617600 )
1711
1718
.type (SSHCertificateType .USER )
1719
+ .add_extension (b"permit-pty" , b"" )
1720
+ .add_critical_option (
1721
+ b"force-command" , b"echo aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
1722
+ )
1723
+ .add_critical_option (b"verify-required" , b"" )
1712
1724
)
1713
1725
cert = builder .sign (private_key )
1714
1726
sig_key = cert .signature_key ()
@@ -1723,19 +1735,21 @@ def test_sign_and_byte_compare_rsa(self, monkeypatch):
1723
1735
b"4kyHpbLEIVloBjzetoqXK6u8Hjz/APuagONypNDCySDR6M7jM85HDcLoFFrbBb8"
1724
1736
b"pruHSTxQejMeEmJxYf8b7rNl58/IWPB1ymbNlvHL/4oSOlnrtHkjcxRWzpQ7U3g"
1725
1737
b"T9BThGyhCiI7EMyEHMgP3r7kTzEUwT6IavWDAAAAAAAAAAAAAAABAAAAAAAAAAA"
1726
- b"AAAAAY7DNAAAAAABjsh6AAAAAAAAAAAAAAAAAAAABFwAAAAdzc2gtcnNhAAAAAw"
1727
- b"EAAQAAAQEAwXr8fndHTKpaqDA2FYo/+/e1IWhRuiIw5dar/MHGz+9Z6SPqEzC8W"
1728
- b"TtzgCq2CKbkozBlI6MRa6WqOWYUUXThO2xJ6beAYuRJ1y77EP1J6R+gi5bQUeeC"
1729
- b"6fWrxbWm95hIJ6245z2gDyKy79zbduq0btrZjtZWYnQ/3GwOM2pdDNuqfcKeU2N"
1730
- b"eJMh6WyxCFZaAY83raKlyurvB48/wD7moDjcqTQwskg0ejO4zPORw3C6BRa2wW/"
1731
- b"Ka7h0k8UHozHhJicWH/G+6zZefPyFjwdcpmzZbxy/+KEjpZ67R5I3MUVs6UO1N4"
1732
- b"E/QU4RsoQoiOxDMhBzID96+5E8xFME+iGr1gwAAARQAAAAMcnNhLXNoYTItNTEy"
1733
- b"AAABAKCRnfhn6MZs3jRgIDICUpUyWrDCbpStEbdzhmoxF8w2m8klR7owRH/rxOf"
1734
- b"nWhKMGnXnoERS+az3Zh9ckiQPujkuEToORKpzu6CEWlzHSzyK1o2X548KkW76HJ"
1735
- b"gqzwMas94HY7UOJUgKSFUI0S3jAgqXAKSa1DxvJBu5/n57aUqPq+BmAtoI8uNBo"
1736
- b"x4F1pNEop38+oD7rUt8bZ8K0VcrubJZz806K8UNiK0mOahaEIkvZXBfzPGvSNRj"
1737
- b"0OjDl1dLUZaP8C1o5lVRomEm7pLcgE9i+ZDq5iz+mvQrSBStlpQ5hPGuUOrZ/oY"
1738
- b"ZLZ1G30R5tWj212MHoNZjxFxM8+f2OT4="
1738
+ b"AAAAAY7DNAAAAAABjsh6AAAAAWAAAAA1mb3JjZS1jb21tYW5kAAAALAAAAChlY2"
1739
+ b"hvIGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhAAAAD3Zlcmlme"
1740
+ b"S1yZXF1aXJlZAAAAAAAAAASAAAACnBlcm1pdC1wdHkAAAAAAAAAAAAAARcAAAAH"
1741
+ b"c3NoLXJzYQAAAAMBAAEAAAEBAMF6/H53R0yqWqgwNhWKP/v3tSFoUboiMOXWq/z"
1742
+ b"Bxs/vWekj6hMwvFk7c4Aqtgim5KMwZSOjEWulqjlmFFF04TtsSem3gGLkSdcu+x"
1743
+ b"D9SekfoIuW0FHngun1q8W1pveYSCetuOc9oA8isu/c23bqtG7a2Y7WVmJ0P9xsD"
1744
+ b"jNqXQzbqn3CnlNjXiTIelssQhWWgGPN62ipcrq7wePP8A+5qA43Kk0MLJINHozu"
1745
+ b"MzzkcNwugUWtsFvymu4dJPFB6Mx4SYnFh/xvus2Xnz8hY8HXKZs2W8cv/ihI6We"
1746
+ b"u0eSNzFFbOlDtTeBP0FOEbKEKIjsQzIQcyA/evuRPMRTBPohq9YMAAAEUAAAADH"
1747
+ b"JzYS1zaGEyLTUxMgAAAQCYbbNzhflDqZAxyBpdLIX0nLAdnTeFNBudMqgo3KGND"
1748
+ b"WlU9N17hqBEmcvIOrtNi+JKuKZW89zZrbORHvdjv6NjGSKzJD/XA25YrX1KgMEO"
1749
+ b"wt5pzMZX+100drwrjQo+vZqeIN3FJNmT3wssge73v+JsxQrdIAz7YM2OZrFr5HM"
1750
+ b"qZEZ5tMvAf/s5YEMDttEU4zMtmjubQyDM5KyYnZdoDT4sKi2rB8gfaigc4IdI/K"
1751
+ b"8oXL/3Y7rHuOtejl3lUK4v6DxeRl4aqGYWmhUJc++Rh0cbDgC2S6Cq7gAfG2tND"
1752
+ b"zbwL217Q93R08bJn1hDWuiTiaHGauSy2gPUI+cnkvlEocHM"
1739
1753
)
1740
1754
1741
1755
@pytest .mark .supported (
@@ -1761,6 +1775,11 @@ def test_sign_and_byte_compare_ed25519(self, monkeypatch, backend):
1761
1775
.valid_after (1672531200 )
1762
1776
.valid_before (1672617600 )
1763
1777
.type (SSHCertificateType .USER )
1778
+ .add_extension (b"permit-pty" , b"" )
1779
+ .add_critical_option (
1780
+ b"force-command" , b"echo aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
1781
+ )
1782
+ .add_critical_option (b"verify-required" , b"" )
1764
1783
)
1765
1784
cert = builder .sign (private_key )
1766
1785
sig_key = cert .signature_key ()
@@ -1770,8 +1789,11 @@ def test_sign_and_byte_compare_ed25519(self, monkeypatch, backend):
1770
1789
b"[email protected] AAAAIHNzaC1lZDI1NTE5LWNlcnQtdj"
1771
1790
b"AxQG9wZW5zc2guY29tAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
1772
1791
b"AAAAAAAINdamAGCsQq31Uv+08lkBzoO4XLz2qYjJa8CGmj3B1EaAAAAAAAAAAAA"
1773
- b"AAABAAAAAAAAAAAAAAAAY7DNAAAAAABjsh6AAAAAAAAAAAAAAAAAAAAAMwAAAAt"
1774
- b"zc2gtZWQyNTUxOQAAACDXWpgBgrEKt9VL/tPJZAc6DuFy89qmIyWvAhpo9wdRGg"
1775
- b"AAAFMAAAALc3NoLWVkMjU1MTkAAABAAlF6Lxabxs+8fkOr7KjKYei9konIG13cQ"
1776
- b"gJ2tWf3yFcg3OuV5s/AkRmKdwHlQfTUrhRdOmDnGxeLEB0mvkVFCw=="
1792
+ b"AAABAAAAAAAAAAAAAAAAY7DNAAAAAABjsh6AAAAAWAAAAA1mb3JjZS1jb21tYW5"
1793
+ b"kAAAALAAAAChlY2hvIGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYW"
1794
+ b"FhAAAAD3ZlcmlmeS1yZXF1aXJlZAAAAAAAAAASAAAACnBlcm1pdC1wdHkAAAAAA"
1795
+ b"AAAAAAAADMAAAALc3NoLWVkMjU1MTkAAAAg11qYAYKxCrfVS/7TyWQHOg7hcvPa"
1796
+ b"piMlrwIaaPcHURoAAABTAAAAC3NzaC1lZDI1NTE5AAAAQL2aUjeD60C2FrbgHcN"
1797
+ b"t8yRa8IRbxvOyA9TZYDGG1dRE3DiR0fuudU20v6vqfTd1gx0S5QyEdECXLl9ZI3"
1798
+ b"AwZgc="
1777
1799
)
0 commit comments