- Update to latest WARDEN-roboto, bringing Google's PKI cert path validator to guard against cert path validations
- Per-App trust anchor overrides
- BEHAVIOURAL CHANGE:
- Android attestation errors due to certificate revocation don't fall into the
Contentexception category any more - Instead, they are now more correctly binned into the
Certificate.Trustexception subtree - Per-App trust anchor overrides changes the order of checks on Android:
- App-metadata checks are now performed first
- Consequence: package, signature, … mismatches are reported even before certificate chain validation errors
- Android attestation errors due to certificate revocation don't fall into the
- Kotlin 2.1.21
- Bouncy Castle 1.81
- KmmResult 1.9.3
- Signum 3.16.3
- Ktor 3.2.0
- Update to warden-roboto 1.8.1, allowing for ignoring Android attestation statement creation time
- Force specifying whether to ignore proxy settings for replaying debug attestation statements.
- Update to WARDEN-roboto 1.8.0, which changes the Android configuration format to use
Longinstead ofIntfor temporal units in seconds - To match WARDEN-roboto, the
attestationStatementValiditySecondsiOS config has also been changed toLong - Ability to record debug infos, serialize, deserialize and replay them
- Re-structure high-level attestation checks
- Dependency Updates
- Kotlin 2.1.20
- Kotlinx-Serialization 1.8.0
- Ktor 3.0.3
- include latest WARDEN-roboto to work around upstream bug #77
- Dependency Updates:
- Ktor 3.0.3
- Fix documentation issue (Android version was missing a zero in all docs)
- Dependency Updates
- WARDEN-roboto 1.7.1 (also fixing the same documentation issue)
- Kotlin 2.1.0
- Signum Indispensable 3.12.0
- Bouncy Castle 1.79
- Fix wrong dependency
- Update to WARDEN-roboto 1.7.0
- Android attestation statements (for SW, HW, but not Hybrid Nougat Attestation) do now verify attestation creation time!
- Refer to the WARDEN-roboto changelog!
- Change Android verification offset calculation:
It is now the sum of the toplevel offset and the Android-specific offset - Change the reason for iOS attestation statement temporal invalidity:
- It is now
AttestationException.Content.iOS(cause = IosAttestationException(…, reason = IosAttestationException.Reason.STATEMENT_TIME))- This reason was newly introduced in this release, making it binary and source incompatible!
- iOS attestations are now also rejected if their validity starts in the future
- The validity time can now be configured in the same way as for Android, using the
attestationStatementValiditySecondsproperty - Any configured
verificationTimeOffsetis NOT automatically compensated for any more. This means if you have previously used a five minutes offset, you now have to manually increase theattestationStatementValiditySecondsto10 * 60!
- It is now
- Introduce new attestation format
- Fix Parsing of iOS Build Numbers
- Dependency Updates:
- Kotlin 2.0.20
- Serialization 1.7.2
- Rely on Signum to transcode public keys
- Add working
hashCodeandequalstoAttestationResultandKeyAttestation - Rework key attestation key comparison
- Try all encodings for public keys
- Throw exception with very detailed message when key attestation runs into a logical error
- Rebrand to WARDEN
- Dependency Updates
- Update android-attestation 1.5.2 to WARDEN-roboto 1.6.0
- Dependency Updates:
- Android-Attestation 1.5.2 with HTTP Proxy support for fetching revocation info
- Java 17
- Kotlin 2.0.0
- bouncycastle: 1.78.1!!
- coroutines: 1.8.1
- datetime: 0.6.0
- kmmresult: 1.6.1
- kotest: 5.9.1!!
- kotlin: 2.0.0
- ksp: 1.0.22
- ktor: 2.3.11
- napier: 2.7.1
- nexus: 1.3.0
- serialization: 1.7.1
- Fix publishing
- Gradle 8.7
Breaking changes ahead!
- Parsing of iOS Build numbers in addition to OS Versions
- Requires changes to configuration format
- Introduces changes to IOS Attestation result
- Update to latest android-attestation
- Changes types of ParsedAttestationRecord's properties
- Exposes Guava as API dependency
- Update to latest conventions plugin
- Kotlin 1.9.23
- Publish version catalog
- Depend on BC 1.77 strict
- Gradle 8.5
- better iOS-specific exception handling and enumerable error cases
- Kotlin 1.9.22
- Various dependency updates including BC
- make
foldfunction ofKeyAttestationinline
- update android-attestation
- update gradle conventions
- update android-attestation
- fix temporal iOS receipt validation error not being propagated as such
- make all config classes
dataclasses - update to android attestation 1.2.1
- Discriminate between temporal certificate validation errors and trust-related ones
- Documentation updates
- Update to android-attestation 1.2.0
- Refactor exceptions
- introduce builder for
AppData - Introduce
ByteArray.parseToPublicKeywhich takes ANSI X9.63 and DER-encoded byte arrays (only P-256 is supported for ANSI) - Update android-attestation to 1.1.0
- remove
verifyAttestation - introduce
verifyKeyAttestationtaking an encoded public key as a byte array
This release introduces breaking changes as it allows multiple apps to be attested and introduces multi-stage attestation on Android, please re-read the readme!
- Kotlin 1.9.10!
- Bouncy Castle 1.76
- Android-Attestation 1.0.0
- android-attestation 0.9.3
- better java interop
- android-attestation (0.9.2)
- fix dependency on wrong android-attestation version
- android-attestation updated
- use A-SIT Plus gradle conventions plugin
- Kotlin 1.9
- BC 1.75
- Kotlin 1.8.21
- Gradle 8.1.1
- depend on android-attestation 0.8.4 to support custom Android trust anchors and testing against software-created attestations.
- depend on android-attestation 0.8.3 (MR Jar)
- Group OS-specific interfaces
- Align exception types between iOS and Android
- bugfix: NOOP attestation service actually being a NOOP
- ability to ignore timely validity of leaf cert for Android key attestation
- update upstream google code
- fixed iOS leeway calculation
- More Java-friendly API
- More detailed toplevel exception messages on certificate verification error (Android)
- Kotlin 1.8.0
Explicit verifyKeyAttestation function for both mobile platforms
Reworked API and workflow to enable emulation of key attestation on iOS
Initial Release