diff options
author | eroman@chromium.org <eroman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-02-05 21:29:09 +0000 |
---|---|---|
committer | eroman@chromium.org <eroman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-02-05 21:29:09 +0000 |
commit | ffe2eba13d3fb57cb40ed8e5c3d5b7149281fcb8 (patch) | |
tree | 75c52df449abc7452f5cd01755083f6a9d629b68 /content/renderer/webcrypto/webcrypto_util.cc | |
parent | 75902b913733f26ea971c91b3b8f43a9ecfce16a (diff) | |
download | chromium_src-ffe2eba13d3fb57cb40ed8e5c3d5b7149281fcb8.zip chromium_src-ffe2eba13d3fb57cb40ed8e5c3d5b7149281fcb8.tar.gz chromium_src-ffe2eba13d3fb57cb40ed8e5c3d5b7149281fcb8.tar.bz2 |
[webcrypto] Require optional JWK properties to have the correct type.
BUG=245025
R=rsleevi@chromium.org
Review URL: https://codereview.chromium.org/150303003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@249112 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/renderer/webcrypto/webcrypto_util.cc')
-rw-r--r-- | content/renderer/webcrypto/webcrypto_util.cc | 49 |
1 files changed, 26 insertions, 23 deletions
diff --git a/content/renderer/webcrypto/webcrypto_util.cc b/content/renderer/webcrypto/webcrypto_util.cc index 7581ef7..3124afa 100644 --- a/content/renderer/webcrypto/webcrypto_util.cc +++ b/content/renderer/webcrypto/webcrypto_util.cc @@ -14,32 +14,46 @@ namespace content { namespace webcrypto { bool Status::IsError() const { - return error_details_ != NULL; + return type_ == TYPE_ERROR; } bool Status::IsSuccess() const { - return !IsError(); + return type_ == TYPE_SUCCESS; +} + +bool Status::HasErrorDetails() const { + return !error_details_.empty(); } std::string Status::ToString() const { - return IsSuccess() ? "Success" : std::string(error_details_); + return IsSuccess() ? "Success" : error_details_; } Status Status::Success() { - return Status(NULL); + return Status(TYPE_SUCCESS); } Status Status::Error() { - return Status(""); + return Status(TYPE_ERROR); } Status Status::ErrorJwkNotDictionary() { return Status("JWK input could not be parsed to a JSON dictionary"); } -Status Status::ErrorJwkMissingKty() { - return Status("JWK dictionary is missing \"kty\" property or it is not a " - "string"); +Status Status::ErrorJwkPropertyMissing(const std::string& property) { + return Status("The required JWK property \"" + property + "\" was missing"); +} + +Status Status::ErrorJwkPropertyWrongType(const std::string& property, + const std::string& expected_type) { + return Status("The JWK property \"" + property + "\" must be a " + + expected_type); +} + +Status Status::ErrorJwkBase64Decode(const std::string& property) { + return Status("The JWK property \"" + property + + "\" could not be base64 decoded"); } Status Status::ErrorJwkExtractableInconsistent() { @@ -71,18 +85,6 @@ Status Status::ErrorJwkUsageInconsistent() { "those requested"); } -Status Status::ErrorJwkDecodeK() { - return Status("Could not extract required base64 encoded property \"k\""); -} - -Status Status::ErrorJwkDecodeN() { - return Status("Could not extract required base64 encoded property \"n\""); -} - -Status Status::ErrorJwkDecodeE() { - return Status("Could not extract required base64 encoded property \"e\""); -} - Status Status::ErrorJwkRsaPrivateKeyUnsupported() { return Status("JWK RSA key contained \"d\" property: Private key import is " "not yet supported"); @@ -156,9 +158,10 @@ Status Status::ErrorGenerateKeyLength() { "bits"); } -Status::Status(const char* error_details_utf8) - : error_details_(error_details_utf8) { -} +Status::Status(const std::string& error_details_utf8) + : type_(TYPE_ERROR), error_details_(error_details_utf8) {} + +Status::Status(Type type) : type_(type) {} const uint8* Uint8VectorStart(const std::vector<uint8>& data) { if (data.empty()) |