52 lines
1.8 KiB
JavaScript
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;
|
|
}
|
|
|