Index: net/cert/internal/signature_policy.cc |
diff --git a/net/cert/internal/signature_policy.cc b/net/cert/internal/signature_policy.cc |
index c00212ac9410888887f8e383cbbf7ef7dc9a6abc..dae861f2930561d931d328a4dde231782b5384b0 100644 |
--- a/net/cert/internal/signature_policy.cc |
+++ b/net/cert/internal/signature_policy.cc |
@@ -5,37 +5,67 @@ |
#include "net/cert/internal/signature_policy.h" |
#include "base/logging.h" |
+#include "net/cert/internal/cert_errors.h" |
#include <openssl/obj.h> |
namespace net { |
+namespace { |
+ |
+DEFINE_CERT_ERROR_TYPE(kUnacceptableCurveForEcdsa, |
+ "Only P-256, P-384, P-521 are supported for ECDSA"); |
+DEFINE_CERT_ERROR_TYPE(kRsaModulusLessThan2048, |
+ "RSA modulus must be at least 2048 bits"); |
+DEFINE_CERT_ERROR_TYPE(kRsaModulusTooSmall, "RSA modulus too small"); |
+ |
+} // namespace |
+ |
bool SignaturePolicy::IsAcceptableSignatureAlgorithm( |
- const SignatureAlgorithm& algorithm) const { |
+ const SignatureAlgorithm& algorithm, |
+ CertErrors* errors) const { |
return true; |
} |
-bool SignaturePolicy::IsAcceptableCurveForEcdsa(int curve_nid) const { |
+bool SignaturePolicy::IsAcceptableCurveForEcdsa(int curve_nid, |
+ CertErrors* errors) const { |
switch (curve_nid) { |
case NID_X9_62_prime256v1: |
case NID_secp384r1: |
case NID_secp521r1: |
return true; |
} |
+ |
+ errors->Add(kUnacceptableCurveForEcdsa); |
return false; |
} |
bool SignaturePolicy::IsAcceptableModulusLengthForRsa( |
- size_t modulus_length_bits) const { |
- return modulus_length_bits >= 2048; |
+ size_t modulus_length_bits, |
+ CertErrors* errors) const { |
+ if (modulus_length_bits < 2048) { |
+ // TODO(crbug.com/634443): Add a parameter for actual modulus size. |
+ errors->Add(kRsaModulusLessThan2048); |
+ return false; |
+ } |
+ |
+ return true; |
} |
SimpleSignaturePolicy::SimpleSignaturePolicy(size_t min_rsa_modulus_length_bits) |
: min_rsa_modulus_length_bits_(min_rsa_modulus_length_bits) {} |
bool SimpleSignaturePolicy::IsAcceptableModulusLengthForRsa( |
- size_t modulus_length_bits) const { |
- return modulus_length_bits >= min_rsa_modulus_length_bits_; |
+ size_t modulus_length_bits, |
+ CertErrors* errors) const { |
+ if (modulus_length_bits < min_rsa_modulus_length_bits_) { |
+ // TODO(crbug.com/634443): Add parameters for actual and expected modulus |
+ // size. |
+ errors->Add(kRsaModulusTooSmall); |
+ return false; |
+ } |
+ |
+ return true; |
} |
} // namespace net |