1
1
var _ = require ( 'lodash' ) ;
2
+
3
+ function formatParse ( format ) {
4
+ format = format . split ( '-' ) ;
5
+ var keyType = 'private' ;
6
+ var keyOpt = { type : 'default' } ;
7
+
8
+ for ( var i = 1 ; i < format . length ; i ++ ) {
9
+ if ( format [ i ] ) {
10
+ switch ( format [ i ] ) {
11
+ case 'public' :
12
+ keyType = format [ i ] ;
13
+ break ;
14
+ case 'private' :
15
+ keyType = format [ i ] ;
16
+ break ;
17
+ case 'pem' :
18
+ keyOpt . type = format [ i ] ;
19
+ break ;
20
+ case 'der' :
21
+ keyOpt . type = format [ i ] ;
22
+ break ;
23
+ }
24
+ }
25
+ }
26
+
27
+ return { scheme : format [ 0 ] , keyType : keyType , keyOpt : keyOpt } ;
28
+ }
29
+
2
30
module . exports = {
3
31
pkcs1 : require ( './pkcs1' ) ,
4
32
pkcs8 : require ( './pkcs8' ) ,
@@ -21,40 +49,18 @@ module.exports = {
21
49
22
50
detectAndImport : function ( key , data , format ) {
23
51
if ( format === undefined ) {
24
- for ( var format in module . exports ) {
25
- if ( typeof module . exports [ format ] . autoImport === 'function' && module . exports [ format ] . autoImport ( key , data ) ) {
52
+ for ( var scheme in module . exports ) {
53
+ if ( typeof module . exports [ scheme ] . autoImport === 'function' && module . exports [ scheme ] . autoImport ( key , data ) ) {
26
54
return true ;
27
55
}
28
56
}
29
57
} else if ( format ) {
30
- var fmt = format . split ( '-' ) ;
31
- var keyType = 'private' ;
32
- var keyOpt = { type : 'default' } ;
33
-
34
- for ( var i = 1 ; i < fmt . length ; i ++ ) {
35
- if ( fmt [ i ] ) {
36
- switch ( fmt [ i ] ) {
37
- case 'public' :
38
- keyType = fmt [ i ] ;
39
- break ;
40
- case 'private' :
41
- keyType = fmt [ i ] ;
42
- break ;
43
- case 'pem' :
44
- keyOpt . type = fmt [ i ] ;
45
- break ;
46
- case 'der' :
47
- keyOpt . type = fmt [ i ] ;
48
- break ;
49
- }
50
- }
51
- }
52
-
53
- if ( module . exports [ fmt [ 0 ] ] ) {
54
- if ( keyType === 'private' ) {
55
- module . exports [ fmt [ 0 ] ] . privateImport ( key , data , keyOpt ) ;
58
+ var fmt = formatParse ( format ) ;
59
+ if ( module . exports [ fmt . scheme ] ) {
60
+ if ( fmt . keyType === 'private' ) {
61
+ module . exports [ fmt . scheme ] . privateImport ( key , data , fmt . keyOpt ) ;
56
62
} else {
57
- module . exports [ fmt [ 0 ] ] . publicImport ( key , data , keyOpt ) ;
63
+ module . exports [ fmt . scheme ] . publicImport ( key , data , fmt . keyOpt ) ;
58
64
}
59
65
} else {
60
66
throw Error ( 'Unsupported key format' ) ;
@@ -66,40 +72,19 @@ module.exports = {
66
72
67
73
detectAndExport : function ( key , format ) {
68
74
if ( format ) {
69
- var fmt = format . split ( '-' ) ;
70
- var keyType = 'private' ;
71
- var keyOpt = { type : 'default' } ;
72
-
73
- for ( var i = 1 ; i < fmt . length ; i ++ ) {
74
- if ( fmt [ i ] ) {
75
- switch ( fmt [ i ] ) {
76
- case 'public' :
77
- keyType = fmt [ i ] ;
78
- break ;
79
- case 'private' :
80
- keyType = fmt [ i ] ;
81
- break ;
82
- case 'pem' :
83
- keyOpt . type = fmt [ i ] ;
84
- break ;
85
- case 'der' :
86
- keyOpt . type = fmt [ i ] ;
87
- break ;
88
- }
89
- }
90
- }
75
+ var fmt = formatParse ( format ) ;
91
76
92
- if ( module . exports [ fmt [ 0 ] ] ) {
93
- if ( keyType === 'private' ) {
77
+ if ( module . exports [ fmt . scheme ] ) {
78
+ if ( fmt . keyType === 'private' ) {
94
79
if ( ! key . isPrivate ( ) ) {
95
80
throw Error ( "It is not private key" ) ;
96
81
}
97
- return module . exports [ fmt [ 0 ] ] . privateExport ( key , keyOpt ) ;
82
+ return module . exports [ fmt . scheme ] . privateExport ( key , fmt . keyOpt ) ;
98
83
} else {
99
84
if ( ! key . isPublic ( ) ) {
100
85
throw Error ( "It is not public key" ) ;
101
86
}
102
- return module . exports [ fmt [ 0 ] ] . publicExport ( key , keyOpt ) ;
87
+ return module . exports [ fmt . scheme ] . publicExport ( key , fmt . keyOpt ) ;
103
88
}
104
89
} else {
105
90
throw Error ( 'Unsupported key format' ) ;
0 commit comments