summaryrefslogtreecommitdiffstats
path: root/content/renderer/webcrypto/webcrypto_util.cc
diff options
context:
space:
mode:
authoreroman@chromium.org <eroman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-02-05 21:29:09 +0000
committereroman@chromium.org <eroman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-02-05 21:29:09 +0000
commitffe2eba13d3fb57cb40ed8e5c3d5b7149281fcb8 (patch)
tree75c52df449abc7452f5cd01755083f6a9d629b68 /content/renderer/webcrypto/webcrypto_util.cc
parent75902b913733f26ea971c91b3b8f43a9ecfce16a (diff)
downloadchromium_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.cc49
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())