Compare commits

...

5 Commits

Author SHA1 Message Date
AJ ONeal c54e91c5c3 update test 2018-12-10 23:36:18 -07:00
AJ ONeal bcc503596f fix EC padding 2018-12-10 23:23:17 -07:00
AJ ONeal afdd93b267 wip: seems to pass our test (openssh parses and modifies) 2018-12-09 23:35:53 -07:00
AJ ONeal 16ad97d445 wip: fix rsa 2018-12-09 23:31:13 -07:00
AJ ONeal 931e884ba9 wip: pack ssh private keys 2018-12-09 23:08:08 -07:00
23 changed files with 512 additions and 25 deletions

View File

@ -5,6 +5,8 @@ var path = require('path');
var jwktossh = require('../index.js');
var pubfile = process.argv[2];
var comment = process.argv[3] || 'root@localhost';
var pub = ('public' === process.argv[4]);
if (!pubfile) {
console.error("specify a path to JWK");
@ -12,7 +14,6 @@ if (!pubfile) {
}
var jwk = require(path.join(process.cwd(), pubfile));
var comment = process.argv[3] || 'root@localhost';
var pub = jwktossh.pack({ jwk: jwk, comment: comment });
var out = jwktossh.pack({ jwk: jwk, comment: comment, public: pub });
console.info(pub);
console.info(out);

View File

@ -0,0 +1,7 @@
{
"kty": "EC",
"crv": "P-256",
"d": "BzKpRmMyXZ4jnSt3ARz0ul6R79AXAr5gQqDAmoFeEKw",
"x": "fVmT3gUr4sZIY0Dofcgl15RMeQjfTMofeAiSda4oH_M",
"y": "r3eBz3QeZqEhHmgwYfCWoyhLuQqtHD7gqnGqwXssa_E"
}

View File

@ -0,0 +1,7 @@
{
"kty": "EC",
"crv": "P-256",
"d": "BzKpRmMyXZ4jnSt3ARz0ul6R79AXAr5gQqDAmoFeEKw",
"x": "fVmT3gUr4sZIY0Dofcgl15RMeQjfTMofeAiSda4oH_M",
"y": "r3eBz3QeZqEhHmgwYfCWoyhLuQqtHD7gqnGqwXssa_E"
}

View File

@ -0,0 +1,7 @@
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAaAAAABNlY2RzYS
1zaGEyLW5pc3RwMjU2AAAACG5pc3RwMjU2AAAAQQR9WZPeBSvixkhjQOh9yCXXlEx5CN9M
yh94CJJ1rigf8693gc90HmahIR5oMGHwlqMoS7kKrRw+4KpxqsF7LGvxAAAAqJZtgRuWbY
EbAAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBH1Zk94FK+LGSGNA
6H3IJdeUTHkI30zKH3gIknWuKB/zr3eBz3QeZqEhHmgwYfCWoyhLuQqtHD7gqnGqwXssa/
EAAAAgBzKpRmMyXZ4jnSt3ARz0ul6R79AXAr5gQqDAmoFeEKwAAAAOYWpAYm93aWUubG9j
YWwBAg==

View File

@ -0,0 +1,7 @@
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAaAAAABNlY2RzYS
1zaGEyLW5pc3RwMjU2AAAACG5pc3RwMjU2AAAAQQR9WZPeBSvixkhjQOh9yCXXlEx5CN9M
yh94CJJ1rigf8693gc90HmahIR5oMGHwlqMoS7kKrRw+4KpxqsF7LGvxAAAAqGJjanNiY2
pzAAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBH1Zk94FK+LGSGNA
6H3IJdeUTHkI30zKH3gIknWuKB/zr3eBz3QeZqEhHmgwYfCWoyhLuQqtHD7gqnGqwXssa/
EAAAAgBzKpRmMyXZ4jnSt3ARz0ul6R79AXAr5gQqDAmoFeEKwAAAAOYWpAYm93aWUubG9j
YWwBAg==

View File

@ -0,0 +1,20 @@
00000000: 6f70 656e 7373 682d 6b65 792d 7631 0000 openssh-key-v1..
00000010: 0000 046e 6f6e 6500 0000 046e 6f6e 6500 ...none....none.
00000020: 0000 0000 0000 0100 0000 6800 0000 1365 ..........h....e
00000030: 6364 7361 2d73 6861 322d 6e69 7374 7032 cdsa-sha2-nistp2
00000040: 3536 0000 0008 6e69 7374 7032 3536 0000 56....nistp256..
00000050: 0041 047d 5993 de05 2be2 c648 6340 e87d .A.}Y...+..Hc@.}
00000060: c825 d794 4c79 08df 4cca 1f78 0892 75ae .%..Ly..L..x..u.
00000070: 281f f3af 7781 cf74 1e66 a121 1e68 3061 (...w..t.f.!.h0a
00000080: f096 a328 4bb9 0aad 1c3e e0aa 71aa c17b ...(K....>..q..{
00000090: 2c6b f100 0000 a896 6d81 1b96 6d81 1b00 ,k......m...m...
000000a0: 0000 1365 6364 7361 2d73 6861 322d 6e69 ...ecdsa-sha2-ni
000000b0: 7374 7032 3536 0000 0008 6e69 7374 7032 stp256....nistp2
000000c0: 3536 0000 0041 047d 5993 de05 2be2 c648 56...A.}Y...+..H
000000d0: 6340 e87d c825 d794 4c79 08df 4cca 1f78 c@.}.%..Ly..L..x
000000e0: 0892 75ae 281f f3af 7781 cf74 1e66 a121 ..u.(...w..t.f.!
000000f0: 1e68 3061 f096 a328 4bb9 0aad 1c3e e0aa .h0a...(K....>..
00000100: 71aa c17b 2c6b f100 0000 2007 32a9 4663 q..{,k.... .2.Fc
00000110: 325d 9e23 9d2b 7701 1cf4 ba5e 91ef d017 2].#.+w....^....
00000120: 02be 6042 a0c0 9a81 5e10 ac00 0000 0e61 ..`B....^......a
00000130: 6a40 626f 7769 652e 6c6f 6361 6c01 02 j@bowie.local..

View File

@ -0,0 +1,20 @@
00000000: 6f70 656e 7373 682d 6b65 792d 7631 0000 openssh-key-v1..
00000010: 0000 046e 6f6e 6500 0000 046e 6f6e 6500 ...none....none.
00000020: 0000 0000 0000 0100 0000 6800 0000 1365 ..........h....e
00000030: 6364 7361 2d73 6861 322d 6e69 7374 7032 cdsa-sha2-nistp2
00000040: 3536 0000 0008 6e69 7374 7032 3536 0000 56....nistp256..
00000050: 0041 047d 5993 de05 2be2 c648 6340 e87d .A.}Y...+..Hc@.}
00000060: c825 d794 4c79 08df 4cca 1f78 0892 75ae .%..Ly..L..x..u.
00000070: 281f f3af 7781 cf74 1e66 a121 1e68 3061 (...w..t.f.!.h0a
00000080: f096 a328 4bb9 0aad 1c3e e0aa 71aa c17b ...(K....>..q..{
00000090: 2c6b f100 0000 a862 636a 7362 636a 7300 ,k.....bcjsbcjs.
000000a0: 0000 1365 6364 7361 2d73 6861 322d 6e69 ...ecdsa-sha2-ni
000000b0: 7374 7032 3536 0000 0008 6e69 7374 7032 stp256....nistp2
000000c0: 3536 0000 0041 047d 5993 de05 2be2 c648 56...A.}Y...+..H
000000d0: 6340 e87d c825 d794 4c79 08df 4cca 1f78 c@.}.%..Ly..L..x
000000e0: 0892 75ae 281f f3af 7781 cf74 1e66 a121 ..u.(...w..t.f.!
000000f0: 1e68 3061 f096 a328 4bb9 0aad 1c3e e0aa .h0a...(K....>..
00000100: 71aa c17b 2c6b f100 0000 2007 32a9 4663 q..{,k.... .2.Fc
00000110: 325d 9e23 9d2b 7701 1cf4 ba5e 91ef d017 2].#.+w....^....
00000120: 02be 6042 a0c0 9a81 5e10 ac00 0000 0e61 ..`B....^......a
00000130: 6a40 626f 7769 652e 6c6f 6361 6c01 02 j@bowie.local..

View File

@ -0,0 +1,9 @@
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAaAAAABNlY2RzYS
1zaGEyLW5pc3RwMjU2AAAACG5pc3RwMjU2AAAAQQR9WZPeBSvixkhjQOh9yCXXlEx5CN9M
yh94CJJ1rigf8693gc90HmahIR5oMGHwlqMoS7kKrRw+4KpxqsF7LGvxAAAAqJZtgRuWbY
EbAAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBH1Zk94FK+LGSGNA
6H3IJdeUTHkI30zKH3gIknWuKB/zr3eBz3QeZqEhHmgwYfCWoyhLuQqtHD7gqnGqwXssa/
EAAAAgBzKpRmMyXZ4jnSt3ARz0ul6R79AXAr5gQqDAmoFeEKwAAAAOYWpAYm93aWUubG9j
YWwBAg==
-----END OPENSSH PRIVATE KEY-----

View File

@ -0,0 +1,9 @@
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAaAAAABNlY2RzYS
1zaGEyLW5pc3RwMjU2AAAACG5pc3RwMjU2AAAAQQR9WZPeBSvixkhjQOh9yCXXlEx5CN9M
yh94CJJ1rigf8693gc90HmahIR5oMGHwlqMoS7kKrRw+4KpxqsF7LGvxAAAAqGJjanNiY2
pzAAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBH1Zk94FK+LGSGNA
6H3IJdeUTHkI30zKH3gIknWuKB/zr3eBz3QeZqEhHmgwYfCWoyhLuQqtHD7gqnGqwXssa/
EAAAAgBzKpRmMyXZ4jnSt3ARz0ul6R79AXAr5gQqDAmoFeEKwAAAAOYWpAYm93aWUubG9j
YWwBAg==
-----END OPENSSH PRIVATE KEY-----

View File

@ -0,0 +1 @@
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBH1Zk94FK+LGSGNA6H3IJdeUTHkI30zKH3gIknWuKB/zr3eBz3QeZqEhHmgwYfCWoyhLuQqtHD7gqnGqwXssa/E= root@localhost

View File

@ -0,0 +1 @@
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBH1Zk94FK+LGSGNA6H3IJdeUTHkI30zKH3gIknWuKB/zr3eBz3QeZqEhHmgwYfCWoyhLuQqtHD7gqnGqwXssa/E= root@localhost

View File

@ -0,0 +1,9 @@
{
"kty": "RSA",
"n": "0zRlF7ykENrG3V3SC83iO7utM4gQx6gm62MVJHa6NCwPEqoppEHsRynfUgVb68TZt5dS7AkZniIK8ZYcLqbbMoCvNK0V-SYrdgwkT-trcjASBCKi8QJLDBFtc-jN1yHSI9o1pC-noukL3q9NyVreE38WRveGsUj8T2h2H-j7G_pWZzH2K1l7VQ_YSQOr0IyjapqVKNSNnVqunuhdznqXo37vQs9cjJxLDSRtwjrmyUl1JBHbCWEq1t8H1JzDwa5Z47PLj-DQU4pPuUh5qW_qVN_tg44AuLbJ0yJIrrGiyKf6iZkvl9fKRc0QjMto319UHhzD7F5wUr3X8iHWXyFbOQ",
"e": "AQAB",
"d": "FM_i7lXebPLCCepG2nbtRimWRa-wx5vgSe23laJFcwKscZBnDhKY7-JGaVSx3CfHtHmq6Ct1ZMnB_lBmcopqqy1XFn-_3I9QVQ-ZPG7cZaIrBFFNcSZissu812End32TsYi9JHK1uC3yx3zK036qx40Mau3VTf79Le4DRd21cOoqSKqzt2fngyWCIV2VbUj1Jk5HvF5gHmBC1_iIJlrkE0sWkPBZSAhLfOqCuFDRUPfovSueF_pUUYSLqhQHpda1wBl6XDErE1lU8kaVaI7pxf6_RswTqIWH4J0NK_6n_pcTYHFJagMW1qfnUewXsXxJ_14tzNqXoOWtTqf45D8LqQ",
"p": "-q0o_Xxs3x1c9HjCexR6QPxV-WWfdBEQcHjFQiwr045HPa9gBU0_SS6doOb7xeKWDuk_qSRF1vfABLXkDzY9jDPFmTpk2tcexT2PZu1Y0Y0h-C9nQCzBfeDTKGv-Jju4JRbSqrhk907cMajponP47QYYqX4GRvdOnbWHizoNiks",
"q": "17CkB-asl_lX0vieylkIseZm74mQutso-bhHGNLx_VEbtn2EV3hiLfslsd4yxnMPTFdZKUTw-sPksYO8_0_3H2T18q8XTOm7rs9N5ahWHMmfx-shBpub2e8Z23tk60Hk5O1lzSBH5iktC9mE86BwpohZ1uvpJffialjvTR5C_gs",
"qi": "bRdofVl5iXHzw9rlUyerqdnNOdI9LjnQlrAyUVkfxM1CS1-E9F3j7F4kHzm5bWPnsS51VlY6xX02WPATHvkUjzUvsAbdyg-sCYTw5aTFSzG2D6A0yNrX3CaHnHu0N8Gj6a_hfEzJ1FDnURefUEyjgRwBl_bsYkuQ3JkfhsIEKMM"
}

View File

@ -0,0 +1,9 @@
{
"kty": "RSA",
"n": "0zRlF7ykENrG3V3SC83iO7utM4gQx6gm62MVJHa6NCwPEqoppEHsRynfUgVb68TZt5dS7AkZniIK8ZYcLqbbMoCvNK0V-SYrdgwkT-trcjASBCKi8QJLDBFtc-jN1yHSI9o1pC-noukL3q9NyVreE38WRveGsUj8T2h2H-j7G_pWZzH2K1l7VQ_YSQOr0IyjapqVKNSNnVqunuhdznqXo37vQs9cjJxLDSRtwjrmyUl1JBHbCWEq1t8H1JzDwa5Z47PLj-DQU4pPuUh5qW_qVN_tg44AuLbJ0yJIrrGiyKf6iZkvl9fKRc0QjMto319UHhzD7F5wUr3X8iHWXyFbOQ",
"e": "AQAB",
"d": "FM_i7lXebPLCCepG2nbtRimWRa-wx5vgSe23laJFcwKscZBnDhKY7-JGaVSx3CfHtHmq6Ct1ZMnB_lBmcopqqy1XFn-_3I9QVQ-ZPG7cZaIrBFFNcSZissu812End32TsYi9JHK1uC3yx3zK036qx40Mau3VTf79Le4DRd21cOoqSKqzt2fngyWCIV2VbUj1Jk5HvF5gHmBC1_iIJlrkE0sWkPBZSAhLfOqCuFDRUPfovSueF_pUUYSLqhQHpda1wBl6XDErE1lU8kaVaI7pxf6_RswTqIWH4J0NK_6n_pcTYHFJagMW1qfnUewXsXxJ_14tzNqXoOWtTqf45D8LqQ",
"p": "-q0o_Xxs3x1c9HjCexR6QPxV-WWfdBEQcHjFQiwr045HPa9gBU0_SS6doOb7xeKWDuk_qSRF1vfABLXkDzY9jDPFmTpk2tcexT2PZu1Y0Y0h-C9nQCzBfeDTKGv-Jju4JRbSqrhk907cMajponP47QYYqX4GRvdOnbWHizoNiks",
"q": "17CkB-asl_lX0vieylkIseZm74mQutso-bhHGNLx_VEbtn2EV3hiLfslsd4yxnMPTFdZKUTw-sPksYO8_0_3H2T18q8XTOm7rs9N5ahWHMmfx-shBpub2e8Z23tk60Hk5O1lzSBH5iktC9mE86BwpohZ1uvpJffialjvTR5C_gs",
"qi": "bRdofVl5iXHzw9rlUyerqdnNOdI9LjnQlrAyUVkfxM1CS1-E9F3j7F4kHzm5bWPnsS51VlY6xX02WPATHvkUjzUvsAbdyg-sCYTw5aTFSzG2D6A0yNrX3CaHnHu0N8Gj6a_hfEzJ1FDnURefUEyjgRwBl_bsYkuQ3JkfhsIEKMM"
}

View File

@ -0,0 +1,25 @@
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFwAAAAdzc2gtcn
NhAAAAAwEAAQAAAQEA0zRlF7ykENrG3V3SC83iO7utM4gQx6gm62MVJHa6NCwPEqoppEHs
RynfUgVb68TZt5dS7AkZniIK8ZYcLqbbMoCvNK0V+SYrdgwkT+trcjASBCKi8QJLDBFtc+
jN1yHSI9o1pC+noukL3q9NyVreE38WRveGsUj8T2h2H+j7G/pWZzH2K1l7VQ/YSQOr0Iyj
apqVKNSNnVqunuhdznqXo37vQs9cjJxLDSRtwjrmyUl1JBHbCWEq1t8H1JzDwa5Z47PLj+
DQU4pPuUh5qW/qVN/tg44AuLbJ0yJIrrGiyKf6iZkvl9fKRc0QjMto319UHhzD7F5wUr3X
8iHWXyFbOQAAA8gqv28eKr9vHgAAAAdzc2gtcnNhAAABAQDTNGUXvKQQ2sbdXdILzeI7u6
0ziBDHqCbrYxUkdro0LA8SqimkQexHKd9SBVvrxNm3l1LsCRmeIgrxlhwuptsygK80rRX5
Jit2DCRP62tyMBIEIqLxAksMEW1z6M3XIdIj2jWkL6ei6Qver03JWt4TfxZG94axSPxPaH
Yf6Psb+lZnMfYrWXtVD9hJA6vQjKNqmpUo1I2dWq6e6F3Oepejfu9Cz1yMnEsNJG3COubJ
SXUkEdsJYSrW3wfUnMPBrlnjs8uP4NBTik+5SHmpb+pU3+2DjgC4tsnTIkiusaLIp/qJmS
+X18pFzRCMy2jfX1QeHMPsXnBSvdfyIdZfIVs5AAAAAwEAAQAAAQAUz+LuVd5s8sIJ6kba
du1GKZZFr7DHm+BJ7beVokVzAqxxkGcOEpjv4kZpVLHcJ8e0earoK3VkycH+UGZyimqrLV
cWf7/cj1BVD5k8btxloisEUU1xJmKyy7zXYSd3fZOxiL0kcrW4LfLHfMrTfqrHjQxq7dVN
/v0t7gNF3bVw6ipIqrO3Z+eDJYIhXZVtSPUmTke8XmAeYELX+IgmWuQTSxaQ8FlICEt86o
K4UNFQ9+i9K54X+lRRhIuqFAel1rXAGXpcMSsTWVTyRpVojunF/r9GzBOohYfgnQ0r/qf+
lxNgcUlqAxbWp+dR7BexfEn/Xi3M2peg5a1Op/jkPwupAAAAgG0XaH1ZeYlx88Pa5VMnq6
nZzTnSPS450JawMlFZH8TNQktfhPRd4+xeJB85uW1j57EudVZWOsV9NljwEx75FI81L7AG
3coPrAmE8OWkxUsxtg+gNMja19wmh5x7tDfBo+mv4XxMydRQ51EXn1BMo4EcAZf27GJLkN
yZH4bCBCjDAAAAgQD6rSj9fGzfHVz0eMJ7FHpA/FX5ZZ90ERBweMVCLCvTjkc9r2AFTT9J
Lp2g5vvF4pYO6T+pJEXW98AEteQPNj2MM8WZOmTa1x7FPY9m7VjRjSH4L2dALMF94NMoa/
4mO7glFtKquGT3TtwxqOmic/jtBhipfgZG906dtYeLOg2KSwAAAIEA17CkB+asl/lX0vie
ylkIseZm74mQutso+bhHGNLx/VEbtn2EV3hiLfslsd4yxnMPTFdZKUTw+sPksYO8/0/3H2
T18q8XTOm7rs9N5ahWHMmfx+shBpub2e8Z23tk60Hk5O1lzSBH5iktC9mE86BwpohZ1uvp
JffialjvTR5C/gsAAAAOYWpAYm93aWUubG9jYWwBAgMEBQ==

View File

@ -0,0 +1,25 @@
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFwAAAAdzc2gtcn
NhAAAAAwEAAQAAAQEA0zRlF7ykENrG3V3SC83iO7utM4gQx6gm62MVJHa6NCwPEqoppEHs
RynfUgVb68TZt5dS7AkZniIK8ZYcLqbbMoCvNK0V+SYrdgwkT+trcjASBCKi8QJLDBFtc+
jN1yHSI9o1pC+noukL3q9NyVreE38WRveGsUj8T2h2H+j7G/pWZzH2K1l7VQ/YSQOr0Iyj
apqVKNSNnVqunuhdznqXo37vQs9cjJxLDSRtwjrmyUl1JBHbCWEq1t8H1JzDwa5Z47PLj+
DQU4pPuUh5qW/qVN/tg44AuLbJ0yJIrrGiyKf6iZkvl9fKRc0QjMto319UHhzD7F5wUr3X
8iHWXyFbOQAAA8hiY2pzYmNqcwAAAAdzc2gtcnNhAAABAQDTNGUXvKQQ2sbdXdILzeI7u6
0ziBDHqCbrYxUkdro0LA8SqimkQexHKd9SBVvrxNm3l1LsCRmeIgrxlhwuptsygK80rRX5
Jit2DCRP62tyMBIEIqLxAksMEW1z6M3XIdIj2jWkL6ei6Qver03JWt4TfxZG94axSPxPaH
Yf6Psb+lZnMfYrWXtVD9hJA6vQjKNqmpUo1I2dWq6e6F3Oepejfu9Cz1yMnEsNJG3COubJ
SXUkEdsJYSrW3wfUnMPBrlnjs8uP4NBTik+5SHmpb+pU3+2DjgC4tsnTIkiusaLIp/qJmS
+X18pFzRCMy2jfX1QeHMPsXnBSvdfyIdZfIVs5AAAAAwEAAQAAAQAUz+LuVd5s8sIJ6kba
du1GKZZFr7DHm+BJ7beVokVzAqxxkGcOEpjv4kZpVLHcJ8e0earoK3VkycH+UGZyimqrLV
cWf7/cj1BVD5k8btxloisEUU1xJmKyy7zXYSd3fZOxiL0kcrW4LfLHfMrTfqrHjQxq7dVN
/v0t7gNF3bVw6ipIqrO3Z+eDJYIhXZVtSPUmTke8XmAeYELX+IgmWuQTSxaQ8FlICEt86o
K4UNFQ9+i9K54X+lRRhIuqFAel1rXAGXpcMSsTWVTyRpVojunF/r9GzBOohYfgnQ0r/qf+
lxNgcUlqAxbWp+dR7BexfEn/Xi3M2peg5a1Op/jkPwupAAAAgG0XaH1ZeYlx88Pa5VMnq6
nZzTnSPS450JawMlFZH8TNQktfhPRd4+xeJB85uW1j57EudVZWOsV9NljwEx75FI81L7AG
3coPrAmE8OWkxUsxtg+gNMja19wmh5x7tDfBo+mv4XxMydRQ51EXn1BMo4EcAZf27GJLkN
yZH4bCBCjDAAAAgQD6rSj9fGzfHVz0eMJ7FHpA/FX5ZZ90ERBweMVCLCvTjkc9r2AFTT9J
Lp2g5vvF4pYO6T+pJEXW98AEteQPNj2MM8WZOmTa1x7FPY9m7VjRjSH4L2dALMF94NMoa/
4mO7glFtKquGT3TtwxqOmic/jtBhipfgZG906dtYeLOg2KSwAAAIEA17CkB+asl/lX0vie
ylkIseZm74mQutso+bhHGNLx/VEbtn2EV3hiLfslsd4yxnMPTFdZKUTw+sPksYO8/0/3H2
T18q8XTOm7rs9N5ahWHMmfx+shBpub2e8Z23tk60Hk5O1lzSBH5iktC9mE86BwpohZ1uvp
JffialjvTR5C/gsAAAAOYWpAYm93aWUubG9jYWwBAgMEBQ==

View File

@ -0,0 +1,81 @@
00000000: 6f70 656e 7373 682d 6b65 792d 7631 0000 openssh-key-v1..
00000010: 0000 046e 6f6e 6500 0000 046e 6f6e 6500 ...none....none.
00000020: 0000 0000 0000 0100 0001 1700 0000 0773 ...............s
00000030: 7368 2d72 7361 0000 0003 0100 0100 0001 sh-rsa..........
00000040: 0100 d334 6517 bca4 10da c6dd 5dd2 0bcd ...4e.......]...
00000050: e23b bbad 3388 10c7 a826 eb63 1524 76ba .;..3....&.c.$v.
00000060: 342c 0f12 aa29 a441 ec47 29df 5205 5beb 4,...).A.G).R.[.
00000070: c4d9 b797 52ec 0919 9e22 0af1 961c 2ea6 ....R...."......
00000080: db32 80af 34ad 15f9 262b 760c 244f eb6b .2..4...&+v.$O.k
00000090: 7230 1204 22a2 f102 4b0c 116d 73e8 cdd7 r0.."...K..ms...
000000a0: 21d2 23da 35a4 2fa7 a2e9 0bde af4d c95a !.#.5./......M.Z
000000b0: de13 7f16 46f7 86b1 48fc 4f68 761f e8fb ....F...H.Ohv...
000000c0: 1bfa 5667 31f6 2b59 7b55 0fd8 4903 abd0 ..Vg1.+Y{U..I...
000000d0: 8ca3 6a9a 9528 d48d 9d5a ae9e e85d ce7a ..j..(...Z...].z
000000e0: 97a3 7eef 42cf 5c8c 9c4b 0d24 6dc2 3ae6 ..~.B.\..K.$m.:.
000000f0: c949 7524 11db 0961 2ad6 df07 d49c c3c1 .Iu$...a*.......
00000100: ae59 e3b3 cb8f e0d0 538a 4fb9 4879 a96f .Y......S.O.Hy.o
00000110: ea54 dfed 838e 00b8 b6c9 d322 48ae b1a2 .T........."H...
00000120: c8a7 fa89 992f 97d7 ca45 cd10 8ccb 68df ...../...E....h.
00000130: 5f54 1e1c c3ec 5e70 52bd d7f2 21d6 5f21 _T....^pR...!._!
00000140: 5b39 0000 03c8 2abf 6f1e 2abf 6f1e 0000 [9....*.o.*.o...
00000150: 0007 7373 682d 7273 6100 0001 0100 d334 ..ssh-rsa......4
00000160: 6517 bca4 10da c6dd 5dd2 0bcd e23b bbad e.......]....;..
00000170: 3388 10c7 a826 eb63 1524 76ba 342c 0f12 3....&.c.$v.4,..
00000180: aa29 a441 ec47 29df 5205 5beb c4d9 b797 .).A.G).R.[.....
00000190: 52ec 0919 9e22 0af1 961c 2ea6 db32 80af R....".......2..
000001a0: 34ad 15f9 262b 760c 244f eb6b 7230 1204 4...&+v.$O.kr0..
000001b0: 22a2 f102 4b0c 116d 73e8 cdd7 21d2 23da "...K..ms...!.#.
000001c0: 35a4 2fa7 a2e9 0bde af4d c95a de13 7f16 5./......M.Z....
000001d0: 46f7 86b1 48fc 4f68 761f e8fb 1bfa 5667 F...H.Ohv.....Vg
000001e0: 31f6 2b59 7b55 0fd8 4903 abd0 8ca3 6a9a 1.+Y{U..I.....j.
000001f0: 9528 d48d 9d5a ae9e e85d ce7a 97a3 7eef .(...Z...].z..~.
00000200: 42cf 5c8c 9c4b 0d24 6dc2 3ae6 c949 7524 B.\..K.$m.:..Iu$
00000210: 11db 0961 2ad6 df07 d49c c3c1 ae59 e3b3 ...a*........Y..
00000220: cb8f e0d0 538a 4fb9 4879 a96f ea54 dfed ....S.O.Hy.o.T..
00000230: 838e 00b8 b6c9 d322 48ae b1a2 c8a7 fa89 ......."H.......
00000240: 992f 97d7 ca45 cd10 8ccb 68df 5f54 1e1c ./...E....h._T..
00000250: c3ec 5e70 52bd d7f2 21d6 5f21 5b39 0000 ..^pR...!._![9..
00000260: 0003 0100 0100 0001 0014 cfe2 ee55 de6c .............U.l
00000270: f2c2 09ea 46da 76ed 4629 9645 afb0 c79b ....F.v.F).E....
00000280: e049 edb7 95a2 4573 02ac 7190 670e 1298 .I....Es..q.g...
00000290: efe2 4669 54b1 dc27 c7b4 79aa e82b 7564 ..FiT..'..y..+ud
000002a0: c9c1 fe50 6672 8a6a ab2d 5716 7fbf dc8f ...Pfr.j.-W.....
000002b0: 5055 0f99 3c6e dc65 a22b 0451 4d71 2662 PU..<n.e.+.QMq&b
000002c0: b2cb bcd7 6127 777d 93b1 88bd 2472 b5b8 ....a'w}....$r..
000002d0: 2df2 c77c cad3 7eaa c78d 0c6a edd5 4dfe -..|..~....j..M.
000002e0: fd2d ee03 45dd b570 ea2a 48aa b3b7 67e7 .-..E..p.*H...g.
000002f0: 8325 8221 5d95 6d48 f526 4e47 bc5e 601e .%.!].mH.&NG.^`.
00000300: 6042 d7f8 8826 5ae4 134b 1690 f059 4808 `B...&Z..K...YH.
00000310: 4b7c ea82 b850 d150 f7e8 bd2b 9e17 fa54 K|...P.P...+...T
00000320: 5184 8baa 1407 a5d6 b5c0 197a 5c31 2b13 Q..........z\1+.
00000330: 5954 f246 9568 8ee9 c5fe bf46 cc13 a885 YT.F.h.....F....
00000340: 87e0 9d0d 2bfe a7fe 9713 6071 496a 0316 ....+.....`qIj..
00000350: d6a7 e751 ec17 b17c 49ff 5e2d ccda 97a0 ...Q...|I.^-....
00000360: e5ad 4ea7 f8e4 3f0b a900 0000 806d 1768 ..N...?......m.h
00000370: 7d59 7989 71f3 c3da e553 27ab a9d9 cd39 }Yy.q....S'....9
00000380: d23d 2e39 d096 b032 5159 1fc4 cd42 4b5f .=.9...2QY...BK_
00000390: 84f4 5de3 ec5e 241f 39b9 6d63 e7b1 2e75 ..]..^$.9.mc...u
000003a0: 5656 3ac5 7d36 58f0 131e f914 8f35 2fb0 VV:.}6X......5/.
000003b0: 06dd ca0f ac09 84f0 e5a4 c54b 31b6 0fa0 ...........K1...
000003c0: 34c8 dad7 dc26 879c 7bb4 37c1 a3e9 afe1 4....&..{.7.....
000003d0: 7c4c c9d4 50e7 5117 9f50 4ca3 811c 0197 |L..P.Q..PL.....
000003e0: f6ec 624b 90dc 991f 86c2 0428 c300 0000 ..bK.......(....
000003f0: 8100 faad 28fd 7c6c df1d 5cf4 78c2 7b14 ....(.|l..\.x.{.
00000400: 7a40 fc55 f965 9f74 1110 7078 c542 2c2b z@.U.e.t..px.B,+
00000410: d38e 473d af60 054d 3f49 2e9d a0e6 fbc5 ..G=.`.M?I......
00000420: e296 0ee9 3fa9 2445 d6f7 c004 b5e4 0f36 ....?.$E.......6
00000430: 3d8c 33c5 993a 64da d71e c53d 8f66 ed58 =.3..:d....=.f.X
00000440: d18d 21f8 2f67 402c c17d e0d3 286b fe26 ..!./g@,.}..(k.&
00000450: 3bb8 2516 d2aa b864 f74e dc31 a8e9 a273 ;.%....d.N.1...s
00000460: f8ed 0618 a97e 0646 f74e 9db5 878b 3a0d .....~.F.N....:.
00000470: 8a4b 0000 0081 00d7 b0a4 07e6 ac97 f957 .K.............W
00000480: d2f8 9eca 5908 b1e6 66ef 8990 badb 28f9 ....Y...f.....(.
00000490: b847 18d2 f1fd 511b b67d 8457 7862 2dfb .G....Q..}.Wxb-.
000004a0: 25b1 de32 c673 0f4c 5759 2944 f0fa c3e4 %..2.s.LWY)D....
000004b0: b183 bcff 4ff7 1f64 f5f2 af17 4ce9 bbae ....O..d....L...
000004c0: cf4d e5a8 561c c99f c7eb 2106 9b9b d9ef .M..V.....!.....
000004d0: 19db 7b64 eb41 e4e4 ed65 cd20 47e6 292d ..{d.A...e. G.)-
000004e0: 0bd9 84f3 a070 a688 59d6 ebe9 25f7 e26a .....p..Y...%..j
000004f0: 58ef 4d1e 42fe 0b00 0000 0e61 6a40 626f X.M.B......aj@bo
00000500: 7769 652e 6c6f 6361 6c01 0203 0405 wie.local.....

