import { EncryptionService } from "./EncryptionService"; import * as sjcl from "sjcl"; import { MessageCipherDTO } from "../dto/MessageCipherDTO"; export class SJCLEncryptionService implements EncryptionService { private readonly params = { mode: "gcm", ts: 128, adata: "", iter: 10000 } public encrypt(passphrase: string, plainText: string): MessageCipherDTO { // @ts-ignore return JSON.parse(sjcl.encrypt(passphrase, plainText, this.params) as string) as MessageCipherDTO; } public decrypt(passphrase: string, cipher: MessageCipherDTO): string { return sjcl.decrypt(passphrase, JSON.stringify(cipher), undefined, undefined); } }