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