| // 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 "components/webcrypto/generate_key_result.h" |
| |
| #include "base/logging.h" |
| |
| namespace webcrypto { |
| |
| GenerateKeyResult::GenerateKeyResult() : type_(TYPE_NULL) { |
| } |
| |
| 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 |