v0.27.0
Enhancements
Re-issuance: refresh AuthorizedRequest before credential request
reissueDocument() now explicitly refreshes the access token using the stored refresh token before
submitting the credential request. Previously it submitted with the original (potentially expired)
token and relied on error handling. If the refresh token itself is expired (400 invalid_grant),
the flow falls back to full OAuth authorization when allowAuthorizationFallback is enabled, or
throws ReissuanceAuthorizationException in background mode.
DCAPI: support native app-to-app flows
Problem:
The library currently aborts DCAPI requests with "Calling origin must not be null" whenever the caller is a native Android verifier app. This happens because CallingAppInfo.getOrigin(privilegedAllowlist) returns null for any caller that is not a privileged user agent (typically a browser) registered in the configured allowlist.
Solution:
When getOrigin() returns null, the library now calculates the origin value from the calling app's signing certificate, in the format:
android:apk-key-hash:<encoded SHA 256 fingerprint>
Dependency Updates
eudi-lib-android-wallet-document-managerupdated to 0.16.0eudi-lib-android-iso18013-data-transferupdated to 0.13.0eudi-lib-jvm-openid4vci-ktupdated to 0.10.1eudi-lib-jvm-sdjwt-ktupdated to 0.20.0eudi-lib-kmp-statiumupdated to 0.5.1- Kotlin updated to 2.2.21
Bug Fixes
DPoP key alias crash when DPoP is disabled
Fixed UninitializedPropertyAccessException when DPopConfig.Disabled is configured.
IssuerCreator.dpopKeyAlias was declared as lateinit var but was never assigned when DPoP was
disabled. Changed to a nullable var with a default of null.
Test Updates
CRL validation mock removed from TrustStoreRsaRootEcIntermediateTest
The test previously mocked the internal CertificateCRLValidation class to bypass CRL checks. That
class was removed in iso18013-data-transfer 0.13.0, which replaced the custom CRL implementation
with Java's built-in PKIXRevocationChecker and a RevocationPolicy sealed interface. The default
policy is RevocationPolicy.NoCheck, making the mock unnecessary.
Various Changes
SampleDocumentManager removed from public API
startRemotePresentation(intent: Intent) deprecated
Use startRemotePresentation(uri: Uri) instead. The Intent-based overload is deprecated and will
be removed in a future release.
The Uri-based method no longer wraps into an Intent internally — it resolves the OpenID4VP
request URI directly. The mdoc:// scheme handling via transferManager.startEngagementToApp() has
been removed, as engagement-to-app is handled by the data-transfer layer.