Spaces:
Sleeping
Sleeping
| import { checkEncCryptoKey } from './crypto_key.js'; | |
| import { checkKeyLength } from './signing.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)); | |
| } | |