diff --git a/.travis.yml b/.travis.yml index d6e5d6368..c8580f0f1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,6 +8,7 @@ jdk: - oraclejdk8 - oraclejdk9 - openjdk10 + - openjdk11 cache: directories: diff --git a/CHANGELOG.md b/CHANGELOG.md index 2b6574df3..d1dc49633 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ ## Release Notes +### 0.10.8 + +This patch release: + +* Ensures that SignatureAlgorithms `PS256`, `PS384`, and `PS512` work properly on JDK 11 and later without the need + for BouncyCastle. Previous releases referenced a BouncyCastle-specific + algorithm name instead of the Java Security Standard Algorithm Name of + [`RSASSA-PSS`](https://docs.oracle.com/en/java/javase/11/docs/specs/security/standard-names.html#signature-algorithms). + This release ensures the standard name is used moving forward. + ### 0.10.7 This patch release: diff --git a/api/src/main/java/io/jsonwebtoken/SignatureAlgorithm.java b/api/src/main/java/io/jsonwebtoken/SignatureAlgorithm.java index fcb3d391b..7712e9193 100644 --- a/api/src/main/java/io/jsonwebtoken/SignatureAlgorithm.java +++ b/api/src/main/java/io/jsonwebtoken/SignatureAlgorithm.java @@ -88,25 +88,25 @@ public enum SignatureAlgorithm { ES512("ES512", "ECDSA using P-521 and SHA-512", "ECDSA", "SHA512withECDSA", true, 512, 521), /** - * JWA algorithm name for {@code RSASSA-PSS using SHA-256 and MGF1 with SHA-256}. This is not a JDK standard - * algorithm and requires that a JCA provider like BouncyCastle be in the runtime classpath. BouncyCastle - * will be used automatically if found in the runtime classpath. + * JWA algorithm name for {@code RSASSA-PSS using SHA-256 and MGF1 with SHA-256}. This algorithm requires + * Java 11 or later or a JCA provider like BouncyCastle to be in the runtime classpath. If on Java 10 or + * earlier, BouncyCastle will be used automatically if found in the runtime classpath. */ - PS256("PS256", "RSASSA-PSS using SHA-256 and MGF1 with SHA-256", "RSA", "SHA256withRSAandMGF1", false, 256, 2048), + PS256("PS256", "RSASSA-PSS using SHA-256 and MGF1 with SHA-256", "RSA", "RSASSA-PSS", false, 256, 2048), /** - * JWA algorithm name for {@code RSASSA-PSS using SHA-384 and MGF1 with SHA-384}. This is not a JDK standard - * algorithm and requires that a JCA provider like BouncyCastle be in the runtime classpath. BouncyCastle - * will be used automatically if found in the runtime classpath. + * JWA algorithm name for {@code RSASSA-PSS using SHA-384 and MGF1 with SHA-384}. This algorithm requires + * Java 11 or later or a JCA provider like BouncyCastle to be in the runtime classpath. If on Java 10 or + * earlier, BouncyCastle will be used automatically if found in the runtime classpath. */ - PS384("PS384", "RSASSA-PSS using SHA-384 and MGF1 with SHA-384", "RSA", "SHA384withRSAandMGF1", false, 384, 2048), + PS384("PS384", "RSASSA-PSS using SHA-384 and MGF1 with SHA-384", "RSA", "RSASSA-PSS", false, 384, 2048), /** - * JWA algorithm name for {@code RSASSA-PSS using SHA-512 and MGF1 with SHA-512}. This is not a JDK standard - * algorithm and requires that a JCA provider like BouncyCastle be in the classpath. BouncyCastle will be used - * automatically if found in the runtime classpath. + * JWA algorithm name for {@code RSASSA-PSS using SHA-512 and MGF1 with SHA-512}. This algorithm requires + * Java 11 or later or a JCA provider like BouncyCastle to be in the runtime classpath. If on Java 10 or + * earlier, BouncyCastle will be used automatically if found in the runtime classpath. */ - PS512("PS512", "RSASSA-PSS using SHA-512 and MGF1 with SHA-512", "RSA", "SHA512withRSAandMGF1", false, 512, 2048); + PS512("PS512", "RSASSA-PSS using SHA-512 and MGF1 with SHA-512", "RSA", "RSASSA-PSS", false, 512, 2048); //purposefully ordered higher to lower: private static final List PREFERRED_HMAC_ALGS = Collections.unmodifiableList(Arrays.asList( diff --git a/impl/pom.xml b/impl/pom.xml index 951b1f07c..26f578872 100644 --- a/impl/pom.xml +++ b/impl/pom.xml @@ -44,6 +44,11 @@ bcprov-jdk15on test + + org.bouncycastle + bcpkix-jdk15on + test + io.jsonwebtoken jjwt-jackson diff --git a/impl/src/test/groovy/io/jsonwebtoken/impl/crypto/Issue542Test.groovy b/impl/src/test/groovy/io/jsonwebtoken/impl/crypto/Issue542Test.groovy new file mode 100644 index 000000000..8636d053e --- /dev/null +++ b/impl/src/test/groovy/io/jsonwebtoken/impl/crypto/Issue542Test.groovy @@ -0,0 +1,95 @@ +package io.jsonwebtoken.impl.crypto + +import io.jsonwebtoken.Jwts +import io.jsonwebtoken.SignatureAlgorithm +import org.bouncycastle.asn1.pkcs.PrivateKeyInfo +import org.bouncycastle.cert.X509CertificateHolder +import org.bouncycastle.cert.jcajce.JcaX509CertificateConverter +import org.bouncycastle.openssl.PEMParser +import org.bouncycastle.openssl.jcajce.JcaPEMKeyConverter +import org.junit.Test + +import java.nio.charset.StandardCharsets +import java.security.PrivateKey +import java.security.PublicKey + +/** + * Asserts backwards-compatibility for 0.10.8 and later per https://github.com/jwtk/jjwt/issues/542 + */ +class Issue542Test { + + /** + * The following 3 strings were generated using the 0.10.7 implementation by calling this + * class's `main` method below. + * + * DO NOT UPDATE THESE VALUES. THEIR EXACT VALUES IS WHAT GUARANTEES BACKWARDS-COMPATIBILITY. + * + * Changing the values could reflect newer implementation behavior which defeats the entire purpose of the test :) + */ + private static String PS256_0_10_7 = 'eyJhbGciOiJQUzI1NiJ9.eyJpc3MiOiJqb2UifQ.kvOr6hW_Bg6AjH8wmJd7C6S6xow1UaL3xIRrsxrZIgNYN912mHU_-QX_vggaQLLYZLZMWSuqqY_byFgiJ6c0814uf4PhzlkUL6P4FAqKvRMuazN0FMxK-oSt37jKzbLLfLQ2aNZ6jOMoUGn1zreITcm4oVYoZs1c4p8d-OMXjvzwO2rPTSyqrzvrmFF-ufh0gAAA9W8aDeFNPIcm66BC_RK9nhSfJaBdFGzN1dgZKRx8S5DwKurlJkfG6uESGG4pvhlQRtn8dmY_1HHsvKIBQD02zy1KyB3EYXJRtVSIUWY0lhhe7-AoE2TwfYQRaS38ReIhGLFzUIjUDYbxlBljeg' + private static String PS384_0_10_7 = 'eyJhbGciOiJQUzM4NCJ9.eyJpc3MiOiJqb2UifQ.mlPowjRz0cP5J-MmCoegKHYagOHZ_ArXOR91_u8jMdwmOfdfEQIcC6K5hAgQGSZQC_pQDA51RUoUHatsQgXtHlSDC_VP9ZxcPkOptWScOUMXriLH31bTcrg0YhlYL-A7TTHLMhbUrOCKqjpWjU-GxcnOkM86e0joZgJUL7CpHUtyCFRrxOXtuTvGr2m_LdS7I5OyZ4xEP4JRcsOgOnGq-m7e3WX7LTDKjggtVq3Nmdl4GISgJdM7GHHZOJHckUjgD-T3X6oHQanFdXZnjEl7nqo9KfN0skerI681fJ8mbjIlbf68pM6tJwJXI8fr1tF4pcAZxXR17ITCrocVSRC6NuWOVzh_XyyEVMEWmLqrRvc4zyRUfqlDbUhMn55Z54bJnU2Z_IzUi1o9ndy7ckISHQVhuYFKu789DjW1BV4PFFxC4heghK_Gw4h7El6MIMVdvM8oLRbrjlf6BYCRnCxuTA_y10IyB7s8eEuUC-D6JjVtXSvCRkRo7f8dWQTjFLs7' + private static String PS512_0_10_7 = 'eyJhbGciOiJQUzUxMiJ9.eyJpc3MiOiJqb2UifQ.r6sisG-FVaMoIJacMSdYZLWFBVoT6bXmf3X3humLZqzoGfsRw3q9-wJ2oIiR4ua2L_mPnJqyPcjFWoXLUzw-URFSyQEAX_S2mWTBn7avCFsmJUh2fMkplG0ynbIHCqReRDl3moQGallbl-SYgArSRI2HbpVt05xsVbk3BmxB8N8buKbBPfUqwZMicRqNpHxoOc-IXaClc7y93gFNfGBMEwXn2nK_ZFXY03pMBL_MHVsJprPmtGfQw0ZZUv29zZbZTkRb6W6bRCi3jIP8sBMnYDqG3_Oyz9sF74IeOoD9sCpgAuRnrSAXhEb3tr1uBwyT__DOI1ZdT8QGFiRRNpUZDm7g4ub7njhXQ6ppkEY6kEKCCoxSq5sAh6EzZQgAfbpKNXy5VIu8s1nR-iJ8GDpeTcpLRhbX8havNzWjc-kSnU95_D5NFoaKfIjofKideVU46lUdCk-m7q8mOoFz8UEK1cXq3t7ay2jLG_sNvv7oZPe2TC4ovQGiQP0Mt446XBuIvyXSvygD3_ACpRSfpAqVoP7Ce98NkV2QCJxYNX1cZ4Zj4HrNoNWMx81TFoyU7RoUhj4tHcgBt_3_jbCO0OCejwswAFhwYRXP3jXeE2QhLaN1QJ7p97ly8WxjkBRac3I2WAeJhOM4CWhtgDmHAER9571MWp-7n4h4bnx9tXXfV7k' + + private static Map JWS_0_10_7_VALUES = [ + (SignatureAlgorithm.PS256): PS256_0_10_7, + (SignatureAlgorithm.PS384): PS384_0_10_7, + (SignatureAlgorithm.PS512): PS512_0_10_7 + ] + + private static JcaX509CertificateConverter X509_CERT_CONVERTER = new JcaX509CertificateConverter() + private static JcaPEMKeyConverter PEM_KEY_CONVERTER = new JcaPEMKeyConverter() + + private static PEMParser getParser(String filename) { + InputStream is = Issue542Test.class.getResourceAsStream(filename) + return new PEMParser(new BufferedReader(new InputStreamReader(is, StandardCharsets.ISO_8859_1))) + } + + private static PublicKey readTestPublicKey(SignatureAlgorithm alg) { + PEMParser parser = getParser(alg.name() + '.crt.pem') + X509CertificateHolder holder = parser.readObject() as X509CertificateHolder + try { + return X509_CERT_CONVERTER.getCertificate(holder).getPublicKey() + } finally { + parser.close() + } + } + + private static PrivateKey readTestPrivateKey(SignatureAlgorithm alg) { + PEMParser parser = getParser(alg.name() + '.key.pem') + PrivateKeyInfo info = parser.readObject() as PrivateKeyInfo + try { + return PEM_KEY_CONVERTER.getPrivateKey(info) + } finally { + parser.close() + } + } + + /** + * Asserts backwards-compatibility for https://github.com/jwtk/jjwt/issues/542 + */ + @Test + void testRsaSsaPssBackwardsCompatibility() { + + def algs = [SignatureAlgorithm.PS256, SignatureAlgorithm.PS384, SignatureAlgorithm.PS512] + + for (alg in algs) { + PublicKey key = readTestPublicKey(alg) + String jws = JWS_0_10_7_VALUES[alg] + def token = Jwts.parser().setSigningKey(key).parseClaimsJws(jws) + assert 'joe' == token.body.getIssuer() + } + } + + /** + * Used to generate 0.10.7 strings. DO NOT call this method and replace the values at the top of this + * class. This method implementation was retained only to demonstrate how they were created for future reference. + */ + static void main(String[] args) { + def algs = [SignatureAlgorithm.PS256, SignatureAlgorithm.PS384, SignatureAlgorithm.PS512] + for (alg in algs) { + PrivateKey privateKey = readTestPrivateKey(alg) + String jws = Jwts.builder().setIssuer('joe').signWith(privateKey, alg).compact() + println "private static String ${alg.name()}_0_10_7 = '$jws'" + } + } +} diff --git a/impl/src/test/resources/io/jsonwebtoken/impl/crypto/PS256.crt.pem b/impl/src/test/resources/io/jsonwebtoken/impl/crypto/PS256.crt.pem new file mode 120000 index 000000000..9f0f221ce --- /dev/null +++ b/impl/src/test/resources/io/jsonwebtoken/impl/crypto/PS256.crt.pem @@ -0,0 +1 @@ +rsa2048.crt.pem \ No newline at end of file diff --git a/impl/src/test/resources/io/jsonwebtoken/impl/crypto/PS256.key.pem b/impl/src/test/resources/io/jsonwebtoken/impl/crypto/PS256.key.pem new file mode 120000 index 000000000..dbed23bf3 --- /dev/null +++ b/impl/src/test/resources/io/jsonwebtoken/impl/crypto/PS256.key.pem @@ -0,0 +1 @@ +rsa2048.key.pem \ No newline at end of file diff --git a/impl/src/test/resources/io/jsonwebtoken/impl/crypto/PS384.crt.pem b/impl/src/test/resources/io/jsonwebtoken/impl/crypto/PS384.crt.pem new file mode 120000 index 000000000..2b21f33d2 --- /dev/null +++ b/impl/src/test/resources/io/jsonwebtoken/impl/crypto/PS384.crt.pem @@ -0,0 +1 @@ +rsa3072.crt.pem \ No newline at end of file diff --git a/impl/src/test/resources/io/jsonwebtoken/impl/crypto/PS384.key.pem b/impl/src/test/resources/io/jsonwebtoken/impl/crypto/PS384.key.pem new file mode 120000 index 000000000..8e6d44890 --- /dev/null +++ b/impl/src/test/resources/io/jsonwebtoken/impl/crypto/PS384.key.pem @@ -0,0 +1 @@ +rsa3072.key.pem \ No newline at end of file diff --git a/impl/src/test/resources/io/jsonwebtoken/impl/crypto/PS512.crt.pem b/impl/src/test/resources/io/jsonwebtoken/impl/crypto/PS512.crt.pem new file mode 120000 index 000000000..aad9991b2 --- /dev/null +++ b/impl/src/test/resources/io/jsonwebtoken/impl/crypto/PS512.crt.pem @@ -0,0 +1 @@ +rsa4096.crt.pem \ No newline at end of file diff --git a/impl/src/test/resources/io/jsonwebtoken/impl/crypto/PS512.key.pem b/impl/src/test/resources/io/jsonwebtoken/impl/crypto/PS512.key.pem new file mode 120000 index 000000000..3ec40cc76 --- /dev/null +++ b/impl/src/test/resources/io/jsonwebtoken/impl/crypto/PS512.key.pem @@ -0,0 +1 @@ +rsa4096.key.pem \ No newline at end of file diff --git a/impl/src/test/resources/io/jsonwebtoken/impl/crypto/README.md b/impl/src/test/resources/io/jsonwebtoken/impl/crypto/README.md new file mode 100644 index 000000000..a89ac9d4f --- /dev/null +++ b/impl/src/test/resources/io/jsonwebtoken/impl/crypto/README.md @@ -0,0 +1,14 @@ +The `*.key.pem` and `*.crt.pem` files in this directory were created for testing as follows: + + openssl req -x509 -newkey rsa:2048 -keyout rsa2048.key.pem -out rsa2048.crt.pem -days 365250 -nodes -subj '/C=US/ST=California/L=San Francisco/O=jsonwebtoken.io/OU=jjwt' + openssl req -x509 -newkey rsa:3072 -keyout rsa3072.key.pem -out rsa3072.crt.pem -days 365250 -nodes -subj '/C=US/ST=California/L=San Francisco/O=jsonwebtoken.io/OU=jjwt' + openssl req -x509 -newkey rsa:4096 -keyout rsa4096.key.pem -out rsa4096.crt.pem -days 365250 -nodes -subj '/C=US/ST=California/L=San Francisco/O=jsonwebtoken.io/OU=jjwt' + +The only difference is the key size and file names using sizes of `2048`, `3072`, and `4096`. + +Each command creates a (non-password-protected) private key and a self-signed certificate for the associated key size, +valid for 1000 years. These files are intended for testing purposes only and shouldn't be used in a production system. + +Finally, the `RS*` and `PS*` files in this directory are just are symlinks back to these files based on the JWT alg +names and their respective key sizes. This enables easy file lookup based on the `SignatureAlgorithm` `name()` value +when authoring tests. diff --git a/impl/src/test/resources/io/jsonwebtoken/impl/crypto/RS256.crt.pem b/impl/src/test/resources/io/jsonwebtoken/impl/crypto/RS256.crt.pem new file mode 120000 index 000000000..9f0f221ce --- /dev/null +++ b/impl/src/test/resources/io/jsonwebtoken/impl/crypto/RS256.crt.pem @@ -0,0 +1 @@ +rsa2048.crt.pem \ No newline at end of file diff --git a/impl/src/test/resources/io/jsonwebtoken/impl/crypto/RS256.key.pem b/impl/src/test/resources/io/jsonwebtoken/impl/crypto/RS256.key.pem new file mode 120000 index 000000000..dbed23bf3 --- /dev/null +++ b/impl/src/test/resources/io/jsonwebtoken/impl/crypto/RS256.key.pem @@ -0,0 +1 @@ +rsa2048.key.pem \ No newline at end of file diff --git a/impl/src/test/resources/io/jsonwebtoken/impl/crypto/RS384.crt.pem b/impl/src/test/resources/io/jsonwebtoken/impl/crypto/RS384.crt.pem new file mode 120000 index 000000000..2b21f33d2 --- /dev/null +++ b/impl/src/test/resources/io/jsonwebtoken/impl/crypto/RS384.crt.pem @@ -0,0 +1 @@ +rsa3072.crt.pem \ No newline at end of file diff --git a/impl/src/test/resources/io/jsonwebtoken/impl/crypto/RS384.key.pem b/impl/src/test/resources/io/jsonwebtoken/impl/crypto/RS384.key.pem new file mode 120000 index 000000000..8e6d44890 --- /dev/null +++ b/impl/src/test/resources/io/jsonwebtoken/impl/crypto/RS384.key.pem @@ -0,0 +1 @@ +rsa3072.key.pem \ No newline at end of file diff --git a/impl/src/test/resources/io/jsonwebtoken/impl/crypto/RS512.crt.pem b/impl/src/test/resources/io/jsonwebtoken/impl/crypto/RS512.crt.pem new file mode 120000 index 000000000..aad9991b2 --- /dev/null +++ b/impl/src/test/resources/io/jsonwebtoken/impl/crypto/RS512.crt.pem @@ -0,0 +1 @@ +rsa4096.crt.pem \ No newline at end of file diff --git a/impl/src/test/resources/io/jsonwebtoken/impl/crypto/RS512.key.pem b/impl/src/test/resources/io/jsonwebtoken/impl/crypto/RS512.key.pem new file mode 120000 index 000000000..3ec40cc76 --- /dev/null +++ b/impl/src/test/resources/io/jsonwebtoken/impl/crypto/RS512.key.pem @@ -0,0 +1 @@ +rsa4096.key.pem \ No newline at end of file diff --git a/impl/src/test/resources/io/jsonwebtoken/impl/crypto/rsa2048.crt.pem b/impl/src/test/resources/io/jsonwebtoken/impl/crypto/rsa2048.crt.pem new file mode 100644 index 000000000..11cbfe76b --- /dev/null +++ b/impl/src/test/resources/io/jsonwebtoken/impl/crypto/rsa2048.crt.pem @@ -0,0 +1,20 @@ +-----BEGIN CERTIFICATE----- +MIIDRDCCAiwCCQCgd9OzR40NCDANBgkqhkiG9w0BAQsFADBjMQswCQYDVQQGEwJV +UzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzEY +MBYGA1UECgwPanNvbndlYnRva2VuLmlvMQ0wCwYDVQQLDARqand0MCAXDTIwMDIw +MzIzMDQzM1oYDzMwMjAwMjExMjMwNDMzWjBjMQswCQYDVQQGEwJVUzETMBEGA1UE +CAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzEYMBYGA1UECgwP +anNvbndlYnRva2VuLmlvMQ0wCwYDVQQLDARqand0MIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEAzkH0MwxQ2cUFWsvOPVFqI/dk2EFTjQolCy97mI5/wYCb +aOoZ9Rm7c675mAeemRtNzgNVEz7m298ENqNGqPk2Nv3pBJ/XCaybBlp61CLez7dQ +2h5jUFEJ6FJcjeKHS+MwXr56t2ISdfLNMYtVIxjvXQcYx5VmS4mIqTxj5gVGtQVi +0GXdH6SvpdKV0fjE9KOhjsdBfKQzZfcQlusHg8pThwvjpMwCZnkxCS0RKa9y4+5+ +7MkC33+8+neZUzS7b6NdFxh6T/pMXpkf8d81fzVo4ZBMloweW0/l8MOdVxeX7M/7 +XSC1ank5i3IEZcotLmJYMwEo7rMpZVLevEQ118Eo8QIDAQABMA0GCSqGSIb3DQEB +CwUAA4IBAQBGbfmJumXEHMLko1ioY/eY5EYgrBRJAuuAMGqBZmK+1Iy2CqB90aEh +ve+jXjIBsrvXRuLxMdlzoP58Ia9C5M+78Vq0bEjuGJu3zxGev11Gt4E3V6bWfT7G +fhg66dbmjnqkhgSzpDzfYR7HHOQiDAGe5IH5FbvWehRzENoAODHHP1z3NdoGhsl9 +4DIjOTGYdhW0yUTSjGTWygo6OPU2L4M2k0gTA06FkvdLIS450GWRpgoVO/vfcPnO +h8KwZcWVwJVmG0Hv0fNhQk/tRuhYhCWGxc7gxkbLb7/xPpPKMD6EvgG0BSm27NxO +H5l3KYwtbdj5nYHU73cLqC1D6ki6F8+h +-----END CERTIFICATE----- diff --git a/impl/src/test/resources/io/jsonwebtoken/impl/crypto/rsa2048.key.pem b/impl/src/test/resources/io/jsonwebtoken/impl/crypto/rsa2048.key.pem new file mode 100644 index 000000000..418581f2d --- /dev/null +++ b/impl/src/test/resources/io/jsonwebtoken/impl/crypto/rsa2048.key.pem @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDOQfQzDFDZxQVa +y849UWoj92TYQVONCiULL3uYjn/BgJto6hn1GbtzrvmYB56ZG03OA1UTPubb3wQ2 +o0ao+TY2/ekEn9cJrJsGWnrUIt7Pt1DaHmNQUQnoUlyN4odL4zBevnq3YhJ18s0x +i1UjGO9dBxjHlWZLiYipPGPmBUa1BWLQZd0fpK+l0pXR+MT0o6GOx0F8pDNl9xCW +6weDylOHC+OkzAJmeTEJLREpr3Lj7n7syQLff7z6d5lTNLtvo10XGHpP+kxemR/x +3zV/NWjhkEyWjB5bT+Xww51XF5fsz/tdILVqeTmLcgRlyi0uYlgzASjusyllUt68 +RDXXwSjxAgMBAAECggEAZ90ahaJMDH2ERsaeoo4e7uGjrKqo0jsrkEhm6tnHR7/l +gp1wWNaOaKDSG1aq7NqtAXL4Imroggv56TGrYWetf1+5OZTsCnkaz8Y8WBr/LIZZ +dp0a0dUdMhpXdTN/gh1zvCIbVcFTHoYYAjzxsGzcDHKIbeizzJIDeYVpoOlDQ9/9 +Bv6ft4mhaG5SHVnec9QdmbJnKDq5rI4aPXCCXOCzDjdTVfgntdH5TvoCH91ESSKw +kddciAbVsXoOWnBx3jKMj+hIA4F1p6nzZUbiVzmxhqfShQhDnCEvq8tF7KqRbUsS +Gx8MVtwSkEGaiJCDVjwSRGkghXlguNwZcfnWMtGMYQKBgQDmFWAApeXv4xXF2a/1 +HKumO5Z+w+XkKiM76YyTHTKO/KtDYRJiIlJMgx+hoRTBwlpYDrlbS9+Jnm7bZ9Ib +pxRyMAFRoV7eIhnoAn9KrxhS8xCYF2Km7U1lg/+m3pFKghjV4+K1GHbggmvoiIY1 +2t250zkZSslwTxu/2+jRKYOptQKBgQDlfYrzvuGqClJ9QClxlOV2UrWiGxq6eTgL +4V3l0HwPU9OW/hX0Hued8S70Dpb3o+AAyptbcAqFjSdyIPMbCfKLQQkKpfBUtOvb +Nm12z/VNKNZbu7kvaOJHunQNHzyMEHcjsB9daAVI0gJZKN+m6Qh4VF4jao7G9GNR +d7ge0KcXzQKBgQCqf8p9kHJ9OsVmsTMgK1fTvrJ+S8LvOn6TpjVCy08tAHYVXzjV +OePMyRpGluyfzNtQB9E5o1cKTzqNIjljvoN7PrGrgS6g45pZAIi9mlUnGvIAEsxL +MOy6vn9Tc/kswo2O6umUE4X8RwmZ7pmuDPtj+e+FG5N8w1Kn8VlsrhvgRQKBgAgz +clG/koTnFYeQUWrTrVeLIR6H5W6gglY6WYaq6qQJlNgigFpW+GP2iH0EQHTdEFY2 +51JfMKERKEW107o1ostDKbWNtIbyaDNPQJ4sVFHLkc15aea90shJa3hEk39V30wR +MS2/V+EAUEErasKmNT1Hlo2hczS86wewRY4kWrRJAoGAeYUG04cu55GwCgp50P3J +0NCNyiOkhnaj0wGPztMbDqNkaUAoaycoEsas5lhRAWT4YIVglz5pwR4uiI57w1cL +Mvjk5yDiQs7h3bV/qtm95YPBBC+y3mmZYlEA1lH0qktRNBlMVtfYkPztBh50UBOH +8qhIwqrpm3+JJ1p2p0XPl1c= +-----END PRIVATE KEY----- diff --git a/impl/src/test/resources/io/jsonwebtoken/impl/crypto/rsa3072.crt.pem b/impl/src/test/resources/io/jsonwebtoken/impl/crypto/rsa3072.crt.pem new file mode 100644 index 000000000..a93fa8338 --- /dev/null +++ b/impl/src/test/resources/io/jsonwebtoken/impl/crypto/rsa3072.crt.pem @@ -0,0 +1,25 @@ +-----BEGIN CERTIFICATE----- +MIIERDCCAqwCCQDqxucO41yAmTANBgkqhkiG9w0BAQsFADBjMQswCQYDVQQGEwJV +UzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzEY +MBYGA1UECgwPanNvbndlYnRva2VuLmlvMQ0wCwYDVQQLDARqand0MCAXDTIwMDIw +MzIzMDQ1OFoYDzMwMjAwMjExMjMwNDU4WjBjMQswCQYDVQQGEwJVUzETMBEGA1UE +CAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzEYMBYGA1UECgwP +anNvbndlYnRva2VuLmlvMQ0wCwYDVQQLDARqand0MIIBojANBgkqhkiG9w0BAQEF +AAOCAY8AMIIBigKCAYEA0DmQS4Xtgu5xtnQdxkuzB1j+W4OvNEOVOsg3Zcn9W1d5 +NowtngUh9K9vwBpl59M2j5PHj9dseEIuRqr++ZnZhBMlh/lLiIQ0oQ3cEa7wrwJO +i9ycZZbeNDHVNzAdQZEQR1DIMUhSTEMR96pVD4a9DzBKLQJaKxZRUOrMhf3QhAZ5 +9m0d/Kqu1Dm6YeWMLQQEewAaSQ9g22gty1EcLAvp/vnhR/DJSYIHCayd5mZwvk9q +WkXySfUmJGP70GFGG4GOnVLLkmCQgfT+OrzTtiIzNT26mtAsoUMnoD42TTBkR0aL +hULcj1MYUcB9uVCmJTvYuiCTODoNlL8T40r9L99HoHlTWVi9vf6I1vyNdHp3dXKB +MVL13+i5BeNIjADr0KKs0jtEEicWyuVhJz3rPLzBbPhz/DGQ/hTj/DRSdo9L9YA4 +WkqgD8uFUvIEKAJ/hXYx3QPEiIMU7hT4jk2Z2SIBiKKiNW4E/20EZOFmaeNWQaqq +mwX0cHtMygJtTYnEJ1IDAgMBAAEwDQYJKoZIhvcNAQELBQADggGBAGKkmv6d372z +Ujt1qjsjH7LHfIsPXdvnp7OhvujDEtY7dzwDCtR40zgB2qp+iXUO61FXErx8yDp9 +l7sDzk0AjY7RupANuo/3FyDuo0WoTUV3CJNnXf3Mrvu/DMjbaS6D4Jryz/HLE+2r +GYtdm165FZK/hQXuFfurkc4yqjrX90Wr+YHeen2y5Wk3jeUknmdp97F6+zkq6N5D +dKjy/ZOvy+1huNd5bzvJoiZLKqdSh/RQUoU6AP1p+83lo+7cPvS/zm/HvwxwMamA +1Cip1FypNxUxt5HR4bC5LwEvMTZ/+UTEelbyfjMdYU97aa58nPoMxf7DRBbr0tfj +GItI+mMoAw60eIaDbTncXvO1LVrFF5BfzVOTQ8ioPRwI7A5LMSC5JvxW8KsW2VX0 +vGwRbw8I6HXGRbBZ3zwmAK73q7go31+Dl/5VPFo+fVTL0P7/k/g0ZAtCu4/Wly9e +DLnYMoZbIF5lgp9cAzPOaWXiInsA6HSdgFUfXsBemRpholuw+Sacxg== +-----END CERTIFICATE----- diff --git a/impl/src/test/resources/io/jsonwebtoken/impl/crypto/rsa3072.key.pem b/impl/src/test/resources/io/jsonwebtoken/impl/crypto/rsa3072.key.pem new file mode 100644 index 000000000..1b9b8708b --- /dev/null +++ b/impl/src/test/resources/io/jsonwebtoken/impl/crypto/rsa3072.key.pem @@ -0,0 +1,40 @@ +-----BEGIN PRIVATE KEY----- +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 +5I2wbxUhb3FO7gj9pxJbwX4= +-----END PRIVATE KEY----- diff --git a/impl/src/test/resources/io/jsonwebtoken/impl/crypto/rsa4096.crt.pem b/impl/src/test/resources/io/jsonwebtoken/impl/crypto/rsa4096.crt.pem new file mode 100644 index 000000000..c63b1941d --- /dev/null +++ b/impl/src/test/resources/io/jsonwebtoken/impl/crypto/rsa4096.crt.pem @@ -0,0 +1,31 @@ +-----BEGIN CERTIFICATE----- +MIIFRDCCAywCCQC4g2isVGolKjANBgkqhkiG9w0BAQsFADBjMQswCQYDVQQGEwJV +UzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzEY +MBYGA1UECgwPanNvbndlYnRva2VuLmlvMQ0wCwYDVQQLDARqand0MCAXDTIwMDIw +MzIzMDY1MloYDzMwMjAwMjExMjMwNjUyWjBjMQswCQYDVQQGEwJVUzETMBEGA1UE +CAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzEYMBYGA1UECgwP +anNvbndlYnRva2VuLmlvMQ0wCwYDVQQLDARqand0MIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEAw7jTXeRwCRrDdYnrIwcLvSNfhpmJZ0ap1jzKVgUyCOYL +TaB9+naJRjHqx7B5wgx/ArRF2nluQ5tawZPMFw2I/iqXYrQEPTbq1XVugYC/C491 +bcXOTKx+DgEvnhNysm/KmzFsEcw78prB5sIAZSR+S5zZPuny4zww2UzE9TZ433RB +kyA+wVkd64bgXdkMrVc+gsRsOtvwPFbQ89zg8d/pNV0mDtjDsfiYw0pSAah11fJG +a+aRc46CqFu/6rHuN4uq6542LdtshPbHz29VKHxk8agtcx06+8F05Bg4LFm1rRhY +0g3KsT7s8XHMVdo9h2bIQuWOaFg3mehpH6ZYBV4ENo98V/jDaUPpBHsaUXw4fG/w +rnI+YwRjGlmp2QEr5VRfh0x8Addf6N64lmbQUpCPhJweJd54D3JvIpJr8HiG3GYW +eFsrmDzmhrozZHxE4P7UesW6lWwQzGfwYGXs7j6TEa2hZ8EB/t1jsYNjZ5UYY/Jb +KgFGSkMGje4Bi5Bv6kh4+pp3DT5QsG/AfLVlr5ineLDWkJ15uZjOxl12EOPXOCWV +iVqS6rayJfb95YJQ52rT4H83BsApHbzFj7q/CIaeJkUdv9GJ2SOADcXdgG7Xk7tH +qb1VIH4zRBo5mc0qN1cAwjopxHv2h3tGaTHKbptvfiLulH+AvvuWmLMEQo6ZDlsC +AwEAATANBgkqhkiG9w0BAQsFAAOCAgEApnHjMQwt5hm6UlEDvdWCYbh7ctkLbgwR +iBP1lvunm2oF0jGpipt8oDR/TT43usb6ieuU+ABksjxOROeoVZbK8bEpnzeo3nNE +41ERI3Byjp7tsja8QGG0uBk9QZ0+7MhJqhEDVAIbS0Lf4exkWiLZrW7ogAEFYKTN +DE6CxOcfR/kXj6ejuCnvN4xYqnw8G/OF/3tnHMfKnnnqtMmWdAKd3Y5S1EJZ5vtp +lZ3I9HA5Hx0sTH1ruCOIRzaC5En1c6zW1HjxmeAqLeG814gezlEhHzb4SCkabgQh +Bq15O8eQaW92f8xZoUQN25w7SNYszk9AdhroJz3+BOzG3+Y1EInLk5hDHT8oUNFz +e8EosJEwJDK3wq9YOhn8PUT/DacyNKONJVNly3fTBXoSR3oReW61p6T19z4AYsY9 +qMwSjIL2UcgAF8Kpsx2NdQrDfdveNMhul7AjIgz+e2DtRqCkZ6ypdhht2pmlpiXO +TiUG/1OBq2yTeJF9LjAUzsSNnsZ/F8pJbwSpr7VqDmTNGTfrh6x1ojHNFjJeTqK8 +MCTmQtJJTAbV4nuB+thFFWDx0IWvbG7ViYds9sdJNO4L3baXeAioJhHs5buBy3eb +ZWjLAwHpSCqNY3d6+ouGLwE1YVFsk8sV9UM+gl15VynKkunbYoKhiD82HGASNYtE +33eif1l5Nk0= +-----END CERTIFICATE----- diff --git a/impl/src/test/resources/io/jsonwebtoken/impl/crypto/rsa4096.key.pem b/impl/src/test/resources/io/jsonwebtoken/impl/crypto/rsa4096.key.pem new file mode 100644 index 000000000..6c3887052 --- /dev/null +++ b/impl/src/test/resources/io/jsonwebtoken/impl/crypto/rsa4096.key.pem @@ -0,0 +1,52 @@ +-----BEGIN PRIVATE KEY----- +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 +lczRTJNTE/KNUE0pkC5P4c/e0A1OFu0= +-----END PRIVATE KEY----- diff --git a/pom.xml b/pom.xml index ee44257b7..2a5805e1d 100644 --- a/pom.xml +++ b/pom.xml @@ -82,7 +82,9 @@ ${basedir} 3.0.2 - 3.6.1 + 3.8.0 + 3.1.1 + 1.6.1 1.7 UTF-8 @@ -95,7 +97,7 @@ 1.60 - 2.5.1 + 2.5.9 1.2.3 3.6 4.12 @@ -149,6 +151,12 @@ ${bouncycastle.version} test + + org.bouncycastle + bcpkix-jdk15on + ${bouncycastle.version} + test + @@ -279,7 +287,7 @@ org.codehaus.gmavenplus gmavenplus-plugin - 1.6.1 + ${gmavenplus.version} @@ -419,7 +427,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 2.10.4 + ${maven.javadoc.version} attach-javadocs @@ -428,6 +436,9 @@ + + false + @@ -448,6 +459,9 @@ -Xdoclint:none + 1.8.1 + 4.2 + 2.0.2 @@ -501,7 +515,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 2.10.4 + ${maven.javadoc.version} attach-javadocs