diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2022-09-29 16:16:15 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2022-11-09 10:04:06 +0000 |
commit | a95a7417ad456115a1ef2da4bb8320531c0821f1 (patch) | |
tree | edcd59279e486d2fd4a8f88a7ed025bcf925c6e6 /chromium/net/cert/pki/extended_key_usage.cc | |
parent | 33fc33aa94d4add0878ec30dc818e34e1dd3cc2a (diff) | |
download | qtwebengine-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.cc | 40 |
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 |