mirror of
https://github.com/danbulant/jose
synced 2026-05-24 12:35:36 +00:00
77 lines
3.3 KiB
JavaScript
77 lines
3.3 KiB
JavaScript
import jweCompactEncrypt from '../dist/browser/jwe/compact/encrypt.js';
|
|
import jweFlattenedEncrypt from '../dist/browser/jwe/flattened/encrypt.js';
|
|
import jwsCompactSign from '../dist/browser/jws/compact/sign.js';
|
|
import jwsFlattenedSign from '../dist/browser/jws/flattened/sign.js';
|
|
import jwsGeneralSign from '../dist/browser/jws/general/sign.js';
|
|
import jwtEncrypt from '../dist/browser/jwt/encrypt.js';
|
|
import jwtSign from '../dist/browser/jwt/sign.js';
|
|
import jwtUnsecured from '../dist/browser/jwt/unsecured.js';
|
|
import jweCompactDecrypt from '../dist/browser/jwe/compact/decrypt.js';
|
|
import jweFlattenedDecrypt from '../dist/browser/jwe/flattened/decrypt.js';
|
|
import jweGeneralDecrypt from '../dist/browser/jwe/general/decrypt.js';
|
|
import jwkEmbedded from '../dist/browser/jwk/embedded.js';
|
|
import jwkFromKeyLike from '../dist/browser/jwk/from_key_like.js';
|
|
import jwkParse from '../dist/browser/jwk/parse.js';
|
|
import jwkThumbprint from '../dist/browser/jwk/thumbprint.js';
|
|
import jwksRemote from '../dist/browser/jwks/remote.js';
|
|
import jwsCompactVerify from '../dist/browser/jws/compact/verify.js';
|
|
import jwsFlattenedVerify from '../dist/browser/jws/flattened/verify.js';
|
|
import jwsGeneralVerify from '../dist/browser/jws/general/verify.js';
|
|
import jwtDecrypt from '../dist/browser/jwt/decrypt.js';
|
|
import jwtVerify from '../dist/browser/jwt/verify.js';
|
|
import utilDecodeProtectedHeader from '../dist/browser/util/decode_protected_header.js';
|
|
import utilGenerateKeyPair from '../dist/browser/util/generate_key_pair.js';
|
|
import utilGenerateSecret from '../dist/browser/util/generate_secret.js';
|
|
import utilRandom from '../dist/browser/util/random.js';
|
|
|
|
const headers = { 'content-type': 'application/json' };
|
|
function respond(status, error) {
|
|
const body = {};
|
|
if (status !== 200) {
|
|
body.error = error.stack;
|
|
}
|
|
return new Response(JSON.stringify(body), { headers, status });
|
|
}
|
|
const success = respond.bind(undefined, 200);
|
|
const failure = respond.bind(undefined, 400);
|
|
addEventListener('fetch', (event) => {
|
|
event.respondWith(test().then(success, failure));
|
|
});
|
|
|
|
async function jweAsymmetricTest({ publicKey, privateKey }, alg) {
|
|
const jwe = await new jweFlattenedEncrypt(utilRandom(new Uint8Array(32)))
|
|
.setProtectedHeader({ alg, enc: 'A256GCM' })
|
|
.setAdditionalAuthenticatedData(utilRandom(new Uint8Array(32)))
|
|
.encrypt(publicKey);
|
|
|
|
utilDecodeProtectedHeader(jwe);
|
|
await jweFlattenedDecrypt(jwe, privateKey);
|
|
}
|
|
|
|
async function jwsAsymmetricTest({ publicKey, privateKey }, alg) {
|
|
const jws = await new jwsFlattenedSign(utilRandom(new Uint8Array(32)))
|
|
.setProtectedHeader({ alg })
|
|
.sign(privateKey);
|
|
|
|
utilDecodeProtectedHeader(jws);
|
|
await jwsFlattenedVerify(jws, publicKey);
|
|
}
|
|
|
|
async function jwsSymmetricTest(secretKey, alg) {
|
|
const jws = await new jwsFlattenedSign(utilRandom(new Uint8Array(32)))
|
|
.setProtectedHeader({ alg })
|
|
.sign(secretKey);
|
|
|
|
utilDecodeProtectedHeader(jws);
|
|
await jwsFlattenedVerify(jws, secretKey);
|
|
}
|
|
|
|
async function jweSymmetricTest(secretKey, { alg, enc }) {
|
|
const jwe = await new jweFlattenedEncrypt(utilRandom(new Uint8Array(32)))
|
|
.setProtectedHeader({ alg, enc })
|
|
.setAdditionalAuthenticatedData(utilRandom(new Uint8Array(32)))
|
|
.encrypt(secretKey);
|
|
|
|
utilDecodeProtectedHeader(jwe);
|
|
await jweFlattenedDecrypt(jwe, secretKey);
|
|
}
|