| Index: public/platform/WebCrypto.h
|
| diff --git a/public/platform/WebCrypto.h b/public/platform/WebCrypto.h
|
| index edf5ab52b88aaf35814603b9658172885a52da9c..427dedb6535cf37b81d347ab0d4b5697488bde0e 100644
|
| --- a/public/platform/WebCrypto.h
|
| +++ b/public/platform/WebCrypto.h
|
| @@ -35,6 +35,7 @@
|
| #include "WebCryptoAlgorithm.h"
|
| #include "WebCryptoKey.h"
|
| #include "WebPrivatePtr.h"
|
| +#include "WebString.h"
|
| #include "WebVector.h"
|
|
|
| namespace WebCore { class CryptoResult; }
|
| @@ -48,6 +49,20 @@ namespace blink {
|
| class WebArrayBuffer;
|
| class WebString;
|
|
|
| +// FIXME: Remove once Blink has rolled into Chromium.
|
| +#define WEBCRYPTO_HAS_ERROR_TYPE 1
|
| +
|
| +enum WebCryptoErrorType {
|
| + WebCryptoErrorTypeType,
|
| + WebCryptoErrorTypeNotSupported,
|
| + WebCryptoErrorTypeSyntax,
|
| + WebCryptoErrorTypeInvalidState,
|
| + WebCryptoErrorTypeInvalidAccess,
|
| + WebCryptoErrorTypeUnknown,
|
| + WebCryptoErrorTypeData,
|
| + WebCryptoErrorTypeOperation,
|
| +};
|
| +
|
| class WebCryptoResult {
|
| public:
|
| WebCryptoResult(const WebCryptoResult& o)
|
| @@ -66,15 +81,13 @@ public:
|
| return *this;
|
| }
|
|
|
| - BLINK_PLATFORM_EXPORT void completeWithError();
|
| -
|
| // Note that WebString is NOT safe to pass across threads.
|
| //
|
| - // Error details are intended to be displayed to developers for debugging.
|
| - // They MUST NEVER reveal any secret information such as bytes of the key
|
| - // or plain text. An appropriate error would be something like:
|
| + // Error details are surfaced in an exception, and MUST NEVER reveal any
|
| + // secret information such as bytes of the key or plain text. An
|
| + // appropriate error would be something like:
|
| // "iv must be 16 bytes long".
|
| - BLINK_PLATFORM_EXPORT void completeWithError(const WebString&);
|
| + BLINK_PLATFORM_EXPORT void completeWithError(WebCryptoErrorType, const WebString&);
|
|
|
| // Note that WebArrayBuffer is NOT safe to create from another thread.
|
| BLINK_PLATFORM_EXPORT void completeWithBuffer(const WebArrayBuffer&);
|
| @@ -188,16 +201,16 @@ public:
|
| // * The key usages permit the operation being requested.
|
| // * The key's algorithm matches that of the requested operation.
|
| //
|
| - virtual void encrypt(const WebCryptoAlgorithm&, const WebCryptoKey&, const unsigned char* data, unsigned dataSize, WebCryptoResult result) { result.completeWithError(); }
|
| - virtual void decrypt(const WebCryptoAlgorithm&, const WebCryptoKey&, const unsigned char* data, unsigned dataSize, WebCryptoResult result) { result.completeWithError(); }
|
| - virtual void sign(const WebCryptoAlgorithm&, const WebCryptoKey&, const unsigned char* data, unsigned dataSize, WebCryptoResult result) { result.completeWithError(); }
|
| - virtual void verifySignature(const WebCryptoAlgorithm&, const WebCryptoKey&, const unsigned char* signature, unsigned signatureSize, const unsigned char* data, unsigned dataSize, WebCryptoResult result) { result.completeWithError(); }
|
| - virtual void digest(const WebCryptoAlgorithm&, const unsigned char* data, unsigned dataSize, WebCryptoResult result) { result.completeWithError(); }
|
| - virtual void generateKey(const WebCryptoAlgorithm&, bool extractable, WebCryptoKeyUsageMask, WebCryptoResult result) { result.completeWithError(); }
|
| - virtual void importKey(WebCryptoKeyFormat, const unsigned char* keyData, unsigned keyDataSize, const WebCryptoAlgorithm&, bool extractable, WebCryptoKeyUsageMask, WebCryptoResult result) { result.completeWithError(); }
|
| - virtual void exportKey(WebCryptoKeyFormat, const WebCryptoKey&, WebCryptoResult result) { result.completeWithError(); }
|
| - virtual void wrapKey(WebCryptoKeyFormat, const WebCryptoKey& key, const WebCryptoKey& wrappingKey, const WebCryptoAlgorithm&, WebCryptoResult result) { result.completeWithError(); }
|
| - virtual void unwrapKey(WebCryptoKeyFormat, const unsigned char* wrappedKey, unsigned wrappedKeySize, const WebCryptoKey&, const WebCryptoAlgorithm& unwrapAlgorithm, const WebCryptoAlgorithm& unwrappedKeyAlgorithm, bool extractable, WebCryptoKeyUsageMask, WebCryptoResult result) { result.completeWithError(); }
|
| + virtual void encrypt(const WebCryptoAlgorithm&, const WebCryptoKey&, const unsigned char* data, unsigned dataSize, WebCryptoResult result) { result.completeWithError(WebCryptoErrorTypeNotSupported, ""); }
|
| + virtual void decrypt(const WebCryptoAlgorithm&, const WebCryptoKey&, const unsigned char* data, unsigned dataSize, WebCryptoResult result) { result.completeWithError(WebCryptoErrorTypeNotSupported, ""); }
|
| + virtual void sign(const WebCryptoAlgorithm&, const WebCryptoKey&, const unsigned char* data, unsigned dataSize, WebCryptoResult result) { result.completeWithError(WebCryptoErrorTypeNotSupported, ""); }
|
| + virtual void verifySignature(const WebCryptoAlgorithm&, const WebCryptoKey&, const unsigned char* signature, unsigned signatureSize, const unsigned char* data, unsigned dataSize, WebCryptoResult result) { result.completeWithError(WebCryptoErrorTypeNotSupported, ""); }
|
| + virtual void digest(const WebCryptoAlgorithm&, const unsigned char* data, unsigned dataSize, WebCryptoResult result) { result.completeWithError(WebCryptoErrorTypeNotSupported, ""); }
|
| + virtual void generateKey(const WebCryptoAlgorithm&, bool extractable, WebCryptoKeyUsageMask, WebCryptoResult result) { result.completeWithError(WebCryptoErrorTypeNotSupported, ""); }
|
| + virtual void importKey(WebCryptoKeyFormat, const unsigned char* keyData, unsigned keyDataSize, const WebCryptoAlgorithm&, bool extractable, WebCryptoKeyUsageMask, WebCryptoResult result) { result.completeWithError(WebCryptoErrorTypeNotSupported, ""); }
|
| + virtual void exportKey(WebCryptoKeyFormat, const WebCryptoKey&, WebCryptoResult result) { result.completeWithError(WebCryptoErrorTypeNotSupported, ""); }
|
| + virtual void wrapKey(WebCryptoKeyFormat, const WebCryptoKey& key, const WebCryptoKey& wrappingKey, const WebCryptoAlgorithm&, WebCryptoResult result) { result.completeWithError(WebCryptoErrorTypeNotSupported, ""); }
|
| + virtual void unwrapKey(WebCryptoKeyFormat, const unsigned char* wrappedKey, unsigned wrappedKeySize, const WebCryptoKey&, const WebCryptoAlgorithm& unwrapAlgorithm, const WebCryptoAlgorithm& unwrappedKeyAlgorithm, bool extractable, WebCryptoKeyUsageMask, WebCryptoResult result) { result.completeWithError(WebCryptoErrorTypeNotSupported, ""); }
|
|
|
| // This is the exception to the "Completing the request" guarantees
|
| // outlined above. This is useful for Blink internal crypto and is not part
|
|
|