View File

@ -0,0 +1,81 @@
00000000: 6f70 656e 7373 682d 6b65 792d 7631 0000 openssh-key-v1..
00000010: 0000 046e 6f6e 6500 0000 046e 6f6e 6500 ...none....none.
00000020: 0000 0000 0000 0100 0001 1700 0000 0773 ...............s
00000030: 7368 2d72 7361 0000 0003 0100 0100 0001 sh-rsa..........
00000040: 0100 d334 6517 bca4 10da c6dd 5dd2 0bcd ...4e.......]...
00000050: e23b bbad 3388 10c7 a826 eb63 1524 76ba .;..3....&.c.$v.
00000060: 342c 0f12 aa29 a441 ec47 29df 5205 5beb 4,...).A.G).R.[.
00000070: c4d9 b797 52ec 0919 9e22 0af1 961c 2ea6 ....R...."......
00000080: db32 80af 34ad 15f9 262b 760c 244f eb6b .2..4...&+v.$O.k
00000090: 7230 1204 22a2 f102 4b0c 116d 73e8 cdd7 r0.."...K..ms...
000000a0: 21d2 23da 35a4 2fa7 a2e9 0bde af4d c95a !.#.5./......M.Z
000000b0: de13 7f16 46f7 86b1 48fc 4f68 761f e8fb ....F...H.Ohv...
000000c0: 1bfa 5667 31f6 2b59 7b55 0fd8 4903 abd0 ..Vg1.+Y{U..I...
000000d0: 8ca3 6a9a 9528 d48d 9d5a ae9e e85d ce7a ..j..(...Z...].z
000000e0: 97a3 7eef 42cf 5c8c 9c4b 0d24 6dc2 3ae6 ..~.B.\..K.$m.:.
000000f0: c949 7524 11db 0961 2ad6 df07 d49c c3c1 .Iu$...a*.......
00000100: ae59 e3b3 cb8f e0d0 538a 4fb9 4879 a96f .Y......S.O.Hy.o
00000110: ea54 dfed 838e 00b8 b6c9 d322 48ae b1a2 .T........."H...
00000120: c8a7 fa89 992f 97d7 ca45 cd10 8ccb 68df ...../...E....h.
00000130: 5f54 1e1c c3ec 5e70 52bd d7f2 21d6 5f21 _T....^pR...!._!
00000140: 5b39 0000 03c8 6263 6a73 6263 6a73 0000 [9....bcjsbcjs..
00000150: 0007 7373 682d 7273 6100 0001 0100 d334 ..ssh-rsa......4
00000160: 6517 bca4 10da c6dd 5dd2 0bcd e23b bbad e.......]....;..
00000170: 3388 10c7 a826 eb63 1524 76ba 342c 0f12 3....&.c.$v.4,..
00000180: aa29 a441 ec47 29df 5205 5beb c4d9 b797 .).A.G).R.[.....
00000190: 52ec 0919 9e22 0af1 961c 2ea6 db32 80af R....".......2..
000001a0: 34ad 15f9 262b 760c 244f eb6b 7230 1204 4...&+v.$O.kr0..
000001b0: 22a2 f102 4b0c 116d 73e8 cdd7 21d2 23da "...K..ms...!.#.
000001c0: 35a4 2fa7 a2e9 0bde af4d c95a de13 7f16 5./......M.Z....
000001d0: 46f7 86b1 48fc 4f68 761f e8fb 1bfa 5667 F...H.Ohv.....Vg
000001e0: 31f6 2b59 7b55 0fd8 4903 abd0 8ca3 6a9a 1.+Y{U..I.....j.
000001f0: 9528 d48d 9d5a ae9e e85d ce7a 97a3 7eef .(...Z...].z..~.
00000200: 42cf 5c8c 9c4b 0d24 6dc2 3ae6 c949 7524 B.\..K.$m.:..Iu$
00000210: 11db 0961 2ad6 df07 d49c c3c1 ae59 e3b3 ...a*........Y..
00000220: cb8f e0d0 538a 4fb9 4879 a96f ea54 dfed ....S.O.Hy.o.T..
00000230: 838e 00b8 b6c9 d322 48ae b1a2 c8a7 fa89 ......."H.......
00000240: 992f 97d7 ca45 cd10 8ccb 68df 5f54 1e1c ./...E....h._T..
00000250: c3ec 5e70 52bd d7f2 21d6 5f21 5b39 0000 ..^pR...!._![9..
00000260: 0003 0100 0100 0001 0014 cfe2 ee55 de6c .............U.l
00000270: f2c2 09ea 46da 76ed 4629 9645 afb0 c79b ....F.v.F).E....
00000280: e049 edb7 95a2 4573 02ac 7190 670e 1298 .I....Es..q.g...
00000290: efe2 4669 54b1 dc27 c7b4 79aa e82b 7564 ..FiT..'..y..+ud
000002a0: c9c1 fe50 6672 8a6a ab2d 5716 7fbf dc8f ...Pfr.j.-W.....
000002b0: 5055 0f99 3c6e dc65 a22b 0451 4d71 2662 PU..<n.e.+.QMq&b
000002c0: b2cb bcd7 6127 777d 93b1 88bd 2472 b5b8 ....a'w}....$r..
000002d0: 2df2 c77c cad3 7eaa c78d 0c6a edd5 4dfe -..|..~....j..M.
000002e0: fd2d ee03 45dd b570 ea2a 48aa b3b7 67e7 .-..E..p.*H...g.
000002f0: 8325 8221 5d95 6d48 f526 4e47 bc5e 601e .%.!].mH.&NG.^`.
00000300: 6042 d7f8 8826 5ae4 134b 1690 f059 4808 `B...&Z..K...YH.
00000310: 4b7c ea82 b850 d150 f7e8 bd2b 9e17 fa54 K|...P.P...+...T
00000320: 5184 8baa 1407 a5d6 b5c0 197a 5c31 2b13 Q..........z\1+.
00000330: 5954 f246 9568 8ee9 c5fe bf46 cc13 a885 YT.F.h.....F....
00000340: 87e0 9d0d 2bfe a7fe 9713 6071 496a 0316 ....+.....`qIj..
00000350: d6a7 e751 ec17 b17c 49ff 5e2d ccda 97a0 ...Q...|I.^-....
00000360: e5ad 4ea7 f8e4 3f0b a900 0000 806d 1768 ..N...?......m.h
00000370: 7d59 7989 71f3 c3da e553 27ab a9d9 cd39 }Yy.q....S'....9
00000380: d23d 2e39 d096 b032 5159 1fc4 cd42 4b5f .=.9...2QY...BK_
00000390: 84f4 5de3 ec5e 241f 39b9 6d63 e7b1 2e75 ..]..^$.9.mc...u
000003a0: 5656 3ac5 7d36 58f0 131e f914 8f35 2fb0 VV:.}6X......5/.
000003b0: 06dd ca0f ac09 84f0 e5a4 c54b 31b6 0fa0 ...........K1...
000003c0: 34c8 dad7 dc26 879c 7bb4 37c1 a3e9 afe1 4....&..{.7.....
000003d0: 7c4c c9d4 50e7 5117 9f50 4ca3 811c 0197 |L..P.Q..PL.....
000003e0: f6ec 624b 90dc 991f 86c2 0428 c300 0000 ..bK.......(....
000003f0: 8100 faad 28fd 7c6c df1d 5cf4 78c2 7b14 ....(.|l..\.x.{.
00000400: 7a40 fc55 f965 9f74 1110 7078 c542 2c2b z@.U.e.t..px.B,+
00000410: d38e 473d af60 054d 3f49 2e9d a0e6 fbc5 ..G=.`.M?I......
00000420: e296 0ee9 3fa9 2445 d6f7 c004 b5e4 0f36 ....?.$E.......6
00000430: 3d8c 33c5 993a 64da d71e c53d 8f66 ed58 =.3..:d....=.f.X
00000440: d18d 21f8 2f67 402c c17d e0d3 286b fe26 ..!./g@,.}..(k.&
00000450: 3bb8 2516 d2aa b864 f74e dc31 a8e9 a273 ;.%....d.N.1...s
00000460: f8ed 0618 a97e 0646 f74e 9db5 878b 3a0d .....~.F.N....:.
00000470: 8a4b 0000 0081 00d7 b0a4 07e6 ac97 f957 .K.............W
00000480: d2f8 9eca 5908 b1e6 66ef 8990 badb 28f9 ....Y...f.....(.
00000490: b847 18d2 f1fd 511b b67d 8457 7862 2dfb .G....Q..}.Wxb-.
000004a0: 25b1 de32 c673 0f4c 5759 2944 f0fa c3e4 %..2.s.LWY)D....
000004b0: b183 bcff 4ff7 1f64 f5f2 af17 4ce9 bbae ....O..d....L...
000004c0: cf4d e5a8 561c c99f c7eb 2106 9b9b d9ef .M..V.....!.....
000004d0: 19db 7b64 eb41 e4e4 ed65 cd20 47e6 292d ..{d.A...e. G.)-
000004e0: 0bd9 84f3 a070 a688 59d6 ebe9 25f7 e26a .....p..Y...%..j
000004f0: 58ef 4d1e 42fe 0b00 0000 0e61 6a40 626f X.M.B......aj@bo
00000500: 7769 652e 6c6f 6361 6c01 0203 0405 wie.local.....

