Skip to content

Commit 7d4e729

Browse files
committed
IssuerUrl replaces authorizationServerUrl - update openid4vp to 0.12.2 - update KDocs
1 parent e25f672 commit 7d4e729

12 files changed

Lines changed: 34 additions & 29 deletions

File tree

docs/wallet-core/eu.europa.ec.eudi.wallet.provider/-default-wallet-key-manager/get-or-create-wallet-attestation-key.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
# getOrCreateWalletAttestationKey
44

55
[androidJvm]\
6-
open suspend override fun [getOrCreateWalletAttestationKey](get-or-create-wallet-attestation-key.md)(authorizationServerUrl: [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin-stdlib/kotlin/-string/index.html), supportedAlgorithms: [List](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin-stdlib/kotlin.collections/-list/index.html)<Algorithm>): [Result](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin-stdlib/kotlin/-result/index.html)<[WalletAttestationKey](../-wallet-attestation-key/index.md)>
6+
open suspend override fun [getOrCreateWalletAttestationKey](get-or-create-wallet-attestation-key.md)(issuerUrl: [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin-stdlib/kotlin/-string/index.html), supportedAlgorithms: [List](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin-stdlib/kotlin.collections/-list/index.html)<Algorithm>): [Result](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin-stdlib/kotlin/-result/index.html)<[WalletAttestationKey](../-wallet-attestation-key/index.md)>
77

8-
Retrieves or creates a signing key to be used for Wallet Attestation (Client Authentication). The Wallet Attestation Keys must be distinct for different Authorization Servers but unique for a specific one, and should be stored for subsequent use with the same Authorization Server
8+
Retrieves or creates a signing key to be used for Wallet Attestation (Client Authentication). The implementation must ensure that keys are scoped to the specific Authorization Server to prevent cross-service tracking (Unlinkability). The key alias is derived from the [issuerUrl](get-or-create-wallet-attestation-key.md).
99

1010
The implementation should ensure that the returned key is compatible with one of the [supportedAlgorithms](get-or-create-wallet-attestation-key.md) required by the Authorization Server.
1111

@@ -19,5 +19,5 @@ androidJvm
1919

2020
| | |
2121
|---|---|
22-
| authorizationServerUrl | The URL of the Authorization Server. |
22+
| issuerUrl | The Issuer Identifier of the Authorization Server This string is hashed to generate a unique, stable alias for the key in the Secure Area. |
2323
| supportedAlgorithms | A list of cryptographic algorithms supported by the Authorization Server. The returned key must use one of these algorithms. |

docs/wallet-core/eu.europa.ec.eudi.wallet.provider/-default-wallet-key-manager/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,5 +26,5 @@ androidJvm
2626

2727
| Name | Summary |
2828
|---|---|
29-
| [getOrCreateWalletAttestationKey](get-or-create-wallet-attestation-key.md) | [androidJvm]<br>open suspend override fun [getOrCreateWalletAttestationKey](get-or-create-wallet-attestation-key.md)(authorizationServerUrl: [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin-stdlib/kotlin/-string/index.html), supportedAlgorithms: [List](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin-stdlib/kotlin.collections/-list/index.html)&lt;Algorithm&gt;): [Result](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin-stdlib/kotlin/-result/index.html)&lt;[WalletAttestationKey](../-wallet-attestation-key/index.md)&gt;<br>Retrieves or creates a signing key to be used for Wallet Attestation (Client Authentication). The Wallet Attestation Keys must be distinct for different Authorization Servers but unique for a specific one, and should be stored for subsequent use with the same Authorization Server |
29+
| [getOrCreateWalletAttestationKey](get-or-create-wallet-attestation-key.md) | [androidJvm]<br>open suspend override fun [getOrCreateWalletAttestationKey](get-or-create-wallet-attestation-key.md)(issuerUrl: [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin-stdlib/kotlin/-string/index.html), supportedAlgorithms: [List](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin-stdlib/kotlin.collections/-list/index.html)&lt;Algorithm&gt;): [Result](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin-stdlib/kotlin/-result/index.html)&lt;[WalletAttestationKey](../-wallet-attestation-key/index.md)&gt;<br>Retrieves or creates a signing key to be used for Wallet Attestation (Client Authentication). The implementation must ensure that keys are scoped to the specific Authorization Server to prevent cross-service tracking (Unlinkability). The key alias is derived from the [issuerUrl](get-or-create-wallet-attestation-key.md). |
3030
| [getWalletAttestationKey](get-wallet-attestation-key.md) | [androidJvm]<br>open suspend override fun [getWalletAttestationKey](get-wallet-attestation-key.md)(keyAlias: [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin-stdlib/kotlin/-string/index.html)): [WalletAttestationKey](../-wallet-attestation-key/index.md)?<br>Retrieves the existing Wallet Attestation Key for the specified Authorization Server URL. If no key exists for the given Authorization Server, it returns null. |

