// 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. #ifndef NET_CERT_INTERNAL_EXTENDED_KEY_USAGE_H_ #define NET_CERT_INTERNAL_EXTENDED_KEY_USAGE_H_ #include #include "net/base/net_export.h" #include "net/der/input.h" namespace net { // The following set of methods return the DER-encoded OID, without tag or // length, of the extended key usage purposes defined in RFC 5280 section // 4.2.1.12. NET_EXPORT const der::Input AnyEKU(); NET_EXPORT const der::Input ServerAuth(); NET_EXPORT const der::Input ClientAuth(); NET_EXPORT const der::Input CodeSigning(); NET_EXPORT const der::Input EmailProtection(); NET_EXPORT const der::Input TimeStamping(); NET_EXPORT const der::Input OCSPSigning(); // Netscape Server Gated Crypto (2.16.840.1.113730.4.1) is a deprecated OID // which in some situations is considered equivalent to the serverAuth key // purpose. NET_EXPORT const der::Input NetscapeServerGatedCrypto(); // Parses |extension_value|, which contains the extnValue field of an X.509v3 // Extended Key Usage extension, and populates |eku_oids| with the list of // DER-encoded OID values (that is, without tag and length). Returns false if // |extension_value| is improperly encoded. // // Note: The returned OIDs are only as valid as long as the data pointed to by // |extension_value| is valid. NET_EXPORT bool ParseEKUExtension(const der::Input& extension_value, std::vector* eku_oids); } // namespace net #endif // NET_CERT_INTERNAL_EXTENDED_KEY_USAGE_H_