commit 70ab380cd9ae28f81bc0dbbf07e6d47c6af839dc
parent 3c68a5ffe0402c11b4dcf5652c6967a27fb56ad4
Author: Antoine A <>
Date: Fri, 24 Jan 2025 09:38:18 +0100
common: fix parsing subject with percent decoding
Diffstat:
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/common/src/main/kotlin/Subject.kt b/common/src/main/kotlin/Subject.kt
@@ -124,7 +124,7 @@ fun parseIncomingSubject(subject: String): IncomingSubject {
// Find and concatenate valid parts of a keys
val parts = mutableListOf(0)
val concatenated = StringBuilder()
- for (match in ALPHA_NUMBERIC_PATTERN.findAll(subject)) {
+ for (match in ALPHA_NUMBERIC_PATTERN.findAll(subject.replace("%20", " "))) {
concatenated.append(match.value);
parts.add(concatenated.length);
}
diff --git a/common/src/test/kotlin/SubjectTest.kt b/common/src/test/kotlin/SubjectTest.kt
@@ -67,6 +67,7 @@ class SubjectTest {
"left $L-$R right",
"left $L+$R right",
"left $L\n$R right",
+ "left $L%20$R right",
"left $L-+\n$R right",
"left $L - $R right",
"left $L + $R right",
@@ -147,7 +148,8 @@ class SubjectTest {
"Taler TEGY6d9mh9pgwvwpgs0z0095z854xegfy7j j202yd0esp8p0za60" to "TEGY6d9mh9pgwvwpgs0z0095z854xegfy7jj202yd0esp8p0za60",
"00Q979QSMJ29S7BJT3DDAVC5A0DR5Z05B7N 0QT1RCBQ8FXJPZ6RG" to "00Q979QSMJ29S7BJT3DDAVC5A0DR5Z05B7N0QT1RCBQ8FXJPZ6RG",
"Taler NDDCAM9XN4HJZFTBD8V6FNE2FJE8G Y734PJ5AGQMY06C8D4HB3Z0" to "NDDCAM9XN4HJZFTBD8V6FNE2FJE8GY734PJ5AGQMY06C8D4HB3Z0",
- "KYCVEEXTBXBEMCS5R64C24GFNQVWBN5R2F9QSQ7PN8QXAP1NG4NG" to "KYCVEEXTBXBEMCS5R64C24GFNQVWBN5R2F9QSQ7PN8QXAP1NG4NG"
+ "KYCVEEXTBXBEMCS5R64C24GFNQVWBN5R2F9QSQ7PN8QXAP1NG4NG" to "KYCVEEXTBXBEMCS5R64C24GFNQVWBN5R2F9QSQ7PN8QXAP1NG4NG",
+ "Taler%20NDDCAM9XN4HJZFTBD8V6FNE2FJE8G Y734PJ5AGQMY06C8D4HB3Z0" to "NDDCAM9XN4HJZFTBD8V6FNE2FJE8GY734PJ5AGQMY06C8D4HB3Z0",
)) {
assertEquals(
IncomingSubject.Reserve(EddsaPublicKey(key)),