View File

@ -0,0 +1,27 @@
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFwAAAAdzc2gtcn
NhAAAAAwEAAQAAAQEA0zRlF7ykENrG3V3SC83iO7utM4gQx6gm62MVJHa6NCwPEqoppEHs
RynfUgVb68TZt5dS7AkZniIK8ZYcLqbbMoCvNK0V+SYrdgwkT+trcjASBCKi8QJLDBFtc+
jN1yHSI9o1pC+noukL3q9NyVreE38WRveGsUj8T2h2H+j7G/pWZzH2K1l7VQ/YSQOr0Iyj
apqVKNSNnVqunuhdznqXo37vQs9cjJxLDSRtwjrmyUl1JBHbCWEq1t8H1JzDwa5Z47PLj+
DQU4pPuUh5qW/qVN/tg44AuLbJ0yJIrrGiyKf6iZkvl9fKRc0QjMto319UHhzD7F5wUr3X
8iHWXyFbOQAAA8gqv28eKr9vHgAAAAdzc2gtcnNhAAABAQDTNGUXvKQQ2sbdXdILzeI7u6
0ziBDHqCbrYxUkdro0LA8SqimkQexHKd9SBVvrxNm3l1LsCRmeIgrxlhwuptsygK80rRX5
Jit2DCRP62tyMBIEIqLxAksMEW1z6M3XIdIj2jWkL6ei6Qver03JWt4TfxZG94axSPxPaH
Yf6Psb+lZnMfYrWXtVD9hJA6vQjKNqmpUo1I2dWq6e6F3Oepejfu9Cz1yMnEsNJG3COubJ
SXUkEdsJYSrW3wfUnMPBrlnjs8uP4NBTik+5SHmpb+pU3+2DjgC4tsnTIkiusaLIp/qJmS
+X18pFzRCMy2jfX1QeHMPsXnBSvdfyIdZfIVs5AAAAAwEAAQAAAQAUz+LuVd5s8sIJ6kba
du1GKZZFr7DHm+BJ7beVokVzAqxxkGcOEpjv4kZpVLHcJ8e0earoK3VkycH+UGZyimqrLV
cWf7/cj1BVD5k8btxloisEUU1xJmKyy7zXYSd3fZOxiL0kcrW4LfLHfMrTfqrHjQxq7dVN
/v0t7gNF3bVw6ipIqrO3Z+eDJYIhXZVtSPUmTke8XmAeYELX+IgmWuQTSxaQ8FlICEt86o
K4UNFQ9+i9K54X+lRRhIuqFAel1rXAGXpcMSsTWVTyRpVojunF/r9GzBOohYfgnQ0r/qf+
lxNgcUlqAxbWp+dR7BexfEn/Xi3M2peg5a1Op/jkPwupAAAAgG0XaH1ZeYlx88Pa5VMnq6
nZzTnSPS450JawMlFZH8TNQktfhPRd4+xeJB85uW1j57EudVZWOsV9NljwEx75FI81L7AG
3coPrAmE8OWkxUsxtg+gNMja19wmh5x7tDfBo+mv4XxMydRQ51EXn1BMo4EcAZf27GJLkN
yZH4bCBCjDAAAAgQD6rSj9fGzfHVz0eMJ7FHpA/FX5ZZ90ERBweMVCLCvTjkc9r2AFTT9J
Lp2g5vvF4pYO6T+pJEXW98AEteQPNj2MM8WZOmTa1x7FPY9m7VjRjSH4L2dALMF94NMoa/
4mO7glFtKquGT3TtwxqOmic/jtBhipfgZG906dtYeLOg2KSwAAAIEA17CkB+asl/lX0vie
ylkIseZm74mQutso+bhHGNLx/VEbtn2EV3hiLfslsd4yxnMPTFdZKUTw+sPksYO8/0/3H2
T18q8XTOm7rs9N5ahWHMmfx+shBpub2e8Z23tk60Hk5O1lzSBH5iktC9mE86BwpohZ1uvp
JffialjvTR5C/gsAAAAOYWpAYm93aWUubG9jYWwBAgMEBQ==
-----END OPENSSH PRIVATE KEY-----