docs/wallet-core/eu.europa.ec.eudi.wallet.provider/-secure-area-wallet-key-manager/get-or-create-wallet-attestation-key.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
# getOrCreateWalletAttestationKey
44

55
[androidJvm]\
6-
open suspend override fun [getOrCreateWalletAttestationKey](get-or-create-wallet-attestation-key.md)(authorizationServerUrl: [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin-stdlib/kotlin/-string/index.html), supportedAlgorithms: [List](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin-stdlib/kotlin.collections/-list/index.html)&lt;Algorithm&gt;): [Result](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin-stdlib/kotlin/-result/index.html)&lt;[WalletAttestationKey](../-wallet-attestation-key/index.md)&gt;
6+
open suspend override fun [getOrCreateWalletAttestationKey](get-or-create-wallet-attestation-key.md)(issuerUrl: [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin-stdlib/kotlin/-string/index.html), supportedAlgorithms: [List](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin-stdlib/kotlin.collections/-list/index.html)&lt;Algorithm&gt;): [Result](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin-stdlib/kotlin/-result/index.html)&lt;[WalletAttestationKey](../-wallet-attestation-key/index.md)&gt;
77

8-
Retrieves or creates a signing key to be used for Wallet Attestation (Client Authentication). The Wallet Attestation Keys must be distinct for different Authorization Servers but unique for a specific one, and should be stored for subsequent use with the same Authorization Server
8+
Retrieves or creates a signing key to be used for Wallet Attestation (Client Authentication). The implementation must ensure that keys are scoped to the specific Authorization Server to prevent cross-service tracking (Unlinkability). The key alias is derived from the [issuerUrl](get-or-create-wallet-attestation-key.md).
99

1010
The implementation should ensure that the returned key is compatible with one of the [supportedAlgorithms](get-or-create-wallet-attestation-key.md) required by the Authorization Server.
1111

@@ -19,5 +19,5 @@ androidJvm
1919

2020
| | |
2121
|---|---|
22-
| authorizationServerUrl | The URL of the Authorization Server. |
22+
| issuerUrl | The Issuer Identifier of the Authorization Server This string is hashed to generate a unique, stable alias for the key in the Secure Area. |
2323
| supportedAlgorithms | A list of cryptographic algorithms supported by the Authorization Server. The returned key must use one of these algorithms. |

