diff options
Diffstat (limited to 'content/child/webcrypto/algorithm_dispatch.h')
-rw-r--r-- | content/child/webcrypto/algorithm_dispatch.h | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/content/child/webcrypto/algorithm_dispatch.h b/content/child/webcrypto/algorithm_dispatch.h new file mode 100644 index 0000000..a8b282c --- /dev/null +++ b/content/child/webcrypto/algorithm_dispatch.h @@ -0,0 +1,104 @@ +// 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. + +#ifndef CONTENT_CHILD_WEBCRYPTO_ALGORITHM_DISPATCH_H_ +#define CONTENT_CHILD_WEBCRYPTO_ALGORITHM_DISPATCH_H_ + +#include <vector> + +#include "base/basictypes.h" +#include "base/memory/scoped_ptr.h" +#include "content/common/content_export.h" +#include "third_party/WebKit/public/platform/WebCrypto.h" + +namespace content { + +namespace webcrypto { + +class AlgorithmImplementation; +class CryptoData; +class Status; + +// These functions provide an entry point for synchronous webcrypto operations. +// +// The inputs to these methods come from Blink, and hence the validations done +// by Blink can be assumed: +// +// * The algorithm parameters are consistent with the algorithm +// * The key contains the required usage for the operation + +CONTENT_EXPORT Status Encrypt(const blink::WebCryptoAlgorithm& algorithm, + const blink::WebCryptoKey& key, + const CryptoData& data, + std::vector<uint8>* buffer); + +CONTENT_EXPORT Status Decrypt(const blink::WebCryptoAlgorithm& algorithm, + const blink::WebCryptoKey& key, + const CryptoData& data, + std::vector<uint8>* buffer); + +CONTENT_EXPORT Status Digest(const blink::WebCryptoAlgorithm& algorithm, + const CryptoData& data, + std::vector<uint8>* buffer); + +CONTENT_EXPORT Status + GenerateSecretKey(const blink::WebCryptoAlgorithm& algorithm, + bool extractable, + blink::WebCryptoKeyUsageMask usage_mask, + blink::WebCryptoKey* key); + +CONTENT_EXPORT Status + GenerateKeyPair(const blink::WebCryptoAlgorithm& algorithm, + bool extractable, + blink::WebCryptoKeyUsageMask usage_mask, + blink::WebCryptoKey* public_key, + blink::WebCryptoKey* private_key); + +CONTENT_EXPORT Status ImportKey(blink::WebCryptoKeyFormat format, + const CryptoData& key_data, + const blink::WebCryptoAlgorithm& algorithm, + bool extractable, + blink::WebCryptoKeyUsageMask usage_mask, + blink::WebCryptoKey* key); + +CONTENT_EXPORT Status ExportKey(blink::WebCryptoKeyFormat format, + const blink::WebCryptoKey& key, + std::vector<uint8>* buffer); + +CONTENT_EXPORT Status Sign(const blink::WebCryptoAlgorithm& algorithm, + const blink::WebCryptoKey& key, + const CryptoData& data, + std::vector<uint8>* buffer); + +CONTENT_EXPORT Status Verify(const blink::WebCryptoAlgorithm& algorithm, + const blink::WebCryptoKey& key, + const CryptoData& signature, + const CryptoData& data, + bool* signature_match); + +CONTENT_EXPORT Status + WrapKey(blink::WebCryptoKeyFormat format, + const blink::WebCryptoKey& key_to_wrap, + const blink::WebCryptoKey& wrapping_key, + const blink::WebCryptoAlgorithm& wrapping_algorithm, + std::vector<uint8>* buffer); + +CONTENT_EXPORT Status + UnwrapKey(blink::WebCryptoKeyFormat format, + const CryptoData& wrapped_key_data, + const blink::WebCryptoKey& wrapping_key, + const blink::WebCryptoAlgorithm& wrapping_algorithm, + const blink::WebCryptoAlgorithm& algorithm, + bool extractable, + blink::WebCryptoKeyUsageMask usage_mask, + blink::WebCryptoKey* key); + +CONTENT_EXPORT scoped_ptr<blink::WebCryptoDigestor> CreateDigestor( + blink::WebCryptoAlgorithmId algorithm); + +} // namespace webcrypto + +} // namespace content + +#endif // CONTENT_CHILD_WEBCRYPTO_ALGORITHM_DISPATCH_H_ |