File tree 2 files changed +39
-0
lines changed
2 files changed +39
-0
lines changed Original file line number Diff line number Diff line change @@ -25,10 +25,16 @@ function DES (opts) {
25
25
type = 'encrypt'
26
26
}
27
27
var key = opts . key
28
+ if ( ! Buffer . isBuffer ( key ) ) {
29
+ key = Buffer . from ( key )
30
+ }
28
31
if ( modeName === 'des-ede' || modeName === 'des-ede-cbc' ) {
29
32
key = Buffer . concat ( [ key , key . slice ( 0 , 8 ) ] )
30
33
}
31
34
var iv = opts . iv
35
+ if ( ! Buffer . isBuffer ( iv ) ) {
36
+ iv = Buffer . from ( iv )
37
+ }
32
38
this . _des = mode . create ( {
33
39
key : key ,
34
40
iv : iv ,
Original file line number Diff line number Diff line change @@ -43,6 +43,39 @@ Object.keys(modes).forEach(function (mode) {
43
43
var plainText = Buffer . concat ( [ ourDecrypt . update ( ourCipherText ) , ourDecrypt . final ( ) ] )
44
44
t . equals ( text . toString ( 'hex' ) , plainText . toString ( 'hex' ) )
45
45
} )
46
+ t . test ( 'run text: ' + i , function ( t ) {
47
+ t . plan ( 2 )
48
+ var key = crypto . randomBytes ( 32 ) . toString ( 'base64' ) . slice ( 0 , modes [ mode ] . key )
49
+ var iv = crypto . randomBytes ( 32 ) . toString ( 'base64' ) . slice ( 0 , modes [ mode ] . iv )
50
+ var text = crypto . randomBytes ( 200 )
51
+ var ourEncrypt
52
+ try {
53
+ ourEncrypt = new DES ( {
54
+ mode : mode ,
55
+ key : key ,
56
+ iv : iv
57
+ } )
58
+ } catch ( e ) {
59
+ t . notOk ( e , e . stack )
60
+ }
61
+ var nodeEncrypt
62
+ try {
63
+ nodeEncrypt = crypto . createCipheriv ( mode , key , iv )
64
+ } catch ( e ) {
65
+ t . notOk ( e , e . stack )
66
+ }
67
+ var ourCipherText = Buffer . concat ( [ ourEncrypt . update ( text ) , ourEncrypt . final ( ) ] )
68
+ var nodeCipherText = Buffer . concat ( [ nodeEncrypt . update ( text ) , nodeEncrypt . final ( ) ] )
69
+ t . equals ( nodeCipherText . toString ( 'hex' ) , ourCipherText . toString ( 'hex' ) )
70
+ var ourDecrypt = new DES ( {
71
+ mode : mode ,
72
+ key : key ,
73
+ iv : iv ,
74
+ decrypt : true
75
+ } )
76
+ var plainText = Buffer . concat ( [ ourDecrypt . update ( ourCipherText ) , ourDecrypt . final ( ) ] )
77
+ t . equals ( text . toString ( 'hex' ) , plainText . toString ( 'hex' ) )
78
+ } )
46
79
}
47
80
} )
48
81
} )
You can’t perform that action at this time.
0 commit comments