diff --git a/CHANGELOG.md b/CHANGELOG.md index 41b5961..6218877 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,62 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). -## [4.0.6] - ? +## [4.1.2] - 2020-04-08 + +### Changed +- [Dependency upgrade for BC, Checkstyle & Codec libraries](https://github.com/joyent/java-http-signature/pull/62) + - BouncyCastle: 1.64 → 1.65 + - Commons-Codec: 1.13 → 1.14 + - Checkstyle: 8.30 → 8.3 + +## [4.1.1] - 2020-03-23 + +### Changed +- [Dependency upgrade for jnagmp from 2.1.0 -> 3.0.0](https://github.com/joyent/java-http-signature/pull/60) + +## [4.1.0] - 2020-03-03 + +### Changed + - [Upgraded dependencies to latest stable versions:](https://github.com/joyent/java-http-signature/commit/aa0ad5dd209b86129dfe56e22553054056e7b3bb) + - HTTP Signatures dependency: 4.0.9 → 4.0.10 + - BouncyCastle: 1.61 → 1.64 + - Apache HttpClient: 4.5.7 → 4.5.11 + - Google HttpClient: 1.28.0 → 1.32.1 + - Jersey-Client 2.27 → 2.30.1 + - Arquillian 1.4.0.Final → 1.6.0.Final + - Arquillian-TestNG 1.4.0.Final → 1.6.0.Final + - Slfj 1.7.25 → 1.7.30 + - Checkstyle 8.16 → 8.30 + - Commons-Codec 1.11 → 1.13 + - Upgraded maven and maven-plugin dependencies. + - Added checkstyle warnings to [HttpSignatureAuthScheme.java](https://github.com/joyent/java-http-signature/blob/master/apache-http-client/src/main/java/com/joyent/http/signature/apache/httpclient/HttpSignatureAuthScheme.java), + [HttpSignatureConfigurator.java](https://github.com/joyent/java-http-signature/blob/master/apache-http-client/src/main/java/com/joyent/http/signature/apache/httpclient/HttpSignatureConfigurator.java) and fixed checkstyle errors. + +## [4.0.10] - 2019-02-27 + +### Changed + - Upgraded dependency versions for BC and Apache-Http-Client. + - [Upgrade Apache-Http-Client Dependency](https://github.com/joyent/java-http-signature/commit/9ee3137ac7fdc518f5136ee16a3e8161619461f9) + - [Upgraded BC Version To 1.61](https://github.com/joyent/java-http-signature/commit/1e72d58f2b05adc7e401ce29cea02233c4bdd725) + + ## [4.0.9] - 2019-01-15 + +### Changed + - Upgraded dependency versions. + +## [4.0.8] - 2018-04-29 + +### Fixed + - [NullPointerException when key file is not a valid private key](https://github.com/joyent/java-http-signature/issues/50) + +## [4.0.7] - 2018-04-02 + +### Fixed + - [jaxrs-client-signature integration tests fail to work in Java 9](https://github.com/joyent/java-http-signature/issues/48) +### Changed + - Upgraded dependency versions. + +## [4.0.6] - 2017-12-18 ### Fixed - [Removed reflective mofification of PKCS#11 Security Provider's algorithms map](https://github.com/joyent/java-http-signature/issues/45) which was incorrectly serializing ECDSA keys. @@ -198,5 +253,5 @@ This project adheres to [Semantic Versioning](http://semver.org/). ## [1.0.0] - 2015-11-10 ### Added -- Forked HTTP signature from the Java Manta project. -- Created three artifacts - common, google-http-client and apache-http-client + - Forked HTTP signature from the Java Manta project. + - Created three artifacts - common, google-http-client and apache-http-client diff --git a/apache-http-client/pom.xml b/apache-http-client/pom.xml index b6ea724..67485b3 100644 --- a/apache-http-client/pom.xml +++ b/apache-http-client/pom.xml @@ -12,7 +12,7 @@ java-http-signature com.joyent.http-signature - 4.0.6-SNAPSHOT + 4.1.3-SNAPSHOT apache-http-client-signature @@ -20,7 +20,7 @@ - 4.0.6-SNAPSHOT + 4.1.3-SNAPSHOT diff --git a/apache-http-client/src/main/java/com/joyent/http/signature/apache/httpclient/HttpSignatureAuthScheme.java b/apache-http-client/src/main/java/com/joyent/http/signature/apache/httpclient/HttpSignatureAuthScheme.java index 00a1c59..0f3d19e 100644 --- a/apache-http-client/src/main/java/com/joyent/http/signature/apache/httpclient/HttpSignatureAuthScheme.java +++ b/apache-http-client/src/main/java/com/joyent/http/signature/apache/httpclient/HttpSignatureAuthScheme.java @@ -33,7 +33,8 @@ * @author Elijah Zupancic * @since 1.0.0 */ -@SuppressWarnings("deprecation") +@SuppressWarnings({"deprecation", "checkstyle:javadocmethod", "checkstyle:javadoctype", + "checkstyle:javadocvariable"}) public class HttpSignatureAuthScheme implements ContextAwareAuthScheme { /** * Name of authentication scheme. diff --git a/apache-http-client/src/main/java/com/joyent/http/signature/apache/httpclient/HttpSignatureAuthenticationStrategy.java b/apache-http-client/src/main/java/com/joyent/http/signature/apache/httpclient/HttpSignatureAuthenticationStrategy.java index a62132f..adafd71 100644 --- a/apache-http-client/src/main/java/com/joyent/http/signature/apache/httpclient/HttpSignatureAuthenticationStrategy.java +++ b/apache-http-client/src/main/java/com/joyent/http/signature/apache/httpclient/HttpSignatureAuthenticationStrategy.java @@ -28,8 +28,8 @@ import org.apache.http.impl.client.BasicAuthCache; import org.apache.http.protocol.HttpContext; +import java.util.ArrayDeque; import java.util.Collections; -import java.util.LinkedList; import java.util.Map; import java.util.Objects; import java.util.Queue; @@ -114,11 +114,8 @@ public boolean isAuthenticationRequested(final HttpHost authHost, return true; } - if (clientContext.getTargetAuthState() == null) { - return true; - } + return clientContext.getTargetAuthState() == null; - return false; } @Override @@ -140,11 +137,10 @@ public Map getChallenges(final HttpHost authhost, public Queue select(final Map challengeHeaders, final HttpHost authhost, final HttpResponse response, - final HttpContext context) - throws MalformedChallengeException { + final HttpContext context) { final HttpClientContext httpClientContext = HttpClientContext.adapt(context); final AuthState state = httpClientContext.getTargetAuthState(); - final Queue queue = new LinkedList<>(); + final Queue queue = new ArrayDeque<>(); if (state == null || !state.getState().equals(AuthProtocolState.CHALLENGED)) { queue.add(authOption); diff --git a/apache-http-client/src/main/java/com/joyent/http/signature/apache/httpclient/HttpSignatureConfigurator.java b/apache-http-client/src/main/java/com/joyent/http/signature/apache/httpclient/HttpSignatureConfigurator.java index 55c0ba4..f7dcc94 100644 --- a/apache-http-client/src/main/java/com/joyent/http/signature/apache/httpclient/HttpSignatureConfigurator.java +++ b/apache-http-client/src/main/java/com/joyent/http/signature/apache/httpclient/HttpSignatureConfigurator.java @@ -22,6 +22,8 @@ * @author Elijah Zupancic * @since 2.0.5 */ +@SuppressWarnings({"checkstyle:javadocmethod", "checkstyle:javadoctype", + "checkstyle:javadocvariable", "unused"}) public class HttpSignatureConfigurator { /** * Public/private keypair object used to sign HTTP requests. diff --git a/apache-http-client/src/test/java/com/joyent/http/signature/apache/httpclient/HttpSignatureAuthIT.java b/apache-http-client/src/test/java/com/joyent/http/signature/apache/httpclient/HttpSignatureAuthIT.java index 80434bb..8f2f6b5 100644 --- a/apache-http-client/src/test/java/com/joyent/http/signature/apache/httpclient/HttpSignatureAuthIT.java +++ b/apache-http-client/src/test/java/com/joyent/http/signature/apache/httpclient/HttpSignatureAuthIT.java @@ -36,6 +36,8 @@ public class HttpSignatureAuthIT { private static final String SDC_ACCOUNT_ENV_KEY = "SDC_ACCOUNT"; private static final String SDC_KEY_PATH_ENV_KEY = "SDC_KEY_PATH"; + private static final ThreadLocalSigner SIGNER = new ThreadLocalSigner(); + // @Test public void canAuthenticate() throws IOException { final KeyPair keyPair = createKeyPair(); @@ -60,15 +62,6 @@ public void canAuthenticate() throws IOException { HttpHead head = new HttpHead(uri); HttpClientContext context = new HttpClientContext(); - -// AuthCache authCache = new BasicAuthCache(); -// context.setAuthCache(authCache); -// AuthState authState = new AuthState(); -// authState.update(configurator.getAuthScheme(), credentials); -// -// context.setAttribute(HttpClientContext.TARGET_AUTH_STATE, -// authState); -// context.getTargetAuthState().setState(AuthProtocolState.UNCHALLENGED); HttpResponse response = conn.execute(head, context); assertEquals(response.getStatusLine().getStatusCode(), @@ -113,10 +106,9 @@ private KeyPair createKeyPair() { final KeyPair keyPair; final String keyPath = System.getenv(SDC_KEY_PATH_ENV_KEY); Objects.requireNonNull(keyPath, SDC_KEY_PATH_ENV_KEY + " must be set"); - final ThreadLocalSigner signer = new ThreadLocalSigner(); try { - keyPair = signer.get().getKeyPair(new File(keyPath).toPath()); + keyPair = SIGNER.get().getKeyPair(new File(keyPath).toPath()); } catch (IOException e) { String msg = String.format("Unable to read key files from path: %s", keyPath); diff --git a/checkstyle.xml b/checkstyle.xml index c11a34d..db65c26 100644 --- a/checkstyle.xml +++ b/checkstyle.xml @@ -42,6 +42,11 @@ + + + + + @@ -69,13 +74,12 @@ - - - - - + + + + - + @@ -101,12 +105,7 @@ - - - - - - + diff --git a/common/pom.xml b/common/pom.xml index 1275208..9b7e7df 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -12,7 +12,7 @@ java-http-signature com.joyent.http-signature - 4.0.6-SNAPSHOT + 4.1.3-SNAPSHOT http-signature-common @@ -20,9 +20,9 @@ - 1.58 - 2.0.0 - 1.10 + 1.65 + 3.0.0 + 1.14 diff --git a/common/src/main/java/com/joyent/http/signature/KeyFingerprinter.java b/common/src/main/java/com/joyent/http/signature/KeyFingerprinter.java index fa26299..a31091a 100644 --- a/common/src/main/java/com/joyent/http/signature/KeyFingerprinter.java +++ b/common/src/main/java/com/joyent/http/signature/KeyFingerprinter.java @@ -46,7 +46,7 @@ private KeyFingerprinter() { * still the one used by Triton and Manta as the key id. * * @param keyPair The KeyPair to calculate the fingerprint of - * @return The fingerprint (ex: {@code 9f:0b:50:ae:e3:da:f6:eb:b5:71:9a:69:ee:79:9e:c2}) + * @return The MD5 fingerprint (ex: {@code 9f:0b:50:ae:e3:da:f6:eb:b5:71:9a:69:ee:79:9e:c2}) */ public static String md5Fingerprint(final KeyPair keyPair) { Objects.requireNonNull(keyPair); @@ -70,7 +70,7 @@ public static String md5Fingerprint(final KeyPair keyPair) { * SHA256 of the serialized public key as a fingerprint. * * @param keyPair The KeyPair to calculate the fingerprint of - * @return The fingerprint (ex: {@code: LP3pWCEhg6rdmE05GhUKbZ7uOZqsJd0sK0AR3sVoMq4}) + * @return The SHA fingerprint (ex: {@code LP3pWCEhg6rdmE05GhUKbZ7uOZqsJd0sK0AR3sVoMq4}) */ public static String sha256Fingerprint(final KeyPair keyPair) { Objects.requireNonNull(keyPair); diff --git a/common/src/main/java/com/joyent/http/signature/KeyPairLoader.java b/common/src/main/java/com/joyent/http/signature/KeyPairLoader.java index c584ce1..74d815e 100644 --- a/common/src/main/java/com/joyent/http/signature/KeyPairLoader.java +++ b/common/src/main/java/com/joyent/http/signature/KeyPairLoader.java @@ -161,6 +161,8 @@ public static KeyPair getKeyPair(final Path keyPath, final char[] password) thro try (InputStream is = Files.newInputStream(keyPath)) { return getKeyPair(is, password); + } catch (final KeyLoadException kle) { + throw new IOException("Unable to load private key at path: " + keyPath, kle); } } @@ -246,6 +248,8 @@ public static KeyPair getKeyPair(final InputStream is, } pemKeyPair = (PEMKeyPair) pemObject; + } else if (pemObject == null) { + throw new KeyLoadException("Failed to load PEM object, please verify the input is a private key"); } else { throw new KeyLoadException("Unexpected PEM object loaded: " + pemObject.getClass().getCanonicalName()); } diff --git a/common/src/main/java/com/joyent/http/signature/Signer.java b/common/src/main/java/com/joyent/http/signature/Signer.java index f8be884..61d3e2a 100644 --- a/common/src/main/java/com/joyent/http/signature/Signer.java +++ b/common/src/main/java/com/joyent/http/signature/Signer.java @@ -12,7 +12,6 @@ import java.io.IOException; import java.io.InputStream; -import java.io.UnsupportedEncodingException; import java.nio.charset.StandardCharsets; import java.nio.file.Path; import java.security.InvalidKeyException; @@ -48,6 +47,7 @@ public class Signer { * defined in the standard library using modern classes. */ @Deprecated + @SuppressWarnings("DateFormatConstant") public static final DateFormat DATE_FORMAT = new SimpleDateFormat( "EEE MMM d HH:mm:ss yyyy zzz", Locale.ENGLISH); @@ -112,7 +112,7 @@ public Signer(final Builder builder) { httpHeaderAlgorithm = builder.httpHeaderAlgorithm(); if (provider == null) { try { - signature = Signature.getInstance(builder.javaStandardName(provider)); + signature = Signature.getInstance(builder.javaStandardName(null)); } catch (NoSuchAlgorithmException nsae) { throw new CryptoException(nsae); } @@ -215,6 +215,7 @@ public String createAuthorizationHeader(final String login, * @param keyPair public/private keypair * @return value to Authorization header */ + @SuppressWarnings("unused") public String createAuthorizationHeader(final String login, final KeyPair keyPair) { return createAuthorizationHeader(login, keyPair, defaultSignDateAsString()); @@ -324,7 +325,7 @@ public String createAuthorizationHeader(final String login, try { signature.initSign(keyPair.getPrivate()); final String signingString = String.format(AUTHZ_SIGNING_STRING, date); - signature.update(signingString.getBytes("UTF-8")); + signature.update(signingString.getBytes(StandardCharsets.UTF_8)); final byte[] signedDate = signature.sign(); final byte[] encodedSignedDate = Base64.encode(signedDate); final String fingerprint = KeyFingerprinter.md5Fingerprint(keyPair); @@ -335,8 +336,6 @@ public String createAuthorizationHeader(final String login, throw new CryptoException("invalid key", e); } catch (final SignatureException e) { throw new CryptoException("invalid signature", e); - } catch (final UnsupportedEncodingException e) { - throw new CryptoException("invalid encoding", e); } } @@ -471,17 +470,15 @@ public boolean verifyAuthorizationHeader(final KeyPair keyPair, final String encodedSignedDate = authzHeader.substring(startIndex + AUTHZ_PATTERN.length(), authzHeader.length() - 1); - final byte[] signedDate = Base64.decode(encodedSignedDate.getBytes("UTF-8")); + final byte[] signedDate = Base64.decode(encodedSignedDate.getBytes(StandardCharsets.UTF_8)); - signature.update(myDate.getBytes("UTF-8")); + signature.update(myDate.getBytes(StandardCharsets.UTF_8)); return signature.verify(signedDate); } catch (final InvalidKeyException e) { throw new CryptoException("invalid key", e); } catch (final SignatureException e) { throw new CryptoException("invalid signature", e); - } catch (final UnsupportedEncodingException e) { - throw new CryptoException("invalid encoding", e); } } @@ -656,15 +653,17 @@ public static SigningAlgorithmHelper create(final KeyPair keyPair) { * @return New {@code SigningAlgorithmHelper} instance. */ public static SigningAlgorithmHelper create(final String algorithm) { - if (algorithm.equals("RSA")) { - return new RsaHelper(); - } else if (algorithm.equals("DSA")) { - return new DsaHelper(); + switch (algorithm) { + case "RSA": + return new RsaHelper(); + case "DSA": + return new DsaHelper(); // See NssBridgeKeyConverter on the two names - } else if (algorithm.equals("ECDSA") || algorithm.equals("EC")) { - return new EcdsaHelper(); - } else { - throw new IllegalArgumentException("invalid signing algorithm: " + algorithm); + case "ECDSA": + case "EC": + return new EcdsaHelper(); + default: + throw new IllegalArgumentException("invalid signing algorithm: " + algorithm); } } diff --git a/common/src/main/java/com/joyent/http/signature/crypto/NativeRSAProvider.java b/common/src/main/java/com/joyent/http/signature/crypto/NativeRSAProvider.java index df1430f..e03d839 100644 --- a/common/src/main/java/com/joyent/http/signature/crypto/NativeRSAProvider.java +++ b/common/src/main/java/com/joyent/http/signature/crypto/NativeRSAProvider.java @@ -21,6 +21,7 @@ public class NativeRSAProvider extends Provider { * Creates an instance of a JCE provider that supports native RSA via jnagmp. */ public NativeRSAProvider() { + // This constructor signature will need to be upgraded in the future super("native-rsa", 1.0, "SHA Digest with RSA Native implementation"); put("Signature.SHA1withNativeRSA", NativeRSAWithSHA.SHA1.class.getName()); put("Signature.SHA256withNativeRSA", NativeRSAWithSHA.SHA256.class.getName()); diff --git a/common/src/test/java/com/joyent/http/signature/KeyFingerprinterIntegrationCycle.java b/common/src/test/java/com/joyent/http/signature/KeyFingerprinterIntegrationCycle.java index 3cd4081..3f60ca0 100644 --- a/common/src/test/java/com/joyent/http/signature/KeyFingerprinterIntegrationCycle.java +++ b/common/src/test/java/com/joyent/http/signature/KeyFingerprinterIntegrationCycle.java @@ -13,10 +13,12 @@ import java.io.File; import java.io.IOException; import java.io.InputStreamReader; +import java.io.UncheckedIOException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; +import java.util.stream.Stream; /** * Utility stress test class for comparing generated fingerprints to @@ -55,6 +57,7 @@ public void keygen(int iteration) throws IOException, InterruptedException { } // NOTE: need -E md5 for openssh > 6.7 + @SuppressWarnings("StringSplitter") public String readMd5Fingerprint(int iteration) throws IOException, InterruptedException { Process p = Runtime.getRuntime().exec(new String[] { "ssh-keygen", "-l", "-f", privateFileName(iteration) + ".pub"}); @@ -87,13 +90,12 @@ public void run() { throw new RuntimeException(e); } } - try { - Files.walk(tmpDir) - .map(Path::toFile) + try (Stream paths = Files.walk(tmpDir)){ + paths.map(Path::toFile) .sorted((o1, o2) -> -o1.compareTo(o2)) .forEach(File::delete); } catch (IOException e) { - throw new RuntimeException(e); + throw new UncheckedIOException(e); } } diff --git a/common/src/test/java/com/joyent/http/signature/KeyPairLoaderTest.java b/common/src/test/java/com/joyent/http/signature/KeyPairLoaderTest.java index 052ddbc..4dda762 100644 --- a/common/src/test/java/com/joyent/http/signature/KeyPairLoaderTest.java +++ b/common/src/test/java/com/joyent/http/signature/KeyPairLoaderTest.java @@ -22,7 +22,6 @@ import java.nio.file.Path; import java.security.KeyPair; import java.security.KeyPairGenerator; -import java.security.NoSuchAlgorithmException; import java.security.Security; import java.util.UUID; @@ -33,13 +32,52 @@ public class KeyPairLoaderTest { private static final String RSA_HEADER = "-----BEGIN RSA PRIVATE KEY-----"; + /** + * Since serializing a public key to the OpenSSH format would require an external library we've generated + * a key just for testing. The corresponding private key was destroyed. + */ + private static final String TEST_PUBLIC_KEY = + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDZbnRl5z0dd3NAvRprIrUcRJxJzhnNvozxlBUYj47+OtxP6dlETjrvMHtqg7/+NZ" + + "C+4/HyXF8MBYmNKQXXzOOThIlG/Cxx4rSNRx3TBeKijQ8+gw2c5QwM/0SHv73WGgL81Br07Fk3y2I7eqHvyBD428jBoOgH" + + "+ecGT4pdL/Zyrw=="; + private static final ClassLoader CLASS_LOADER = KeyPairLoaderTest.class.getClassLoader(); public void willThrowOnNullInputs() { Assert.assertThrows(() -> - KeyPairLoader.getKeyPair((String) null, null)); + KeyPairLoader.getKeyPair((File) null, null)); Assert.assertThrows(() -> KeyPairLoader.getKeyPair((Path) null, null)); + Assert.assertThrows(() -> + KeyPairLoader.getKeyPair((String) null, null)); + Assert.assertThrows(() -> + KeyPairLoader.getKeyPair((InputStream) null, null)); + } + + public void willThrowUsefulExceptionsOnEmptyFile() throws IOException { + final Path emptyFile = Files.createTempFile("id_rsa", ""); + + final IOException emptyFileException = Assert.expectThrows(IOException.class, () -> + KeyPairLoader.getKeyPair(emptyFile)); + + // error message should contain the path specified and the words "private key" + Assert.assertTrue(emptyFileException.getMessage().contains(emptyFile.toString())); + Assert.assertTrue(emptyFileException.getMessage().contains("private key")); + } + + public void willThrowUsefulExceptionsOnPublicKeyFile() throws Exception { + final Path publicKeyFile = Files.createTempFile("id_rsa", ".pub"); + + try (final FileOutputStream fos = new FileOutputStream(publicKeyFile.toFile())) { + fos.write(TEST_PUBLIC_KEY.getBytes(StandardCharsets.UTF_8)); + } + + final IOException publicKeyFileException = Assert.expectThrows(IOException.class, () -> + KeyPairLoader.getKeyPair(publicKeyFile)); + + // error message should contain the path specified and the words "private key" + Assert.assertTrue(publicKeyFileException.getMessage().contains(publicKeyFile.toString())); + Assert.assertTrue(publicKeyFileException.getMessage().contains("private key")); } public void canLoadGeneratedBytesKeyPair() throws Exception { @@ -142,7 +180,7 @@ public void willThrowWhenPkcs11IsRequestedButUnavailable() throws Exception { // TEST UTILITY METHODS - private KeyPair generateKeyPair() throws NoSuchAlgorithmException { + private KeyPair generateKeyPair() throws Exception { final KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA"); generator.initialize(1024); return generator.generateKeyPair(); @@ -167,7 +205,7 @@ private byte[] serializePrivateKey(final KeyPair keyPair, return baos.toByteArray(); } - private void compareKeyContents(KeyPair expectedKeyPair, KeyPair actualKeyPair) { + private void compareKeyContents(final KeyPair expectedKeyPair, final KeyPair actualKeyPair) { AssertJUnit.assertArrayEquals( expectedKeyPair.getPrivate().getEncoded(), actualKeyPair.getPrivate().getEncoded()); diff --git a/common/src/test/java/com/joyent/http/signature/SignerTestUtil.java b/common/src/test/java/com/joyent/http/signature/SignerTestUtil.java index a7c8ce8..a955a80 100644 --- a/common/src/test/java/com/joyent/http/signature/SignerTestUtil.java +++ b/common/src/test/java/com/joyent/http/signature/SignerTestUtil.java @@ -14,7 +14,7 @@ import java.util.Map; public class SignerTestUtil { - @SuppressWarnings("serial") + @SuppressWarnings({"serial", "DoubleBraceInitialization"}) public static final Map keys = new HashMap() {{ put("rsa_1024", new TestKeyResource("9f:0b:50:ae:e3:da:f6:eb:b5:71:9a:69:ee:79:9e:c2", "LP3pWCEhg6rdmE05GhUKbZ7uOZqsJd0sK0AR3sVoMq4", diff --git a/google-http-client/pom.xml b/google-http-client/pom.xml index 701a58b..ff094c8 100644 --- a/google-http-client/pom.xml +++ b/google-http-client/pom.xml @@ -9,7 +9,7 @@ java-http-signature com.joyent.http-signature - 4.0.6-SNAPSHOT + 4.1.3-SNAPSHOT 4.0.0 @@ -19,8 +19,8 @@ - 4.0.6-SNAPSHOT - 1.23.0 + 4.1.3-SNAPSHOT + 1.32.1 diff --git a/google-http-client/src/test/java/com/joyent/http/signature/google/httpclient/RequestHttpSignerTest.java b/google-http-client/src/test/java/com/joyent/http/signature/google/httpclient/RequestHttpSignerTest.java index ed8b50e..a9bd3dd 100644 --- a/google-http-client/src/test/java/com/joyent/http/signature/google/httpclient/RequestHttpSignerTest.java +++ b/google-http-client/src/test/java/com/joyent/http/signature/google/httpclient/RequestHttpSignerTest.java @@ -8,6 +8,7 @@ import com.google.api.client.http.HttpRequestFactory; import com.google.api.client.http.HttpTransport; import com.google.api.client.testing.http.MockHttpTransport; +import com.google.common.primitives.Ints; import com.joyent.http.signature.Signer; import com.joyent.http.signature.SignerTestUtil; import com.joyent.http.signature.ThreadLocalSigner; @@ -97,7 +98,7 @@ public void canSignRequest() throws IOException { System.out.println(String.format("Total signing time for request: %dms", total)); } - long average = Math.round(running / iterations); + long average = Ints.saturatedCast(running / iterations); System.out.println(String.format("Average signing time: %dms", average)); String authorization = request.getHeaders().getAuthorization(); diff --git a/jaxrs-client/pom.xml b/jaxrs-client/pom.xml index 881c21e..a0078ba 100644 --- a/jaxrs-client/pom.xml +++ b/jaxrs-client/pom.xml @@ -12,7 +12,7 @@ java-http-signature com.joyent.http-signature - 4.0.6-SNAPSHOT + 4.1.3-SNAPSHOT jaxrs-client-signature @@ -20,14 +20,14 @@ - 1.1.13.Final - 1.0.1 - 4.0.6-SNAPSHOT - 8.0 - 2.1 - 2.26 - 4.1.2.173.0.1 - 1.1.13.Final + 1.6.0.Final + 1.0.2 + 4.1.3-SNAPSHOT + 8.0.1 + 2.1.1 + 2.30.1 + 5.201 + 1.6.0.Final diff --git a/jaxrs-client/src/test/java/com/joyent/http/signature/jaxrs/client/SignedRequestClientRequestFilterIT.java b/jaxrs-client/src/test/java/com/joyent/http/signature/jaxrs/client/SignedRequestClientRequestFilterIT.java index 651bd7f..50f3ea6 100644 --- a/jaxrs-client/src/test/java/com/joyent/http/signature/jaxrs/client/SignedRequestClientRequestFilterIT.java +++ b/jaxrs-client/src/test/java/com/joyent/http/signature/jaxrs/client/SignedRequestClientRequestFilterIT.java @@ -127,7 +127,6 @@ public void testSignedRequestWithFilter() throws URISyntaxException, IOException } Assert.assertNotNull(response); - Assert.assertNotNull(response.getStatus()); Assert.assertEquals(response.getStatus(), 200); logger.debug("response status code: {}", response.getStatus()); Assert.assertNotNull(response.getMediaType()); @@ -161,6 +160,4 @@ public void testSignedRequestWithFilter() throws URISyntaxException, IOException && authorizationString.contains("signature=") ); } - - } diff --git a/microbench/pom.xml b/microbench/pom.xml index 5fc71bb..c5dd7fd 100644 --- a/microbench/pom.xml +++ b/microbench/pom.xml @@ -12,7 +12,7 @@ file, You can obtain one at http://mozilla.org/MPL/2.0/. java-http-signature com.joyent.http-signature - 4.0.6-SNAPSHOT + 4.1.3-SNAPSHOT microbench @@ -20,8 +20,8 @@ file, You can obtain one at http://mozilla.org/MPL/2.0/. - 4.0.6-SNAPSHOT - 1.19 + 4.1.3-SNAPSHOT + 1.21 benchmarks diff --git a/microbench/src/main/java/com/joyent/http/signature/BenchmarkSigner.java b/microbench/src/main/java/com/joyent/http/signature/BenchmarkSigner.java index 2a1dda5..8f7e452 100644 --- a/microbench/src/main/java/com/joyent/http/signature/BenchmarkSigner.java +++ b/microbench/src/main/java/com/joyent/http/signature/BenchmarkSigner.java @@ -88,8 +88,7 @@ public boolean verifyHeaderLatency() { } protected String signHeader(final String now) { - String authzHeader = signer.createAuthorizationHeader("bench", keyPair, now); - return authzHeader; + return signer.createAuthorizationHeader("bench", keyPair, now); } protected boolean verifyHeader(final String ts, final String header) { diff --git a/pom.xml b/pom.xml index aaeb607..ab30a3b 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ com.joyent.http-signature java-http-signature - 4.0.6-SNAPSHOT + 4.1.3-SNAPSHOT pom java-http-signature @@ -41,6 +41,12 @@ Joyent joyent.com + + ashwin@nair.name + Ashwin A Nair + Joyent + joyent.com + Phillip Ross phillip.w.g.ross at gmail.com @@ -89,36 +95,36 @@ 1 true - 8.2 - 4.5.3 - 6.11 - 1.7.25 + 8.31 + 4.5.11 + 6.14.3 + 1.7.30 1.2.3 - 2.17 - 3.0.0 - 3.7.0 - 3.0.2 - 2.8.2 - 1.4.1 - 2.20.1 + 3.1.1 + 3.1.0 + 3.8.1 + 3.1.1 + 3.0.0-M1 + 3.0.0-M2 + 2.22.2 1.6 - 2.5.2 - 3.0.2 - 1.4 - 2.10.4 - 2.5 + 3.0.0-M1 + 3.2.0 + 3.0.0 + 3.1.1 + 3.0.0 2.5.3 - 3.0.2 - 2.4.2 - 3.0.1 - 2.20.1 - 0.7.9 - 2.9 + 3.1.0 + 3.2.2 + 3.2.1 + 2.22.2 + 0.8.5 + 3.0.0 - 2.8.2 - 2.1.1 + 2.8.6 + 2.3.4 @@ -233,9 +239,7 @@ ${maven-failsafe-plugin.version} ${surefire.forkCount} - - exampleSystemPropertyValue - + false ${surefire.useSystemClassLoader} false