@adorsys-gis/web-auth-prf
Version:
A WebAuthn library implementing password-based key derivation functions (PRF) for secure authentication and encryption
37 lines (36 loc) • 1.46 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.LocalDBService = void 0;
class LocalDBService {
async encryptData(plaintext, key) {
try {
const encoder = new TextEncoder();
const data = encoder.encode(plaintext);
// Generate a unique IV for each encryption.
const iv = crypto.getRandomValues(new Uint8Array(12));
const ciphertext = await crypto.subtle.encrypt({ name: "AES-GCM", iv }, key.key, data);
// Prepend IV to ciphertext.
const combined = new Uint8Array(iv.length + ciphertext.byteLength);
combined.set(iv);
combined.set(new Uint8Array(ciphertext), iv.length);
return combined.buffer;
}
catch (error) {
throw new Error(`Encryption error: ${error.message}`);
}
}
async decryptData(encrypted, key) {
try {
const combined = new Uint8Array(encrypted);
const iv = combined.slice(0, 12);
const ciphertext = combined.slice(12);
const plaintextBuffer = await crypto.subtle.decrypt({ name: "AES-GCM", iv }, key.key, ciphertext);
const decoder = new TextDecoder();
return decoder.decode(plaintextBuffer);
}
catch (error) {
throw new Error(`Decryption error: ${error.message}`);
}
}
}
exports.LocalDBService = LocalDBService;