All notable changes to this project will be documented in this file. The format is based on Keep a Changelog.
- To request the IP address of the device running Smart-ID app, the following methods were added:
- AuthenticationRequestBuilder.withShareMdClientIpAddress(boolean)
- CertificateRequestBuilder.withShareMdClientIpAddress(boolean)
- SignatureRequestBuilder.withShareMdClientIpAddress(boolean)
- The IP address returned can be read out using:
- SmartIdAuthenticationResponse.getDeviceIpAddress()
- SmartIdCertificate.getDeviceIpAddress()
- SmartIdSignature.getDeviceIpAddress()
- upgrade jackson, jersey and dependency-check-maven plugin
- How to extract date-of-birth from a certificate added as a separate paragraph to readme.
- Added two tests into SmartIdIntegrationTest that demonstrate fetching and parsing a certificate with date-of-birth
- Changed demo SSL certificate
- add correct way of adding trusted certificates in Readme #73
- added jakarta.ws.rs:jakarta.ws.rs-api as a dependency to avoid ClassNotFoundException with spring framework
- Updated dependencies
- How to use a proxy server - added documentation to README.md and tests to ReadmeTest.java
- Reduced number of external dependencies by removing commons-lang3, commons-io, commons-codec.
- SmartIdAuthenticationResponse.getDeviceIpAddress()
- SmartIdSignature.getDeviceIpAddress()
- SessionStatus.getDeviceIpAddress()
- bug where non-Baltic certificates without date-of-birth resulted with an exception
- Possible NPE fix (in rare cases under load testing the SessionStatus is null)
- Changed document number in tests
- Added a flag (SmartIdIntegrationTest.TEST_AGAINST_SMART_ID_DEMO) to switch off tests that make requests to Smart-ID demo env.
- AuthenticationResponseValidator.constructAuthenticationIdentity() converted into a static method
- Bug fixed in parsing date of birth for Latvian ID-codes.
- AuthenticationIdentity.getDateOfBirth() to get person birthdate (if available).
- Add library version number and Java major release number to User-Agent header of outgoing requests
- Switch to Smart-ID API 2.0
AuthenticationResponseValidator.validate()
returns AuthenticationIdentity if validation passes. If validation fails thenSmartIdResponseValidationException
or its subclassCertificateLevelMismatchException
(if signer's certificate is below requested level) is thrown.- Grouped exceptions thrown by library to reduce need to handle each exception individually. See Readme.md for detail info.
- Minimum Java level raised to Java 8
- Relying Party must keep a list of trusted certificates (in plain text or in a trust store).
- request.setVcChoice() was removed in Smart-ID API 2.0 and replaced by request.setAllowedInteractionsOrder();
- New parameter
allowedInteractionsOrder
added to authentication and signing requests. It replaces parameters displayText and requestProperties.vcChoice - New parameter
interactionFlowUsed
added into session status response message. - If user refuses then a dedicated exception is thrown that indicates exact screen where user pressed cancel. Thrown exception is subclass of
UserRefusedException
.
- all endpoints using
NationalIdentityNumber
are now removed as this functionality has been removed from Smart-ID API 2.0 - errors that the caller cannot recover from are now removed from method throws list.
- Hard-coded certificates were removed together with methods:
- SmartIdClient.useDemoEnvSSLCertificates()
- SmartIdClient.useLiveEnvSSLCertificates()
- UserSelectedWrongVerificationCodeException is now thrown when user selects wrong verification code from three-choice selection.
- Bumped jackson-databind from 2.9.10.1 to 2.9.10.4
- Updated Maven Dependency Check plugin version.
- AuthenticationRequestBuilder method withRequestProperties access modifier changed to public
- Maven wrapper to project
- CVE-2019-16943
- CVE-2019-17531
- CVE-2019-16942
- CVE-2019-16335
- CVE-2019-14540
- SSL pinning to verify, that the client is communicating with SK environment #3
- SmartIdClient.addTrustedSSLCertificates(String ...sslCertificate) - add ssl certificates when Sk starts to use new certs
- SmartIdClient.setTrustedSSLCertificates(String ...sslCertificates) - set specific ssl certificates to trust
- SmartIdClient.useDemoEnvSSLCertificates() - uses only demo env ssl certificates
- SmartIdClient.useLiveEnvSSLCertificates() - uses only live env ssl certificates
- SmartIdClient.loadSslCertificatesFromKeystore(KeyStore keyStore) - loads only the certificates from keystore
- Client configuration on different JAX-WS implementations. #22, #11
- SmartIdClient.setConfiguredClient()
- SmartIdClient.setNetworkConnectionConfig()
- Capabilities parameter (#25)
- Request properties (vcChoice) for authentication and signing (#21)
- Support for Semantics Identifier (#17)
- Document number to authentication responses (#14)
- Maven dependency check plugin for continuous security
- SpotBugs plugin for continuous bug detection
- SmartIdClient.getSmartIdConnector()
- SmartIdRequestBuilder.validateSessionResult
- MIT license to code base
- renamed SignatureSessionResponse.sessionId -> SignatureSessionResponse.sessionID
- renamed SmartIdRestConnector -> SmartIdConnector
- renamed SessionStatus.getCertificate() -> SessionStatus.getCert()
- renamed SessionSignature.getValueInBase64() -> SessionSignature.getValue()
- improved and cleaned up tests