Files
js-scripts/components/component-jose.js
2025-04-04 17:19:07 +08:00

52 lines
1.8 KiB
JavaScript

$ONCE('component-jose-requireJARS').run(() => {
requireJAR('jose4j-0.5.5.jar');
requireJAR('slf4j-api-1.7.21.jar');
});
var JsonWebKey = Packages.org.jose4j.jwk.JsonWebKey;
var JsonWebEncryption = Packages.org.jose4j.jwe.JsonWebEncryption;
var AlgorithmConstraints = Packages.org.jose4j.jwa.AlgorithmConstraints;
var ConstraintType = Packages.org.jose4j.jwa.AlgorithmConstraints.ConstraintType;
var KeyManagementAlgorithmIdentifiers = Packages.org.jose4j.jwe.KeyManagementAlgorithmIdentifiers;
var ContentEncryptionAlgorithmIdentifiers = Packages.org.jose4j.jwe.ContentEncryptionAlgorithmIdentifiers;
var jwkLoad = (jwkJSONString) => {
return JsonWebKey.Factory.newJwk(jwkJSONString);
}
var jweEnc = (jwk, txt) => {
var jwe = new JsonWebEncryption();
jwe.setPlaintext(txt);
jwe.setAlgorithmHeaderValue(KeyManagementAlgorithmIdentifiers.DIRECT);
jwe.setEncryptionMethodHeaderParameter(ContentEncryptionAlgorithmIdentifiers.AES_128_GCM);
jwe.setKey(jwk.getKey());
return jwe.getCompactSerialization();
};
var jweDec = (jwk, compactSerialization) => {
var jwe = new JsonWebEncryption();
var algConstraints = new AlgorithmConstraints(ConstraintType.WHITELIST, KeyManagementAlgorithmIdentifiers.DIRECT);
jwe.setAlgorithmConstraints(algConstraints);
var encConstraints = new AlgorithmConstraints(ConstraintType.WHITELIST, ContentEncryptionAlgorithmIdentifiers.AES_128_GCM);
jwe.setContentEncryptionAlgorithmConstraints(encConstraints);
jwe.setCompactSerialization(compactSerialization);
jwe.setKey(jwk.getKey());
return receiverJwe.getPlaintextString();
};
var jwk = {
"load": jwkLoad
};
var jwe = {
"enc": jweEnc,
"dec": jweDec
};
if (typeof exports == 'object') {
exports.jwk = jwk;
exports.jwe = jwe;
}