Skip to content

Commit 65ac088

Browse files
committed
FEAT: register *.key suffix for SSH keys
1 parent 15eaec4 commit 65ac088

File tree

3 files changed

+53
-16
lines changed

3 files changed

+53
-16
lines changed

src/mezz/codec-ssh-key.reb

+16-16
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ wrap [
3030
register-codec [
3131
name: 'ssh-key
3232
title: "Secure Shell Key"
33-
; not using suffixes as there is no standard!
33+
suffixes: [%.key]
3434

3535
decode: function [
3636
"Decodes and initilize SSH key"
@@ -88,8 +88,8 @@ wrap [
8888
all [
8989
parse data [
9090
'SEQUENCE into [
91-
'SEQUENCE set v block! ; AlgorithmIdentifier
92-
'BIT_STRING set data binary! ; PublicKey
91+
'SEQUENCE set v: block! ; AlgorithmIdentifier
92+
'BIT_STRING set data: binary! ; PublicKey
9393
(
9494
data: codecs/der/decode data
9595
)
@@ -98,8 +98,8 @@ wrap [
9898
v/OBJECT_IDENTIFIER = #{2A864886F70D010101} ;= rsaEncryption
9999
parse data [
100100
'SEQUENCE into [
101-
'INTEGER set n binary! ;modulus
102-
'INTEGER set e binary! ;publicExponent
101+
'INTEGER set n: binary! ;modulus
102+
'INTEGER set e: binary! ;publicExponent
103103
]
104104
]
105105
]
@@ -110,8 +110,8 @@ wrap [
110110
; resolve RSA public data from the DER structure (PKCS#1)
111111
parse data [
112112
'SEQUENCE into [
113-
'INTEGER set n binary! ;modulus
114-
'INTEGER set e binary! ;publicExponent
113+
'INTEGER set n: binary! ;modulus
114+
'INTEGER set e: binary! ;publicExponent
115115
]
116116
]
117117
; resolve RSA handle from parsed data
@@ -121,15 +121,15 @@ wrap [
121121
; resolve RSA private data from the DER structure (PKCS#1)
122122
parse data [
123123
'SEQUENCE into [
124-
'INTEGER set v binary! ;version
125-
'INTEGER set n binary! ;modulus
126-
'INTEGER set e binary! ;publicExponent
127-
'INTEGER set d binary! ;privateExponent
128-
'INTEGER set p binary! ;prime1
129-
'INTEGER set q binary! ;prime2
130-
'INTEGER set dp binary! ;exponent1 d mod (p-1)
131-
'INTEGER set dq binary! ;exponent2 d mod (q-1)
132-
'INTEGER set inv binary! ;coefficient (inverse of q) mod p
124+
'INTEGER set v: binary! ;version
125+
'INTEGER set n: binary! ;modulus
126+
'INTEGER set e: binary! ;publicExponent
127+
'INTEGER set d: binary! ;privateExponent
128+
'INTEGER set p: binary! ;prime1
129+
'INTEGER set q: binary! ;prime2
130+
'INTEGER set dp: binary! ;exponent1 d mod (p-1)
131+
'INTEGER set dq: binary! ;exponent2 d mod (q-1)
132+
'INTEGER set inv: binary! ;coefficient (inverse of q) mod p
133133
to end
134134
]
135135
to end
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
-----BEGIN RSA PRIVATE KEY-----
2+
MIIEoQIBAAKCAQEA8mjwC6ZCwpQCnDXqU7g2tyvMFoWpJV+myfBz9zbhw7rHxUmF
3+
ubMtEwCKQhYccQxbPCcWu/KIg5TOhmcf9RK1xIuUrOUiUdM8uOwRS+e5kitTUgux
4+
/wjyMNlpK5laIS1hFHiFhCxecN7Won3bsPDMm5Wi3dBMv1+1jK1rlDtJYxDDcJE2
5+
T59m1UI4AN/Pm7dndr11yCmUdKy6VACf5V7u4OX5uC3fsTEuCV1P2WwLBqtZMYG3
6+
jjzuRTana+s8n2TXk5D9lXoPMc7Tj4/aSw50UUAYhmVpie/8vtVwA7MhOCA4us6q
7+
3+Mx07vq8EmzbLOGtP9taXQkDF6JR6wY4IEXBwIBJQKCAQAaNNuuO3zWw+SbRBlV
8+
KKv4IGkXMQtd/IC74qTAx6m0S4s37EXO4vAdut6Dr10FTXGlo1xnWH12Aj/XLb5E
9+
AgXQDxb970H7AhRnBMOZgNXKnOZpvBM+KnsMMy324CVrXtoQDQeD6R73cgldrL3N
10+
8ITSjLepRvOKT4k/pAuhUoR5aWK3vZ7+o2xrgG9LSYdaTvSmVQbP0p+Z0vksJjfp
11+
WAzqOuqMCyviZoUmfHyKcbnsgdZVlYCFdUpXBLLf2lpmLXYGFvW6kSA6gdUUi/kh
12+
vD2ldZ6bZXm2DgQGMIdt2X2Qd3VwDMhNnKr/4qNZDNlJ4Y9lK3EjvCdl2ot5uFae
13+
l3FNAoGBAP2AxslebLmhbVLNFikTYVUUr3nhRsVbC/V0Tem0LG4WejVYDdjeZFYk
14+
Z5h7PM36PVfMpzSsSZMHhl1kCgRtgJYxMndHTPEcUxaAmFnbt/fKzRCY9QO01tk7
15+
9JGyz3JobiaiL5RCvxGVHzzay8BecuAsPDqTJVUuJuo9IPTYotK1AoGBAPTMMG49
16+
ywJRcN+7YYKE+7tfe3zkhorKwUQHUTECxAlTysrQuLDkmIhA9jddk0VAvQLNM54P
17+
dmuYxNNxPXQAv72qCiVQbrP4SsoQ6L/3SUJL8wzQBcABF35Jn/mYx+VXYRPMKNnP
18+
OvJ/rEcdxxki2jgg8VxLwmJwEhTkogLM5WxLAoGAIkHVrIJhuDhouCmNX38o1CVj
19+
0jMzE8AyDGmpqfXA0JtA8nOu2B4NjxmtInGEweOLv8G1uwKGe6cSKEvKAJktDWCY
20+
HfTg4k/vjWtS27XobZfyMqzi1vzDFm/ix5S0P+SZQ32zZw/wTnvvdu0ic/EWcVIV
21+
+hPic0ttCuWqgfPC+eECgYBcoEmtLCNM/DiMAbYxYsAdYmYTlL1JRcyWR/U1I6Qf
22+
NHY+5zEgVn7ncoatKlNmT9jQoKu/RB74R6Rrrk6amH/m5mS0LEWQNG9TYFgRSM+c
23+
i3C4vWn1n4xZTEpecSkKq3DXDvqzR34WkSxt75dxS3Up/qCDyaN/MVLzJhPJtU/j
24+
yQKBgQDhprd4FKjN15L3IJFjPi8UruQBjulZMi4wjJSPPE0LIWI+pbFVk8VghC2z
25+
Qpnl2IrjbB3AV9PUKC6q+SQQDA38nUv0yriDdZgo/J5+PDxRvZXH+9ojQyoAfbol
26+
tt3RgGsAWb5pU7lnptsViWQppVk2L+QDgvU2AUW9Pw6xJRGAtQ==
27+
-----END RSA PRIVATE KEY-----

src/tests/units/rsa-test.r3

+10
Original file line numberDiff line numberDiff line change
@@ -120,5 +120,15 @@ Rebol [
120120
; cleanup:
121121
rsa public-key none
122122
rsa private-key none
123+
===end-group===
124+
125+
===start-group=== "RSA initialization from file"
126+
--test-- "RSA private key from OpenSSL format"
127+
--assert handle? try [private-key: load %units/files/rebol-private-no-pass.key]
128+
; cleanup:
129+
rsa private-key none
130+
===end-group===
131+
132+
123133

124134
~~~end-file~~~

0 commit comments

Comments
 (0)