| Index: net/cert/internal/signature_policy.h
|
| diff --git a/net/cert/internal/signature_policy.h b/net/cert/internal/signature_policy.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..72ff945ed2c1cd1902f2dd67c7ef64def44fef6d
|
| --- /dev/null
|
| +++ b/net/cert/internal/signature_policy.h
|
| @@ -0,0 +1,64 @@
|
| +// 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_SIGNATURE_POLICY_H_
|
| +#define NET_CERT_INTERNAL_SIGNATURE_POLICY_H_
|
| +
|
| +#include "base/compiler_specific.h"
|
| +#include "net/base/net_export.h"
|
| +#include "net/cert/internal/signature_algorithm.h"
|
| +
|
| +namespace net {
|
| +
|
| +class SignatureAlgorithm;
|
| +
|
| +// SignaturePolicy is an interface (and base implementation) for applying
|
| +// policies when verifying signed data. It lets callers override which
|
| +// algorithms, named curves, and key sizes to allow.
|
| +class NET_EXPORT SignaturePolicy {
|
| + public:
|
| + virtual ~SignaturePolicy() {}
|
| +
|
| + // Implementations should return true if |algorithm| is acceptable. For
|
| + // instance, implementations could reject any signature algorithms that used
|
| + // SHA-1.
|
| + //
|
| + // The default implementation accepts all signature algorithms.
|
| + virtual bool IsAcceptableSignatureAlgorithm(
|
| + const SignatureAlgorithm& algorithm) const;
|
| +
|
| + // Implementations should return true if |curve_nid| is an allowed
|
| + // elliptical curve. |curve_nid| is an object ID from BoringSSL (for example
|
| + // NID_secp384r1).
|
| + //
|
| + // The default implementation accepts secp256r1, secp384r1, secp521r1 only.
|
| + virtual bool IsAcceptableCurveForEcdsa(int curve_nid) const;
|
| +
|
| + // Implementations should return true if |modulus_length_bits| is an allowed
|
| + // RSA key size in bits.
|
| + //
|
| + // The default implementation accepts any modulus length >= 2048 bits.
|
| + virtual bool IsAcceptableModulusLengthForRsa(
|
| + size_t modulus_length_bits) const;
|
| +};
|
| +
|
| +// SimpleSignaturePolicy modifies the base SignaturePolicy by allowing the
|
| +// minimum RSA key length to be specified (rather than hard coded to 2048).
|
| +//
|
| +// TODO(eroman): This is currently just used by a test. If it ends up being
|
| +// only useful for the unit-test then move it directly to that test file.
|
| +class NET_EXPORT SimpleSignaturePolicy : public SignaturePolicy {
|
| + public:
|
| + explicit SimpleSignaturePolicy(size_t min_rsa_modulus_length_bits);
|
| +
|
| + bool IsAcceptableModulusLengthForRsa(
|
| + size_t modulus_length_bits) const override;
|
| +
|
| + private:
|
| + const size_t min_rsa_modulus_length_bits_;
|
| +};
|
| +
|
| +} // namespace net
|
| +
|
| +#endif // NET_CERT_INTERNAL_SIGNATURE_POLICY_H_
|
|
|