| // 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 COMPONENTS_WEBCRYPTO_CRYPTO_DATA_H_ |
| #define COMPONENTS_WEBCRYPTO_CRYPTO_DATA_H_ |
| |
| #include <string> |
| #include <vector> |
| |
| #include "third_party/blink/public/platform/web_vector.h" |
| |
| namespace webcrypto { |
| |
| // Helper to pass around a range of immutable bytes. This is conceptually |
| // similar to base::StringPiece, but for crypto byte data. |
| // |
| // The data used at construction is NOT owned, and should remain valid as long |
| // as the CryptoData is being used. |
| class CryptoData { |
| public: |
| // Constructs empty data. |
| CryptoData(); |
| |
| CryptoData(const unsigned char* bytes, unsigned int byte_length); |
| |
| // These constructors do NOT copy the data. Hence the base pointer should |
| // remain valid for the lifetime of CryptoData. |
| explicit CryptoData(const std::vector<unsigned char>& bytes); |
| explicit CryptoData(const std::string& bytes); |
| explicit CryptoData(const blink::WebVector<unsigned char>& bytes); |
| |
| const unsigned char* bytes() const { return bytes_; } |
| unsigned int byte_length() const { return byte_length_; } |
| |
| private: |
| const unsigned char* const bytes_; |
| const unsigned int byte_length_; |
| }; |
| |
| } // namespace webcrypto |
| |
| #endif // COMPONENTS_WEBCRYPTO_CRYPTO_DATA_H_ |