Skip to content

Commit 7726f5a

Browse files
author
Shota Jolbordi
committed
Fix fromString on DID
Signed-off-by: Shota Jolbordi <[email protected]>
1 parent 89ff999 commit 7726f5a

File tree

2 files changed

+6
-5
lines changed

2 files changed

+6
-5
lines changed

node/src/main/scala/io/iohk/atala/prism/node/identity/Did.scala

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,12 @@ object Did {
99
val DID_SCHEME: String = "did"
1010

1111
def fromString(didStr: String): Did = {
12-
// https://www.w3.org/TR/did-core/#did-syntax
13-
val didPattern = "did:([A-Za-z0-9]+):((?:[a-zA-Z0-9._-]|%[0-9A-Fa-f]{2})+)".r
12+
// https://www.w3.org/TR/did-core/#did-syntax plus encoded state that is prism specific
13+
val didPattern = "did:([A-Za-z0-9]+):((?:[a-zA-Z0-9._-]|%[0-9A-Fa-f]{2})+)(?::([a-zA-Z0-9_-]+))?".r
1414
didStr match {
15-
case didPattern(methodName, methodSpecificId) =>
16-
Did(DidMethod.fromString(methodName), DidMethodSpecificId.fromString(methodSpecificId))
15+
case didPattern(methodName, methodSpecificId, encodedState) =>
16+
val methodSpecificIdWithState = Option(encodedState).fold(methodSpecificId)(encodedState => s"$methodSpecificId:$encodedState")
17+
Did(DidMethod.fromString(methodName), DidMethodSpecificId.fromString(methodSpecificIdWithState))
1718
case _ => throw new IllegalArgumentException(s"Invalid DID format: $didStr")
1819
}
1920
}

node/src/main/scala/io/iohk/atala/prism/node/identity/PrismDid.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ object PrismDid {
125125
longFormMatchGroups match {
126126
case Some(groups) =>
127127
val List(stateHashHex, encodedStateBase64, _*) = groups
128-
require(longFormMatchGroups.size == 2, "Invalid long form Prism DID")
128+
require(groups.size == 2, "Invalid long form Prism DID")
129129
val stateHash = Sha256Hash.fromHex(stateHashHex)
130130
val encodedState = Base64Utils.decodeURL(encodedStateBase64)
131131
val atalaOperation = decodeState(stateHash, encodedState)

0 commit comments

Comments
 (0)