1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 | 'use strict'
|
10 |
|
11 | import { Aes } from './aes'
|
12 | import { Cbc } from './cbc'
|
13 | import { Random } from './random'
|
14 |
|
15 | class Aescbc { }
|
16 |
|
17 | Aescbc.encrypt = function (messageBuf, cipherKeyBuf, ivBuf, concatIvBuf = true) {
|
18 | ivBuf = ivBuf || Random.getRandomBuffer(128 / 8)
|
19 | const ctBuf = Cbc.encrypt(messageBuf, ivBuf, Aes, cipherKeyBuf)
|
20 | if (concatIvBuf) {
|
21 | return Buffer.concat([ivBuf, ctBuf])
|
22 | } else {
|
23 | return ctBuf
|
24 | }
|
25 | }
|
26 |
|
27 | Aescbc.decrypt = function (encBuf, cipherKeyBuf, ivBuf = false) {
|
28 | if (!ivBuf) {
|
29 | const ivBuf = encBuf.slice(0, 128 / 8)
|
30 | const ctBuf = encBuf.slice(128 / 8)
|
31 | return Cbc.decrypt(ctBuf, ivBuf, Aes, cipherKeyBuf)
|
32 | } else {
|
33 | const ctBuf = encBuf
|
34 | return Cbc.decrypt(ctBuf, ivBuf, Aes, cipherKeyBuf)
|
35 | }
|
36 | }
|
37 |
|
38 | export { Aescbc }
|