All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.
- Dependency upgrade for BC, Checkstyle & Codec libraries - BouncyCastle: 1.64 → 1.65 - Commons-Codec: 1.13 → 1.14 - Checkstyle: 8.30 → 8.3
- Upgraded dependencies to latest stable versions: - 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, HttpSignatureConfigurator.java and fixed checkstyle errors.
- Upgraded dependency versions for BC and Apache-Http-Client.
- Upgrade Apache-Http-Client Dependency
- Upgraded BC Version To 1.61
- Upgraded dependency versions.
- Upgraded dependency versions.
- Removed reflective mofification of PKCS#11 Security Provider's algorithms map which was incorrectly serializing ECDSA keys.
- Removed use of javax.xml.bind.DatatypeConverter
- Resolved compiler warnings.
- Upgraded all dependencies to the latest version.
- The key fingerprint is now internally calculated instead of using a user supplied String.
- Utility methods for calculating MD5 fingerprints, calculating SHA256 fingerprints, and verifying OpenSSH's string format have been added.
- It is now possible to load a
KeyPair
from aPath
orFile
in combination with a passphrase.
- Methods that took an explicit fingerprint
String
now ignore it in favor of the internally calculated one. These methods have been deprecated and will be removed in a future version.
- Bouncy Castle dependency was upgraded.
- An unused dependency on Apache httpclient has been removed from the
common
module.
- HTTP signature caching with Apache HTTP Client module - signatures with the same date time value are now cached and signature generation is skipped. This is useful for high-traffic connections to Manta.
- Added support for libnss to do ECDSA signing via the PKCS11 interface.
- DSA and ECDSA keys (and signing) are now supported. No changes are needed at this time if only RSA keys are used. See below for related API changes and deprecations.
- Multiple hash algorithms (besides SHA256) are now supported. Because signing is almost always more expensive than hashing, changing from the default hashing algorithm is unlikely to yield a significant performance benefit.
- A new
microbench
module contains micro-benchmarks to aid in the development of this library. They are not a stable public contract.
- The minimum Java version is now 1.8.
- To support multiple key types, a builder pattern is now the
preferred way to instantiate
Signer
andThreadLocalSigner
. SeeSigner.Builder
for more details. Given a key, the builder can select the appropriate signing algorithm. The old constructors are now deprecated and will be removed in a future release. - Several public fields and methods of
Signer
that exposed internal details have been removed. That is the breaking change of this release. - Since a
Signer
now needs aKeyPair
to be instantiated, the various "get me a key" methods are moved toKeyPairLoader
. The old methods are now deprecated and will be removed in a future release. - Previously it was easy to end up with multiple ThreadLocalSigner
instances. This was mostly harmless (except for resources cleanup)
when everything was hard coded to be
SHA256withRSA
, but quickly leads to errors when the signers have different configuration. It is now best to create a singleThreadLocalSigner
per key (ie usually just one) and pass that downstream. Several classes inapache-http-client
andgoogle-http-client
have changed to encourage this. Methods that implicitly created an unconfiguredThreadLocalSigner
are now deprecated and will be removed in a future release.
- We now use JCE specified message digests for calculating checksums. This allows for plugging native checksum algorithms.
- We now append total signing time as an HTTP header.
- Added MPLv2 headers to all of the source files.
- Upgraded checkstyle version and added header check.
- Used additional methods available from jnagmp to accelerate signature generation.
- Deprecated com.joyent.http.signature.google.httpclient.RequestHttpSigner.signURI. This method is now being provided directly in the Manta SDK.
- Upgraded to jnagmp 2.0.0.
- Added HttpSignatureRequestInterceptor as an addition method to perform authentication with Apache HTTP Client.
- Upgraded Bouncy Castle libraries.
- Upgraded Slf4j.
- Upgraded Logback.
- Upgraded Arquillian Glassfish Embedded.
- Upgraded Jersey client.
- Upgraded Payara Embedded Web.
- Upgraded Arquillian TestNG container.
- Upgraded Apache HTTP Client.
- Upgraded Google HTTP Client.
- Changed license from MIT to the MPL v2.
- Fixed #12 - Removed request id generation from Apache HTTP client helper because it best belongs in the consumer of the library.
- Fixed #12 - Removed request id generation from Google HTTP client helper because it best belongs in the consumer of the library.
- Fixed #11 - Apache HTTP Client helper library will loop infinitely when authentication fails.
- Added helper class HtpSignatureConfigurator that makes configuring HttpClientBuilder instances easier.
- Updated Apache HTTP Client libraries, so they don't always rechallenge.
- Fixed Apache HTTP Client libraries, so that they work as expected.
- Added OS detection of Illumos/SmartOS/Solaris so that the library can actually load the native jnagmp library in that environment.
- Added better support for dealing with exceptions thrown when clearing
threadlocals with
ThreadLocalSigner
. Added relevant exception class:ThreadLocalClearException
. - Upgraded jnagmp library to 1.1.0 so that it supports the JVM on Illumos/SmartOS/Solaris.
- Renamed HttpSigner to Signer and changed it from a static utility class to an instance class.
- Wrapped all Signer instances in ThreadLocal<> because the underlying field Signature is not compatible in any way with multi-threading.
- Removed system properties configuration of native extentions and moved to an explicit constructor model.
- Added support for native RSA SHA256 calculation in order to improve HTTP signing performance.
- Upgraded Bouncy Castle dependency.
- Upgraded Google HTTP Client dependency.
- Removed inaccurate restriction on HTTP method for signing URLs.
- jaxrs-client module module added.
- Added support for signing arbitrary byte arrays.
- Forked HTTP signature from the Java Manta project.
- Created three artifacts - common, google-http-client and apache-http-client