cubetiq-crypto-js/src/crypto/provider/default.provider.ts

34 lines
991 B
TypeScript

import { assertNotNullOrUndefined } from "../../util"
import { ICryptoProvider } from "../provider.crypto"
import { decrypt as dec, encrypt as enc } from "./../core/default.crypto"
export class DefaultCryptoProvider implements ICryptoProvider {
private _key: string | Buffer | null | undefined
private _iv: string | Buffer | null | undefined
constructor(
key?: string | Buffer | null,
iv?: string | Buffer | null,
keyJsonFilePath?: string | null
) {
if (keyJsonFilePath) {
const json: any = require(keyJsonFilePath)
this._key = json.key
this._iv = json.iv
} else {
this._key = key
this._iv = iv || key
}
assertNotNullOrUndefined(this._key, "key is required")
}
encrypt(data: string | Buffer): string {
return enc(data, this._key!, this._iv)
}
decrypt(data: string): string {
return dec(data, this._key!, this._iv)
}
}