Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,12 @@ Release 5.8.0:
- List of classes moved: `MobileSecurityObject`, `Document`, `IssuerSigned`, `DeviceResponse`
- Issuer:
- Extract interface `StatusListIssuer` out of `Issuer` to separate credential issuing and status list management
- Extract interface `IssueCredentialFun` to be used in `CredentialIssuer` for OID4VCI
- Rework interface `IssuerCredentialStore`, deprecating methods `storeGetNewIndex` and class `IssuerCredentialStore.Credential`
- In `Issuer.IssuedCredential` add the typed credentials as properties, add property `userInfo`
- In `StatusListIssuer` deprecate methods `revokeCredentials()` and `revokeCredentialsWithId()`, callers should use `revokeCredential()`
- In `CredentialIssuer` deprecate constructor parameter `credentialProvider`, replace with `credentialDataProvider`
- Extend `CredentialToBeIssued` to contain properties `expiration`, `scheme`, `subjectPublicKey`, `userInfo`
- In `CredentialIssuer` move constructor parameters for loading data and issuing credentials to method `credential()`
- In `CredentialIssuer` move constructor parameter for loading data to method `credential()`
- Extract `ProofValidator` out of `CredentialIssuer`
- Extract `CredentialSchemeMapping` out of various top-level methods
- In `SimpleAuthorizationService` deprecate constructor parameter `dataProvider`, use `authorize()` with `OAuth2LoadUserFun` instead
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -244,6 +244,7 @@ class OpenId4VciClientTest : FunSpec() {
val issuer = IssuerAgent(EphemeralKeyWithSelfSignedCert())
credentialIssuer = CredentialIssuer(
authorizationService = authorizationService,
issuer = issuer,
credentialSchemes = credentialSchemes,
publicContext = publicContext,
credentialEndpointPath = credentialEndpointPath,
Expand Down Expand Up @@ -317,7 +318,6 @@ class OpenId4VciClientTest : FunSpec() {
val result = credentialIssuer.credential(
authorizationHeader = authn,
params = params,
issueCredential = { issuer.issueCredential(it) },
credentialDataProvider = credentialDataProvider,
request = request.toRequestInfo(),
).getOrThrow()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,6 @@ class CredentialIssuer(
/** Used to get the user data, and access tokens. */
private val authorizationService: OAuth2AuthorizationServerAdapter,
/** Used to actually issue the credential. */
@Deprecated("Use `issueCredential` in method `credential, `keyMaterial`, `cryptoAlgorithms`")
private val issuer: Issuer = IssuerAgent(),
/** Key material used to sign credentials in [credential]. */
private val keyMaterial: Set<KeyMaterial> = setOf(issuer.keyMaterial),
Expand Down Expand Up @@ -181,7 +180,7 @@ class CredentialIssuer(
* @param request information about the HTTP request the client has made, to validate authentication
*/
@Suppress("DEPRECATION")
@Deprecated("Use `credential` with parameters `credentialDataProvider`, `issueCredential` instead")
@Deprecated("Use `credential` with parameter `credentialDataProvider` instead")
suspend fun credential(
authorizationHeader: String,
params: CredentialRequestParameters,
Expand All @@ -190,7 +189,6 @@ class CredentialIssuer(
authorizationHeader = authorizationHeader,
params = params,
credentialDataProvider = CredentialIssuerDataProviderAdapter(credentialProvider),
issueCredential = { issuer.issueCredential(it) },
request = request,
)

Expand All @@ -205,18 +203,16 @@ class CredentialIssuer(
* @param authorizationHeader value of HTTP header `Authorization` sent by the client, with all prefixes
* @param params Parameters the client sent JSON-serialized in the HTTP body
* @param request information about the HTTP request the client has made, to validate authentication
* @param issueCredential Used to actually issue the credential, with data provided from [credentialDataProvider]
* @param credentialDataProvider Extract data from the authenticated user and prepares it for [issueCredential]
* @param credentialDataProvider Extract data from the authenticated user and prepares it for issuing
*/
suspend fun credential(
authorizationHeader: String,
params: CredentialRequestParameters,
credentialDataProvider: CredentialDataProviderFun,
issueCredential: IssueCredentialFun,
request: RequestInfo? = null,
): KmmResult<CredentialResponseParameters> = catching {
proofValidator.validateProofExtractSubjectPublicKeys(params).map { subjectPublicKey ->
issueCredential(
issuer.issueCredential(
credentialDataProvider(
with(params.extractCredentialRepresentation()) {
CredentialDataProviderInput(
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,6 @@ class OidvciAttestationTest : FunSpec({
token.toHttpHeaderValue(),
it,
credentialDataProvider = DummyOAuth2IssuerCredentialDataProvider,
issueCredential = { IssuerAgent().issueCredential(it) }
).getOrThrow()
val serializedCredential = credential.credentials.shouldNotBeEmpty()
.first().credentialString.shouldNotBeNull()
Expand Down Expand Up @@ -128,7 +127,6 @@ class OidvciAttestationTest : FunSpec({
token.toHttpHeaderValue(),
it,
credentialDataProvider = DummyOAuth2IssuerCredentialDataProvider,
issueCredential = { IssuerAgent().issueCredential(it) }
).getOrThrow()
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,6 @@ class OidvciCodeFlowTest : FreeSpec({
clientNonce = clientNonce,
).getOrThrow().first(),
credentialDataProvider = DummyOAuth2IssuerCredentialDataProvider,
issueCredential = { IssuerAgent().issueCredential(it) }
).getOrThrow()
val serializedCredential = credential.credentials.shouldNotBeEmpty().first().credentialString.shouldNotBeNull()

Expand Down Expand Up @@ -182,7 +181,6 @@ class OidvciCodeFlowTest : FreeSpec({
clientNonce = clientNonce,
).getOrThrow().first(),
credentialDataProvider = DummyOAuth2IssuerCredentialDataProvider,
issueCredential = { IssuerAgent().issueCredential(it) }
).getOrThrow().credentials.shouldNotBeEmpty().first().credentialString.shouldNotBeNull()
}
}
Expand Down Expand Up @@ -212,7 +210,6 @@ class OidvciCodeFlowTest : FreeSpec({
token.toHttpHeaderValue(),
credentialRequest,
credentialDataProvider = DummyOAuth2IssuerCredentialDataProvider,
issueCredential = { IssuerAgent().issueCredential(it) }
).getOrThrow()
.credentials.shouldNotBeEmpty().shouldHaveSize(2)
// subject identifies the key of the client, here the keys of different proofs, so they should be unique
Expand Down Expand Up @@ -258,7 +255,6 @@ class OidvciCodeFlowTest : FreeSpec({
clientNonce = clientNonce,
).getOrThrow().first(),
credentialDataProvider = DummyOAuth2IssuerCredentialDataProvider,
issueCredential = { IssuerAgent().issueCredential(it) }
).getOrThrow()
val serializedCredential = credential.credentials.shouldNotBeEmpty().first().credentialString.shouldNotBeNull()

Expand All @@ -281,7 +277,6 @@ class OidvciCodeFlowTest : FreeSpec({
clientNonce = clientNonce,
).getOrThrow().first(),
credentialDataProvider = DummyOAuth2IssuerCredentialDataProvider,
issueCredential = { IssuerAgent().issueCredential(it) }
).getOrThrow()
val serializedCredential = credential.credentials.shouldNotBeEmpty().first().credentialString.shouldNotBeNull()

Expand Down Expand Up @@ -337,7 +332,6 @@ class OidvciCodeFlowTest : FreeSpec({
clientNonce = clientNonce,
).getOrThrow().first(),
credentialDataProvider = DummyOAuth2IssuerCredentialDataProvider,
issueCredential = { IssuerAgent().issueCredential(it) }
).getOrThrow()
val serializedCredential = credential.credentials.shouldNotBeEmpty().first().credentialString.shouldNotBeNull()

Expand Down Expand Up @@ -365,7 +359,6 @@ class OidvciCodeFlowTest : FreeSpec({
clientNonce = clientNonce,
).getOrThrow().first(),
credentialDataProvider = DummyOAuth2IssuerCredentialDataProvider,
issueCredential = { IssuerAgent().issueCredential(it) }
).getOrThrow()
val serializedCredential = credential.credentials.shouldNotBeEmpty().first().credentialString.shouldNotBeNull()

Expand Down Expand Up @@ -423,7 +416,6 @@ class OidvciCodeFlowTest : FreeSpec({
credentialConfigurationId = null,
),
credentialDataProvider = DummyOAuth2IssuerCredentialDataProvider,
issueCredential = { IssuerAgent().issueCredential(it) }
).getOrThrow()
}
}
Expand Down Expand Up @@ -455,7 +447,6 @@ class OidvciCodeFlowTest : FreeSpec({
credentialIdentifier = null
),
credentialDataProvider = DummyOAuth2IssuerCredentialDataProvider,
issueCredential = { IssuerAgent().issueCredential(it) }
).getOrThrow()
}
}
Expand All @@ -476,7 +467,6 @@ class OidvciCodeFlowTest : FreeSpec({
clientNonce = clientNonce,
).getOrThrow().first(),
credentialDataProvider = DummyOAuth2IssuerCredentialDataProvider,
issueCredential = { IssuerAgent().issueCredential(it) }
).getOrThrow()
val serializedCredential = credential.credentials.shouldNotBeEmpty().first().credentialString.shouldNotBeNull()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,6 @@ class OidvciEncryptionTest : FunSpec({
authorizationHeader = token.toHttpHeaderValue(),
params = it,
credentialDataProvider = DummyOAuth2IssuerCredentialDataProvider,
issueCredential = { IssuerAgent().issueCredential(it) }
).getOrThrow()
}
}
Expand All @@ -126,7 +125,6 @@ class OidvciEncryptionTest : FunSpec({
token.toHttpHeaderValue(),
it,
credentialDataProvider = DummyOAuth2IssuerCredentialDataProvider,
issueCredential = { IssuerAgent().issueCredential(it) }
).getOrThrow()
val serializedCredential = credential.credentials.shouldNotBeEmpty()
.first().credentialString.shouldNotBeNull()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,6 @@ class OidvciOfferCodeTest : FreeSpec({
authorizationHeader = token.toHttpHeaderValue(),
params = credentialRequest.first(),
credentialDataProvider = DummyOAuth2IssuerCredentialDataProvider,
issueCredential = { IssuerAgent().issueCredential(it) }
).getOrThrow()
credential.credentials.shouldNotBeEmpty().first().credentialString.shouldNotBeNull()
}
Expand Down Expand Up @@ -151,7 +150,6 @@ class OidvciOfferCodeTest : FreeSpec({
authorizationHeader = token.toHttpHeaderValue(),
params = credentialRequest.first(),
credentialDataProvider = DummyOAuth2IssuerCredentialDataProvider,
issueCredential = { IssuerAgent().issueCredential(it) }
).getOrThrow()
credential.credentials.shouldNotBeEmpty().first().credentialString.shouldNotBeNull()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,6 @@ class OidvciPreAuthTest : FreeSpec({
authorizationHeader = token.toHttpHeaderValue(),
params = credentialRequest.first(),
credentialDataProvider = DummyOAuth2IssuerCredentialDataProvider,
issueCredential = { IssuerAgent().issueCredential(it) }
).getOrThrow()
credential.credentials.shouldNotBeEmpty().first().credentialString.shouldNotBeNull()
}
Expand Down Expand Up @@ -115,7 +114,6 @@ class OidvciPreAuthTest : FreeSpec({
token.toHttpHeaderValue(),
credentialRequest.first(),
credentialDataProvider = DummyOAuth2IssuerCredentialDataProvider,
issueCredential = { IssuerAgent().issueCredential(it) }
).getOrThrow()
.credentials.shouldNotBeEmpty().first()
.credentialString.shouldNotBeNull()
Expand Down Expand Up @@ -154,7 +152,6 @@ class OidvciPreAuthTest : FreeSpec({
token.toHttpHeaderValue(),
credentialRequest.first(),
credentialDataProvider = DummyOAuth2IssuerCredentialDataProvider,
issueCredential = { IssuerAgent().issueCredential(it) }
).getOrThrow()
.credentials.shouldNotBeEmpty().first()
.credentialString.shouldNotBeNull()
Expand Down Expand Up @@ -191,7 +188,6 @@ class OidvciPreAuthTest : FreeSpec({
token.toHttpHeaderValue(),
credentialRequest,
credentialDataProvider = DummyOAuth2IssuerCredentialDataProvider,
issueCredential = { IssuerAgent().issueCredential(it) }
).getOrThrow()
.credentials.shouldNotBeEmpty()
.shouldHaveSize(2)
Expand Down
Loading