View File

@ -0,0 +1,27 @@
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFwAAAAdzc2gtcn
NhAAAAAwEAAQAAAQEA0zRlF7ykENrG3V3SC83iO7utM4gQx6gm62MVJHa6NCwPEqoppEHs
RynfUgVb68TZt5dS7AkZniIK8ZYcLqbbMoCvNK0V+SYrdgwkT+trcjASBCKi8QJLDBFtc+
jN1yHSI9o1pC+noukL3q9NyVreE38WRveGsUj8T2h2H+j7G/pWZzH2K1l7VQ/YSQOr0Iyj
apqVKNSNnVqunuhdznqXo37vQs9cjJxLDSRtwjrmyUl1JBHbCWEq1t8H1JzDwa5Z47PLj+
DQU4pPuUh5qW/qVN/tg44AuLbJ0yJIrrGiyKf6iZkvl9fKRc0QjMto319UHhzD7F5wUr3X
8iHWXyFbOQAAA8hiY2pzYmNqcwAAAAdzc2gtcnNhAAABAQDTNGUXvKQQ2sbdXdILzeI7u6
0ziBDHqCbrYxUkdro0LA8SqimkQexHKd9SBVvrxNm3l1LsCRmeIgrxlhwuptsygK80rRX5
Jit2DCRP62tyMBIEIqLxAksMEW1z6M3XIdIj2jWkL6ei6Qver03JWt4TfxZG94axSPxPaH
Yf6Psb+lZnMfYrWXtVD9hJA6vQjKNqmpUo1I2dWq6e6F3Oepejfu9Cz1yMnEsNJG3COubJ
SXUkEdsJYSrW3wfUnMPBrlnjs8uP4NBTik+5SHmpb+pU3+2DjgC4tsnTIkiusaLIp/qJmS
+X18pFzRCMy2jfX1QeHMPsXnBSvdfyIdZfIVs5AAAAAwEAAQAAAQAUz+LuVd5s8sIJ6kba
du1GKZZFr7DHm+BJ7beVokVzAqxxkGcOEpjv4kZpVLHcJ8e0earoK3VkycH+UGZyimqrLV
cWf7/cj1BVD5k8btxloisEUU1xJmKyy7zXYSd3fZOxiL0kcrW4LfLHfMrTfqrHjQxq7dVN
/v0t7gNF3bVw6ipIqrO3Z+eDJYIhXZVtSPUmTke8XmAeYELX+IgmWuQTSxaQ8FlICEt86o
K4UNFQ9+i9K54X+lRRhIuqFAel1rXAGXpcMSsTWVTyRpVojunF/r9GzBOohYfgnQ0r/qf+
lxNgcUlqAxbWp+dR7BexfEn/Xi3M2peg5a1Op/jkPwupAAAAgG0XaH1ZeYlx88Pa5VMnq6
nZzTnSPS450JawMlFZH8TNQktfhPRd4+xeJB85uW1j57EudVZWOsV9NljwEx75FI81L7AG
3coPrAmE8OWkxUsxtg+gNMja19wmh5x7tDfBo+mv4XxMydRQ51EXn1BMo4EcAZf27GJLkN
yZH4bCBCjDAAAAgQD6rSj9fGzfHVz0eMJ7FHpA/FX5ZZ90ERBweMVCLCvTjkc9r2AFTT9J
Lp2g5vvF4pYO6T+pJEXW98AEteQPNj2MM8WZOmTa1x7FPY9m7VjRjSH4L2dALMF94NMoa/
4mO7glFtKquGT3TtwxqOmic/jtBhipfgZG906dtYeLOg2KSwAAAIEA17CkB+asl/lX0vie
ylkIseZm74mQutso+bhHGNLx/VEbtn2EV3hiLfslsd4yxnMPTFdZKUTw+sPksYO8/0/3H2
T18q8XTOm7rs9N5ahWHMmfx+shBpub2e8Z23tk60Hk5O1lzSBH5iktC9mE86BwpohZ1uvp
JffialjvTR5C/gsAAAAOYWpAYm93aWUubG9jYWwBAgMEBQ==
-----END OPENSSH PRIVATE KEY-----

