Task: Completed for cryptojs and tests functions and validate keys

This commit is contained in:
2022-02-14 12:30:32 +07:00
parent 9d2a43feb9
commit fd27e6f9dc
23 changed files with 324 additions and 24 deletions

View File

@@ -0,0 +1,49 @@
import * as crypto from "crypto"
import {
DEFAULT_AES_ALGORITHM,
DEFAULT_BUFFER_TYPE,
DEFAULT_ENCODING_TYPE,
} from "../../config"
import { bufferToString, stringToBuffer } from "../../util"
const encrypt = (
data: string | Buffer,
key: string | Buffer,
iv?: string | Buffer | null
): string => {
const cipher = crypto.createCipheriv(
DEFAULT_AES_ALGORITHM,
stringToBuffer(key),
stringToBuffer(iv || key)
)
const _data = bufferToString(data)
let encrypted = cipher.update(
_data,
DEFAULT_ENCODING_TYPE,
DEFAULT_BUFFER_TYPE
)
encrypted += cipher.final(DEFAULT_BUFFER_TYPE)
return encrypted
}
const decrypt = (
data: string | Buffer,
key: string | Buffer,
iv?: string | Buffer | null
): string => {
const decipher = crypto.createDecipheriv(
DEFAULT_AES_ALGORITHM,
stringToBuffer(key),
stringToBuffer(iv || key)
)
const _data = bufferToString(data)
let decrypted = decipher.update(
_data,
DEFAULT_BUFFER_TYPE,
DEFAULT_ENCODING_TYPE
)
decrypted += decipher.final(DEFAULT_ENCODING_TYPE)
return decrypted
}
export { encrypt, decrypt }

View File

@@ -0,0 +1,28 @@
import * as crypto from "crypto"
import { DEFAULT_BUFFER_TYPE, DEFAULT_ENCODING_TYPE } from "../../config"
import { stringToBuffer } from "../../util"
const encrypt = (data: string | Buffer, privateOrPublicKey: string): string => {
const buffer = stringToBuffer(data)
const encrypted = crypto.publicEncrypt(privateOrPublicKey, buffer)
return encrypted.toString(DEFAULT_BUFFER_TYPE)
}
const decrypt = (
data: string | Buffer,
privateKey: string,
passphrase?: string | null
): string => {
const buffer = stringToBuffer(data)
const decrypted = crypto.privateDecrypt(
{
key: privateKey,
passphrase: passphrase || "",
},
buffer
)
return decrypted.toString(DEFAULT_ENCODING_TYPE)
}
export { encrypt, decrypt }