summaryrefslogtreecommitdiff
path: root/chromium/net/cert/pki/extended_key_usage.cc
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2022-09-29 16:16:15 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2022-11-09 10:04:06 +0000
commita95a7417ad456115a1ef2da4bb8320531c0821f1 (patch)
treeedcd59279e486d2fd4a8f88a7ed025bcf925c6e6 /chromium/net/cert/pki/extended_key_usage.cc
parent33fc33aa94d4add0878ec30dc818e34e1dd3cc2a (diff)
downloadqtwebengine-chromium-a95a7417ad456115a1ef2da4bb8320531c0821f1.tar.gz
BASELINE: Update Chromium to 106.0.5249.126
Change-Id: Ib0bb21c437a7d1686e21c33f2d329f2ac425b7ab Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/438936 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/net/cert/pki/extended_key_usage.cc')
-rw-r--r--chromium/net/cert/pki/extended_key_usage.cc40
1 files changed, 40 insertions, 0 deletions
diff --git a/chromium/net/cert/pki/extended_key_usage.cc b/chromium/net/cert/pki/extended_key_usage.cc
new file mode 100644
index 00000000000..e4e97b30175
--- /dev/null
+++ b/chromium/net/cert/pki/extended_key_usage.cc
@@ -0,0 +1,40 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "net/cert/pki/extended_key_usage.h"
+
+#include "net/der/input.h"
+#include "net/der/parser.h"
+#include "net/der/tag.h"
+
+namespace net {
+
+bool ParseEKUExtension(const der::Input& extension_value,
+ std::vector<der::Input>* eku_oids) {
+ der::Parser extension_parser(extension_value);
+ der::Parser sequence_parser;
+ if (!extension_parser.ReadSequence(&sequence_parser))
+ return false;
+
+ // Section 4.2.1.12 of RFC 5280 defines ExtKeyUsageSyntax as:
+ // ExtKeyUsageSyntax ::= SEQUENCE SIZE (1..MAX) OF KeyPurposeId
+ //
+ // Therefore, the sequence must contain at least one KeyPurposeId.
+ if (!sequence_parser.HasMore())
+ return false;
+ while (sequence_parser.HasMore()) {
+ der::Input eku_oid;
+ if (!sequence_parser.ReadTag(der::kOid, &eku_oid))
+ // The SEQUENCE OF must contain only KeyPurposeIds (OIDs).
+ return false;
+ eku_oids->push_back(eku_oid);
+ }
+ if (extension_parser.HasMore())
+ // The extension value must follow ExtKeyUsageSyntax - there is no way that
+ // it could be extended to allow for something after the SEQUENCE OF.
+ return false;
+ return true;
+}
+
+} // namespace net