$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; }