Index: content/child/webcrypto/generate_key_result.cc |
diff --git a/content/child/webcrypto/generate_key_result.cc b/content/child/webcrypto/generate_key_result.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..1709e47b07f4473181cde9eafac47fc13c6de9f9 |
--- /dev/null |
+++ b/content/child/webcrypto/generate_key_result.cc |
@@ -0,0 +1,67 @@ |
+// Copyright 2014 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. |
+ |
+#include "content/child/webcrypto/generate_key_result.h" |
+ |
+#include "base/logging.h" |
+ |
+namespace content { |
+ |
+namespace webcrypto { |
+ |
+GenerateKeyResult::GenerateKeyResult() |
+ : type_(TYPE_NULL), |
+ secret_key_(blink::WebCryptoKey::createNull()), |
+ public_key_(blink::WebCryptoKey::createNull()), |
+ private_key_(blink::WebCryptoKey::createNull()) { |
+} |
+ |
+GenerateKeyResult::Type GenerateKeyResult::type() const { |
+ return type_; |
+} |
+ |
+const blink::WebCryptoKey& GenerateKeyResult::secret_key() const { |
+ DCHECK_EQ(TYPE_SECRET_KEY, type_); |
+ return secret_key_; |
+} |
+ |
+const blink::WebCryptoKey& GenerateKeyResult::public_key() const { |
+ DCHECK_EQ(TYPE_PUBLIC_PRIVATE_KEY_PAIR, type_); |
+ return public_key_; |
+} |
+ |
+const blink::WebCryptoKey& GenerateKeyResult::private_key() const { |
+ DCHECK_EQ(TYPE_PUBLIC_PRIVATE_KEY_PAIR, type_); |
+ return private_key_; |
+} |
+ |
+void GenerateKeyResult::AssignSecretKey(const blink::WebCryptoKey& key) { |
+ type_ = TYPE_SECRET_KEY; |
+ secret_key_ = key; |
+} |
+ |
+void GenerateKeyResult::AssignKeyPair(const blink::WebCryptoKey& public_key, |
+ const blink::WebCryptoKey& private_key) { |
+ type_ = TYPE_PUBLIC_PRIVATE_KEY_PAIR; |
+ public_key_ = public_key; |
+ private_key_ = private_key; |
+} |
+ |
+void GenerateKeyResult::Complete(blink::WebCryptoResult* out) const { |
+ switch (type_) { |
+ case TYPE_NULL: |
+ NOTREACHED(); |
+ break; |
+ case TYPE_SECRET_KEY: |
+ out->completeWithKey(secret_key()); |
+ break; |
+ case TYPE_PUBLIC_PRIVATE_KEY_PAIR: |
+ out->completeWithKeyPair(public_key(), private_key()); |
+ break; |
+ } |
+} |
+ |
+} // namespace webcrypto |
+ |
+} // namespace content |