View File

@ -6,6 +6,14 @@ Enc.base64ToHex = function (b64) {
return Buffer.from(b64, 'base64').toString('hex');
};
Enc.binToBuf = function (bin) {
return Buffer.from(bin, 'binary');
};
Enc.bufToBase64 = function (u8) {
return Buffer.from(u8).toString('base64');
};
Enc.binToHex = function (bin) {
return Buffer.from(bin, 'binary').toString('hex');
};
@ -13,3 +21,7 @@ Enc.binToHex = function (bin) {
Enc.hexToBase64 = function (hex) {
return Buffer.from(hex, 'hex').toString('base64');
};
Enc.hexToBin = function (hex) {
return Buffer.from(hex, 'hex').toString('binary');
};

11
lib/pem.js Normal file
View File

@ -0,0 +1,11 @@
'use strict';
var PEM = module.exports;
var Enc = require('./encoding.js');
PEM.packBlock = function (opts) {
return '-----BEGIN ' + opts.type + '-----\n'
+ Enc.bufToBase64(opts.bytes).match(/.{1,70}/g).join('\n') + '\n'
+ '-----END ' + opts.type + '-----'
;
};

View File

@ -1,34 +1,92 @@
'use strict';
var Enc = require('./encoding.js');
var PEM = require('./pem.js');
var SSH = module.exports;
SSH.pack = function (opts) {
if (opts.jwk.d && !opts.public) {
return SSH._packPrivate(opts);
} else {
delete opts.jwk.d;
return SSH._packPublic(opts);
}
};
// https://tools.ietf.org/html/rfc4253#section-6.6
SSH._packPublic = function (opts) {
var els = SSH._packKey(opts);
var hex = SSH._packElements(els);
var typ = Enc.hexToBin(els[0]);
var parts = [ typ, Enc.hexToBase64(hex) ];
if (opts.comment) { parts.push(opts.comment); }
return parts.join(' ');
};
SSH._packPrivate = function (opts) {
var pubjwk = JSON.parse(JSON.stringify(opts.jwk));
delete pubjwk.d;
var pubels = SSH._packKey({ jwk: pubjwk });
var pubhex = SSH._packElements(pubels);
var els = SSH._packKey(opts);
var hex = SSH._packElements(els);
var privlen = hex.length/2;
var padlen = (privlen % 8) && (8 - (privlen % 8)) || 0; // blocksize is 8 (no cipher)
var bin = "openssh-key-v1" + String.fromCharCode(0)
+ Enc.hexToBin(
SSH._packElements([
Enc.binToHex("none") // ciphername
, Enc.binToHex("none") // kdfname
, "" // empty kdf
])
+ SSH._numToUint32Hex(1) // number of keys (always 1)
+ SSH._numToUint32Hex(pubhex.length/2) // pubkey length
+ pubhex
+ SSH._numToUint32Hex(8 + privlen + padlen) // privkey length
+ '62636a7362636a73' // 64-bit dummy checksum ("bcjs", "bcjs")
+ hex // (only cihpered keys use real checksums)
);
var pad = '';
var i;
for (i = 1; i <= padlen; i += 1) {
pad += '0' + i;
}
return PEM.packBlock({
type: "OPENSSH PRIVATE KEY"
, bytes: Enc.binToBuf(bin + Enc.hexToBin(pad))
});
};
SSH._packKey = function (opts) {
var jwk = opts.jwk;
var els = [];
var ssh = {
type: ''
, _elements: els
, comment: opts.comment || ''
};
var len;
if ("RSA" === jwk.kty) {
ssh.type = 'ssh-rsa';
els.push(Enc.binToHex(ssh.type));
els.push(SSH._padRsa(Enc.base64ToHex(jwk.e)));
els.push(SSH._padRsa(Enc.base64ToHex(jwk.n)));
return SSH._packElements(ssh);
els.push(Enc.binToHex('ssh-rsa'));
if (jwk.d) {
// unswap n and e for private key format
els.push(SSH._padBigInt(Enc.base64ToHex(jwk.n)));
els.push(SSH._padBigInt(Enc.base64ToHex(jwk.e)));
els.push(SSH._padBigInt(Enc.base64ToHex(jwk.d)));
els.push(SSH._padBigInt(Enc.base64ToHex(jwk.qi)));
els.push(SSH._padBigInt(Enc.base64ToHex(jwk.p)));
els.push(SSH._padBigInt(Enc.base64ToHex(jwk.q)));
els.push(Enc.binToHex(opts.comment || ''));
} else {
// swap n and e for public key format
els.push(SSH._padBigInt(Enc.base64ToHex(jwk.e)));
els.push(SSH._padBigInt(Enc.base64ToHex(jwk.n)));
}
return els;
}
if ("P-256" === jwk.crv) {
ssh.type = 'ecdsa-sha2-nistp256';
els.push(Enc.binToHex(ssh.type));
els.push(Enc.binToHex('ecdsa-sha2-nistp256'));
els.push(Enc.binToHex('nistp256'));
len = 32;
} else if ("P-384" === jwk.crv) {
ssh.type = 'ecdsa-sha2-nistp384';
els.push(Enc.binToHex(ssh.type));
els.push(Enc.binToHex('ecdsa-sha2-nistp384'));
els.push(Enc.binToHex('nistp384'));
len = 48;
} else {
@ -36,17 +94,26 @@ SSH.pack = function (opts) {
}
els.push('04'
+ SSH._padEc(Enc.base64ToHex(jwk.x), len)
+ SSH._padEc(Enc.base64ToHex(jwk.y), len)
+ SSH._padBytes(Enc.base64ToHex(jwk.x), len)
+ SSH._padBytes(Enc.base64ToHex(jwk.y), len)
);
return SSH._packElements(ssh);
if (jwk.d) {
// I was able to empirically confirm that the leading 00 is expected for
// ambiguous BigInt negatives (0x80 set), and that the length can dip down
// to 31 bytes when the leading byte is 0x00. I suspect that if I had tried
// 65k iterations that I'd have seen at least one 30 byte number
els.push(SSH._padBigInt(Enc.base64ToHex(jwk.d)));
//console.warn('els:', els[els.length - 1]);
els.push(Enc.binToHex(opts.comment || ''));
}
return els;
};
SSH._packElements = function (ssh) {
var hex = ssh._elements.map(function (hex) {
SSH._packElements = function(els) {
return els.map(function (hex) {
return SSH._numToUint32Hex(hex.length/2) + hex;
}).join('');
return [ ssh.type, Enc.hexToBase64(hex), ssh.comment ].join(' ');
};
SSH._numToUint32Hex = function (num) {
@ -57,18 +124,20 @@ SSH._numToUint32Hex = function (num) {
return hex;
};
SSH._padRsa = function (hex) {
SSH._padBigInt = function (hex) {
// BigInt is negative if the high order bit 0x80 is set,
// so ASN1, SSH, and many other formats pad with '0x00'
// to signifiy a positive number.
var i = parseInt(hex.slice(0, 2), 16);
//console.warn('l', hex.length/2, 'i', i);
if (0x80 & i) {
//console.warn('0x80 true');
return '00' + hex;
}
return hex;
};
SSH._padEc = function (hex, len) {
SSH._padBytes = function (hex, len) {
while (hex.length < len * 2) {
hex = '00' + hex;
}

22
test.sh Executable file
View File

@ -0,0 +1,22 @@
#!/bin/bash
set -e
# creates a new key
#ssh-keygen -t rsa -b 2048 -C root@localhost -N '' -f fixtures/privkey-rsa-2048.openssh.pem.3
# changes embedded comment and creates new random dummy checksum
#ssh-keygen -c -C root@localhost -f privkey-ec-p256.openssh.pem
ssh-keygen -c -C root@localhost -f fixtures/privkey-ec-p256.openssh.pem
ssh-keygen -c -C root@localhost -f fixtures/privkey-ec-p256.openssh.pem.2
#ssh-keygen -c -C root@localhost -f fixtures/privkey-rsa-2048.openssh.pem
#ssh-keygen -c -C root@localhost -f fixtures/privkey-rsa-2048.openssh.pem.2
# convert to public key
#ssh-keygen -y -f privkey-ec-p256.openssh.pem
ssh-keygen -y -f fixtures/privkey-ec-p256.openssh.pem
ssh-keygen -y -f fixtures/privkey-ec-p256.openssh.pem.2
#ssh-keygen -y -f fixtures/privkey-rsa-2048.openssh.pem
#ssh-keygen -y -f fixtures/privkey-rsa-2048.openssh.pem.2
#ssh-keygen -y -f fixtures/privkey-ec-p256.openssh.pem
#ssh-keygen -e -m PKCS8 -f fixtures/privkey-ec-p256.openssh.pem
#ssh-keygen -e -m RFC4716 -f fixtures/privkey-ec-p256.openssh.pem