1
- var _ = require ( ' ../utils' ) . _ ;
2
- var utils = require ( ' ../utils' ) ;
3
- var BigInteger = require ( ' ../libs/jsbn' ) ;
1
+ var _ = require ( " ../utils" ) . _ ;
2
+ var utils = require ( " ../utils" ) ;
3
+ var BigInteger = require ( " ../libs/jsbn" ) ;
4
4
5
- const PRIVATE_OPENING_BOUNDARY = ' -----BEGIN OPENSSH PRIVATE KEY-----' ;
6
- const PRIVATE_CLOSING_BOUNDARY = ' -----END OPENSSH PRIVATE KEY-----' ;
5
+ const PRIVATE_OPENING_BOUNDARY = " -----BEGIN OPENSSH PRIVATE KEY-----" ;
6
+ const PRIVATE_CLOSING_BOUNDARY = " -----END OPENSSH PRIVATE KEY-----" ;
7
7
8
8
module . exports = {
9
9
privateExport : function ( key , options ) {
@@ -12,14 +12,14 @@ module.exports = {
12
12
let ebuf = Buffer . alloc ( 4 )
13
13
ebuf . writeUInt32BE ( key . e , 0 ) ;
14
14
//Slice leading zeroes
15
- while ( ebuf [ 0 ] === 0 ) ebuf = ebuf . slice ( 1 ) ;
15
+ while ( ebuf [ 0 ] === 0 ) ebuf = ebuf . slice ( 1 ) ;
16
16
17
17
const dbuf = key . d . toBuffer ( ) ;
18
18
const coeffbuf = key . coeff . toBuffer ( ) ;
19
19
const pbuf = key . p . toBuffer ( ) ;
20
20
const qbuf = key . q . toBuffer ( ) ;
21
21
let commentbuf ;
22
- if ( typeof key . sshcomment !== ' undefined' ) {
22
+ if ( typeof key . sshcomment !== " undefined" ) {
23
23
commentbuf = Buffer . from ( key . sshcomment ) ;
24
24
} else {
25
25
commentbuf = Buffer . from ( [ ] ) ;
@@ -51,23 +51,23 @@ module.exports = {
51
51
4 + //32bit private+checksum+comment+padding length
52
52
privateKeyLength ;
53
53
54
- const paddingLength = Math . ceil ( privateKeyLength / 8 ) * 8 - privateKeyLength ;
54
+ const paddingLength = Math . ceil ( privateKeyLength / 8 ) * 8 - privateKeyLength ;
55
55
length += paddingLength ;
56
56
57
57
const buf = Buffer . alloc ( length ) ;
58
- const writer = { buf :buf , off : 0 } ;
59
- buf . write ( ' openssh-key-v1' , ' utf8' ) ;
58
+ const writer = { buf : buf , off : 0 } ;
59
+ buf . write ( " openssh-key-v1" , " utf8" ) ;
60
60
buf . writeUInt8 ( 0 , 14 ) ;
61
61
writer . off += 15 ;
62
62
63
- writeOpenSSHKeyString ( writer , Buffer . from ( ' none' ) ) ;
64
- writeOpenSSHKeyString ( writer , Buffer . from ( ' none' ) ) ;
65
- writeOpenSSHKeyString ( writer , Buffer . from ( '' ) ) ;
63
+ writeOpenSSHKeyString ( writer , Buffer . from ( " none" ) ) ;
64
+ writeOpenSSHKeyString ( writer , Buffer . from ( " none" ) ) ;
65
+ writeOpenSSHKeyString ( writer , Buffer . from ( "" ) ) ;
66
66
67
67
writer . off = writer . buf . writeUInt32BE ( 1 , writer . off ) ;
68
68
writer . off = writer . buf . writeUInt32BE ( pubkeyLength , writer . off ) ;
69
69
70
- writeOpenSSHKeyString ( writer , Buffer . from ( ' ssh-rsa' ) ) ;
70
+ writeOpenSSHKeyString ( writer , Buffer . from ( " ssh-rsa" ) ) ;
71
71
writeOpenSSHKeyString ( writer , ebuf ) ;
72
72
writeOpenSSHKeyString ( writer , nbuf ) ;
73
73
@@ -77,7 +77,7 @@ module.exports = {
77
77
) ;
78
78
writer . off += 8 ;
79
79
80
- writeOpenSSHKeyString ( writer , Buffer . from ( ' ssh-rsa' ) ) ;
80
+ writeOpenSSHKeyString ( writer , Buffer . from ( " ssh-rsa" ) ) ;
81
81
writeOpenSSHKeyString ( writer , nbuf ) ;
82
82
writeOpenSSHKeyString ( writer , ebuf ) ;
83
83
writeOpenSSHKeyString ( writer , dbuf ) ;
@@ -87,70 +87,70 @@ module.exports = {
87
87
writeOpenSSHKeyString ( writer , commentbuf ) ;
88
88
89
89
let pad = 0x01 ;
90
- while ( writer . off < length ) {
90
+ while ( writer . off < length ) {
91
91
writer . off = writer . buf . writeUInt8 ( pad ++ , writer . off ) ;
92
92
}
93
93
94
- if ( options . type === ' der' ) {
94
+ if ( options . type === " der" ) {
95
95
return writer . buf
96
96
} else {
97
- return PRIVATE_OPENING_BOUNDARY + '\n' + utils . linebrk ( buf . toString ( ' base64' ) , 70 ) + '\n' + PRIVATE_CLOSING_BOUNDARY + '\n' ;
97
+ return PRIVATE_OPENING_BOUNDARY + "\n" + utils . linebrk ( buf . toString ( " base64" ) , 70 ) + "\n" + PRIVATE_CLOSING_BOUNDARY + "\n" ;
98
98
}
99
99
} ,
100
100
101
101
privateImport : function ( key , data , options ) {
102
102
options = options || { } ;
103
103
var buffer ;
104
104
105
- if ( options . type !== ' der' ) {
105
+ if ( options . type !== " der" ) {
106
106
if ( Buffer . isBuffer ( data ) ) {
107
- data = data . toString ( ' utf8' ) ;
107
+ data = data . toString ( " utf8" ) ;
108
108
}
109
109
110
110
if ( _ . isString ( data ) ) {
111
111
var pem = utils . trimSurroundingText ( data , PRIVATE_OPENING_BOUNDARY , PRIVATE_CLOSING_BOUNDARY )
112
- . replace ( / \s + | \n \r | \n | \r $ / gm, '' ) ;
113
- buffer = Buffer . from ( pem , ' base64' ) ;
112
+ . replace ( / \s + | \n \r | \n | \r $ / gm, "" ) ;
113
+ buffer = Buffer . from ( pem , " base64" ) ;
114
114
} else {
115
- throw Error ( ' Unsupported key format' ) ;
115
+ throw Error ( " Unsupported key format" ) ;
116
116
}
117
117
} else if ( Buffer . isBuffer ( data ) ) {
118
118
buffer = data ;
119
119
} else {
120
- throw Error ( ' Unsupported key format' ) ;
120
+ throw Error ( " Unsupported key format" ) ;
121
121
}
122
122
123
- const reader = { buf :buffer , off :0 } ;
123
+ const reader = { buf : buffer , off : 0 } ;
124
124
125
- if ( buffer . slice ( 0 , 14 ) . toString ( ' ascii' ) !== ' openssh-key-v1' )
126
- throw ' Invalid file format.' ;
125
+ if ( buffer . slice ( 0 , 14 ) . toString ( " ascii" ) !== " openssh-key-v1" )
126
+ throw " Invalid file format." ;
127
127
128
128
reader . off += 15 ;
129
129
130
130
//ciphername
131
- if ( readOpenSSHKeyString ( reader ) . toString ( ' ascii' ) !== ' none' )
132
- throw Error ( ' Unsupported key type' ) ;
131
+ if ( readOpenSSHKeyString ( reader ) . toString ( " ascii" ) !== " none" )
132
+ throw Error ( " Unsupported key type" ) ;
133
133
//kdfname
134
- if ( readOpenSSHKeyString ( reader ) . toString ( ' ascii' ) !== ' none' )
135
- throw Error ( ' Unsupported key type' ) ;
134
+ if ( readOpenSSHKeyString ( reader ) . toString ( " ascii" ) !== " none" )
135
+ throw Error ( " Unsupported key type" ) ;
136
136
//kdf
137
- if ( readOpenSSHKeyString ( reader ) . toString ( ' ascii' ) !== '' )
138
- throw Error ( ' Unsupported key type' ) ;
137
+ if ( readOpenSSHKeyString ( reader ) . toString ( " ascii" ) !== "" )
138
+ throw Error ( " Unsupported key type" ) ;
139
139
//keynum
140
140
reader . off += 4 ;
141
141
142
142
//sshpublength
143
143
reader . off += 4 ;
144
144
145
145
//keytype
146
- if ( readOpenSSHKeyString ( reader ) . toString ( ' ascii' ) !== ' ssh-rsa' )
147
- throw Error ( ' Unsupported key type' ) ;
146
+ if ( readOpenSSHKeyString ( reader ) . toString ( " ascii" ) !== " ssh-rsa" )
147
+ throw Error ( " Unsupported key type" ) ;
148
148
readOpenSSHKeyString ( reader ) ;
149
149
readOpenSSHKeyString ( reader ) ;
150
150
151
151
reader . off += 12 ;
152
- if ( readOpenSSHKeyString ( reader ) . toString ( ' ascii' ) !== ' ssh-rsa' )
153
- throw Error ( ' Unsupported key type' ) ;
152
+ if ( readOpenSSHKeyString ( reader ) . toString ( " ascii" ) !== " ssh-rsa" )
153
+ throw Error ( " Unsupported key type" ) ;
154
154
155
155
const n = readOpenSSHKeyString ( reader ) ;
156
156
const e = readOpenSSHKeyString ( reader ) ;
@@ -177,75 +177,75 @@ module.exports = {
177
177
coeff // coefficient -- (inverse of q) mod p
178
178
) ;
179
179
180
- key . sshcomment = readOpenSSHKeyString ( reader ) . toString ( ' ascii' ) ;
180
+ key . sshcomment = readOpenSSHKeyString ( reader ) . toString ( " ascii" ) ;
181
181
} ,
182
182
183
183
publicExport : function ( key , options ) {
184
184
let ebuf = Buffer . alloc ( 4 )
185
185
ebuf . writeUInt32BE ( key . e , 0 ) ;
186
186
//Slice leading zeroes
187
- while ( ebuf [ 0 ] === 0 ) ebuf = ebuf . slice ( 1 ) ;
187
+ while ( ebuf [ 0 ] === 0 ) ebuf = ebuf . slice ( 1 ) ;
188
188
const nbuf = key . n . toBuffer ( ) ;
189
189
const buf = Buffer . alloc (
190
190
ebuf . byteLength + 4 +
191
191
nbuf . byteLength + 4 +
192
- ' ssh-rsa' . length + 4
192
+ " ssh-rsa" . length + 4
193
193
) ;
194
194
195
195
const writer = { buf : buf , off : 0 } ;
196
- writeOpenSSHKeyString ( writer , Buffer . from ( ' ssh-rsa' ) ) ;
196
+ writeOpenSSHKeyString ( writer , Buffer . from ( " ssh-rsa" ) ) ;
197
197
writeOpenSSHKeyString ( writer , ebuf ) ;
198
198
writeOpenSSHKeyString ( writer , nbuf ) ;
199
199
200
- let comment = key . sshcomment || '' ;
200
+ let comment = key . sshcomment || "" ;
201
201
202
- if ( options . type === ' der' ) {
202
+ if ( options . type === " der" ) {
203
203
return writer . buf
204
204
} else {
205
- return ' ssh-rsa ' + buf . toString ( ' base64' ) + ' ' + comment + '\n' ;
205
+ return " ssh-rsa " + buf . toString ( " base64" ) + " " + comment + "\n" ;
206
206
}
207
207
} ,
208
208
209
209
publicImport : function ( key , data , options ) {
210
210
options = options || { } ;
211
211
var buffer ;
212
212
213
- if ( options . type !== ' der' ) {
213
+ if ( options . type !== " der" ) {
214
214
if ( Buffer . isBuffer ( data ) ) {
215
- data = data . toString ( ' utf8' ) ;
215
+ data = data . toString ( " utf8" ) ;
216
216
}
217
217
218
218
if ( _ . isString ( data ) ) {
219
- if ( data . substring ( 0 , 8 ) !== ' ssh-rsa ' )
220
- throw Error ( ' Unsupported key format' ) ;
221
- let pemEnd = data . indexOf ( ' ' , 8 ) ;
219
+ if ( data . substring ( 0 , 8 ) !== " ssh-rsa " )
220
+ throw Error ( " Unsupported key format" ) ;
221
+ let pemEnd = data . indexOf ( " " , 8 ) ;
222
222
223
223
//Handle keys with no comment
224
- if ( pemEnd === - 1 ) {
224
+ if ( pemEnd === - 1 ) {
225
225
pemEnd = data . length ;
226
226
} else {
227
227
key . sshcomment = data . substring ( pemEnd + 1 )
228
- . replace ( / \s + | \n \r | \n | \r $ / gm, '' ) ;
228
+ . replace ( / \s + | \n \r | \n | \r $ / gm, "" ) ;
229
229
}
230
230
231
231
const pem = data . substring ( 8 , pemEnd )
232
- . replace ( / \s + | \n \r | \n | \r $ / gm, '' ) ;
233
- buffer = Buffer . from ( pem , ' base64' ) ;
232
+ . replace ( / \s + | \n \r | \n | \r $ / gm, "" ) ;
233
+ buffer = Buffer . from ( pem , " base64" ) ;
234
234
} else {
235
- throw Error ( ' Unsupported key format' ) ;
235
+ throw Error ( " Unsupported key format" ) ;
236
236
}
237
237
} else if ( Buffer . isBuffer ( data ) ) {
238
238
buffer = data ;
239
239
} else {
240
- throw Error ( ' Unsupported key format' ) ;
240
+ throw Error ( " Unsupported key format" ) ;
241
241
}
242
242
243
- const reader = { buf :buffer , off :0 } ;
243
+ const reader = { buf : buffer , off : 0 } ;
244
244
245
- const type = readOpenSSHKeyString ( reader ) . toString ( ' ascii' ) ;
245
+ const type = readOpenSSHKeyString ( reader ) . toString ( " ascii" ) ;
246
246
247
- if ( type !== ' ssh-rsa' )
248
- throw Error ( ' Invalid key type: ' + type ) ;
247
+ if ( type !== " ssh-rsa" )
248
+ throw Error ( " Invalid key type: " + type ) ;
249
249
250
250
const e = readOpenSSHKeyString ( reader ) ;
251
251
const n = readOpenSSHKeyString ( reader ) ;
0 commit comments