Skip to content

Commit

Permalink
migration of audit event data structures from enterprise
Browse files Browse the repository at this point in the history
  • Loading branch information
severinstampler committed Feb 26, 2025
1 parent e5a1eac commit 5b8682f
Show file tree
Hide file tree
Showing 17 changed files with 219 additions and 1 deletion.
2 changes: 1 addition & 1 deletion docker-compose/docker-compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ services:
- .env
extra_hosts:
- "host.docker.internal:host-gateway"
- "wase:host-gateway"
- "waltid.enterprise.localhost:host-gateway"
volumes:
- ./wallet-api/config:/waltid-wallet-api/config
- ./wallet-api/walt.yaml:/waltid-wallet-api/walt.yaml
Expand Down
2 changes: 2 additions & 0 deletions waltid-services/waltid-service-commons/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ object Versions {

dependencies {
api(project(":waltid-libraries:waltid-library-commons"))
// OIDC
api(project(":waltid-libraries:protocols:waltid-openid4vc"))

// Ktor
api("io.ktor:ktor-server-core-jvm:${Versions.KTOR_VERSION}")
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package id.walt.commons.audit

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
sealed class AuditEvent(
@SerialName("_id") val id: String,
val eventType: EventType
) {
abstract val target: String
abstract val timestamp: Long
abstract val status: EventStatus
abstract val callId: String?
abstract val error: String?
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package id.walt.commons.audit

enum class DeviceFlow {
Multi,
Single
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package id.walt.commons.audit

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import kotlin.uuid.ExperimentalUuidApi
import kotlin.uuid.Uuid

@OptIn(ExperimentalUuidApi::class)
@Serializable
class DidEvent(
override val target: String,
override val timestamp: Long,
override val status: EventStatus,
val didEventType: DidEventType,
val didMethod: String,
override val callId: String? = null,
override val error: String? = null
) : AuditEvent(Uuid.random().toHexString(), EventType.DIDEvent)
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package id.walt.commons.audit

enum class DidEventType {
Create,
Update,
Delete,
Resolve
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package id.walt.commons.audit

enum class EventStatus {
Open,
Success,
Failure
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package id.walt.commons.audit

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
enum class EventType {
@SerialName("IssuanceEvent") IssuanceEvent,
@SerialName("VerificationEvent") VerificationEvent,
@SerialName("KeyEvent") KeyEvent,
@SerialName("DIDEvent") DIDEvent;

override fun toString(): String {
return when (this) {
IssuanceEvent -> "IssuanceEvent"
VerificationEvent -> "VerificationEvent"
DIDEvent -> "DIDEvent"
KeyEvent -> "KeyEvent"
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package id.walt.commons.audit

import id.walt.oid4vc.data.ProofType
import kotlinx.serialization.Serializable
import kotlin.uuid.ExperimentalUuidApi
import kotlin.uuid.Uuid

@OptIn(ExperimentalUuidApi::class)
@Serializable
class IssuanceEvent(
override val target: String,
override val timestamp: Long,
override val status: EventStatus,
val sessionId: String,
val credentialConfigurationId: String,
val format: String?,
val proofType: ProofType? = null,
val holderId: String? = null,
override val callId: String? = null,
override val error: String? = null
) : AuditEvent(Uuid.random().toHexString(), EventType.IssuanceEvent)
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package id.walt.commons.audit

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import kotlin.uuid.ExperimentalUuidApi
import kotlin.uuid.Uuid

@OptIn(ExperimentalUuidApi::class)
@Serializable
class KeyEvent(
override val target: String,
override val timestamp: Long,
override val status: EventStatus,
val keyEventType: KeyEventType,
val keyAlgorithm: String,
override val callId: String? = null,
override val error: String? = null
) : AuditEvent(Uuid.random().toHexString(), EventType.KeyEvent)
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package id.walt.commons.audit

enum class KeyEventType {
Create,
Import,
Export,
Rotation
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package id.walt.commons.audit

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import kotlin.uuid.ExperimentalUuidApi
import kotlin.uuid.Uuid

@OptIn(ExperimentalUuidApi::class)
@Serializable
class VerificationEvent(
override val target: String,
override val timestamp: Long,
override val status: EventStatus,
val sessionId: String,
val format: String,
val signatureAlgorithm: String,
val credentialType: String? = null,
val holderId: String? = null,
override val callId: String? = null,
override val error: String? = null
) : AuditEvent(Uuid.random().toHexString(), EventType.VerificationEvent)
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package id.walt.commons.audit.filter

import id.walt.commons.audit.DidEventType
import kotlinx.serialization.Serializable

@Serializable
data class DidEventFilter(
val didEventType: Set<DidEventType>? = null,
val didMethod: Set<String>? = null
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package id.walt.commons.audit.filter

import id.walt.commons.audit.EventStatus
import id.walt.commons.audit.EventType
import kotlinx.serialization.Serializable

@Serializable
data class EventFilter(
val eventType: Set<EventType>? = null,
val status: Set<EventStatus>? = null,
val fromTimestamp: Long? = null,
val toTimestamp: Long? = null,
val callId: String? = null,
val issuanceEventFilter: IssuanceEventFilter? = null,
val verificationEventFilter: VerificationEventFilter? = null,
val keyEventFilter: KeyEventFilter? = null,
val didEventFilter: DidEventFilter? = null
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package id.walt.commons.audit.filter

import id.walt.oid4vc.data.CredentialFormat
import id.walt.oid4vc.data.ProofType
import kotlinx.serialization.Serializable

@Serializable
data class IssuanceEventFilter(
val credentialConfigurationId: Set<String>? = null,
val format: Set<CredentialFormat>? = null,
val sessionId: String? = null,
val proofType: Set<ProofType>? = null,
val holder: Set<String>? = null,
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package id.walt.commons.audit.filter

import id.walt.commons.audit.KeyEventType
import kotlinx.serialization.Serializable

@Serializable
data class KeyEventFilter(
val keyEventType: Set<KeyEventType>? = null,
val keyAlgorithm: Set<String>? = null,
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package id.walt.commons.audit.filter

import id.walt.commons.audit.DeviceFlow
import id.walt.oid4vc.data.CredentialFormat
import id.walt.oid4vc.data.ProofType
import kotlinx.serialization.Serializable

@Serializable
data class VerificationEventFilter(
val format: Set<CredentialFormat>? = null,
val signatureAlgorithm: Set<String>? = null,
val sessionId: String? = null,
val holder: Set<String>? = null,
val credentialType: Set<String>? = null,
val ecosystem: Set<String>? = null,
val walletId: Set<String>? = null,
val protocol: Set<String>? = null,
val deviceFlow: Set<DeviceFlow>? = null,
val asyncFlow: Set<Boolean>? = null
)

0 comments on commit 5b8682f

Please sign in to comment.