Skip to content

Commit 1852961

Browse files
committed
feat(issue): add batch issuance support for multiple credentials
Refactors `issueDocumentByConfigurationIdentifierAttested` to accept a `List<String>` of credential configuration identifiers, enabling simultaneous issuance of multiple documents (mdoc and sd-jwt) in a single request. The single credential variant is deprecated and delegates to the new batch version.
1 parent 9b3b464 commit 1852961

2 files changed

Lines changed: 36 additions & 4 deletions

File tree

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

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ internal class DefaultOpenId4VciManager(
183183
}
184184

185185
override fun issueDocumentByConfigurationIdentifierAttested(
186-
credentialConfigurationId: String,
186+
credentialConfigurationIds: List<String>,
187187
walletAttestation: SignedJWT,
188188
walletWiaPopPublicKey: JWK,
189189
walletWiaPopPrivateKey: PrivateKey,
@@ -208,9 +208,9 @@ internal class DefaultOpenId4VciManager(
208208
val issuer = issuerCreator.createIssuerWithAttestation(
209209
attestationJWT = walletAttestation,
210210
walletWiaPopSigner = walletWiaPopSigner,
211-
credentialConfigurationIdentifiers = listOf(
212-
CredentialConfigurationIdentifier(credentialConfigurationId)
213-
)
211+
credentialConfigurationIdentifiers = credentialConfigurationIds.map {
212+
CredentialConfigurationIdentifier(it)
213+
}
214214
)
215215
doIssue(issuer, Offer(issuer.credentialOffer), txCode, listener)
216216
} catch (e: Throwable) {
@@ -220,6 +220,27 @@ internal class DefaultOpenId4VciManager(
220220
}
221221
}
222222

223+
@Deprecated("Use the List<String> version for batch issuance")
224+
override fun issueDocumentByConfigurationIdentifierAttested(
225+
credentialConfigurationId: String,
226+
walletAttestation: SignedJWT,
227+
walletWiaPopPublicKey: JWK,
228+
walletWiaPopPrivateKey: PrivateKey,
229+
txCode: String?,
230+
executor: Executor?,
231+
onIssueEvent: OpenId4VciManager.OnIssueEvent,
232+
) {
233+
issueDocumentByConfigurationIdentifierAttested(
234+
credentialConfigurationIds = listOf(credentialConfigurationId),
235+
walletAttestation = walletAttestation,
236+
walletWiaPopPublicKey = walletWiaPopPublicKey,
237+
walletWiaPopPrivateKey = walletWiaPopPrivateKey,
238+
txCode = txCode,
239+
executor = executor,
240+
onIssueEvent = onIssueEvent
241+
)
242+
}
243+
223244
override fun issueDocumentByFormat(
224245
format: DocumentFormat,
225246
txCode: String?,

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,17 @@ interface OpenId4VciManager {
9090
onIssueEvent: OnIssueEvent,
9191
)
9292

93+
fun issueDocumentByConfigurationIdentifierAttested(
94+
credentialConfigurationIds: List<String>,
95+
walletAttestation: SignedJWT,
96+
walletWiaPopPublicKey: JWK,
97+
walletWiaPopPrivateKey: PrivateKey,
98+
txCode: String? = null,
99+
executor: Executor? = null,
100+
onIssueEvent: OnIssueEvent,
101+
)
102+
103+
@Deprecated("Use the List<String> version for batch issuance")
93104
fun issueDocumentByConfigurationIdentifierAttested(
94105
credentialConfigurationId: String,
95106
walletAttestation: SignedJWT,

0 commit comments

Comments
 (0)