import { checkEncCryptoKey } from './crypto_key.js'; import checkKeyLength from './check_key_length.js'; import { JOSENotSupported } from '../util/errors.js'; const subtleAlgorithm = (alg) => { switch (alg) { case 'RSA-OAEP': case 'RSA-OAEP-256': case 'RSA-OAEP-384': case 'RSA-OAEP-512': return 'RSA-OAEP'; default: throw new JOSENotSupported(`alg ${alg} is not supported either by JOSE or your javascript runtime`); } }; export async function encrypt(alg, key, cek) { checkEncCryptoKey(key, alg, 'encrypt'); checkKeyLength(alg, key); return new Uint8Array(await crypto.subtle.encrypt(subtleAlgorithm(alg), key, cek)); } export async function decrypt(alg, key, encryptedKey) { checkEncCryptoKey(key, alg, 'decrypt'); checkKeyLength(alg, key); return new Uint8Array(await crypto.subtle.decrypt(subtleAlgorithm(alg), key, encryptedKey)); }