OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 26 matching lines...) Expand all Loading... |
37 | 37 |
38 namespace WebCore { class CryptoResult; } | 38 namespace WebCore { class CryptoResult; } |
39 | 39 |
40 #if BLINK_IMPLEMENTATION | 40 #if BLINK_IMPLEMENTATION |
41 namespace WTF { template <typename T> class PassRefPtr; } | 41 namespace WTF { template <typename T> class PassRefPtr; } |
42 #endif | 42 #endif |
43 | 43 |
44 namespace blink { | 44 namespace blink { |
45 | 45 |
46 class WebArrayBuffer; | 46 class WebArrayBuffer; |
| 47 class WebString; |
47 | 48 |
48 class WebCryptoResult { | 49 class WebCryptoResult { |
49 public: | 50 public: |
50 WebCryptoResult(const WebCryptoResult& o) | 51 WebCryptoResult(const WebCryptoResult& o) |
51 { | 52 { |
52 assign(o); | 53 assign(o); |
53 } | 54 } |
54 | 55 |
55 ~WebCryptoResult() | 56 ~WebCryptoResult() |
56 { | 57 { |
57 reset(); | 58 reset(); |
58 } | 59 } |
59 | 60 |
60 WebCryptoResult& operator=(const WebCryptoResult& o) | 61 WebCryptoResult& operator=(const WebCryptoResult& o) |
61 { | 62 { |
62 assign(o); | 63 assign(o); |
63 return *this; | 64 return *this; |
64 } | 65 } |
65 | 66 |
66 BLINK_EXPORT void completeWithError(); | 67 BLINK_EXPORT void completeWithError(); |
| 68 |
| 69 // Note that WebString is NOT safe to pass across threads. |
| 70 // |
| 71 // Error details are intended to be displayed to developers for debugging. |
| 72 // They MUST NEVER reveal any secret information such as bytes of the key |
| 73 // or plain text. An appropriate error would be something like: |
| 74 // "iv must be 16 bytes long". |
| 75 BLINK_EXPORT void completeWithError(const WebString&); |
| 76 |
67 // Note that WebArrayBuffer is NOT safe to create from another thread. | 77 // Note that WebArrayBuffer is NOT safe to create from another thread. |
68 BLINK_EXPORT void completeWithBuffer(const WebArrayBuffer&); | 78 BLINK_EXPORT void completeWithBuffer(const WebArrayBuffer&); |
69 // Makes a copy of the input data given as a pointer and byte length. | 79 // Makes a copy of the input data given as a pointer and byte length. |
70 BLINK_EXPORT void completeWithBuffer(const void*, unsigned); | 80 BLINK_EXPORT void completeWithBuffer(const void*, unsigned); |
71 BLINK_EXPORT void completeWithBoolean(bool); | 81 BLINK_EXPORT void completeWithBoolean(bool); |
72 BLINK_EXPORT void completeWithKey(const WebCryptoKey&); | 82 BLINK_EXPORT void completeWithKey(const WebCryptoKey&); |
73 BLINK_EXPORT void completeWithKeyPair(const WebCryptoKey& publicKey, const W
ebCryptoKey& privateKey); | 83 BLINK_EXPORT void completeWithKeyPair(const WebCryptoKey& publicKey, const W
ebCryptoKey& privateKey); |
74 | 84 |
75 #if BLINK_IMPLEMENTATION | 85 #if BLINK_IMPLEMENTATION |
76 explicit WebCryptoResult(const WTF::PassRefPtr<WebCore::CryptoResult>&); | 86 explicit WebCryptoResult(const WTF::PassRefPtr<WebCore::CryptoResult>&); |
77 #endif | 87 #endif |
78 | 88 |
79 private: | 89 private: |
80 BLINK_EXPORT void reset(); | 90 BLINK_EXPORT void reset(); |
81 BLINK_EXPORT void assign(const WebCryptoResult&); | 91 BLINK_EXPORT void assign(const WebCryptoResult&); |
82 | 92 |
83 WebPrivatePtr<WebCore::CryptoResult> m_impl; | 93 WebPrivatePtr<WebCore::CryptoResult> m_impl; |
84 }; | 94 }; |
85 | 95 |
86 class WebCrypto { | 96 class WebCrypto { |
87 public: | 97 public: |
88 // WebCrypto is the interface for starting one-shot cryptographic operations
. | 98 // WebCrypto is the interface for starting one-shot cryptographic |
| 99 // operations. |
89 // | 100 // |
90 // ----------------------- | 101 // ----------------------- |
91 // Completing the request | 102 // Completing the request |
92 // ----------------------- | 103 // ----------------------- |
93 // | 104 // |
94 // Implementations signal completion by calling one of the methods on | 105 // Implementations signal completion by calling one of the methods on |
95 // "result". Only a single result/error should be set for the request. | 106 // "result". Only a single result/error should be set for the request. |
96 // Different operations expect different result types based on the | 107 // Different operations expect different result types based on the |
97 // algorithm parameters; see the Web Crypto standard for details. | 108 // algorithm parameters; see the Web Crypto standard for details. |
98 // | 109 // |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
167 // It is possible that unwrappedKeyAlgorithm.isNull() | 178 // It is possible that unwrappedKeyAlgorithm.isNull() |
168 virtual void unwrapKey(WebCryptoKeyFormat, const unsigned char* wrappedKey,
unsigned wrappedKeySize, const WebCryptoKey&, const WebCryptoAlgorithm& unwrapAl
gorithm, const WebCryptoAlgorithm& unwrappedKeyAlgorithm, bool extractable, WebC
ryptoKeyUsageMask, WebCryptoResult result) { result.completeWithError(); } | 179 virtual void unwrapKey(WebCryptoKeyFormat, const unsigned char* wrappedKey,
unsigned wrappedKeySize, const WebCryptoKey&, const WebCryptoAlgorithm& unwrapAl
gorithm, const WebCryptoAlgorithm& unwrappedKeyAlgorithm, bool extractable, WebC
ryptoKeyUsageMask, WebCryptoResult result) { result.completeWithError(); } |
169 | 180 |
170 protected: | 181 protected: |
171 virtual ~WebCrypto() { } | 182 virtual ~WebCrypto() { } |
172 }; | 183 }; |
173 | 184 |
174 } // namespace blink | 185 } // namespace blink |
175 | 186 |
176 #endif | 187 #endif |
OLD | NEW |