Releases: tsenger/vdstools
Releases · tsenger/vdstools
v0.11.0
Breaking Changes
Unified API naming for VDS and IDB for consistency
Rename Feature to Message across entire codebase
- VdsMessage → VdsMessageGroup (container)
- Feature → Message (generic)
- DigitalSeal → VdsSeal
- IdbMessage → Message (generic)
- IcaoBarcode → IdbSeal
- FeatureCoding → MessageCoding
- FeatureValue → MessageValue
- FeaturesDto → MessageDto
Type-safe value access with MessageValue sealed class
The sealed class provides different value types based on the encoding:
- ByteValue: Single byte values (e.g., document type identifiers)
- StringValue: C40 or UTF-8 encoded strings
- DateValue: LocalDate values from encoded dates
- MaskedDateValue: Partially masked date strings
- MrzValue: Formatted MRZ strings with proper line breaks
- BytesValue: Raw byte arrays (fallback for unknown encodings)
Each type provides:
- rawBytes: Always available, original byte array
- decoded: Type-safe access to the decoded value
- toString(): Human-readable string representation
New features
Add Extended Feature Definitions for UUID-based seal profiles (TR-03171)
Implement two-stage lookup for seal types that use UUID-based profile definitions as specified in BSI TR-03171. Since the profile definitions and certificates for this document type are not freely accessible, the UUIDs mapping cannot be made available in this library.
What's Changed
Full Changelog: v0.10.3...v0.11.0
v0.10.3
Changes
- bugfixed certificate reference length decoding
- added gradle libs.versions.toml for central version management
- added basic support for administrative documents as specified in BSI TR-03171
Full Changelog: v0.10.2...v0.10.3
v0.10.2
Changes
This release fixes a critical issue with iOS resource loading when the library is consumed as a Maven dependency, and introduces a flexible API for custom resource configurations.
iOS Maven Dependency Fix
- Embedded Resources: JSON configuration files are now embedded as Kotlin constants at compile-time
- Reliable Publishing: Resources are included directly in the published
.klibfiles, eliminating bundle dependency issues - Cross-Platform Consistency: Resources work identically across JVM, Android, and iOS platforms
Flexible Resource Loading API
Added public API for custom JSON configurations:
DataEncoder.loadCustomSealCodings(jsonString: String)- Override default seal codings with custom JSONDataEncoder.loadCustomIdbMessageTypes(jsonString: String)- Override IDB message typesDataEncoder.loadCustomIdbDocumentTypes(jsonString: String)- Override IDB document typesDataEncoder.loadCustom*FromFile(fileName: String)- Convenience methods to load custom JSONs from files
Test Suite
- Removed: Tests for unsupported seal types to reduce test failures
- Added:
ReadTextResourceIosTestto verify iOS resource loading functionality
v0.10.0
What's Changed
Breaking Changes
- ICAO Barcode Identifier updated from NDB to RDB - When creating new ICAO seals, the barcode identifier now uses RDB1 instead of NDB1. Parsing accepts both identifiers for backward compatibility, but a warning is logged
when encountering the old NDB1 identifier.
Improvements
- Fixed iOS verifier tests for Brainpool curve certificates - Replaced SecCertificateCopyKey with manual DER parsing to extract SubjectPublicKeyInfo, as Apple's Security framework doesn't support Brainpool curves
(brainpoolP224r1, brainpoolP256r1) - Fixed iOS test cases (Kotlin Clock import)
- Updated dependencies to latest versions
- Updated Gradle wrapper
v0.9.3
v0.9.0
v0.8.3
Switch from Java to Kotlin multiplatform to support JVM and iOS
What's Changed
- Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.11.1 to 3.11.2 by @dependabot in #11
- migrate to Kotlin multiplatform by @tsenger in #14
Full Changelog: v0.7.0...v0.8.3
v0.7.0
Changes
- All features, regardless of their data type, can be output as a (hex) string using valueStr().
- There are also valueBytes() to get the value as byte array and valueInt() to get the value as Integer
- Bump org.bouncycastle:bcprov-jdk18on from 1.78.1 to 1.79 by @dependabot in #6
- Bump org.apache.maven.plugins:maven-surefire-plugin from 3.5.1 to 3.5.2 by @dependabot in #7
- Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.10.1 to 3.11.1 by @dependabot in #8