1
+ // from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js
2
+ // Fedor, you are amazing.
3
+
4
+ var asn1 = require ( 'asn1.js' ) ;
5
+ var rfc3280 = require ( 'asn1.js-rfc3280' ) ;
6
+
7
+ var RSAPrivateKey = asn1 . define ( 'RSAPrivateKey' , function ( ) {
8
+ this . seq ( ) . obj (
9
+ this . key ( 'version' ) . int ( ) ,
10
+ this . key ( 'modulus' ) . int ( ) ,
11
+ this . key ( 'publicExponent' ) . int ( ) ,
12
+ this . key ( 'privateExponent' ) . int ( ) ,
13
+ this . key ( 'prime1' ) . int ( ) ,
14
+ this . key ( 'prime2' ) . int ( ) ,
15
+ this . key ( 'exponent1' ) . int ( ) ,
16
+ this . key ( 'exponent2' ) . int ( ) ,
17
+ this . key ( 'coefficient' ) . int ( )
18
+ ) ;
19
+ } ) ;
20
+ exports . RSAPrivateKey = RSAPrivateKey ;
21
+
22
+ var RSAPublicKey = asn1 . define ( 'RSAPublicKey' , function ( ) {
23
+ this . seq ( ) . obj (
24
+ this . key ( 'modulus' ) . int ( ) ,
25
+ this . key ( 'publicExponent' ) . int ( )
26
+ ) ;
27
+ } ) ;
28
+ exports . RSAPublicKey = RSAPublicKey ;
29
+
30
+ var PublicKey = rfc3280 . SubjectPublicKeyInfo ;
31
+ exports . PublicKey = PublicKey ;
32
+ var ECPublicKey = asn1 . define ( 'ECPublicKey' , function ( ) {
33
+ this . seq ( ) . obj (
34
+ this . key ( 'algorithm' ) . seq ( ) . obj (
35
+ this . key ( 'id' ) . objid ( ) ,
36
+ this . key ( 'curve' ) . objid ( )
37
+ ) ,
38
+ this . key ( 'subjectPrivateKey' ) . bitstr ( )
39
+ ) ;
40
+ } ) ;
41
+ exports . ECPublicKey = ECPublicKey ;
42
+ var ECPrivateWrap = asn1 . define ( 'ECPrivateWrap' , function ( ) {
43
+ this . seq ( ) . obj (
44
+ this . key ( 'version' ) . int ( ) ,
45
+ this . key ( 'algorithm' ) . seq ( ) . obj (
46
+ this . key ( 'id' ) . objid ( ) ,
47
+ this . key ( 'curve' ) . objid ( )
48
+ ) ,
49
+ this . key ( 'subjectPrivateKey' ) . octstr ( )
50
+ ) ;
51
+ } ) ;
52
+ exports . ECPrivateWrap = ECPrivateWrap ;
53
+ var PrivateKeyInfo = asn1 . define ( 'PrivateKeyInfo' , function ( ) {
54
+ this . seq ( ) . obj (
55
+ this . key ( 'version' ) . int ( ) ,
56
+ this . key ( 'algorithm' ) . use ( rfc3280 . AlgorithmIdentifier ) ,
57
+ this . key ( 'subjectPrivateKey' ) . octstr ( )
58
+ ) ;
59
+ } ) ;
60
+ exports . PrivateKey = PrivateKeyInfo ;
61
+ var EncryptedPrivateKeyInfo = asn1 . define ( 'EncryptedPrivateKeyInfo' , function ( ) {
62
+ this . seq ( ) . obj (
63
+ this . key ( 'algorithm' ) . seq ( ) . obj (
64
+ this . key ( 'id' ) . objid ( ) ,
65
+ this . key ( 'decrypt' ) . seq ( ) . obj (
66
+ this . key ( 'kde' ) . seq ( ) . obj (
67
+ this . key ( 'id' ) . objid ( ) ,
68
+ this . key ( 'kdeparams' ) . seq ( ) . obj (
69
+ this . key ( 'salt' ) . octstr ( ) ,
70
+ this . key ( 'iters' ) . int ( )
71
+ )
72
+ ) ,
73
+ this . key ( 'cipher' ) . seq ( ) . obj (
74
+ this . key ( 'algo' ) . objid ( ) ,
75
+ this . key ( 'iv' ) . octstr ( )
76
+ )
77
+ )
78
+ ) ,
79
+ this . key ( 'subjectPrivateKey' ) . octstr ( )
80
+ ) ;
81
+ } ) ;
82
+ exports . EncryptedPrivateKey = EncryptedPrivateKeyInfo ;
83
+
84
+
85
+
86
+ var ECPrivateKey = asn1 . define ( 'ECPrivateKey' , function ( ) {
87
+ this . seq ( ) . obj (
88
+ this . key ( 'version' ) . int ( ) ,
89
+ this . key ( 'privateKey' ) . octstr ( ) ,
90
+ this . key ( 'parameters' ) . optional ( ) . explicit ( 0 ) . use ( ECParameters ) ,
91
+ this . key ( 'publicKey' ) . optional ( ) . explicit ( 1 ) . bitstr ( )
92
+ ) ;
93
+ } ) ;
94
+ exports . ECPrivateKey = ECPrivateKey ;
95
+ var ECParameters = asn1 . define ( 'ECParameters' , function ( ) {
96
+ this . choice ( {
97
+ namedCurve : this . objid ( )
98
+ } ) ;
99
+ } ) ;
100
+
101
+ var ECPrivateKey2 = asn1 . define ( 'ECPrivateKey2' , function ( ) {
102
+ this . seq ( ) . obj (
103
+ this . key ( 'version' ) . int ( ) ,
104
+ this . key ( 'privateKey' ) . octstr ( ) ,
105
+ this . key ( 'publicKey' ) . seq ( ) . obj (
106
+ this . key ( 'key' ) . bitstr ( )
107
+ )
108
+ ) ;
109
+ } ) ;
110
+ exports . ECPrivateKey2 = ECPrivateKey2 ;
0 commit comments