Skip to content

Commit d130efd

Browse files
committed
Minor fix
1 parent 971e1be commit d130efd

File tree

1 file changed

+15
-0
lines changed
  • app/src/main/java/com/credman/cmwallet/sdjwt

1 file changed

+15
-0
lines changed

app/src/main/java/com/credman/cmwallet/sdjwt/SdJwt.kt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import java.math.BigInteger
99
import java.nio.ByteBuffer
1010
import java.security.MessageDigest
1111
import android.util.Base64
12+
import android.util.Log
1213
import com.credman.cmwallet.createJWTES256
1314
import com.credman.cmwallet.jwsDeserialization
1415
import com.credman.cmwallet.loadECPrivateKey
@@ -41,14 +42,17 @@ class SdJwt(
4142
}
4243

4344
private fun addDisclosuresToPresentation(sd: JSONObject, ret: MutableList<String>) {
45+
Log.d("helenqinn", "SD to add: $sd")
4446
for (key in sd.keys()) {
4547
if ("_sd" == key) {
4648
val digest = sd.getString("_sd")
4749
val disclosure = verifiedResult.digestDisclosureMap[digest]!!
4850
ret.add(disclosure)
51+
Log.d("helenqinn", "ret: $ret")
4952
} else {
5053
val recursiveSd = sd.get(key)
5154
if (recursiveSd is JSONObject) {
55+
Log.d("helenqinn", "addDisclosuresToPresentation: $recursiveSd")
5256
addDisclosuresToPresentation(recursiveSd, ret)
5357
} else {
5458
throw IllegalStateException("Unexpected type ${recursiveSd::class.java}")
@@ -76,18 +80,29 @@ class SdJwt(
7680
val claim = claimSet.getJSONObject(claimIdx)!!
7781
val path = claim.getJSONArray("path")
7882
var sd = verifiedResult.sdMap
83+
val sds = mutableListOf<JSONObject>()
7984
for (pathIdx in 0..<path.length()) {
8085
// TODO: handle path variants (null)
8186
val currPath = path.getString(pathIdx)
8287
if (sd.has(currPath)) {
8388
sd = sd.getJSONObject(currPath)
89+
sds.add(JSONObject(sd.toString()))
8490
} else {
8591
claimSetMatched = false
8692
break
8793
}
8894
}
8995
if (claimSetMatched) {
9096
addDisclosuresToPresentation(sd, ret)
97+
// TODO: improve this code
98+
if (sds.size > 1) {
99+
for (k in 0..<sds.size - 1) {
100+
val currSd = sds[k]
101+
val digest = currSd.getString("_sd")
102+
val disclosure = verifiedResult.digestDisclosureMap[digest]!!
103+
ret.add(disclosure)
104+
}
105+
}
91106
} else {
92107
break
93108
}

0 commit comments

Comments
 (0)