diff --git a/edge-agent-sdk/build.gradle.kts b/edge-agent-sdk/build.gradle.kts index 8a042bc25..24f009a62 100644 --- a/edge-agent-sdk/build.gradle.kts +++ b/edge-agent-sdk/build.gradle.kts @@ -148,6 +148,7 @@ kotlin { implementation("junit:junit:4.13.2") implementation("org.mockito:mockito-core:4.4.0") implementation("org.mockito.kotlin:mockito-kotlin:4.0.0") +// implementation("com.nimbusds:nimbus-jose-jwt:9.39") } } val jvmMain by getting { diff --git a/edge-agent-sdk/src/commonTest/kotlin/org/hyperledger/identus/walletsdk/edgeagent/EdgeAgentTests.kt b/edge-agent-sdk/src/commonTest/kotlin/org/hyperledger/identus/walletsdk/edgeagent/EdgeAgentTests.kt index 94a5d2e58..ec44e5833 100644 --- a/edge-agent-sdk/src/commonTest/kotlin/org/hyperledger/identus/walletsdk/edgeagent/EdgeAgentTests.kt +++ b/edge-agent-sdk/src/commonTest/kotlin/org/hyperledger/identus/walletsdk/edgeagent/EdgeAgentTests.kt @@ -3,11 +3,15 @@ package org.hyperledger.identus.walletsdk.edgeagent import anoncreds_wrapper.LinkSecret +import com.nimbusds.jose.EncryptionMethod +import com.nimbusds.jose.JWEAlgorithm +import com.nimbusds.jose.JWEObject import io.ktor.http.HttpStatusCode import java.security.interfaces.ECPublicKey import java.util.* import kotlinx.coroutines.flow.flow import kotlinx.coroutines.test.runTest +import kotlinx.serialization.Serializable import kotlinx.serialization.SerializationException import kotlinx.serialization.json.Json import org.hyperledger.identus.apollo.base64.base64UrlDecoded @@ -19,6 +23,7 @@ import org.hyperledger.identus.walletsdk.apollo.utils.Ed25519KeyPair import org.hyperledger.identus.walletsdk.apollo.utils.Ed25519PrivateKey import org.hyperledger.identus.walletsdk.apollo.utils.Secp256k1KeyPair import org.hyperledger.identus.walletsdk.apollo.utils.X25519KeyPair +import org.hyperledger.identus.walletsdk.apollo.utils.X25519PrivateKey import org.hyperledger.identus.walletsdk.castor.CastorImpl import org.hyperledger.identus.walletsdk.domain.buildingblocks.Apollo import org.hyperledger.identus.walletsdk.domain.buildingblocks.Castor @@ -34,6 +39,7 @@ import org.hyperledger.identus.walletsdk.domain.models.CredentialType import org.hyperledger.identus.walletsdk.domain.models.Curve import org.hyperledger.identus.walletsdk.domain.models.DID import org.hyperledger.identus.walletsdk.domain.models.DIDDocument +import org.hyperledger.identus.walletsdk.domain.models.DIDPair import org.hyperledger.identus.walletsdk.domain.models.DIDResolver import org.hyperledger.identus.walletsdk.domain.models.DIDUrl import org.hyperledger.identus.walletsdk.domain.models.HttpResponse @@ -45,6 +51,11 @@ import org.hyperledger.identus.walletsdk.domain.models.PresentationClaims import org.hyperledger.identus.walletsdk.domain.models.ProvableCredential import org.hyperledger.identus.walletsdk.domain.models.Seed import org.hyperledger.identus.walletsdk.domain.models.Signature +import org.hyperledger.identus.walletsdk.domain.models.keyManagement.CurveKey +import org.hyperledger.identus.walletsdk.domain.models.keyManagement.DerivationPathKey +import org.hyperledger.identus.walletsdk.domain.models.keyManagement.KeyTypes +import org.hyperledger.identus.walletsdk.domain.models.keyManagement.SeedKey +import org.hyperledger.identus.walletsdk.domain.models.keyManagement.TypeKey import org.hyperledger.identus.walletsdk.edgeagent.helpers.AgentOptions import org.hyperledger.identus.walletsdk.edgeagent.mediation.MediationHandler import org.hyperledger.identus.walletsdk.edgeagent.protocols.ProtocolType @@ -57,12 +68,21 @@ import org.hyperledger.identus.walletsdk.edgeagent.protocols.proofOfPresentation import org.hyperledger.identus.walletsdk.edgeagent.protocols.proofOfPresentation.RequestPresentation import org.hyperledger.identus.walletsdk.logger.PrismLoggerMock import org.hyperledger.identus.walletsdk.mercury.ApiMock +import org.hyperledger.identus.walletsdk.pluto.CredentialRecovery +import org.hyperledger.identus.walletsdk.pluto.PlutoBackupTask +import org.hyperledger.identus.walletsdk.pluto.PlutoRestoreTask +import org.hyperledger.identus.walletsdk.pluto.RestorationID import org.hyperledger.identus.walletsdk.pluto.StorablePrivateKey +import org.hyperledger.identus.walletsdk.pluto.backup.models.BackupV0_0_1 import org.hyperledger.identus.walletsdk.pollux.PolluxImpl import org.hyperledger.identus.walletsdk.pollux.models.AnonCredential import org.hyperledger.identus.walletsdk.pollux.models.CredentialRequestMeta import org.hyperledger.identus.walletsdk.pollux.models.JWTCredential import org.junit.Assert.assertNotEquals +import org.junit.Before +import org.junit.Test +import org.junit.runner.RunWith +import org.junit.runners.JUnit4 import org.mockito.Mock import org.mockito.Mockito.verify import org.mockito.Mockito.`when` @@ -71,13 +91,12 @@ import org.mockito.kotlin.any import org.mockito.kotlin.argumentCaptor import org.mockito.kotlin.mock import org.mockito.kotlin.spy -import kotlin.test.BeforeTest -import kotlin.test.Test import kotlin.test.assertEquals import kotlin.test.assertFailsWith import kotlin.test.assertFalse import kotlin.test.assertTrue +@RunWith(JUnit4::class) @OptIn(kotlinx.coroutines.ExperimentalCoroutinesApi::class) class EdgeAgentTests { @@ -87,6 +106,9 @@ class EdgeAgentTests { @Mock lateinit var plutoMock: Pluto + @Mock + lateinit var mercuryMock: Mercury + @Mock lateinit var polluxMock: Pollux @@ -102,27 +124,27 @@ class EdgeAgentTests { lateinit var apolloMockOld: ApolloMock lateinit var castorMockOld: CastorMock lateinit var plutoMockOld: PlutoMock - lateinit var mercuryMock: MercuryMock + lateinit var mercuryMockOld: MercuryMock lateinit var polluxMockOld: PolluxMock lateinit var mediationHandlerMockOld: MediationHandlerMock lateinit var connectionManagerOld: ConnectionManager lateinit var json: Json lateinit var seed: Seed - @BeforeTest + @Before fun setup() { MockitoAnnotations.openMocks(this) seed = Seed(MnemonicHelper.createRandomSeed()) apolloMockOld = ApolloMock() castorMockOld = CastorMock() plutoMockOld = PlutoMock() - mercuryMock = MercuryMock() + mercuryMockOld = MercuryMock() polluxMockOld = PolluxMock() mediationHandlerMockOld = MediationHandlerMock() // Pairing will be removed in the future connectionManagerOld = ConnectionManagerImpl( - mercuryMock, + mercuryMockOld, castorMockOld, plutoMockOld, mediationHandlerMockOld, @@ -139,7 +161,7 @@ class EdgeAgentTests { @Test fun `EdgeAgent start should create peer did and register mediator if no mediator available`() = runTest { val connectionManager = ConnectionManagerImpl( - mercuryMock, + mercuryMockOld, castorMockOld, plutoMock, mediationHandlerMock, @@ -152,7 +174,7 @@ class EdgeAgentTests { apollo = apolloMockOld, castor = castorMockOld, pluto = plutoMockOld, - mercury = mercuryMock, + mercury = mercuryMockOld, pollux = polluxMockOld, connectionManager = connectionManager, seed = null, @@ -181,7 +203,7 @@ class EdgeAgentTests { @Test fun `EdgeAgent start should throw MediationRequestFailedError if mediatiorhandler mediator is null`() = runTest { val connectionManager = ConnectionManagerImpl( - mercuryMock, + mercuryMockOld, castorMockOld, plutoMock, mediationHandlerMock, @@ -194,7 +216,7 @@ class EdgeAgentTests { apollo = apolloMockOld, castor = castorMockOld, pluto = plutoMockOld, - mercury = mercuryMock, + mercury = mercuryMockOld, pollux = polluxMockOld, connectionManager = connectionManager, seed = null, @@ -228,7 +250,7 @@ class EdgeAgentTests { apollo = apolloMock, castor = castorMock, pluto = plutoMock, - mercury = mercuryMock, + mercury = mercuryMockOld, pollux = polluxMock, connectionManager = connectionManagerMock, seed = seed, @@ -248,7 +270,7 @@ class EdgeAgentTests { apollo = apolloMockOld, castor = castorMockOld, pluto = plutoMockOld, - mercury = mercuryMock, + mercury = mercuryMockOld, pollux = polluxMockOld, connectionManager = connectionManagerMock, seed = null, @@ -270,7 +292,7 @@ class EdgeAgentTests { apollo = apolloMockOld, castor = castorMockOld, pluto = plutoMockOld, - mercury = mercuryMock, + mercury = mercuryMockOld, pollux = polluxMockOld, connectionManager = connectionManagerMock, seed = null, @@ -293,7 +315,7 @@ class EdgeAgentTests { apollo = apolloMockOld, castor = castorMockOld, pluto = plutoMockOld, - mercury = mercuryMock, + mercury = mercuryMockOld, pollux = polluxMockOld, connectionManager = connectionManagerMock, seed = null, @@ -318,7 +340,7 @@ class EdgeAgentTests { apollo = apolloMockOld, castor = castorMockOld, pluto = plutoMockOld, - mercury = mercuryMock, + mercury = mercuryMockOld, pollux = polluxMockOld, connectionManager = connectionManagerOld, seed = seed, @@ -341,7 +363,7 @@ class EdgeAgentTests { apolloMock, castorMock, plutoMock, - mercuryMock, + mercuryMockOld, polluxMock, connectionManagerMock, seed, @@ -367,7 +389,7 @@ class EdgeAgentTests { apollo, castor, plutoMockOld, - mercuryMock, + mercuryMockOld, polluxMockOld, connectionManagerOld, null, @@ -403,7 +425,7 @@ class EdgeAgentTests { apollo = apolloMockOld, castor = castorMockOld, pluto = plutoMockOld, - mercury = mercuryMock, + mercury = mercuryMockOld, pollux = polluxMockOld, connectionManager = connectionManagerOld, seed = null, @@ -430,7 +452,7 @@ class EdgeAgentTests { apollo = apolloMockOld, castor = castorMockOld, pluto = plutoMockOld, - mercury = mercuryMock, + mercury = mercuryMockOld, pollux = polluxMockOld, connectionManager = connectionManagerOld, seed = null, @@ -457,7 +479,7 @@ class EdgeAgentTests { apollo = apolloMockOld, castor = castorMockOld, pluto = plutoMockOld, - mercury = mercuryMock, + mercury = mercuryMockOld, pollux = polluxMockOld, connectionManager = connectionManagerOld, seed = null, @@ -483,7 +505,7 @@ class EdgeAgentTests { apollo = apolloMockOld, castor = castorMockOld, pluto = plutoMockOld, - mercury = mercuryMock, + mercury = mercuryMockOld, pollux = polluxMockOld, connectionManager = connectionManagerOld, seed = null, @@ -509,7 +531,7 @@ class EdgeAgentTests { apollo = apolloMock, castor = castorMock, pluto = plutoMock, - mercury = mercuryMock, + mercury = mercuryMockOld, pollux = polluxMock, connectionManager = connectionManagerMock, seed = seed, @@ -547,7 +569,7 @@ class EdgeAgentTests { apollo = apolloMock, castor = castorMock, pluto = plutoMock, - mercury = mercuryMock, + mercury = mercuryMockOld, pollux = polluxMock, connectionManager = connectionManagerMock, seed = seed, @@ -584,7 +606,7 @@ class EdgeAgentTests { apollo = apolloMock, castor = castorMock, pluto = plutoMock, - mercury = mercuryMock, + mercury = mercuryMockOld, pollux = polluxMock, connectionManager = connectionManagerMock, seed = seed, @@ -620,7 +642,7 @@ class EdgeAgentTests { apollo = apolloMockOld, castor = castorMockOld, pluto = plutoMockOld, - mercury = mercuryMock, + mercury = mercuryMockOld, pollux = polluxMockOld, connectionManager = connectionManagerOld, seed = null, @@ -667,7 +689,7 @@ class EdgeAgentTests { apollo = apolloMockOld, castor = castorMockOld, pluto = plutoMockOld, - mercury = mercuryMock, + mercury = mercuryMockOld, pollux = polluxMockOld, connectionManager = connectionManagerOld, seed = null, @@ -697,7 +719,7 @@ class EdgeAgentTests { apollo = apolloMockOld, castor = castorMockOld, pluto = plutoMockOld, - mercury = mercuryMock, + mercury = mercuryMockOld, pollux = polluxMockOld, connectionManager = connectionManagerOld, seed = null, @@ -716,7 +738,7 @@ class EdgeAgentTests { apollo = apolloMockOld, castor = castorMockOld, pluto = plutoMockOld, - mercury = mercuryMock, + mercury = mercuryMockOld, pollux = polluxMockOld, connectionManager = connectionManagerOld, seed = null, @@ -736,7 +758,7 @@ class EdgeAgentTests { apollo = apolloMockOld, castor = castorMockOld, pluto = plutoMockOld, - mercury = mercuryMock, + mercury = mercuryMockOld, pollux = polluxMockOld, connectionManager = connectionManagerOld, seed = null, @@ -798,7 +820,7 @@ class EdgeAgentTests { apollo = apolloMockOld, castor = castorMockOld, pluto = plutoMock, - mercury = mercuryMock, + mercury = mercuryMockOld, pollux = polluxMock, connectionManager = connectionManagerOld, seed = seed, @@ -840,7 +862,7 @@ class EdgeAgentTests { apollo = apolloMockOld, castor = castorMockOld, pluto = plutoMock, - mercury = mercuryMock, + mercury = mercuryMockOld, pollux = polluxMock, connectionManager = connectionManagerOld, seed = seed, @@ -868,7 +890,7 @@ class EdgeAgentTests { apollo = apolloMockOld, castor = castorMockOld, pluto = plutoMock, - mercury = mercuryMock, + mercury = mercuryMockOld, pollux = polluxMock, connectionManager = connectionManagerOld, seed = seed, @@ -914,7 +936,7 @@ class EdgeAgentTests { apollo = apolloMockOld, castor = castorMockOld, pluto = plutoMockOld, - mercury = mercuryMock, + mercury = mercuryMockOld, pollux = pollux, connectionManager = connectionManagerOld, seed = null, @@ -1166,6 +1188,32 @@ class EdgeAgentTests { } } + @Test + fun testHandlePresentation_whenWrongPresentationSubmission_thenThrowMissingOrNullFieldError() = + runTest { + val apiMock = mock() + `when`(apiMock.request(any(), any(), any(), any(), any())) + .thenReturn(HttpResponse(200, "Ok")) + + val agent = EdgeAgent( + apollo = apolloMock, + castor = castorMock, + pluto = plutoMock, + mercury = mercuryMockOld, + pollux = polluxMock, + connectionManager = connectionManagerMock, + seed = seed, + api = apiMock, + logger = PrismLoggerMock() + ) + val msg = Json.decodeFromString( + "{\"id\":\"00000000-685c-4004-0000-000036ac64ee\",\"piuri\":\"https://didcomm.atalaprism.io/present-proof/3.0/presentation\",\"from\":{\"method\":\"peer\",\"methodId\":\"asdfasdf\"},\"to\":{\"method\":\"peer\",\"methodId\":\"fdsafdsa\"},\"fromPrior\":null,\"body\":\"{}\",\"createdTime\":\"2024-03-08T19:27:38.196506Z\",\"expiresTimePlus\":\"2024-03-09T19:27:38.196559Z\",\"attachments\":[{\"id\":\"00000000-9c2e-4249-0000-0000c1176949\",\"mediaType\":\"application/json\",\"data\":{\"type\":\"org.hyperledger.identus.walletsdk.domain.models.AttachmentBase64\",\"base64\":\"eyJ2ZXJpZmlhYmxlUHJlc2VudGF0aW9uIjpbImV5SmhiR2NpT2lKRlV6STFOa3NpZlEuZXlKcGMzTWlPaUprYVdRNmNISnBjMjA2TWpVM01UbGhPVFppTVRVeE1qQTNNVFk1T0RGaE9EUXpNR0ZrTUdOaU9UWTRaR1ExTXpRd056TTFPVE5qT0dOa00yWXhaREkzWVRZNE1EUmxZelV3WlRwRGNHOURRM0JqUTBWc2IwdENWM1JzWlZNd2VFVkJTa05VZDI5S1l6SldhbU5FU1RGT2JYTjRSV2xCUlc5VFEyNDFkSGxFWVRaWk5uSXRTVzFUY1hCS09Ga3hiV28zU2tNelgyOVZla1V3VG5sNVJXbERRbTluYzJkT1lXVlNaR05EVWtkUWJHVTRNbFoyT1hSS1prNTNiRFp5WnpaV1kyaFNNMDl4YUdsV1lsUmhPRk5YZDI5SFdWaFdNR0ZETUhoRlFWSkRWSGR2U21NeVZtcGpSRWt4VG0xemVFVnBSRTFyUW1RMlJuUnBiMHByTTFoUFJuVXRYMk41TlZodFVpMDBkRlZSTWs1TVIybFhPR0ZKVTI5dGExSnZaelpUWkdVNVVIZHVSekJSTUZOQ1ZHMUdVMVJFWWxOTFFuWkpWalpEVkV4WWNtcEpTblIwWlVkSmJVRlRXRUZ2U0dKWFJucGtSMVo1VFVKQlFsRnJPRXREV0U1c1dUTkJlVTVVV25KTlVrbG5UemN4TUcxME1WZGZhWGhFZVZGTk0zaEpjemRVY0dwTVEwNVBSRkY0WjFab2VEVnphR1pMVGxneGIyRkpTRmRRY25jM1NWVkxiR1pwWWxGMGVEWkthelJVVTJwblkxZE9UMlpqVDNSVk9VUTVVSFZhTjFRNWRDSXNJbk4xWWlJNkltUnBaRHB3Y21semJUcGlaV1ZoTlRJek5HRm1ORFk0TURRM01UUmtPR1ZoT0dWak56ZGlOalpqWXpkbU0yVTRNVFZqTmpoaFltSTBOelZtTWpVMFkyWTVZek13TmpJMk56WXpPa056WTBKRGMxRkNSVzFSUzBReVJqRmtSMmhzWW01U2NGa3lSakJoVnpsMVRVSkJSVkZyT0V0RFdFNXNXVE5CZVU1VVduSk5Va2xuWlZObkxUSlBUekZLWkc1d2VsVlBRbWwwZWtscFkxaGtabnBsUVdOVVpsZEJUaTFaUTJWMVEySjVTV0ZKU2xFMFIxUkpNekIwWVZacGQyTm9WRE5sTUc1TVdFSlRORE5DTkdvNWFteHpiRXR2TWxwc1pGaDZha1ZzZDB0Q01qRm9Zek5TYkdOcVFWRkJWVXBRUTJkc2VscFhUbmROYWxVeVlYcEZVMGxJYTI5UWRHcHFkRk5ZV2paak1VUm5XWEpqZVVsdVJqTllPRE5uU0VVek1XZEVabTFCYm5KbmJUaHBSMmxEVlU5Q2EzbE9PVXhYYkZselNFbFZPVE4wU25reGQxVjFUbmRsU1Y5Wk5XSktVM0ZPYlZwWVZqZzBkeUlzSW01aVppSTZNVFk0TlRZek1UazVOU3dpWlhod0lqb3hOamcxTmpNMU5UazFMQ0oyWXlJNmV5SmpjbVZrWlc1MGFXRnNVM1ZpYW1WamRDSTZleUpoWkdScGRHbHZibUZzVUhKdmNESWlPaUpVWlhOME15SXNJbWxrSWpvaVpHbGtPbkJ5YVhOdE9tSmxaV0UxTWpNMFlXWTBOamd3TkRjeE5HUTRaV0U0WldNM04ySTJObU5qTjJZelpUZ3hOV00yT0dGaVlqUTNOV1l5TlRSalpqbGpNekEyTWpZM05qTTZRM05qUWtOelVVSkZiVkZMUkRKR01XUkhhR3hpYmxKd1dUSkdNR0ZYT1hWTlFrRkZVV3M0UzBOWVRteFpNMEY1VGxSYWNrMVNTV2RsVTJjdE1rOVBNVXBrYm5CNlZVOUNhWFI2U1dsaldHUm1lbVZCWTFSbVYwRk9MVmxEWlhWRFlubEpZVWxLVVRSSFZFa3pNSFJoVm1sM1kyaFVNMlV3Ymt4WVFsTTBNMEkwYWpscWJITnNTMjh5V214a1dIcHFSV3gzUzBJeU1XaGpNMUpzWTJwQlVVRlZTbEJEWjJ4NldsZE9kMDFxVlRKaGVrVlRTVWhyYjFCMGFtcDBVMWhhTm1NeFJHZFpjbU41U1c1R00xZzRNMmRJUlRNeFowUm1iVUZ1Y21kdE9HbEhhVU5WVDBKcmVVNDVURmRzV1hOSVNWVTVNM1JLZVRGM1ZYVk9kMlZKWDFrMVlrcFRjVTV0V2xoV09EUjNJbjBzSW5SNWNHVWlPbHNpVm1WeWFXWnBZV0pzWlVOeVpXUmxiblJwWVd3aVhTd2lRR052Ym5SbGVIUWlPbHNpYUhSMGNITTZYQzljTDNkM2R5NTNNeTV2Y21kY0x6SXdNVGhjTDJOeVpXUmxiblJwWVd4elhDOTJNU0pkZlgwLngwU0YxN1kwVkNEbXQ3SGNlT2RUeGZIbG9mc1ptWTE4Um42VlFiMC1yLWtfQm0zaFRpMS1rMnZrZGpCMjVoZHh5VEN2eGFtLUFrQVAtQWczQWhuNU5nIl19\"},\"format\":\"dif/presentation-exchange/definitions@v1.0\"}],\"thid\":\"00000000-ef9d-4722-0000-00003b1bc908\",\"ack\":[]}" + ) + assertFailsWith(EdgeAgentError.MissingOrNullFieldError::class) { + agent.handlePresentation(msg) + } + } + @Test fun testHandlePresentationDefinitionRequest_whenAllCorrect_thenSendPresentationSubmissionCorrectly() = runTest { @@ -1262,7 +1310,7 @@ class EdgeAgentTests { apollo = apolloMock, castor = castorMock, pluto = plutoMock, - mercury = mercuryMock, + mercury = mercuryMockOld, pollux = polluxMock, connectionManager = connectionManagerMock, seed = seed, @@ -1501,6 +1549,414 @@ class EdgeAgentTests { assertTrue(agent.handlePresentation(msg)) } + @Test + fun `EdgeAgent backup wallet should generate a JWE with the proper algorithm and encryption method`() = runTest { + val agent = EdgeAgent( + apollo = apolloMock, + castor = castorMock, + pluto = plutoMock, + mercury = mercuryMock, + pollux = polluxMock, + connectionManager = connectionManagerMock, + seed = seed, + api = null, + logger = PrismLoggerMock() + ) + `when`( + apolloMock.createPrivateKey( + mapOf( + TypeKey().property to KeyTypes.Curve25519, + CurveKey().property to Curve.X25519.value, + SeedKey().property to seed.value.base64UrlEncoded, + DerivationPathKey().property to "m/0'/0'/0'" + ) + ) + ).thenReturn( + X25519PrivateKey( + byteArrayOf( + 32, + 28, + -51, + 70, + 102, + -26, + -24, + -94, + -14, + -51, + -68, + -39, + -61, + -51, + 21, + -60, + 94, + -51, + 115, + -79, + 72, + 77, + -39, + 45, + 126, + -26, + 27, + -10, + 35, + 25, + -48, + 90 + ) + ) + ) + + `when`(plutoMock.getAllDIDs()).thenReturn(flow { emit(Json.decodeFromString>(getDids)) }) + `when`(plutoMock.getAllCredentials()).thenReturn( + flow { + @Serializable + data class CredentialMock( + val restorationId: String, + val credentialData: String, + val revoked: Boolean + ) + + fun String.toRestorationId(): RestorationID = + RestorationID.entries.first { + it.value == this + } + + val credentials = Json.decodeFromString>(getCredentials).map { + val currentCredential = when (it.restorationId.toRestorationId()) { + RestorationID.JWT -> { + val jwtString = it.credentialData.base64UrlDecoded + JWTCredential.fromJwtString(jwtString).toStorableCredential() + } + + RestorationID.ANONCRED -> { + val data = it.credentialData.base64UrlDecodedBytes + PlutoRestoreTask.AnonCredentialBackUp.fromStorableData(data) + .toAnonCredential().toStorableCredential() + } + + RestorationID.W3C -> { + throw Exception("This should never happen in this test class") + } + } + CredentialRecovery( + restorationId = it.restorationId, + credentialData = currentCredential.credentialData, + revoked = it.revoked + ) + } + emit( + credentials + ) + } + ) + `when`(plutoMock.getAllDidPairs()).thenReturn( + flow { + emit( + Json.decodeFromString>( + getDidPairs + ) + ) + } + ) + `when`(plutoMock.getAllKeysForBackUp()).thenReturn( + flow { + emit( + Json.decodeFromString>( + getPrivateKeys + ) + ) + } + ) + `when`(plutoMock.getLinkSecret()).thenReturn( + flow { + emit( + Json.decodeFromString( + getLinkSecret + ) + ) + } + ) + `when`(plutoMock.getAllMessages()).thenReturn( + flow { + emit( + Json.decodeFromString>( + getMessages + ) + ) + } + ) + `when`(plutoMock.getAllMediators()).thenReturn( + flow { + emit( + Json.decodeFromString>( + getMediator + ) + ) + } + ) + + val jwe = agent.backupWallet(plutoBackupTask = PlutoBackupTask(plutoMock)) + val jweObject = JWEObject.parse(jwe) + assertEquals(JWEAlgorithm.ECDH_ES_A256KW, jweObject.header.algorithm) + assertEquals(EncryptionMethod.A256CBC_HS512, jweObject.header.encryptionMethod) + } + val getCredentialDefinitionResponse = "{\"schemaId\":\"http://host.docker.internal:8000/prism-agent/schema-registry/schemas/5e0d5a93-4bfd-3111-a956-5d5bc82f76cc\",\"type\":\"CL\",\"tag\":\"licence\",\"value\":{\"primary\":{\"n\":\"105195159277979097653318357586659371305119697478469834190626350283715795188687389523188659352120689851168860621983864738336838773213022505168653440146374011050277159372491059901432822905781969400722059341786498751125483895348734607382548396665339315322605154516776326303787844694026898270194867398625429469096229269732265502538641116512214652017416624138065704599041020588805936844771273861390913500753293895219370960892829297672575154196820931047049021760519166121287056337193413235473255257349024671869248216238831094979209384406168241010010012567685965827447177652200129684927663161550376084422586141212281146491949\",\"s\":\"85376740935726732134199731472843597191822272986425414914465211197069650618238336366149699822721009443794877925725075553195071288777117865451699414058058985000654277974066307286552934230286237253977472401290858765904161191229985245519871949378628131263513153683765553672655918133136828182050729012388157183851720391379381006921499997765191873729408614024320763554099291141052786589157823043612948619201525441997065264492145372001259366749278235381762443117203343617927241093647322654346302447381494008414208398219626199373278313446814209403507903682881070548386699522575055488393512785511441688197244526708647113340516\",\"r\":{\"dateofissuance\":\"16159515692057558658031632775257139859912833740243870833808276956469677196577164655991169139545328065546186056342530531355718904597216453319851305621683589202769847381737819412615902541110462703838858425423753481085962114120185123089078513531045426316918036549403698066078445947881055316312848598741184161901260446303171175343050250045452903485086185722998336149005743485268486377824763449026501058416292877646187105446333888525480394665310217044483841168928926515929150167890936706159800372381200383816724043496032886366767166850459338411710056171379538841845247931898550165532492578625954615979453881721709564750235\",\"drivingclass\":\"83649701835078373520097916558245060224505938113940626586910000950978790663411517512280043632278010831292224659523658613504637416710001103641231226266903556936380105758523760424939825687213460920436570466066231912959327201876189240504388424799892400351592593406285436824571943165913587899115814843543998396726679289422080229750418336051741708013580146373647528674381958028243228435161765957312248113519708734663989428761879029086059388435772829434952754093999424834120341657211221855300108096057633128467059590470639772605075954658131680801785637700237403873940041665483384938586320674338994185073499523485570537331062\",\"emailaddress\":\"96995643129591814391344614133120459563648002327749700279517548454036811217735867585059116635583558148259032071807493674533230465312311981127622542797279917256478867847832932893748528200469349058284133058865149153179959849308383505167342565738382180666525211256221655129861213392455759272915565057394420728271409215556596974900718332893753172173500744392522771654048192448229319313386967045678744665093451560743782910263014930200762027209565313884859542996067229707388839912195826334964819133016500346618083969320902775088800287566711941842968839787149808739739233388585677095545116231323172342995837636586249573194609\",\"drivinglicenseid\":\"102840929811153624977554462471309185033977661854754815794111114507549576719389525167082631547450413573293352276930065480432301200611396989595571202142654033217842162456070556560693402484110499573693863745648118310258284468114751958738878996458420605301017450868522680454545537837403398645500541915771765220093329728663621098538954397330411649083351383375839056527007892276284168437065687748085384178113959961057476582871100422859953560730152958588610850909069434658487744782540788968302663076149478487413357533660817020800754493642858564081116318655661240523146995256712471572605700346459123074377380656921337264554594\",\"familyname\":\"2428690037146701497427424649573806616639612325136606164619283916796880313617677563507218774958436668407050506838114136163250163675016510113975582318007560622124292458766639319715064358235569650961433812439763343736699708535945693241909905707497180931492818502593885932421170612418693515054756633264933222189766691632082890045477718331705366111669009551578289182848340651375008362238266590844461708981816856194045325523248527964502118319210042254240848590574645476930113881493472578612352948284862674703949781070309344526122291448990325949065193279599181502524961004046979227803224474342778516917124487012958845744311\",\"master_secret\":\"96236339155824229583363924057798366491998077727991424922911165403434522806469328114407334094535810942859512352089785125683335350062474092708044674085769524387654467267128528564551803293661877480971961092735622606052503557881856409855812611523475975566606131897917979412576797874632169829901968854843162299366867885636535326810998541141840561418097240137120398317445832694001031827068485975315937269024666370665530455146256019590700349556357390218401217383173228376078058967743472704019765210324846681867991543267171763037513180046865961560351035005185946817643006206395175857900512245900162751815626427008481585714891\"},\"rctxt\":\"54359809198312125478916383106913469635175253891208897419510030559787479974126666313900084654632259260010008369569778456071591398552341004538623276997178295939490854663263886825856426285604332554317424030793691008221895556474599466123873279022389276698551452690414982831059651505731449763128921782866843113361548859434294057249048041670761184683271568216202174527891374770703485794299697663353847310928998125365841476766767508733046891626759537001358973715760759776149482147060701775948253839125589216812475133616408444838011643485797584321993661048373877626880635937563283836661934456534313802815974883441215836680800\",\"z\":\"99592262675748359673042256590146366586480829950402370244401571195191609039150608482506917768910598228167758026656953725016982562881531475875469671976107506976812319765644401707559997823702387678953647104105378063905395973550729717937712350758544336716556268064226491839700352305793370980462034813589488455836259737325502578253339820590260554457468082536249525493340350556649403477875367398139579018197084796440810685458274393317299082017275568964540311198115802021902455672385575542594821996060452628805634468222196284384514736044680778624637228114693554834388824212714580770066729185685978935409859595244639193538156\"}},\"issuerId\":\"did:prism:604ba1764ab89993f9a74625cc4f3e04737919639293eb382cc7adc53767f550\"}" + + val getLinkSecret = + "\"40960368705011900020984253500979753785333739067716460047393316855560515114468\"" + val getDids = """ + [{"method":"peer","methodId":"2.Ez6LSok96TA4orHQXSMHZj3mqyUuVLMfLfGGqj27i1giErbXL.Vz6Mku5mY1GuJ9AN2vvDwjMv5QUC2zqKVRPCcbmJVYTFTCFmr"},{"method":"peer","methodId":"2.Ez6LSghwSE437wnDE1pt3X6hVDUQzSjsHzinpX3XFvMjRAm7y.Vz6Mkhh1e5CEYYq6JBUcTZ6Cp2ranCWRrv7Yax3Le4N59R6dd.SeyJ0IjoiZG0iLCJzIjp7InVyaSI6Imh0dHBzOi8vc2l0LXByaXNtLW1lZGlhdG9yLmF0YWxhcHJpc20uaW8iLCJhIjpbImRpZGNvbW0vdjIiXX19.SeyJ0IjoiZG0iLCJzIjp7InVyaSI6IndzczovL3NpdC1wcmlzbS1tZWRpYXRvci5hdGFsYXByaXNtLmlvL3dzIiwiYSI6WyJkaWRjb21tL3YyIl19fQ"},{"method":"peer","methodId":"2.Ez6LSqWfJdwLMDmpew7Yd8AQS2MxDwvSCNpjaZ7EQVst8rkfA.Vz6MknpCj4WomXhC2eur8nf4wnoFzHpCA6EAFU6afEmmrUVRA.SeyJ0IjoiZG0iLCJzIjp7InVyaSI6ImRpZDpwZWVyOjIuRXo2TFNnaHdTRTQzN3duREUxcHQzWDZoVkRVUXpTanNIemlucFgzWEZ2TWpSQW03eS5WejZNa2hoMWU1Q0VZWXE2SkJVY1RaNkNwMnJhbkNXUnJ2N1lheDNMZTRONTlSNmRkLlNleUowSWpvaVpHMGlMQ0p6SWpwN0luVnlhU0k2SW1oMGRIQnpPaTh2YzJsMExYQnlhWE50TFcxbFpHbGhkRzl5TG1GMFlXeGhjSEpwYzIwdWFXOGlMQ0poSWpwYkltUnBaR052YlcwdmRqSWlYWDE5LlNleUowSWpvaVpHMGlMQ0p6SWpwN0luVnlhU0k2SW5kemN6b3ZMM05wZEMxd2NtbHpiUzF0WldScFlYUnZjaTVoZEdGc1lYQnlhWE50TG1sdkwzZHpJaXdpWVNJNld5SmthV1JqYjIxdEwzWXlJbDE5ZlEiLCJyIjpbXSwiYSI6W119fQ"},{"method":"prism","methodId":"6f23ddace519b68dfc0fa06e992db40f2f3c584af382ce446fa2fd0e042e5dea:CoUBCoIBEjsKB21hc3RlcjAQAUouCglzZWNwMjU2azESIQMcKwEitGbQKtGa-jFXi3m1u7OP2JMukYXQnZk3fQIXvxJDCg9hdXRoZW50aWNhdGlvbjAQBEouCglzZWNwMjU2azESIQMcKwEitGbQKtGa-jFXi3m1u7OP2JMukYXQnZk3fQIXvw"},{"method":"prism","methodId":"0a4b552169e3158781741fbbeffe81212784d32d90cf8f2622923f11f6ecd966:CoUBCoIBEjsKB21hc3RlcjAQAUouCglzZWNwMjU2azESIQLgzhsuOqhAyImy-c8o9ZmIJ4iY_Gc8tvNIT3l1w58f2BJDCg9hdXRoZW50aWNhdGlvbjAQBEouCglzZWNwMjU2azESIQLgzhsuOqhAyImy-c8o9ZmIJ4iY_Gc8tvNIT3l1w58f2A"}] + """ + val getDidPairs = """ + [{"holder":{"method":"peer", "methodId":"2.Ez6LSqWfJdwLMDmpew7Yd8AQS2MxDwvSCNpjaZ7EQVst8rkfA.Vz6MknpCj4WomXhC2eur8nf4wnoFzHpCA6EAFU6afEmmrUVRA.SeyJ0IjoiZG0iLCJzIjp7InVyaSI6ImRpZDpwZWVyOjIuRXo2TFNnaHdTRTQzN3duREUxcHQzWDZoVkRVUXpTanNIemlucFgzWEZ2TWpSQW03eS5WejZNa2hoMWU1Q0VZWXE2SkJVY1RaNkNwMnJhbkNXUnJ2N1lheDNMZTRONTlSNmRkLlNleUowSWpvaVpHMGlMQ0p6SWpwN0luVnlhU0k2SW1oMGRIQnpPaTh2YzJsMExYQnlhWE50TFcxbFpHbGhkRzl5TG1GMFlXeGhjSEpwYzIwdWFXOGlMQ0poSWpwYkltUnBaR052YlcwdmRqSWlYWDE5LlNleUowSWpvaVpHMGlMQ0p6SWpwN0luVnlhU0k2SW5kemN6b3ZMM05wZEMxd2NtbHpiUzF0WldScFlYUnZjaTVoZEdGc1lYQnlhWE50TG1sdkwzZHpJaXdpWVNJNld5SmthV1JqYjIxdEwzWXlJbDE5ZlEiLCJyIjpbXSwiYSI6W119fQ"}, "receiver":{"method":"peer", "methodId":"2.Ez6LSrhfy5nfumryQUhCU9CRFZvEy3zZV2pUedwpUoYbeiZbq.Vz6MksfNehMay3PPDQEfaaeCotpgC5z9hCnbF6s8uYWUGjSYh.SeyJ0IjoiZG0iLCJzIjp7InVyaSI6Imh0dHA6Ly8xOTIuMTY4LjY4LjExMzo4MDAwL2RpZGNvbW0iLCJyIjpbXSwiYSI6WyJkaWRjb21tL3YyIl19fQ"}, "name":""}] + """ + val getPrivateKeys = """ + [ + { + "key":"{\"kty\":\"OKP\",\"d\":\"j1BaK2P1iHMt9hwb6GzZCcpjkKrYmBPX5LPI4aFLTT0\",\"crv\":\"Ed25519\",\"x\":\"2V3e1LsSkcjwvlX2Y9Fp2jbg_j5lan-nZJRxYy_sUjk\"}", + "did":"did:peer:2.Ez6LSok96TA4orHQXSMHZj3mqyUuVLMfLfGGqj27i1giErbXL.Vz6Mku5mY1GuJ9AN2vvDwjMv5QUC2zqKVRPCcbmJVYTFTCFmr#key-2", + "index":0, + "recovery_id":"ed25519+priv" + }, + { + "key":"{\"kty\":\"OKP\",\"d\":\"6BQsylDTirk7C6bacJuaH28tx6jXmNZv7LojNN2Tgnw\",\"crv\":\"X25519\",\"x\":\"s1A5vv8L6_8NhtPr7L_CaE72WVkt6UNnoj2mtqS11H8\"}", + "did":"did:peer:2.Ez6LSok96TA4orHQXSMHZj3mqyUuVLMfLfGGqj27i1giErbXL.Vz6Mku5mY1GuJ9AN2vvDwjMv5QUC2zqKVRPCcbmJVYTFTCFmr#key-1", + "index":0, + "recovery_id":"x25519+priv" + }, + { + "key":"{\"kty\":\"OKP\",\"d\":\"wE2pfN2Y0iwqa2py22NKZJvvq7nZZ_Ff9yYyvBTUhig\",\"crv\":\"Ed25519\",\"x\":\"fDrwZceyjKWYnvstPyk_b353dgOQ8_YOs1TK12h0trE\"}", + "did":"did:peer:2.Ez6LSqWfJdwLMDmpew7Yd8AQS2MxDwvSCNpjaZ7EQVst8rkfA.Vz6MknpCj4WomXhC2eur8nf4wnoFzHpCA6EAFU6afEmmrUVRA.SeyJ0IjoiZG0iLCJzIjp7InVyaSI6ImRpZDpwZWVyOjIuRXo2TFNnaHdTRTQzN3duREUxcHQzWDZoVkRVUXpTanNIemlucFgzWEZ2TWpSQW03eS5WejZNa2hoMWU1Q0VZWXE2SkJVY1RaNkNwMnJhbkNXUnJ2N1lheDNMZTRONTlSNmRkLlNleUowSWpvaVpHMGlMQ0p6SWpwN0luVnlhU0k2SW1oMGRIQnpPaTh2YzJsMExYQnlhWE50TFcxbFpHbGhkRzl5TG1GMFlXeGhjSEpwYzIwdWFXOGlMQ0poSWpwYkltUnBaR052YlcwdmRqSWlYWDE5LlNleUowSWpvaVpHMGlMQ0p6SWpwN0luVnlhU0k2SW5kemN6b3ZMM05wZEMxd2NtbHpiUzF0WldScFlYUnZjaTVoZEdGc1lYQnlhWE50TG1sdkwzZHpJaXdpWVNJNld5SmthV1JqYjIxdEwzWXlJbDE5ZlEiLCJyIjpbXSwiYSI6W119fQ#key-2", + "index":0, + "recovery_id":"ed25519+priv" + }, + { + "key":"{\"kty\":\"OKP\",\"d\":\"IMLHcfmNSp6A4ZSqpxModc3maH5O-k3Jwpt1PeMkGXU\",\"crv\":\"X25519\",\"x\":\"zZOgc8btEWstmzAlrFmHZAQB7z9OmsWUMqdMlLnEuSk\"}", + "did":"did:peer:2.Ez6LSqWfJdwLMDmpew7Yd8AQS2MxDwvSCNpjaZ7EQVst8rkfA.Vz6MknpCj4WomXhC2eur8nf4wnoFzHpCA6EAFU6afEmmrUVRA.SeyJ0IjoiZG0iLCJzIjp7InVyaSI6ImRpZDpwZWVyOjIuRXo2TFNnaHdTRTQzN3duREUxcHQzWDZoVkRVUXpTanNIemlucFgzWEZ2TWpSQW03eS5WejZNa2hoMWU1Q0VZWXE2SkJVY1RaNkNwMnJhbkNXUnJ2N1lheDNMZTRONTlSNmRkLlNleUowSWpvaVpHMGlMQ0p6SWpwN0luVnlhU0k2SW1oMGRIQnpPaTh2YzJsMExYQnlhWE50TFcxbFpHbGhkRzl5TG1GMFlXeGhjSEpwYzIwdWFXOGlMQ0poSWpwYkltUnBaR052YlcwdmRqSWlYWDE5LlNleUowSWpvaVpHMGlMQ0p6SWpwN0luVnlhU0k2SW5kemN6b3ZMM05wZEMxd2NtbHpiUzF0WldScFlYUnZjaTVoZEdGc1lYQnlhWE50TG1sdkwzZHpJaXdpWVNJNld5SmthV1JqYjIxdEwzWXlJbDE5ZlEiLCJyIjpbXSwiYSI6W119fQ#key-1", + "index":0, + "recovery_id":"x25519+priv" + }, + { + "key":"{\"kty\":\"EC\",\"d\":\"drF7QtIgnKGMpQTm2BxomRFeKkgHWV4r2lfYCVUYPns\",\"crv\":\"secp256k1\",\"x\":\"HCsBIrRm0CrRmvoxV4t5tbuzj9iTLpGF0J2ZN30CF78\",\"y\":\"MuTzhhijGiKuc_Ajm7iasGJwSETvhjK7SEukKBLMMOM\"}", + "did":"did:prism:6f23ddace519b68dfc0fa06e992db40f2f3c584af382ce446fa2fd0e042e5dea:CoUBCoIBEjsKB21hc3RlcjAQAUouCglzZWNwMjU2azESIQMcKwEitGbQKtGa-jFXi3m1u7OP2JMukYXQnZk3fQIXvxJDCg9hdXRoZW50aWNhdGlvbjAQBEouCglzZWNwMjU2azESIQMcKwEitGbQKtGa-jFXi3m1u7OP2JMukYXQnZk3fQIXvw", + "index":1, + "recovery_id":"secp256k1+priv" + }, + { + "key":"{\"kty\":\"EC\",\"d\":\"QPFq8rgWb8jDBBVOpR9_tnzy0mW1RwMLBL5x1DUle-k\",\"crv\":\"secp256k1\",\"x\":\"4M4bLjqoQMiJsvnPKPWZiCeImPxnPLbzSE95dcOfH9g\",\"y\":\"vld5MJHizoXDITRfAjkFiKs8PAbGbM21cNCfzFyanYQ\"}", + "did":"did:prism:0a4b552169e3158781741fbbeffe81212784d32d90cf8f2622923f11f6ecd966:CoUBCoIBEjsKB21hc3RlcjAQAUouCglzZWNwMjU2azESIQLgzhsuOqhAyImy-c8o9ZmIJ4iY_Gc8tvNIT3l1w58f2BJDCg9hdXRoZW50aWNhdGlvbjAQBEouCglzZWNwMjU2azESIQLgzhsuOqhAyImy-c8o9ZmIJ4iY_Gc8tvNIT3l1w58f2A", + "index":2, + "recovery_id":"secp256k1+priv" + } + ] + """ + val getCredentials = """ + [ + { + "restorationId":"jwt+credential", + "credentialData":"ZXlKaGJHY2lPaUpGVXpJMU5rc2lmUS5leUpwYzNNaU9pSmthV1E2Y0hKcGMyMDZNek0zWlRobVpURTBOR0ZoWTJWa00yTmhNMlJrTlRrME5qSTBNRFJtTkRVNU9UWmxNMkl5TWpGaFltTTBNVEJoTnpJMVpXRTJOalV6TkRnNU56SmlZanBEY210Q1EzSlpRa1ZxYjB0Q2JVWXhaRWRuZEUxU1FVVlRhVFJMUTFoT2JGa3pRWGxPVkZweVRWSkphRUYyZVdjeFlUTjFjSFZtYkZCTGN6aEtSMWhLVTNOeFYxcGpWRzlHUVhrM1JqTlNURkJqUWxrMFYyNXpSV3B6UzBJeWJIcGpNMVpzVEZSRlVVRnJiM1ZEWjJ4NldsZE9kMDFxVlRKaGVrVlRTVkZQWVZCVWJ6TTVUbmgyVW1oWFVXNWlWV2hvVFhNNWJURkllRUp0Y1Y5aFpXTkhNMHRUVEdaaU5XZ3pVa2szUTJka2RGbFlUakJhV0VsM1JVRkdTMHhuYjBwak1sWnFZMFJKTVU1dGMzaEZhVVZFWjNwb09FbERZMVpoTlZsTlpqWXpSRkZhTTE5MWRUTk9Nek5zU1hWR1NHSm9YMDlLVWxWSWJXZDJZeUlzSW5OMVlpSTZJbVJwWkRwd2NtbHpiVG93WVRSaU5UVXlNVFk1WlRNeE5UZzNPREUzTkRGbVltSmxabVpsT0RFeU1USTNPRFJrTXpKa09UQmpaamhtTWpZeU1qa3lNMll4TVdZMlpXTmtPVFkyT2tOdlZVSkRiMGxDUldwelMwSXlNV2hqTTFKc1kycEJVVUZWYjNWRFoyeDZXbGRPZDAxcVZUSmhla1ZUU1ZGTVozcG9jM1ZQY1doQmVVbHRlUzFqT0c4NVdtMUpTalJwV1Y5SFl6aDBkazVKVkROc01YYzFPR1l5UWtwRVEyYzVhR1JZVW05YVZ6VXdZVmRPYUdSSGJIWmlha0ZSUWtWdmRVTm5iSHBhVjA1M1RXcFZNbUY2UlZOSlVVeG5lbWh6ZFU5eGFFRjVTVzE1TFdNNGJ6bGFiVWxLTkdsWlgwZGpPSFIyVGtsVU0yd3hkelU0WmpKQklpd2libUptSWpveE56RTRNek0wTVRVeExDSjJZeUk2ZXlKamNtVmtaVzUwYVdGc1UzVmlhbVZqZENJNmV5SmxiV0ZwYkVGa1pISmxjM01pT2lKa1pXMXZRR1Z0WVdsc0xtTnZiU0lzSW1SeWFYWnBibWREYkdGemN5STZJakVpTENKbVlXMXBiSGxPWVcxbElqb2laR1Z0YnlJc0ltUnlhWFpwYm1kTWFXTmxibk5sU1VRaU9pSkJNVEl5TVRNek1pSXNJbWxrSWpvaVpHbGtPbkJ5YVhOdE9qQmhOR0kxTlRJeE5qbGxNekUxT0RjNE1UYzBNV1ppWW1WbVptVTRNVEl4TWpjNE5HUXpNbVE1TUdObU9HWXlOakl5T1RJelpqRXhaalpsWTJRNU5qWTZRMjlWUWtOdlNVSkZhbk5MUWpJeGFHTXpVbXhqYWtGUlFWVnZkVU5uYkhwYVYwNTNUV3BWTW1GNlJWTkpVVXhuZW1oemRVOXhhRUY1U1cxNUxXTTRiemxhYlVsS05HbFpYMGRqT0hSMlRrbFVNMnd4ZHpVNFpqSkNTa1JEWnpsb1pGaFNiMXBYTlRCaFYwNW9aRWRzZG1KcVFWRkNSVzkxUTJkc2VscFhUbmROYWxVeVlYcEZVMGxSVEdkNmFITjFUM0ZvUVhsSmJYa3RZemh2T1ZwdFNVbzBhVmxmUjJNNGRIWk9TVlF6YkRGM05UaG1Na0VpTENKa1lYUmxUMlpKYzNOMVlXNWpaU0k2SWpBeFhDOHdNVnd2TWpBeU5DSjlMQ0owZVhCbElqcGJJbFpsY21sbWFXRmliR1ZEY21Wa1pXNTBhV0ZzSWwwc0lrQmpiMjUwWlhoMElqcGJJbWgwZEhCek9sd3ZYQzkzZDNjdWR6TXViM0puWEM4eU1ERTRYQzlqY21Wa1pXNTBhV0ZzYzF3dmRqRWlYU3dpWTNKbFpHVnVkR2xoYkZOMFlYUjFjeUk2ZXlKemRHRjBkWE5RZFhKd2IzTmxJam9pVW1WMmIyTmhkR2x2YmlJc0luTjBZWFIxYzB4cGMzUkpibVJsZUNJNk5Td2lhV1FpT2lKb2RIUndPbHd2WEM4eE9USXVNVFk0TGpZNExqRXhNem80TURBd1hDOXdjbWx6YlMxaFoyVnVkRnd2WTNKbFpHVnVkR2xoYkMxemRHRjBkWE5jTHpNNVlqQmlOekkyTFRCbU5tVXRORGxtTnkwNVl6VXlMVFl5WVRjNE1UY3hOelZsT0NNMUlpd2lkSGx3WlNJNklsTjBZWFIxYzB4cGMzUXlNREl4Ulc1MGNua2lMQ0p6ZEdGMGRYTk1hWE4wUTNKbFpHVnVkR2xoYkNJNkltaDBkSEE2WEM5Y0x6RTVNaTR4TmpndU5qZ3VNVEV6T2pnd01EQmNMM0J5YVhOdExXRm5aVzUwWEM5amNtVmtaVzUwYVdGc0xYTjBZWFIxYzF3dk16bGlNR0kzTWpZdE1HWTJaUzAwT1dZM0xUbGpOVEl0TmpKaE56Z3hOekUzTldVNEluMTlmUS5maW5ESHhybHRxbU9CcXBEZ3Zfa0NMVk02dnZCRFU3YWRoY01UV3Y2VTRwMlBha3puc0htbDl2TXpxNGpidWlfTXAwZDFoTm0tUXVVcFRMSUFiY2Z1QQ", + "revoked": false + }, + { + "restorationId":"anon+credential", + "credentialData":"eyJzY2hlbWFfaWQiOiJodHRwOi8vaG9zdC5kb2NrZXIuaW50ZXJuYWw6ODAwMC9wcmlzbS1hZ2VudC9zY2hlbWEtcmVnaXN0cnkvc2NoZW1hcy9mNTJlYmM2MS02MTQ2LTMyMzgtOTljNS1hM2ZkNjkzYjk2Zjcvc2NoZW1hIiwiY3JlZF9kZWZfaWQiOiJodHRwOi8vMTkyLjE2OC42OC4xMTM6ODAwMC9wcmlzbS1hZ2VudC9jcmVkZW50aWFsLWRlZmluaXRpb24tcmVnaXN0cnkvZGVmaW5pdGlvbnMvM2Y0ZWEwOTgtODdiNi0zMDJhLWE3MjYtZjkzZmU5MzhjZjI0L2RlZmluaXRpb24iLCJ2YWx1ZXMiOnsiZW1haWxhZGRyZXNzIjp7InJhdyI6ImNyaXN0aWFuLmNhc3Ryb0Bpb2hrLmlvIiwiZW5jb2RlZCI6IjM2MzQyMzgzNzQ1NTM4Njg0NzkxOTMwNTAzMzYyNTczOTQ0MjQzNzA2MjA3NTE4NzU5MDI1MTY5MTAyODM3MDAxMzM0NjExMzcyNzQzIn19LCJzaWduYXR1cmUiOnsicF9jcmVkZW50aWFsIjp7Im1fMiI6IjEwODg5NjAwNjg2NTY2NzkwOTA2Njc3NTU5ODIxNjY4NjU5NjUyNDE3MzYxNjcwNTYzMzgzNDMwMDEzMDYxNDU4NDMzMzIyNTUxODIwMyIsImEiOiIzNDIxODA5NzM3MzQ2MTYyNDQ5NzIzOTI1NDYxNTg4ODY1NTYzMDg1NTIyNDY0OTY0MDI4NzQwMjAxNzUzNTQ4ODcyNzQ4NDUyMzg4OTM3MDM2Mjk1MzIxOTg4OTU1OTgwMjg4OTMyNTcyNzc4NTgyNDcwODIzNDc3MjQ5NTcwMzA3NTkyNjU3ODQ0MjAyMDY5MDI5Nzk5NjQ2NzI3Mjk2OTQ5OTg4NDMzMDMzMzAzNDUzMDI3NTkzMjc5ODYyMzAwNTg2MzA4MjgyNTI4MjMzODQ5MTAyOTAyODE2MzA1MTEwODE5NTU2MDEyNzU0NDUxMjAzNTAzODUyMDUyMjczMzg1NjIyMTU2NDk5MTYxNzg1Mjc1MDcxNjQ2ODYyNTcwNTk3Nzg1MDU0NDcyNTY2ODUyODc1NjA3NjUzMzQxMDQwODM2Njg5MzAxMjEyOTc3NDkyMjA1MTk0Mjg0MzEzODQyNzMyMzM4NTcwMTgwNjAzMDEyOTA0ODAwMDQxNDIzMTg1ODQ2ODgzNjM2Mjk0MDI0MDczNTQ5MDgzMDg4NTMzOTQ3NDUzMTM1MTkyNzYyODYzNzg3NDE2NTYxNzEyNDczNTE4OTcyNTU2ODYzNjQ4NTYwMjI2NDE2Nzk1MjgyODQ1OTk3MjU4ODkyMjE2OTA2MDcxNzUwODM5NTgwNTg4MzYzMTAxMDY5NjA4MzA3MDIzNzc2NDU5Mzg1MjA2NDQ3ODcxMjU3MzY3MTI4MDIyNzAxODM2MzI2MTEzNTcxMDAyOTc3Njk1MzgwODE2MDE5MzgxOTQxNDQ4MDk0MDU3ODYwNDMwIiwiZSI6IjI1OTM0NDcyMzA1NTA2MjA1OTkwNzAyNTQ5MTQ4MDY5NzU3MTkzODI3Nzg4OTUxNTE1MjMwNjI0OTcyODU4MzEwNTY2NTgwMDcxMzMwNjc1OTE0OTk4MTY5MDU1OTE5Mzk4NzE0MzAxMjM2NzkxMzIwNjI5OTMyMzg5OTY5Njk0MjIxMzIzNTk1Njc0MjkzMDE0MDYwMzc0NDMwNTk3MDc5NzA2NTE4MjI5MjY3MjY2NjI5OSIsInYiOiI5Mzk3ODc5ODYxNTE4MTM5MDkyMTczOTQ0NTk1NTYxNTMzMjM4ODc0MTU2MTEzMTMzMDA2MDg2MDg0Njc1NzM5MDYwODA3MzYxOTM0OTAyMzg1MTYyODM5Mjg5Mjc2NjkwMTYyMzIxOTg4OTA3Njg0Mzk3OTE1Mzk5MTU4OTgxOTAxMTE1ODg0MTE4NDc5NzY1ODQzNjI2MjQzNDg3NjUwMzY5NjY1Mzk2MDc1NDA2NTkwNzQzMzU0NzQzODg3MzU1OTQ4NDY5MzQ0ODE1MTY1NTUyOTE2NzIzNDgzNDQ2MzIzNDIwNzAzNDczNTc4NDgzMDY3Njg3NTc4Njg1NTU2MTM1MDUyMjA3OTUwODA4MjAzMDE4NDkxODI5MjQxMTY3Mjc1Nzg1MzE5NjM4MzM4MTA5MDQyNDI3NjA2NDQ4NjczNDMyMjAyMDEyODQwNzczMTA5ODk4MDI1MTk0NTg0MDAzNTk5MjY2NTgxNzgwNjUwMjcxOTE0NDAzNjA2ODg4MTMwNjgwOTI3NzI2NDM3MDkxNTc4Nzk1MjM3MjUxMzE0Mjg2ODE5ODI4NDkwODg2OTY2NDM1MDcwMDk3MjczMDkzMzE2NjgwMDE2ODcxMTUyMjE0NTExNzM2MzE2ODAxMjY5NDE4OTEzNTA0ODg4NjI5Njg2MTgzNTg1NzA4OTkxNjY0MjE5MjcyNzA1NjEzNzUxMjY2MDExNTUxOTA2ODkwNDU5MDY5MjA5NTk1MTE3OTAzMDI5MTMxNDY4ODg0MjI4MTA2ODcxOTc0NzA3MjI0ODA1MjIzODMyOTMzODMwNzgzNjM3NDM5NDA4MTEzNTMxMjM3NjA3NTMyMzM2ODQ1Nzk2MzA1MjA3Nzk4MDg5MzQzMDc2NDAzMzIyMTEyODk5NDA3ODI1OTA5NDcxOTcwNTk2MDczNTk3MzI0NTg2NDU4MTEyMzc0ODIxMDAwMTIyMzY2NTE5NjE2MDI1NzkyOTI1NTM2OTI3Mjk2NDM0MDExOTI2NDI2Njg3NDYyODQzMDczMzg3NzE5NTczMTIyMjkyNzIwNjcyMTExODE2NTkwMTIwOTEyNTM1OTkyNzk3In19LCJzaWduYXR1cmVfY29ycmVjdG5lc3NfcHJvb2YiOnsic2UiOiIxMjc3MjU5MTIxMDkwMDA1NDExNTY3NDIwNTkwODEyNDQ5MzE1Mzg3ODE4ODU2NjY5MjE5MTAzNTE1NzEwNDY5Nzk5ODIwNDc2OTIxMTMwODQ4Nzg1OTMzNjU2MDE2MDE1NjI3MjExNzU5NTg4Nzc1Mzg5NDc0MTY3NTkyMzE0OTI1NTc4MjgyOTkxMzY5ODM0OTEwMjY4NDA3MDcxNjc3NzUwMjA2NDY4MDAzMjAxMDM3NjU1MDgzNDQ1ODkzNTYwNjM1NjE0MzgwMTQ5MDU0NDExMTg4MjMwNjg1MDA1NDA1ODgwNTE3NjkzNjE2NDk0MTk5NDA2NDQ1MjE2OTIwMDA2Nzk1NzQ5MDQ4NjQwOTMyNTE1NjQ4MTkyNDU0MDk3MTQxNDE3NjY0Nzc0NDMxMzg5MDA1NDUwMTM4NDcyNjQ1NzU3NzMzMjY0MzI4MTQ1MzcyMjcwODgyODIxMjA5Nzg4NjAyMzQ4NDc1OTMzNTU3NzU4MzkzMzMzNTU5ODEyOTQ4MjcyMjcxODEwMzk0OTE0MzQ2NTg5NTU4NjkxMTE0NzgzOTM5Njk1MDgzMjU5MjMwNzU3MTU5MjEwODU3MDY4ODIyNTgzNTY1OTE3ODc4MjQxNjU0MTU4NjY4NjUyMzc2NzAyNzExMTQyMDcwNzA0MDc2MzQ3MzU0NjAyMTI4MTE5MjgyNzQ3NjUxOTg3OTg2MjAwMDgzNzk2OTUwODk1MzExNTA5NDMxNzkwNTcxNzUwMTUxOTkzMjgwMzkyODgyMjE2MTIyMDA5NTc3MzEwMDI4NzYyMDY0MTAwNTg3MTQ0NTMwNiIsImMiOiI5Mzc5MzI3MTk1Mjc5MTYzNzQyMjg2MTE0MzgwMjMzNjcwMzg5NzI5MTcyNjA1MDUwMjQ0MDU5OTI3MDQwNjM1MjA4OTgzNjAyOTkxOSJ9fQ", + "revoked": false + } + ] + """ + val getMessages = """ + [ + { + "id":"49d81234-8d78-4c12-8894-ae3a624deaa1", + "piuri":"https://atalaprism.io/mercury/connections/1.0/request", + "from":{"method":"peer","methodId":"2.Ez6LSqWfJdwLMDmpew7Yd8AQS2MxDwvSCNpjaZ7EQVst8rkfA.Vz6MknpCj4WomXhC2eur8nf4wnoFzHpCA6EAFU6afEmmrUVRA.SeyJ0IjoiZG0iLCJzIjp7InVyaSI6ImRpZDpwZWVyOjIuRXo2TFNnaHdTRTQzN3duREUxcHQzWDZoVkRVUXpTanNIemlucFgzWEZ2TWpSQW03eS5WejZNa2hoMWU1Q0VZWXE2SkJVY1RaNkNwMnJhbkNXUnJ2N1lheDNMZTRONTlSNmRkLlNleUowSWpvaVpHMGlMQ0p6SWpwN0luVnlhU0k2SW1oMGRIQnpPaTh2YzJsMExYQnlhWE50TFcxbFpHbGhkRzl5TG1GMFlXeGhjSEpwYzIwdWFXOGlMQ0poSWpwYkltUnBaR052YlcwdmRqSWlYWDE5LlNleUowSWpvaVpHMGlMQ0p6SWpwN0luVnlhU0k2SW5kemN6b3ZMM05wZEMxd2NtbHpiUzF0WldScFlYUnZjaTVoZEdGc1lYQnlhWE50TG1sdkwzZHpJaXdpWVNJNld5SmthV1JqYjIxdEwzWXlJbDE5ZlEiLCJyIjpbXSwiYSI6W119fQ"}, + "to":{"method":"peer","methodId":"2.Ez6LSrhfy5nfumryQUhCU9CRFZvEy3zZV2pUedwpUoYbeiZbq.Vz6MksfNehMay3PPDQEfaaeCotpgC5z9hCnbF6s8uYWUGjSYh.SeyJ0IjoiZG0iLCJzIjp7InVyaSI6Imh0dHA6Ly8xOTIuMTY4LjY4LjExMzo4MDAwL2RpZGNvbW0iLCJyIjpbXSwiYSI6WyJkaWRjb21tL3YyIl19fQ"}, + "fromPrior":null, + "body":"{\"accept\":[]}", + "created_time":"1718334045301", + "expires_time_plus":"1718420445301", + "attachments":[ + + ], + "thid":"635e1e59-54b2-4cce-b635-f70f6a4b0268", + "ack":[ + + ], + "direction":"SENT" + }, + { + "id":"76170446-761a-48e5-a869-1800089c6024", + "piuri":"https://atalaprism.io/mercury/connections/1.0/response", + "from":{"method":"peer","methodId":"2.Ez6LSqWfJdwLMDmpew7Yd8AQS2MxDwvSCNpjaZ7EQVst8rkfA.Vz6MknpCj4WomXhC2eur8nf4wnoFzHpCA6EAFU6afEmmrUVRA.SeyJ0IjoiZG0iLCJzIjp7InVyaSI6ImRpZDpwZWVyOjIuRXo2TFNnaHdTRTQzN3duREUxcHQzWDZoVkRVUXpTanNIemlucFgzWEZ2TWpSQW03eS5WejZNa2hoMWU1Q0VZWXE2SkJVY1RaNkNwMnJhbkNXUnJ2N1lheDNMZTRONTlSNmRkLlNleUowSWpvaVpHMGlMQ0p6SWpwN0luVnlhU0k2SW1oMGRIQnpPaTh2YzJsMExYQnlhWE50TFcxbFpHbGhkRzl5TG1GMFlXeGhjSEpwYzIwdWFXOGlMQ0poSWpwYkltUnBaR052YlcwdmRqSWlYWDE5LlNleUowSWpvaVpHMGlMQ0p6SWpwN0luVnlhU0k2SW5kemN6b3ZMM05wZEMxd2NtbHpiUzF0WldScFlYUnZjaTVoZEdGc1lYQnlhWE50TG1sdkwzZHpJaXdpWVNJNld5SmthV1JqYjIxdEwzWXlJbDE5ZlEiLCJyIjpbXSwiYSI6W119fQ"}, + "to":{"method":"peer","methodId":"2.Ez6LSrhfy5nfumryQUhCU9CRFZvEy3zZV2pUedwpUoYbeiZbq.Vz6MksfNehMay3PPDQEfaaeCotpgC5z9hCnbF6s8uYWUGjSYh.SeyJ0IjoiZG0iLCJzIjp7InVyaSI6Imh0dHA6Ly8xOTIuMTY4LjY4LjExMzo4MDAwL2RpZGNvbW0iLCJyIjpbXSwiYSI6WyJkaWRjb21tL3YyIl19fQ"}, + "fromPrior":"null", + "body":"{\"goal\":null,\"goal_code\":null,\"accept\":[]}", + "created_time":"1718334045", + "expires_time_plus":"1718420447030", + "attachments":[ + + ], + "thid":"635e1e59-54b2-4cce-b635-f70f6a4b0268", + "ack":[ + + ] + }, + { + "id":"99383a8d-6943-40ad-87dd-b224dff3c80c", + "piuri":"https://didcomm.org/issue-credential/3.0/offer-credential", + "from":{"method":"peer","methodId":"2.Ez6LSqWfJdwLMDmpew7Yd8AQS2MxDwvSCNpjaZ7EQVst8rkfA.Vz6MknpCj4WomXhC2eur8nf4wnoFzHpCA6EAFU6afEmmrUVRA.SeyJ0IjoiZG0iLCJzIjp7InVyaSI6ImRpZDpwZWVyOjIuRXo2TFNnaHdTRTQzN3duREUxcHQzWDZoVkRVUXpTanNIemlucFgzWEZ2TWpSQW03eS5WejZNa2hoMWU1Q0VZWXE2SkJVY1RaNkNwMnJhbkNXUnJ2N1lheDNMZTRONTlSNmRkLlNleUowSWpvaVpHMGlMQ0p6SWpwN0luVnlhU0k2SW1oMGRIQnpPaTh2YzJsMExYQnlhWE50TFcxbFpHbGhkRzl5TG1GMFlXeGhjSEpwYzIwdWFXOGlMQ0poSWpwYkltUnBaR052YlcwdmRqSWlYWDE5LlNleUowSWpvaVpHMGlMQ0p6SWpwN0luVnlhU0k2SW5kemN6b3ZMM05wZEMxd2NtbHpiUzF0WldScFlYUnZjaTVoZEdGc1lYQnlhWE50TG1sdkwzZHpJaXdpWVNJNld5SmthV1JqYjIxdEwzWXlJbDE5ZlEiLCJyIjpbXSwiYSI6W119fQ"}, + "to":{"method":"peer","methodId":"2.Ez6LSrhfy5nfumryQUhCU9CRFZvEy3zZV2pUedwpUoYbeiZbq.Vz6MksfNehMay3PPDQEfaaeCotpgC5z9hCnbF6s8uYWUGjSYh.SeyJ0IjoiZG0iLCJzIjp7InVyaSI6Imh0dHA6Ly8xOTIuMTY4LjY4LjExMzo4MDAwL2RpZGNvbW0iLCJyIjpbXSwiYSI6WyJkaWRjb21tL3YyIl19fQ"}, + "fromPrior":"null", + "body":"{\"multiple_available\":null,\"goal_code\":\"Offer Credential\",\"credential_preview\":{\"schema_id\":\"http://host.docker.internal:8000/prism-agent/schema-registry/schemas/f52ebc61-6146-3238-99c5-a3fd693b96f7/schema\",\"type\":\"https://didcomm.org/issue-credential/3.0/credential-credential\",\"body\":{\"attributes\":[{\"media_type\":null,\"name\":\"emailaddress\",\"value\":\"cristian.castro@iohk.io\"}]}},\"replacement_id\":null,\"comment\":null}", + "created_time":"1718334097", + "expires_time_plus":"1718420498750", + "attachments":[ + { + "id":"3235ce90-8625-4668-9262-19c03d710fc4", + "data":{ + "base64":"eyJzY2hlbWFfaWQiOiJodHRwOi8vaG9zdC5kb2NrZXIuaW50ZXJuYWw6ODAwMC9wcmlzbS1hZ2VudC9zY2hlbWEtcmVnaXN0cnkvc2NoZW1hcy9mNTJlYmM2MS02MTQ2LTMyMzgtOTljNS1hM2ZkNjkzYjk2Zjcvc2NoZW1hIiwiY3JlZF9kZWZfaWQiOiJodHRwOi8vMTkyLjE2OC42OC4xMTM6ODAwMC9wcmlzbS1hZ2VudC9jcmVkZW50aWFsLWRlZmluaXRpb24tcmVnaXN0cnkvZGVmaW5pdGlvbnMvM2Y0ZWEwOTgtODdiNi0zMDJhLWE3MjYtZjkzZmU5MzhjZjI0L2RlZmluaXRpb24iLCJrZXlfY29ycmVjdG5lc3NfcHJvb2YiOnsiYyI6IjMwMDUwNzUwNjk4MDg5NzU1NDU4NDI4Njk1MDI2NTYxODQxOTAwMDEyMzUzNDQxMzY0NTQ5NTA3ODA1ODk5MzE1NDc0MDE1NzQ3NTcwIiwieHpfY2FwIjoiNTI1Njg5NDA1MjQ0MTg0ODQyODY5ODA1NDcxODY0ODkzODMwMDkxNTAwMDQyMjYwNDUxNzQ5NjQzMjExOTc0Nzc0Mzk5ODc0NDUwMjcyMzgxNjA4MjMzNzczODE5MjQ1OTIxNjA5MzY1OTk5MjEzNjQxOTc2MjU2ODk3OTM0NDY2MDA4NjY1NDY3ODU4NDQ2NzgwMTkyNDU1MzA2NTc5Njc5NTk1MDEwNTk0NTE0MTQ0MjkzNTQ2NzA2NTkzMTAxMDQ5MTY2NjM4MDcxMTcyMjY1Nzk3NzQ1MTQ1MzA5MTcwODUzNzI2MjY4OTg0NDc5OTQ2NjU0Nzc5NDI3NDg2NjQ4MjU2ODMwODgyMDM1MDU5ODExMjk4MjI5NDEwODYwMDA5MjI1NjUxODU3MjA5ODQyNzEzNDYxNDc1NzYxMTgyMzkyMDE5OTE2NTczNDk3NTM1ODYwNzM2NTI1NTcwOTg1NzMxMjY1Nzc4MjM3MjYyNTg1Mzg2MDM3ODI3NzkzMDQ3NjYzMTk5MjkwNjg4MTQ4NDEwMzcwMjE4MDY5NDAwOTE5Njc0ODU5NzQxMzY0OTQ0MzM1MjUyMDQ5MTUzMDI5NjI5MDc2NDE5OTU0MDY5NzIxMTMxNDU4ODU5NjcyNzc3NjUwOTYzNzY1ODIzNTE5OTY5Mzk0ODAyMzAwNDgwMjI4MzU4ODM1MzY4ODY1NzgxMjAzNjE0NjM5NjkyNjU3NjY3MTE2NjA1NTE0Njg4MjU2NDQwMjUxNzE2MjI1ODUwMDI1NTA0MjAxMzI1NTQyMDY0MzMzMTUxNjg5MTg1Mjc2NzQ3NzIyNzU1NjU4NTgxMzc4NjY0OTM2NTU3Mzk3NTg2MjQ1NzIzNDQ1NTE3NTgyMjM1NDY2MDk5NjYxOTEzNDI5MjA0ODMwMjQ0MTg5ODcxIiwieHJfY2FwIjpbWyJlbWFpbGFkZHJlc3MiLCI3NTExNTAzNTA1NTIyMTA5NzcyNDAyODA3OTQ5OTUxMTMxMTMxNjQ5NDE4NDY4NDExMzUxODgxOTA2Mzg2ODA0NTE1NjMyNjA1NDI0NzA0MTA0OTAxOTk1NjgxOTMwMDI5NTc2MTQ3NjkzNzc2MzY4NTgwMDUzMDE2MTUzODI1NjU5MDk3MjAwMjQyNDU3MDU0MjM3NjYyOTM5MDIyOTM5MTcyNzM5OTY5MTc1NTE5NjY5NzAwNzA2MzMzNjY5ODQxMDA1NTkyNzQxNjEwNDMxNDY4MDM2ODI3ODE0NTg0OTU3NDY5MTkzMTUxNDYyNzM0NTE5MzMwNzUyNzM3MzA4ODY5NzQwODMyMTM5NjQ2MzI0NDQwOTE4NDMyNTAyMzQ1MTg0ODYxODE5MzQ4OTMwOTg2NjAzMzYxMTE3NDIwNDY0NTgwNDIwNDA1OTA1MDI5MzExMjM0OTcyMzQyNzQ4MDI2NTk1NDMzMDcyOTk3NzUxMTEzNzc2NTI0ODMzNTU4Mjg3NTYwODg1ODc0MjY4ODQzMTA1OTY1MjM0MTg5ODg0NDc1MDU3ODM5MDg1NjkwMzcwMzU2NzczOTA0MDY2NTk2MjgzNTY2NTIxMjEzNjUxMTI3OTcwOTMyODkxMTU3MTAzMjM3NTE5NDMzMzgzOTg3MDU1MTg1MDUwMTE1MjQ2NTI3MDkzMTE4MTUyOTc0OTgwMDkyNTAxNDM1OTAwMTc2NDgxNzYzODc3NjI2OTU0ODU3ODQ2NzU4MTk1MTM1MTk2MDI3NjAzNzY2Mjc5MTM5MzEyNzY5MTI0MTE2ODA0Nzk2OTc3MTYwNDY2MTgwMDMyODE2MTI0ODA2MzYwMTYyNDI0Mzg0OTYwMzkyNjg5MjgzMTQ2NzQ4NzM5NDA5NTA5MDU2NTEyMDcyMjU5Mzk5MjEiXSxbIm1hc3Rlcl9zZWNyZXQiLCIxMTYxNDE3NjMxMjc2NTg2MzgzMTE0MjA4OTY5NzY2NjkxNjk4MTIxNDE4MTAxMDAzMjk5NjUxNDIzMzkyMDk0NzgwMTYwMTQ2MTQ3MDgzMTUzOTUzMjcxMDU4MTk3NDk5MDkyOTQ5NDIyNjA4OTgxODE4Mjg1MzMwOTQ2NTg1MjcwMjk1MjkyMTIwNjM0MTMwODIyNTMwNzQyNjkyODIxMTI5MzI5ODQ4NDU5NDY1NzE1Nzc2MjE3MjAyODA5NDEwNDgwMDg0MjEwMDU4OTU4NDAxNDQxNjMyNjU0NDc1OTU4NTgwNzU3MTIyNDc3NjczMTYxNzgxMjc2Mzc3NjA2ODg5NDk5NDg0NDA1NDY0ODU3NTUwNjQwNDcxNjMyNjIzNzMyMzUxNjk2Njg0Mzk5NzE3NjIwNDQ3NDUzMDUzMzE0NzgyODU2Nzc3MTc3MzI2Njk1MDk0ODM4ODUyODIyMjEyMTMxMTAxODgyMzM4NjQ1ODgyMDg2MTA3NjAyOTA5OTE2NTQ5MDQwOTk3NDE1NTk1OTU4Mjk0ODgzODg1ODQxNTUyMDcyMDI3NDA2NTc2MjUwMzAzNDMwMDMzODM4OTQ4NzgyMzA2MzY2NzAyMjUyMDcxMzE4NTE5NjQ4OTk5NzQ5ODQwODYzOTcyOTY5MDU1NTE3ODI4NDUzMDQ4MDkyMDU1OTQ3NDI2Mjk3MzI1NjIxMTE3OTU0NzE1MTUxMzYzNjUwODc4OTM1NTMzNTM2NzMzNjY1OTExMjAzNzkwMDY1NDg4MjMyNzUyMTkwMjU4NTA3MDMzMDYwMjU4NzgwMTU1MTA2NTQ2OTM5Mzc0ODI3MjQyODE3MjQ5NjUwMzE4OTY2MzkyNTYwNjEwMjMyMzg5NTUyMzU0NDI2ODU3OTA5MDI3NzU1Nzg1NTczMzA4MTEiXV19LCJub25jZSI6IjMzNTY5Njg3NzUyNDI0NzQzNzc2NTU0MCJ9" + }, + "format":"anoncreds/credential-offer@v1.0" + } + ], + "thid":"177d90ac-f7ac-41b1-af88-2dd8106633cb", + "ack":[ + + ] + }, + { + "id":"b6b4786a-8568-4ef4-9aa6-91e3657748e4", + "piuri":"https://didcomm.org/issue-credential/3.0/request-credential", + "from":{"method":"peer","methodId":"2.Ez6LSqWfJdwLMDmpew7Yd8AQS2MxDwvSCNpjaZ7EQVst8rkfA.Vz6MknpCj4WomXhC2eur8nf4wnoFzHpCA6EAFU6afEmmrUVRA.SeyJ0IjoiZG0iLCJzIjp7InVyaSI6ImRpZDpwZWVyOjIuRXo2TFNnaHdTRTQzN3duREUxcHQzWDZoVkRVUXpTanNIemlucFgzWEZ2TWpSQW03eS5WejZNa2hoMWU1Q0VZWXE2SkJVY1RaNkNwMnJhbkNXUnJ2N1lheDNMZTRONTlSNmRkLlNleUowSWpvaVpHMGlMQ0p6SWpwN0luVnlhU0k2SW1oMGRIQnpPaTh2YzJsMExYQnlhWE50TFcxbFpHbGhkRzl5TG1GMFlXeGhjSEpwYzIwdWFXOGlMQ0poSWpwYkltUnBaR052YlcwdmRqSWlYWDE5LlNleUowSWpvaVpHMGlMQ0p6SWpwN0luVnlhU0k2SW5kemN6b3ZMM05wZEMxd2NtbHpiUzF0WldScFlYUnZjaTVoZEdGc1lYQnlhWE50TG1sdkwzZHpJaXdpWVNJNld5SmthV1JqYjIxdEwzWXlJbDE5ZlEiLCJyIjpbXSwiYSI6W119fQ"}, + "to":{"method":"peer","methodId":"2.Ez6LSrhfy5nfumryQUhCU9CRFZvEy3zZV2pUedwpUoYbeiZbq.Vz6MksfNehMay3PPDQEfaaeCotpgC5z9hCnbF6s8uYWUGjSYh.SeyJ0IjoiZG0iLCJzIjp7InVyaSI6Imh0dHA6Ly8xOTIuMTY4LjY4LjExMzo4MDAwL2RpZGNvbW0iLCJyIjpbXSwiYSI6WyJkaWRjb21tL3YyIl19fQ"}, + "fromPrior":null, + "body":"{\"goalCode\":\"Offer Credential\"}", + "created_time":"1718334102032", + "expires_time_plus":"1718420502032", + "attachments":[ + { + "id":"a6ebb2df-326e-4bc6-9e62-3d668dabea3b", + "media_type":"application/json", + "data":{ + "base64":"eyJlbnRyb3B5IjoiZGlkOnByaXNtOjZmMjNkZGFjZTUxOWI2OGRmYzBmYTA2ZTk5MmRiNDBmMmYzYzU4NGFmMzgyY2U0NDZmYTJmZDBlMDQyZTVkZWE6Q29VQkNvSUJFanNLQjIxaGMzUmxjakFRQVVvdUNnbHpaV053TWpVMmF6RVNJUU1jS3dFaXRHYlFLdEdhLWpGWGkzbTF1N09QMkpNdWtZWFFuWmszZlFJWHZ4SkRDZzloZFhSb1pXNTBhV05oZEdsdmJqQVFCRW91Q2dselpXTndNalUyYXpFU0lRTWNLd0VpdEdiUUt0R2EtakZYaTNtMXU3T1AySk11a1lYUW5aazNmUUlYdnciLCJjcmVkX2RlZl9pZCI6Imh0dHA6Ly8xOTIuMTY4LjY4LjExMzo4MDAwL3ByaXNtLWFnZW50L2NyZWRlbnRpYWwtZGVmaW5pdGlvbi1yZWdpc3RyeS9kZWZpbml0aW9ucy8zZjRlYTA5OC04N2I2LTMwMmEtYTcyNi1mOTNmZTkzOGNmMjQvZGVmaW5pdGlvbiIsImJsaW5kZWRfbXMiOnsidSI6IjgwOTQ1NTUxODIxMzU3OTIyMTY0MTY5Njk5MDk2NDM0NzM4MzA2ODI3NDEyNzYxNzU1NDY3OTE5MjkyODQyNDAzNjMzOTAwMjIzNzM4NjE4MjE5NjQzMjYxNzAzMTMxMzg2MDc5NTI0NTI0ODA1NzQxMjE3NDA2MzAzNDE1ODQ4Njk5OTI3MjYzNTYxNjQ0NDQxODgzNjI3NDA4ODQzMDI3NzUwOTgxNjQxNTQ2NTk4NDE1ODY4MTY1MzAxNjYxNjQ1Nzc5NjE2ODg4OTY1Njg5NDIyMzc0MDcxMjA0Njg2NjY2MDI3NzIyNTUzNzgyOTU1ODMzMzAyODM0MjE3ODczNDI2NDI1NzM5MDY3NDU3MTIzNDcwNzg4MjMzNTkwMTY1NDIzNzQxMzM0NzA0NzU2ODM5OTE0OTczNjMzMjAxODgwNzQ4ODMyNDkxNjkyMTczOTQxMDM0NzQyOTk0MDA5OTk1NzQzNzU2NTY0ODgwODk2ODQxNjcyODE1OTA1ODM1MTkxMDg3MTA1ODU5OTk0MzUyOTA1OTk5NjA5NzczMzk3ODY1NDc4NDE2NjM5NzI2Mzk2ODE4MzM5NzM0ODcyODI1MDk2NzAxNDc4OTc5NzM3NzUwNjkyOTczOTAzNjgwMTcyMTM2ODE1NjE2ODQ5MzQ5NDk2NzM1MDI2OTQyOTI5NDUwNDIwNjkxMDUwMjQzMzg1OTcxMjE3NDQwMjY2NTYwMTU0NDkwOTc0Mjg2MTQxMjA2ODI4NzEzMDk3OTIwNjIyNTAzMTQ3NDM3MjI5Mzg0NzAyMjkzNjMxMTg0MDY0Mzg2MzE4IiwidXIiOm51bGwsImhpZGRlbl9hdHRyaWJ1dGVzIjpbIm1hc3Rlcl9zZWNyZXQiXSwiY29tbWl0dGVkX2F0dHJpYnV0ZXMiOnt9fSwiYmxpbmRlZF9tc19jb3JyZWN0bmVzc19wcm9vZiI6eyJjIjoiMzgxMTAzNDU1ODE3NjY5MjI3Mzg4OTE3MjAxMzQwNDc1MjUyNTUyOTA4NDQ0Mzg1NTQyNzQzMTAzMDE1NDAyMTI0MjUyOTg0NzcyODkiLCJ2X2Rhc2hfY2FwIjoiMjQ2MjAwMDk2OTkyMjcwNzYzMTgzOTMzMTEzMzExMDY3NzI0NjAwODgwMzE2MjM2NDQ0OTI5NDE4MjMyNTgxODU0ODA2NDk1ODI2MTYyMTE5MDk5MzkxNDEyODU5NTE2NTE3NjUwMTk5ODA4ODM2NzA4MzE0NTIzNTY2Mzk4MjkwNjI4ODkzNzQ0MDExODUzMDI0NDU4NDc1OTQ1OTI4ODYxODA2NjA4NjUwNTYyMzU3NDM1Nzc4NDUyNTQwOTY2OTM3Njk4MjY1MjQ5NjcxNjc0NjAwMzYxNTMyNDU4NjQ2MDcxOTYxNTAzNjE4NjMyMDczMzA3NzExMjc2MzcyMjAyNzQxNTgxNzA5MDcwNjQxNzU5OTAzNzk1MDA2NDYwMDI3NjAxMjI4NjAzNjM0MDkxNDcwMDkwNzEzMzUyODQyMjU3NDgzNDA1OTE4NDY5NTM1NTgxNzMyODgwMjQyNDk2NTEzOTAzMjM2MjYxMzcxMjYyNjM1NDI0NjE2Mjk3NTI2MzU5MjI1MzM2MzYzOTQ1NzQ0NTI5Mjg2NDQ4ODI2NTk3MDg0NzYxMDQwNTE5NDI1MzgyMzg2ODQ2MjM1NDU5NzI0MzMzMzc3ODEwNzcwNDc0MzMyMzIyMjk2MDc1MDE3ODQ0OTUwMDc5ODkxMzUwODU5ODEzMDc3MTkxMzQ1MTUxODU5MTcwMDk3Mzg5NzcxODQ2MTk4ODE0MjAzOTc0NjEzNDI3MDI3NzY1MzYyNDk4MjMwNjA0MzczNzgzNDExMzg1OTQyNzQ1MTQ3NzM5NzY5MTMxNzAyNTI4NzM2MTg2NjY1NTc0NTQ2MjkzNjQwOTYwOTkyOTYwMjQ0ODIyOTI2MTgzOTg4NTg2NjY1ODU3OTIwOTQ0MTQ0ODQxMTU4MjA0ODY0OTg1MTc1NDc1NjQ3MTc0Nzc3ODQ3NTk3Nzc3NjExNTUyOTQ5IiwibV9jYXBzIjp7Im1hc3Rlcl9zZWNyZXQiOiIxMzU5MDY0NjM1NDk5NjEwOTUyNTg2NzAyMDgzMjQzMDY2MDEwNjA1MjY3MDQyNjI4ODUwOTE0OTIxNzAxNDE0Mzg2MzYxMjQzMDg0NDg0ODEyNzA5NTUyMjY5NTA4NTg1ODg4MDI1OTUzODUzMDA4NDc4OTcwODg0OTMzMzE5ODkyOTI4NjA1MTcxNTY5NDU0OTE3NDE5NTAyMDI3NjczODAzODUzOTE0ODg0NTQ1MjQ4NCJ9LCJyX2NhcHMiOnt9fSwibm9uY2UiOiI5NTgwMjEwNzc4NDA2MzYxNDUwNDk2ODEifQ" + }, + "format":"anoncreds/credential-request@v1.0" + } + ], + "thid":"177d90ac-f7ac-41b1-af88-2dd8106633cb", + "ack":[ + + ], + "direction":"SENT" + }, + { + "id":"5d2e5e11-4b6a-424b-921b-e89c3df596d7", + "piuri":"https://didcomm.org/issue-credential/3.0/issue-credential", + "from":{"method":"peer","methodId":"2.Ez6LSqWfJdwLMDmpew7Yd8AQS2MxDwvSCNpjaZ7EQVst8rkfA.Vz6MknpCj4WomXhC2eur8nf4wnoFzHpCA6EAFU6afEmmrUVRA.SeyJ0IjoiZG0iLCJzIjp7InVyaSI6ImRpZDpwZWVyOjIuRXo2TFNnaHdTRTQzN3duREUxcHQzWDZoVkRVUXpTanNIemlucFgzWEZ2TWpSQW03eS5WejZNa2hoMWU1Q0VZWXE2SkJVY1RaNkNwMnJhbkNXUnJ2N1lheDNMZTRONTlSNmRkLlNleUowSWpvaVpHMGlMQ0p6SWpwN0luVnlhU0k2SW1oMGRIQnpPaTh2YzJsMExYQnlhWE50TFcxbFpHbGhkRzl5TG1GMFlXeGhjSEpwYzIwdWFXOGlMQ0poSWpwYkltUnBaR052YlcwdmRqSWlYWDE5LlNleUowSWpvaVpHMGlMQ0p6SWpwN0luVnlhU0k2SW5kemN6b3ZMM05wZEMxd2NtbHpiUzF0WldScFlYUnZjaTVoZEdGc1lYQnlhWE50TG1sdkwzZHpJaXdpWVNJNld5SmthV1JqYjIxdEwzWXlJbDE5ZlEiLCJyIjpbXSwiYSI6W119fQ"}, + "to":{"method":"peer","methodId":"2.Ez6LSrhfy5nfumryQUhCU9CRFZvEy3zZV2pUedwpUoYbeiZbq.Vz6MksfNehMay3PPDQEfaaeCotpgC5z9hCnbF6s8uYWUGjSYh.SeyJ0IjoiZG0iLCJzIjp7InVyaSI6Imh0dHA6Ly8xOTIuMTY4LjY4LjExMzo4MDAwL2RpZGNvbW0iLCJyIjpbXSwiYSI6WyJkaWRjb21tL3YyIl19fQ"}, + "fromPrior":"null", + "body":"{\"goal_code\":\"Issue Credential\",\"replacement_id\":null,\"more_available\":null,\"comment\":null}", + "created_time":"1718334107", + "expires_time_plus":"1718420509304", + "attachments":[ + { + "id":"a62c5510-37b7-4593-81eb-9190d9e14e3a", + "data":{ + "base64":"eyJzY2hlbWFfaWQiOiJodHRwOi8vaG9zdC5kb2NrZXIuaW50ZXJuYWw6ODAwMC9wcmlzbS1hZ2VudC9zY2hlbWEtcmVnaXN0cnkvc2NoZW1hcy9mNTJlYmM2MS02MTQ2LTMyMzgtOTljNS1hM2ZkNjkzYjk2Zjcvc2NoZW1hIiwiY3JlZF9kZWZfaWQiOiJodHRwOi8vMTkyLjE2OC42OC4xMTM6ODAwMC9wcmlzbS1hZ2VudC9jcmVkZW50aWFsLWRlZmluaXRpb24tcmVnaXN0cnkvZGVmaW5pdGlvbnMvM2Y0ZWEwOTgtODdiNi0zMDJhLWE3MjYtZjkzZmU5MzhjZjI0L2RlZmluaXRpb24iLCJyZXZfcmVnX2lkIjpudWxsLCJ2YWx1ZXMiOnsiZW1haWxhZGRyZXNzIjp7InJhdyI6ImNyaXN0aWFuLmNhc3Ryb0Bpb2hrLmlvIiwiZW5jb2RlZCI6IjM2MzQyMzgzNzQ1NTM4Njg0NzkxOTMwNTAzMzYyNTczOTQ0MjQzNzA2MjA3NTE4NzU5MDI1MTY5MTAyODM3MDAxMzM0NjExMzcyNzQzIn19LCJzaWduYXR1cmUiOnsicF9jcmVkZW50aWFsIjp7Im1fMiI6IjEwODg5NjAwNjg2NTY2NzkwOTA2Njc3NTU5ODIxNjY4NjU5NjUyNDE3MzYxNjcwNTYzMzgzNDMwMDEzMDYxNDU4NDMzMzIyNTUxODIwMyIsImEiOiIzNDIxODA5NzM3MzQ2MTYyNDQ5NzIzOTI1NDYxNTg4ODY1NTYzMDg1NTIyNDY0OTY0MDI4NzQwMjAxNzUzNTQ4ODcyNzQ4NDUyMzg4OTM3MDM2Mjk1MzIxOTg4OTU1OTgwMjg4OTMyNTcyNzc4NTgyNDcwODIzNDc3MjQ5NTcwMzA3NTkyNjU3ODQ0MjAyMDY5MDI5Nzk5NjQ2NzI3Mjk2OTQ5OTg4NDMzMDMzMzAzNDUzMDI3NTkzMjc5ODYyMzAwNTg2MzA4MjgyNTI4MjMzODQ5MTAyOTAyODE2MzA1MTEwODE5NTU2MDEyNzU0NDUxMjAzNTAzODUyMDUyMjczMzg1NjIyMTU2NDk5MTYxNzg1Mjc1MDcxNjQ2ODYyNTcwNTk3Nzg1MDU0NDcyNTY2ODUyODc1NjA3NjUzMzQxMDQwODM2Njg5MzAxMjEyOTc3NDkyMjA1MTk0Mjg0MzEzODQyNzMyMzM4NTcwMTgwNjAzMDEyOTA0ODAwMDQxNDIzMTg1ODQ2ODgzNjM2Mjk0MDI0MDczNTQ5MDgzMDg4NTMzOTQ3NDUzMTM1MTkyNzYyODYzNzg3NDE2NTYxNzEyNDczNTE4OTcyNTU2ODYzNjQ4NTYwMjI2NDE2Nzk1MjgyODQ1OTk3MjU4ODkyMjE2OTA2MDcxNzUwODM5NTgwNTg4MzYzMTAxMDY5NjA4MzA3MDIzNzc2NDU5Mzg1MjA2NDQ3ODcxMjU3MzY3MTI4MDIyNzAxODM2MzI2MTEzNTcxMDAyOTc3Njk1MzgwODE2MDE5MzgxOTQxNDQ4MDk0MDU3ODYwNDMwIiwiZSI6IjI1OTM0NDcyMzA1NTA2MjA1OTkwNzAyNTQ5MTQ4MDY5NzU3MTkzODI3Nzg4OTUxNTE1MjMwNjI0OTcyODU4MzEwNTY2NTgwMDcxMzMwNjc1OTE0OTk4MTY5MDU1OTE5Mzk4NzE0MzAxMjM2NzkxMzIwNjI5OTMyMzg5OTY5Njk0MjIxMzIzNTk1Njc0MjkzMDE0MDYwMzc0NDMwNTk3MDc5NzA2NTE4MjI5MjY3MjY2NjI5OSIsInYiOiI5Mzk3ODc5ODYxNTE4MTM5MDkyMTczOTQ0NTk1NTYxNTMzMjM4ODc0MTU2MTEzMTMzMDA2MDg2MDg0Njc1NzM5MDYwODA3MzYxOTM0OTAyMzg1MTYyODM5Mjg5Mjc2NjkwMTYyMzIxOTg4OTA3Njg0Mzk3OTE1Mzk5MTU4OTgxOTAxMTE1ODg0MTE4NDc5NzY1ODQzNjI2MjQzNDg3NjUwMzY5NjY1Mzk2MDc1NDA2NTkwNzM2ODk0NTUzMjY4OTMwODA1NzIxNDYxNTMxMjE2NzM1NDA3MzI3MDQ2MTAxMDk3NjY1OTMwMjI3MDY4Njk4MDQyNTUzNzYwNjM2MDI5NjU3ODMzODQzMDkyMTQ1MDkyNDUzODM3MDAwMTgzNjk0NDgyNzkwODk2MzA2ODE0MTYyNTIxMDE5NDA2NDg0NzEzODY2ODA2NDc1MDIxMTIwOTg2NTg1MDU1NTAyODg5MDY2NjIxNjQ1NzI3ODUyODI1NDA5NjAwNzkwNzA0MDM2NjEzMTQ1ODIzNjU3NzU4NzM4NTA1NDQyOTkwMTk0NjM1Mjk3NDI3Mzk1NzQ2MjM5MzkxMjg3NzUxODU4NjY1NzU3OTI3MjkyOTQyODgxMzgzNTQ1NDU4NzI1NTQ2NDkyODUxNjU2NzM4MjI3MDMyMjcxMDY3MDMzMjAxNjU1Mzk4MzU4MTQ2NTkwNjE2ODA0ODU0MDA5NzIwMTEzOTgwODYxMzMyOTQ3OTU0NzIyMTYzODI1MjAzMjAzMzc5ODMzMzc4OTU0NTk1OTQ1MzMwOTUxNjI4ODE0NTIwNjM2Nzc5MDM5NjQwMzg2ODY4NTAxOTQzOTU5OTkwNDY3MTMzNDQ4NzA2NjM5MzMxMTgwNTQwNzEzODg2NTA1MzEzODc5MDI2NjkyMTIyODc0NzcxOTMxMjY0NDE0OTM1NDEwNTI0NDg1Mjk2NjgyNzI1ODU4OTUyMTQzNzI4ODgyNjMyNjA4NTA0ODAxNjYyMTU0NTUzMjc2NDExMzE4NzU0ODEzNjc3MTU2MTc3MDQ5ODI2MTcyNDUyNzAxMTMxNDM2MDYxMDMyNzMxMTMyMjYxNjQwNDIxIn0sInJfY3JlZGVudGlhbCI6bnVsbH0sInNpZ25hdHVyZV9jb3JyZWN0bmVzc19wcm9vZiI6eyJzZSI6IjEyNzcyNTkxMjEwOTAwMDU0MTE1Njc0MjA1OTA4MTI0NDkzMTUzODc4MTg4NTY2NjkyMTkxMDM1MTU3MTA0Njk3OTk4MjA0NzY5MjExMzA4NDg3ODU5MzM2NTYwMTYwMTU2MjcyMTE3NTk1ODg3NzUzODk0NzQxNjc1OTIzMTQ5MjU1NzgyODI5OTEzNjk4MzQ5MTAyNjg0MDcwNzE2Nzc3NTAyMDY0NjgwMDMyMDEwMzc2NTUwODM0NDU4OTM1NjA2MzU2MTQzODAxNDkwNTQ0MTExODgyMzA2ODUwMDU0MDU4ODA1MTc2OTM2MTY0OTQxOTk0MDY0NDUyMTY5MjAwMDY3OTU3NDkwNDg2NDA5MzI1MTU2NDgxOTI0NTQwOTcxNDE0MTc2NjQ3NzQ0MzEzODkwMDU0NTAxMzg0NzI2NDU3NTc3MzMyNjQzMjgxNDUzNzIyNzA4ODI4MjEyMDk3ODg2MDIzNDg0NzU5MzM1NTc3NTgzOTMzMzM1NTk4MTI5NDgyNzIyNzE4MTAzOTQ5MTQzNDY1ODk1NTg2OTExMTQ3ODM5Mzk2OTUwODMyNTkyMzA3NTcxNTkyMTA4NTcwNjg4MjI1ODM1NjU5MTc4NzgyNDE2NTQxNTg2Njg2NTIzNzY3MDI3MTExNDIwNzA3MDQwNzYzNDczNTQ2MDIxMjgxMTkyODI3NDc2NTE5ODc5ODYyMDAwODM3OTY5NTA4OTUzMTE1MDk0MzE3OTA1NzE3NTAxNTE5OTMyODAzOTI4ODIyMTYxMjIwMDk1NzczMTAwMjg3NjIwNjQxMDA1ODcxNDQ1MzA2IiwiYyI6IjkzNzkzMjcxOTUyNzkxNjM3NDIyODYxMTQzODAyMzM2NzAzODk3MjkxNzI2MDUwNTAyNDQwNTk5MjcwNDA2MzUyMDg5ODM2MDI5OTE5In0sInJldl9yZWciOm51bGwsIndpdG5lc3MiOm51bGx9" + }, + "format":"anoncreds/credential@v1.0" + } + ], + "thid":"177d90ac-f7ac-41b1-af88-2dd8106633cb", + "ack":[ + + ] + }, + { + "id":"cf1734d1-51d5-4275-9a40-18c36f44fb03", + "piuri":"https://didcomm.org/issue-credential/3.0/offer-credential", + "from":{"method":"peer","methodId":"2.Ez6LSqWfJdwLMDmpew7Yd8AQS2MxDwvSCNpjaZ7EQVst8rkfA.Vz6MknpCj4WomXhC2eur8nf4wnoFzHpCA6EAFU6afEmmrUVRA.SeyJ0IjoiZG0iLCJzIjp7InVyaSI6ImRpZDpwZWVyOjIuRXo2TFNnaHdTRTQzN3duREUxcHQzWDZoVkRVUXpTanNIemlucFgzWEZ2TWpSQW03eS5WejZNa2hoMWU1Q0VZWXE2SkJVY1RaNkNwMnJhbkNXUnJ2N1lheDNMZTRONTlSNmRkLlNleUowSWpvaVpHMGlMQ0p6SWpwN0luVnlhU0k2SW1oMGRIQnpPaTh2YzJsMExYQnlhWE50TFcxbFpHbGhkRzl5TG1GMFlXeGhjSEpwYzIwdWFXOGlMQ0poSWpwYkltUnBaR052YlcwdmRqSWlYWDE5LlNleUowSWpvaVpHMGlMQ0p6SWpwN0luVnlhU0k2SW5kemN6b3ZMM05wZEMxd2NtbHpiUzF0WldScFlYUnZjaTVoZEdGc1lYQnlhWE50TG1sdkwzZHpJaXdpWVNJNld5SmthV1JqYjIxdEwzWXlJbDE5ZlEiLCJyIjpbXSwiYSI6W119fQ"}, + "to":{"method":"peer","methodId":"2.Ez6LSrhfy5nfumryQUhCU9CRFZvEy3zZV2pUedwpUoYbeiZbq.Vz6MksfNehMay3PPDQEfaaeCotpgC5z9hCnbF6s8uYWUGjSYh.SeyJ0IjoiZG0iLCJzIjp7InVyaSI6Imh0dHA6Ly8xOTIuMTY4LjY4LjExMzo4MDAwL2RpZGNvbW0iLCJyIjpbXSwiYSI6WyJkaWRjb21tL3YyIl19fQ"}, + "fromPrior":"null", + "body":"{\"multiple_available\":null,\"goal_code\":\"Offer Credential\",\"credential_preview\":{\"schema_id\":null,\"type\":\"https://didcomm.org/issue-credential/3.0/credential-credential\",\"body\":{\"attributes\":[{\"media_type\":null,\"name\":\"familyName\",\"value\":\"demo\"},{\"media_type\":null,\"name\":\"drivingClass\",\"value\":\"1\"},{\"media_type\":null,\"name\":\"dateOfIssuance\",\"value\":\"01/01/2024\"},{\"media_type\":null,\"name\":\"emailAddress\",\"value\":\"demo@email.com\"},{\"media_type\":null,\"name\":\"drivingLicenseID\",\"value\":\"A1221332\"}]}},\"replacement_id\":null,\"comment\":null}", + "created_time":"1718334142", + "expires_time_plus":"1718420545527", + "attachments":[ + { + "id":"6ba0515b-0f68-4c0a-8ecb-487d01dec978", + "data":{ + "data":"{\"options\":{\"domain\":\"domain\",\"challenge\":\"fd8c7f98-8473-42ba-83a8-5cfa460c55b9\"},\"presentation_definition\":{\"purpose\":null,\"format\":{\"jwt\":{\"proof_type\":[],\"alg\":[\"ES256K\"]},\"ldp\":null},\"name\":null,\"input_descriptors\":[],\"id\":\"3cb224c2-cb61-4f5d-ae5f-2fa89572597d\"}}" + }, + "format":"prism/jwt" + } + ], + "thid":"7524fc50-d834-4a1f-a617-f36dd1d571bd", + "ack":[ + + ] + }, + { + "id":"b3ec0d9c-c28b-4489-8b2d-3c936c32c665", + "piuri":"https://didcomm.org/issue-credential/3.0/request-credential", + "from":{"method":"peer","methodId":"2.Ez6LSqWfJdwLMDmpew7Yd8AQS2MxDwvSCNpjaZ7EQVst8rkfA.Vz6MknpCj4WomXhC2eur8nf4wnoFzHpCA6EAFU6afEmmrUVRA.SeyJ0IjoiZG0iLCJzIjp7InVyaSI6ImRpZDpwZWVyOjIuRXo2TFNnaHdTRTQzN3duREUxcHQzWDZoVkRVUXpTanNIemlucFgzWEZ2TWpSQW03eS5WejZNa2hoMWU1Q0VZWXE2SkJVY1RaNkNwMnJhbkNXUnJ2N1lheDNMZTRONTlSNmRkLlNleUowSWpvaVpHMGlMQ0p6SWpwN0luVnlhU0k2SW1oMGRIQnpPaTh2YzJsMExYQnlhWE50TFcxbFpHbGhkRzl5TG1GMFlXeGhjSEpwYzIwdWFXOGlMQ0poSWpwYkltUnBaR052YlcwdmRqSWlYWDE5LlNleUowSWpvaVpHMGlMQ0p6SWpwN0luVnlhU0k2SW5kemN6b3ZMM05wZEMxd2NtbHpiUzF0WldScFlYUnZjaTVoZEdGc1lYQnlhWE50TG1sdkwzZHpJaXdpWVNJNld5SmthV1JqYjIxdEwzWXlJbDE5ZlEiLCJyIjpbXSwiYSI6W119fQ"}, + "to":{"method":"peer","methodId":"2.Ez6LSrhfy5nfumryQUhCU9CRFZvEy3zZV2pUedwpUoYbeiZbq.Vz6MksfNehMay3PPDQEfaaeCotpgC5z9hCnbF6s8uYWUGjSYh.SeyJ0IjoiZG0iLCJzIjp7InVyaSI6Imh0dHA6Ly8xOTIuMTY4LjY4LjExMzo4MDAwL2RpZGNvbW0iLCJyIjpbXSwiYSI6WyJkaWRjb21tL3YyIl19fQ"}, + "fromPrior":null, + "body":"{\"goalCode\":\"Offer Credential\"}", + "created_time":"1718334149224", + "expires_time_plus":"1718420549224", + "attachments":[ + { + "id":"02ae8939-6a48-4828-bbf9-10a68c0c4006", + "media_type":"prism/jwt", + "data":{ + "base64":"ZXlKaGJHY2lPaUpGVXpJMU5rc2lmUS5leUpwYzNNaU9pSmthV1E2Y0hKcGMyMDZNR0UwWWpVMU1qRTJPV1V6TVRVNE56Z3hOelF4Wm1KaVpXWm1aVGd4TWpFeU56ZzBaRE15WkRrd1kyWTRaakkyTWpJNU1qTm1NVEZtTm1WalpEazJOanBEYjFWQ1EyOUpRa1ZxYzB0Q01qRm9Zek5TYkdOcVFWRkJWVzkxUTJkc2VscFhUbmROYWxVeVlYcEZVMGxSVEdkNmFITjFUM0ZvUVhsSmJYa3RZemh2T1ZwdFNVbzBhVmxmUjJNNGRIWk9TVlF6YkRGM05UaG1Na0pLUkVObk9XaGtXRkp2V2xjMU1HRlhUbWhrUjJ4MlltcEJVVUpGYjNWRFoyeDZXbGRPZDAxcVZUSmhla1ZUU1ZGTVozcG9jM1ZQY1doQmVVbHRlUzFqT0c4NVdtMUpTalJwV1Y5SFl6aDBkazVKVkROc01YYzFPR1l5UVNJc0ltRjFaQ0k2SW1SdmJXRnBiaUlzSW5ad0lqcDdJa0JqYjI1MFpYaDBJanBiSW1oMGRIQnpPbHd2WEM5M2QzY3Vkek11YjNKblhDOHlNREU0WEM5amNtVmtaVzUwYVdGc2Mxd3ZkakVpWFN3aWRIbHdaU0k2V3lKV1pYSnBabWxoWW14bFVISmxjMlZ1ZEdGMGFXOXVJbDE5TENKdWIyNWpaU0k2SW1aa09HTTNaams0TFRnME56TXROREppWVMwNE0yRTRMVFZqWm1FME5qQmpOVFZpT1NKOS5mejg3SFNSYU5xb0d0Y3lXXzNkd2JRanE0ckR3LXlTME9ST1dnQ1I5LTBlM0RMTk4wM1p6UHVzejkzQnMza08wR2JrU3NaN1VLWGliZlBqNlpoQ3lPUQ" + } + } + ], + "thid":"7524fc50-d834-4a1f-a617-f36dd1d571bd", + "ack":[ + + ], + "direction":"SENT" + }, + { + "id":"e21457cc-d550-40f5-80ac-0e9d265adb47", + "piuri":"https://didcomm.org/issue-credential/3.0/issue-credential", + "from":{"method":"peer","methodId":"2.Ez6LSqWfJdwLMDmpew7Yd8AQS2MxDwvSCNpjaZ7EQVst8rkfA.Vz6MknpCj4WomXhC2eur8nf4wnoFzHpCA6EAFU6afEmmrUVRA.SeyJ0IjoiZG0iLCJzIjp7InVyaSI6ImRpZDpwZWVyOjIuRXo2TFNnaHdTRTQzN3duREUxcHQzWDZoVkRVUXpTanNIemlucFgzWEZ2TWpSQW03eS5WejZNa2hoMWU1Q0VZWXE2SkJVY1RaNkNwMnJhbkNXUnJ2N1lheDNMZTRONTlSNmRkLlNleUowSWpvaVpHMGlMQ0p6SWpwN0luVnlhU0k2SW1oMGRIQnpPaTh2YzJsMExYQnlhWE50TFcxbFpHbGhkRzl5TG1GMFlXeGhjSEpwYzIwdWFXOGlMQ0poSWpwYkltUnBaR052YlcwdmRqSWlYWDE5LlNleUowSWpvaVpHMGlMQ0p6SWpwN0luVnlhU0k2SW5kemN6b3ZMM05wZEMxd2NtbHpiUzF0WldScFlYUnZjaTVoZEdGc1lYQnlhWE50TG1sdkwzZHpJaXdpWVNJNld5SmthV1JqYjIxdEwzWXlJbDE5ZlEiLCJyIjpbXSwiYSI6W119fQ"}, + "to":{"method":"peer","methodId":"2.Ez6LSrhfy5nfumryQUhCU9CRFZvEy3zZV2pUedwpUoYbeiZbq.Vz6MksfNehMay3PPDQEfaaeCotpgC5z9hCnbF6s8uYWUGjSYh.SeyJ0IjoiZG0iLCJzIjp7InVyaSI6Imh0dHA6Ly8xOTIuMTY4LjY4LjExMzo4MDAwL2RpZGNvbW0iLCJyIjpbXSwiYSI6WyJkaWRjb21tL3YyIl19fQ"}, + "fromPrior":"null", + "body":"{\"goal_code\":null,\"replacement_id\":null,\"more_available\":null,\"comment\":null}", + "created_time":"1718334153", + "expires_time_plus":"1718420555892", + "attachments":[ + { + "id":"69856638-0bd4-4d4c-be10-5b4c2fb56b03", + "data":{ + "base64":"ZXlKaGJHY2lPaUpGVXpJMU5rc2lmUS5leUpwYzNNaU9pSmthV1E2Y0hKcGMyMDZNek0zWlRobVpURTBOR0ZoWTJWa00yTmhNMlJrTlRrME5qSTBNRFJtTkRVNU9UWmxNMkl5TWpGaFltTTBNVEJoTnpJMVpXRTJOalV6TkRnNU56SmlZanBEY210Q1EzSlpRa1ZxYjB0Q2JVWXhaRWRuZEUxU1FVVlRhVFJMUTFoT2JGa3pRWGxPVkZweVRWSkphRUYyZVdjeFlUTjFjSFZtYkZCTGN6aEtSMWhLVTNOeFYxcGpWRzlHUVhrM1JqTlNURkJqUWxrMFYyNXpSV3B6UzBJeWJIcGpNMVpzVEZSRlVVRnJiM1ZEWjJ4NldsZE9kMDFxVlRKaGVrVlRTVkZQWVZCVWJ6TTVUbmgyVW1oWFVXNWlWV2hvVFhNNWJURkllRUp0Y1Y5aFpXTkhNMHRUVEdaaU5XZ3pVa2szUTJka2RGbFlUakJhV0VsM1JVRkdTMHhuYjBwak1sWnFZMFJKTVU1dGMzaEZhVVZFWjNwb09FbERZMVpoTlZsTlpqWXpSRkZhTTE5MWRUTk9Nek5zU1hWR1NHSm9YMDlLVWxWSWJXZDJZeUlzSW5OMVlpSTZJbVJwWkRwd2NtbHpiVG93WVRSaU5UVXlNVFk1WlRNeE5UZzNPREUzTkRGbVltSmxabVpsT0RFeU1USTNPRFJrTXpKa09UQmpaamhtTWpZeU1qa3lNMll4TVdZMlpXTmtPVFkyT2tOdlZVSkRiMGxDUldwelMwSXlNV2hqTTFKc1kycEJVVUZWYjNWRFoyeDZXbGRPZDAxcVZUSmhla1ZUU1ZGTVozcG9jM1ZQY1doQmVVbHRlUzFqT0c4NVdtMUpTalJwV1Y5SFl6aDBkazVKVkROc01YYzFPR1l5UWtwRVEyYzVhR1JZVW05YVZ6VXdZVmRPYUdSSGJIWmlha0ZSUWtWdmRVTm5iSHBhVjA1M1RXcFZNbUY2UlZOSlVVeG5lbWh6ZFU5eGFFRjVTVzE1TFdNNGJ6bGFiVWxLTkdsWlgwZGpPSFIyVGtsVU0yd3hkelU0WmpKQklpd2libUptSWpveE56RTRNek0wTVRVeExDSjJZeUk2ZXlKamNtVmtaVzUwYVdGc1UzVmlhbVZqZENJNmV5SmxiV0ZwYkVGa1pISmxjM01pT2lKa1pXMXZRR1Z0WVdsc0xtTnZiU0lzSW1SeWFYWnBibWREYkdGemN5STZJakVpTENKbVlXMXBiSGxPWVcxbElqb2laR1Z0YnlJc0ltUnlhWFpwYm1kTWFXTmxibk5sU1VRaU9pSkJNVEl5TVRNek1pSXNJbWxrSWpvaVpHbGtPbkJ5YVhOdE9qQmhOR0kxTlRJeE5qbGxNekUxT0RjNE1UYzBNV1ppWW1WbVptVTRNVEl4TWpjNE5HUXpNbVE1TUdObU9HWXlOakl5T1RJelpqRXhaalpsWTJRNU5qWTZRMjlWUWtOdlNVSkZhbk5MUWpJeGFHTXpVbXhqYWtGUlFWVnZkVU5uYkhwYVYwNTNUV3BWTW1GNlJWTkpVVXhuZW1oemRVOXhhRUY1U1cxNUxXTTRiemxhYlVsS05HbFpYMGRqT0hSMlRrbFVNMnd4ZHpVNFpqSkNTa1JEWnpsb1pGaFNiMXBYTlRCaFYwNW9aRWRzZG1KcVFWRkNSVzkxUTJkc2VscFhUbmROYWxVeVlYcEZVMGxSVEdkNmFITjFUM0ZvUVhsSmJYa3RZemh2T1ZwdFNVbzBhVmxmUjJNNGRIWk9TVlF6YkRGM05UaG1Na0VpTENKa1lYUmxUMlpKYzNOMVlXNWpaU0k2SWpBeFhDOHdNVnd2TWpBeU5DSjlMQ0owZVhCbElqcGJJbFpsY21sbWFXRmliR1ZEY21Wa1pXNTBhV0ZzSWwwc0lrQmpiMjUwWlhoMElqcGJJbWgwZEhCek9sd3ZYQzkzZDNjdWR6TXViM0puWEM4eU1ERTRYQzlqY21Wa1pXNTBhV0ZzYzF3dmRqRWlYU3dpWTNKbFpHVnVkR2xoYkZOMFlYUjFjeUk2ZXlKemRHRjBkWE5RZFhKd2IzTmxJam9pVW1WMmIyTmhkR2x2YmlJc0luTjBZWFIxYzB4cGMzUkpibVJsZUNJNk5Td2lhV1FpT2lKb2RIUndPbHd2WEM4eE9USXVNVFk0TGpZNExqRXhNem80TURBd1hDOXdjbWx6YlMxaFoyVnVkRnd2WTNKbFpHVnVkR2xoYkMxemRHRjBkWE5jTHpNNVlqQmlOekkyTFRCbU5tVXRORGxtTnkwNVl6VXlMVFl5WVRjNE1UY3hOelZsT0NNMUlpd2lkSGx3WlNJNklsTjBZWFIxYzB4cGMzUXlNREl4Ulc1MGNua2lMQ0p6ZEdGMGRYTk1hWE4wUTNKbFpHVnVkR2xoYkNJNkltaDBkSEE2WEM5Y0x6RTVNaTR4TmpndU5qZ3VNVEV6T2pnd01EQmNMM0J5YVhOdExXRm5aVzUwWEM5amNtVmtaVzUwYVdGc0xYTjBZWFIxYzF3dk16bGlNR0kzTWpZdE1HWTJaUzAwT1dZM0xUbGpOVEl0TmpKaE56Z3hOekUzTldVNEluMTlmUS5maW5ESHhybHRxbU9CcXBEZ3Zfa0NMVk02dnZCRFU3YWRoY01UV3Y2VTRwMlBha3puc0htbDl2TXpxNGpidWlfTXAwZDFoTm0tUXVVcFRMSUFiY2Z1QQ==" + }, + "format":"prism/jwt" + } + ], + "thid":"7524fc50-d834-4a1f-a617-f36dd1d571bd", + "ack":[ + + ] + } +] + """ + val getMediator = """ + [ + { + "mediator_did":{"method":"peer","methodId":"2.Ez6LSghwSE437wnDE1pt3X6hVDUQzSjsHzinpX3XFvMjRAm7y.Vz6Mkhh1e5CEYYq6JBUcTZ6Cp2ranCWRrv7Yax3Le4N59R6dd.SeyJ0IjoiZG0iLCJzIjp7InVyaSI6Imh0dHBzOi8vc2l0LXByaXNtLW1lZGlhdG9yLmF0YWxhcHJpc20uaW8iLCJhIjpbImRpZGNvbW0vdjIiXX19.SeyJ0IjoiZG0iLCJzIjp7InVyaSI6IndzczovL3NpdC1wcmlzbS1tZWRpYXRvci5hdGFsYXByaXNtLmlvL3dzIiwiYSI6WyJkaWRjb21tL3YyIl19fQ"}, + "holder_did":{"method":"peer","methodId":"2.Ez6LSok96TA4orHQXSMHZj3mqyUuVLMfLfGGqj27i1giErbXL.Vz6Mku5mY1GuJ9AN2vvDwjMv5QUC2zqKVRPCcbmJVYTFTCFmr"}, + "routing_did":{"method":"peer","methodId":"2.Ez6LSghwSE437wnDE1pt3X6hVDUQzSjsHzinpX3XFvMjRAm7y.Vz6Mkhh1e5CEYYq6JBUcTZ6Cp2ranCWRrv7Yax3Le4N59R6dd.SeyJ0IjoiZG0iLCJzIjp7InVyaSI6Imh0dHBzOi8vc2l0LXByaXNtLW1lZGlhdG9yLmF0YWxhcHJpc20uaW8iLCJhIjpbImRpZGNvbW0vdjIiXX19.SeyJ0IjoiZG0iLCJzIjp7InVyaSI6IndzczovL3NpdC1wcmlzbS1tZWRpYXRvci5hdGFsYXByaXNtLmlvL3dzIiwiYSI6WyJkaWRjb21tL3YyIl19fQ"} + } + ] + """ }