2022-02-14 10:54:25 +07:00
|
|
|
import * as crypto from "crypto"
|
|
|
|
|
2022-02-14 12:30:32 +07:00
|
|
|
import { DEFAULT_BUFFER_TYPE, DEFAULT_ENCODING_TYPE } from "../../config"
|
|
|
|
import { stringToBuffer } from "../../util"
|
2022-02-14 10:54:25 +07:00
|
|
|
|
2022-02-14 12:30:32 +07:00
|
|
|
const encrypt = (data: string | Buffer, privateOrPublicKey: string): string => {
|
2022-02-14 10:54:25 +07:00
|
|
|
const buffer = stringToBuffer(data)
|
2022-02-14 12:30:32 +07:00
|
|
|
const encrypted = crypto.publicEncrypt(privateOrPublicKey, buffer)
|
2022-02-14 10:54:25 +07:00
|
|
|
return encrypted.toString(DEFAULT_BUFFER_TYPE)
|
|
|
|
}
|
|
|
|
|
|
|
|
const decrypt = (
|
|
|
|
data: string | Buffer,
|
2022-02-14 12:30:32 +07:00
|
|
|
privateKey: string,
|
2022-02-14 10:54:25 +07:00
|
|
|
passphrase?: string | null
|
|
|
|
): string => {
|
|
|
|
const buffer = stringToBuffer(data)
|
|
|
|
const decrypted = crypto.privateDecrypt(
|
|
|
|
{
|
2022-02-14 12:30:32 +07:00
|
|
|
key: privateKey,
|
2022-02-14 10:54:25 +07:00
|
|
|
passphrase: passphrase || "",
|
|
|
|
},
|
|
|
|
buffer
|
|
|
|
)
|
|
|
|
return decrypted.toString(DEFAULT_ENCODING_TYPE)
|
|
|
|
}
|
|
|
|
|
|
|
|
export { encrypt, decrypt }
|