From 224abf3546d7bac7ab982ef7bf973532b701049e Mon Sep 17 00:00:00 2001 From: mineme0110 Date: Thu, 2 Nov 2023 11:15:55 +0000 Subject: [PATCH 1/2] fix: incorrect body of the message results in problemreport --- .../atala/mediator/app/MediatorAgent.scala | 36 ++++++++++++++++--- .../protocols/BasicMessageExecuter.scala | 8 ++--- .../atala/mediator/protocols/Problems.scala | 17 +++++++++ 3 files changed, 52 insertions(+), 9 deletions(-) diff --git a/mediator/src/main/scala/io/iohk/atala/mediator/app/MediatorAgent.scala b/mediator/src/main/scala/io/iohk/atala/mediator/app/MediatorAgent.scala index dba3230f..bed17a47 100644 --- a/mediator/src/main/scala/io/iohk/atala/mediator/app/MediatorAgent.scala +++ b/mediator/src/main/scala/io/iohk/atala/mediator/app/MediatorAgent.scala @@ -182,18 +182,44 @@ case class MediatorAgent( } // TODO Store context of the decrypt unwarping // TODO SreceiveMessagetore context with MsgID and PIURI + agent <- ZIO.service[Agent] ret <- { maybeActionStorageError match case Some(reply) => ActionUtils.packResponse(Some(plaintextMessage), reply) case None => protocolHandler.execute(plaintextMessage) }.tapError(ex => ZIO.logError(s"Error when execute Protocol: $ex")) + .catchSome { case MediatorDidError(error) => + ZIO.logError(s"Error MediatorDidError: $error") *> + ActionUtils.packResponse( + Some(plaintextMessage), + Reply( + Problems + .malformedError( + to = plaintextMessage.from.map(_.asTO).toSet, + from = agent.id, + pthid = plaintextMessage.id, + piuri = plaintextMessage.`type`, + ) + .toPlaintextMessage + ) + ) +// ZIO.fail( +// Problems +// .malformedError( +// to = plaintextMessage.from.map(_.asTO).toSet, +// from = agent.id, +// pthid = plaintextMessage.id, +// piuri = plaintextMessage.`type`, +// ) +// ) + } } yield ret }.catchAll { - case ex: MediatorError => ZIO.fail(ex) - case pr: ProblemReport => ActionUtils.packResponse(None, Reply(pr.toPlaintextMessage)) - case ex: StorageCollection => ZIO.fail(ex) - case ex: StorageThrowable => ZIO.fail(ex) - case ex: DuplicateMessage => ZIO.fail(ex) + case ex: MediatorError => ZIO.fail(ex) + case pr: ProblemReport => ActionUtils.packResponse(None, Reply(pr.toPlaintextMessage)) + case ex: StorageCollection => ZIO.fail(ex) + case ex: StorageThrowable => ZIO.fail(ex) + case ex: DuplicateMessage => ZIO.fail(ex) } } yield maybeSyncReplyMsg } diff --git a/mediator/src/main/scala/io/iohk/atala/mediator/protocols/BasicMessageExecuter.scala b/mediator/src/main/scala/io/iohk/atala/mediator/protocols/BasicMessageExecuter.scala index 71bb73ba..4f128d1b 100644 --- a/mediator/src/main/scala/io/iohk/atala/mediator/protocols/BasicMessageExecuter.scala +++ b/mediator/src/main/scala/io/iohk/atala/mediator/protocols/BasicMessageExecuter.scala @@ -1,10 +1,10 @@ package io.iohk.atala.mediator.protocols import fmgp.crypto.error.FailToParse -import fmgp.did.comm.{PIURI, PlaintextMessage, SignedMessage, EncryptedMessage} +import fmgp.did.comm.{EncryptedMessage, PIURI, PlaintextMessage, SignedMessage} import fmgp.did.comm.protocol.basicmessage2.BasicMessage -import io.iohk.atala.mediator.{MediatorError, MediatorDidError, MediatorThrowable} -import io.iohk.atala.mediator.actions.{NoReply, ProtocolExecuter} +import io.iohk.atala.mediator.{MediatorDidError, MediatorError, MediatorThrowable, StorageError} +import io.iohk.atala.mediator.actions.{Action, NoReply, ProtocolExecuter} import zio.{Console, ZIO} object BasicMessageExecuter extends ProtocolExecuter[Any, MediatorError] { @@ -16,7 +16,7 @@ object BasicMessageExecuter extends ProtocolExecuter[Any, MediatorError] { ): ZIO[R, MediatorError, Option[SignedMessage | EncryptedMessage]] = program(plaintextMessage).debug *> ZIO.none - override def program[R1 <: Any](plaintextMessage: PlaintextMessage) = for { + override def program[R1 <: Any](plaintextMessage: PlaintextMessage): ZIO[R1, MediatorError, Action] = for { job <- BasicMessage.fromPlaintextMessage(plaintextMessage) match case Left(error) => ZIO.fail(MediatorDidError(FailToParse(error))) case Right(bm) => Console.printLine(bm.toString).mapError(ex => MediatorThrowable(ex)) diff --git a/mediator/src/main/scala/io/iohk/atala/mediator/protocols/Problems.scala b/mediator/src/main/scala/io/iohk/atala/mediator/protocols/Problems.scala index 479356a9..97c603f1 100644 --- a/mediator/src/main/scala/io/iohk/atala/mediator/protocols/Problems.scala +++ b/mediator/src/main/scala/io/iohk/atala/mediator/protocols/Problems.scala @@ -129,4 +129,21 @@ object Problems { escalate_to = email, ) + def malformedError( + to: Set[TO], + from: FROM, + pthid: MsgID, + piuri: PIURI, + ) = ProblemReport( + // id: MsgID = MsgID(), + to = to, + from = from, + pthid = pthid, + ack = None, + code = ProblemCode.ErroFail("msg", piuri.value), + comment = None, + args = None, + escalate_to = email, + ) + } From 8cde8d93548da714a971441232d8353d0f8039ad Mon Sep 17 00:00:00 2001 From: mineme0110 Date: Thu, 2 Nov 2023 11:18:16 +0000 Subject: [PATCH 2/2] fix: incorrect body of the message results in problemreport --- .../scala/io/iohk/atala/mediator/app/MediatorAgent.scala | 9 --------- 1 file changed, 9 deletions(-) diff --git a/mediator/src/main/scala/io/iohk/atala/mediator/app/MediatorAgent.scala b/mediator/src/main/scala/io/iohk/atala/mediator/app/MediatorAgent.scala index bed17a47..a79dd525 100644 --- a/mediator/src/main/scala/io/iohk/atala/mediator/app/MediatorAgent.scala +++ b/mediator/src/main/scala/io/iohk/atala/mediator/app/MediatorAgent.scala @@ -203,15 +203,6 @@ case class MediatorAgent( .toPlaintextMessage ) ) -// ZIO.fail( -// Problems -// .malformedError( -// to = plaintextMessage.from.map(_.asTO).toSet, -// from = agent.id, -// pthid = plaintextMessage.id, -// piuri = plaintextMessage.`type`, -// ) -// ) } } yield ret }.catchAll {