From af92d6e3dda61b633a70741c4b004cb0de5753b8 Mon Sep 17 00:00:00 2001 From: Michael Osipov Date: Fri, 3 May 2024 12:39:23 +0200 Subject: [PATCH] Extend Asn1Parser to parse UTF8Strings --- java/org/apache/tomcat/util/buf/Asn1Parser.java | 8 ++++++++ webapps/docs/changelog.xml | 3 +++ 2 files changed, 11 insertions(+) diff --git a/java/org/apache/tomcat/util/buf/Asn1Parser.java b/java/org/apache/tomcat/util/buf/Asn1Parser.java index 1d88b113d44c..1282dfc70b13 100644 --- a/java/org/apache/tomcat/util/buf/Asn1Parser.java +++ b/java/org/apache/tomcat/util/buf/Asn1Parser.java @@ -17,6 +17,7 @@ package org.apache.tomcat.util.buf; import java.math.BigInteger; +import java.nio.charset.StandardCharsets; import java.util.ArrayDeque; import java.util.Deque; @@ -36,6 +37,7 @@ public class Asn1Parser { public static final int TAG_OCTET_STRING = 0x04; public static final int TAG_NULL = 0x05; public static final int TAG_OID = 0x06; + public static final int TAG_UTF8STRING = 0x0C; public static final int TAG_SEQUENCE = 0x30; public static final int TAG_ATTRIBUTE_BASE = 0xA0; @@ -149,6 +151,12 @@ public byte[] parseOIDAsBytes() { } + public String parseUTF8String() { + byte[] val = parseBytes(TAG_UTF8STRING); + return new String(val, StandardCharsets.UTF_8); + } + + public byte[] parseAttributeAsBytes(int index) { return parseBytes(TAG_ATTRIBUTE_BASE + index); } diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml index 76fa899f246d..70bb21df9d05 100644 --- a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ -149,6 +149,9 @@ Add periodic checking for WebDAV locks expiration. (remm) + + Extend Asn1Parser to parse UTF8Strings. (michaelo) +