docs/wallet-core/eu.europa.ec.eudi.wallet.provider/-secure-area-wallet-key-manager/index.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@ open class [SecureAreaWalletKeyManager](index.md)(secureArea: SecureArea, create
66

77
A generic implementation of [WalletKeyManager](../-wallet-key-manager/index.md) that delegates cryptographic operations to a provided SecureArea.
88

9-
Derives a stable key alias from the authorizationServerUrl (using SHA-256). Checks if a key exists in the SecureArea for that alias. If it exists and matches a supported algorithm, it is reused. If it does not exist or the algorithm is incompatible, a new key is generated.
9+
This implementation enforces privacy by deriving a stable key alias from the issuerUrl (using SHA-256). This ensures that a unique key is used for each Authorization Server.
10+
11+
Checks if a key exists in the SecureArea for that alias. If it exists and matches a supported algorithm, it is reused. If it does not exist or the algorithm is incompatible, a new key is generated.
1012

1113
#### Parameters
1214

@@ -28,5 +30,5 @@ androidJvm
2830

2931
| Name | Summary |
3032
|---|---|
31-
| [getOrCreateWalletAttestationKey](get-or-create-wallet-attestation-key.md) | [androidJvm]<br>open suspend override fun [getOrCreateWalletAttestationKey](get-or-create-wallet-attestation-key.md)(authorizationServerUrl: [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin-stdlib/kotlin/-string/index.html), supportedAlgorithms: [List](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin-stdlib/kotlin.collections/-list/index.html)&lt;Algorithm&gt;): [Result](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin-stdlib/kotlin/-result/index.html)&lt;[WalletAttestationKey](../-wallet-attestation-key/index.md)&gt;<br>Retrieves or creates a signing key to be used for Wallet Attestation (Client Authentication). The Wallet Attestation Keys must be distinct for different Authorization Servers but unique for a specific one, and should be stored for subsequent use with the same Authorization Server |
33+
| [getOrCreateWalletAttestationKey](get-or-create-wallet-attestation-key.md) | [androidJvm]<br>open suspend override fun [getOrCreateWalletAttestationKey](get-or-create-wallet-attestation-key.md)(issuerUrl: [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin-stdlib/kotlin/-string/index.html), supportedAlgorithms: [List](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin-stdlib/kotlin.collections/-list/index.html)&lt;Algorithm&gt;): [Result](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin-stdlib/kotlin/-result/index.html)&lt;[WalletAttestationKey](../-wallet-attestation-key/index.md)&gt;<br>Retrieves or creates a signing key to be used for Wallet Attestation (Client Authentication). The implementation must ensure that keys are scoped to the specific Authorization Server to prevent cross-service tracking (Unlinkability). The key alias is derived from the [issuerUrl](get-or-create-wallet-attestation-key.md). |
3234
| [getWalletAttestationKey](get-wallet-attestation-key.md) | [androidJvm]<br>open suspend override fun [getWalletAttestationKey](get-wallet-attestation-key.md)(keyAlias: [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin-stdlib/kotlin/-string/index.html)): [WalletAttestationKey](../-wallet-attestation-key/index.md)?<br>Retrieves the existing Wallet Attestation Key for the specified Authorization Server URL. If no key exists for the given Authorization Server, it returns null. |

docs/wallet-core/eu.europa.ec.eudi.wallet.provider/-wallet-key-manager/get-or-create-wallet-attestation-key.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
# getOrCreateWalletAttestationKey
44

55
[androidJvm]\
6-
abstract suspend fun [getOrCreateWalletAttestationKey](get-or-create-wallet-attestation-key.md)(authorizationServerUrl: [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin-stdlib/kotlin/-string/index.html), supportedAlgorithms: [List](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin-stdlib/kotlin.collections/-list/index.html)&lt;Algorithm&gt;): [Result](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin-stdlib/kotlin/-result/index.html)&lt;[WalletAttestationKey](../-wallet-attestation-key/index.md)&gt;
6+
abstract suspend fun [getOrCreateWalletAttestationKey](get-or-create-wallet-attestation-key.md)(issuerUrl: [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin-stdlib/kotlin/-string/index.html), supportedAlgorithms: [List](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin-stdlib/kotlin.collections/-list/index.html)&lt;Algorithm&gt;): [Result](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin-stdlib/kotlin/-result/index.html)&lt;[WalletAttestationKey](../-wallet-attestation-key/index.md)&gt;
77

8-
Retrieves or creates a signing key to be used for Wallet Attestation (Client Authentication). The Wallet Attestation Keys must be distinct for different Authorization Servers but unique for a specific one, and should be stored for subsequent use with the same Authorization Server
8+
Retrieves or creates a signing key to be used for Wallet Attestation (Client Authentication). The implementation must ensure that keys are scoped to the specific Authorization Server to prevent cross-service tracking (Unlinkability). The key alias is derived from the [issuerUrl](get-or-create-wallet-attestation-key.md).
99

1010
The implementation should ensure that the returned key is compatible with one of the [supportedAlgorithms](get-or-create-wallet-attestation-key.md) required by the Authorization Server.
1111

@@ -19,5 +19,5 @@ androidJvm
1919

2020
| | |
2121
|---|---|
22-
| authorizationServerUrl | The URL of the Authorization Server. |
22+
| issuerUrl | The Issuer Identifier of the Authorization Server This string is hashed to generate a unique, stable alias for the key in the Secure Area. |
2323
| supportedAlgorithms | A list of cryptographic algorithms supported by the Authorization Server. The returned key must use one of these algorithms. |

docs/wallet-core/eu.europa.ec.eudi.wallet.provider/-wallet-key-manager/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,5 @@ Responsible for creating, storing, and retrieving the cryptographic keys that th
2525

2626
| Name | Summary |
2727
|---|---|
28-
| [getOrCreateWalletAttestationKey](get-or-create-wallet-attestation-key.md) | [androidJvm]<br>abstract suspend fun [getOrCreateWalletAttestationKey](get-or-create-wallet-attestation-key.md)(authorizationServerUrl: [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin-stdlib/kotlin/-string/index.html), supportedAlgorithms: [List](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin-stdlib/kotlin.collections/-list/index.html)&lt;Algorithm&gt;): [Result](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin-stdlib/kotlin/-result/index.html)&lt;[WalletAttestationKey](../-wallet-attestation-key/index.md)&gt;<br>Retrieves or creates a signing key to be used for Wallet Attestation (Client Authentication). The Wallet Attestation Keys must be distinct for different Authorization Servers but unique for a specific one, and should be stored for subsequent use with the same Authorization Server |
28+
| [getOrCreateWalletAttestationKey](get-or-create-wallet-attestation-key.md) | [androidJvm]<br>abstract suspend fun [getOrCreateWalletAttestationKey](get-or-create-wallet-attestation-key.md)(issuerUrl: [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin-stdlib/kotlin/-string/index.html), supportedAlgorithms: [List](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin-stdlib/kotlin.collections/-list/index.html)&lt;Algorithm&gt;): [Result](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin-stdlib/kotlin/-result/index.html)&lt;[WalletAttestationKey](../-wallet-attestation-key/index.md)&gt;<br>Retrieves or creates a signing key to be used for Wallet Attestation (Client Authentication). The implementation must ensure that keys are scoped to the specific Authorization Server to prevent cross-service tracking (Unlinkability). The key alias is derived from the [issuerUrl](get-or-create-wallet-attestation-key.md). |
2929
| [getWalletAttestationKey](get-wallet-attestation-key.md) | [androidJvm]<br>abstract suspend fun [getWalletAttestationKey](get-wallet-attestation-key.md)(keyAlias: [String](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin-stdlib/kotlin/-string/index.html)): [WalletAttestationKey](../-wallet-attestation-key/index.md)?<br>Retrieves the existing Wallet Attestation Key for the specified Authorization Server URL. If no key exists for the given Authorization Server, it returns null. |

gradle/libs.versions.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ espresso-core = "3.6.1"
1313
eudi-document-manager = "0.14.0"
1414
eudi-iso18013-data-transfer = "0.11.0"
1515
eudi-lib-jvm-openid4vci-kt = "0.9.1"
16-
eudi-lib-jvm-siop-openid4vp-kt = "0.12.0"
16+
eudi-lib-jvm-openid4vp-kt = "0.12.2"
1717
eudi-lib-jvm-sdjwt-kt = "0.10.0"
1818
eudi-lib-kmp-statium = "0.4.0"
1919
gradle-plugin = "8.13.1"
@@ -60,7 +60,7 @@ espresso-intents = { module = "androidx.test.espresso:espresso-intents", version
6060
eudi-document-manager = { module = "eu.europa.ec.eudi:eudi-lib-android-wallet-document-manager", version.ref = "eudi-document-manager" }
6161
eudi-iso18013-data-transfer = { module = "eu.europa.ec.eudi:eudi-lib-android-iso18013-data-transfer", version.ref = "eudi-iso18013-data-transfer" }
6262
eudi-lib-jvm-openid4vci-kt = { module = "eu.europa.ec.eudi:eudi-lib-jvm-openid4vci-kt", version.ref = "eudi-lib-jvm-openid4vci-kt" }
63-
eudi-lib-jvm-siop-openid4vp-kt = { module = "eu.europa.ec.eudi:eudi-lib-jvm-openid4vp-kt", version.ref = "eudi-lib-jvm-siop-openid4vp-kt" }
63+
eudi-lib-jvm-siop-openid4vp-kt = { module = "eu.europa.ec.eudi:eudi-lib-jvm-openid4vp-kt", version.ref = "eudi-lib-jvm-openid4vp-kt" }
6464
eudi-lib-jvm-sdjwt-kt = { module = "eu.europa.ec.eudi:eudi-lib-jvm-sdjwt-kt", version.ref = "eudi-lib-jvm-sdjwt-kt" }
6565
eudi-lib-kmp-statium = { module = "eu.europa.ec.eudi:eudi-lib-kmp-statium-android", version.ref = "eudi-lib-kmp-statium" }
6666
json = { module = "org.json:json", version.ref = "json" }

licenses.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
# EUDI Wallet Core library for Android
33
## Dependency License Report
4-
_2025-12-18 17:46:59 EET_
4+
_2026-01-26 15:43:52 EET_
55
## Android Software Development Kit License
66

77
**1** **Group:** `com.google.android.gms` **Name:** `play-services-identity-credentials` **Version:** `16.0.0-alpha08`

wallet-core/src/main/java/eu/europa/ec/eudi/wallet/issue/openid4vci/IssuerCreator.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ internal class IssuerCreator(
146146

147147
private suspend fun CIAuthorizationServerMetadata.toClientAuthentication(): Result<ClientAuthentication> =
148148
runCatching {
149-
val authorizationServerUrl = this.authorizationEndpointURI.toASCIIString()
149+
val issuerUrl = this.issuer.value
150150
when (val type = config.clientAuthenticationType) {
151151
is OpenId4VciManager.ClientAuthenticationType.None -> ClientAuthentication.None(type.clientId)
152152
is OpenId4VciManager.ClientAuthenticationType.AttestationBased -> {
@@ -162,7 +162,7 @@ internal class IssuerCreator(
162162
Algorithm.fromJoseAlgorithmIdentifier(a.name)
163163
}
164164
walletAttestationKeyManager
165-
.getOrCreateWalletAttestationKey(authorizationServerUrl, supportedAlgorithms)
165+
.getOrCreateWalletAttestationKey(issuerUrl, supportedAlgorithms)
166166
.map {
167167
clientAttestationPopKeyId = it.keyInfo.alias
168168
with(it) {

wallet-core/src/main/java/eu/europa/ec/eudi/wallet/provider/DefaultWalletKeyManager.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,11 @@ class DefaultWalletKeyManager(
4040

4141

4242
override suspend fun getOrCreateWalletAttestationKey(
43-
authorizationServerUrl: String,
43+
issuerUrl: String,
4444
supportedAlgorithms: List<Algorithm>,
4545
): Result<WalletAttestationKey> {
4646
return getSecureAreaWalletKeyManager().getOrCreateWalletAttestationKey(
47-
authorizationServerUrl,
47+
issuerUrl,
4848
supportedAlgorithms
4949
)
5050
}

0 commit comments

Comments
 (0)