| Index: content/renderer/webcrypto_impl.cc | 
| diff --git a/content/renderer/webcrypto_impl.cc b/content/renderer/webcrypto_impl.cc | 
| index ad37457ece6a474927f71c578d8daa5c864a89d5..e49b1d8d2004af93e6c141641aba5e8e54ee699e 100644 | 
| --- a/content/renderer/webcrypto_impl.cc | 
| +++ b/content/renderer/webcrypto_impl.cc | 
| @@ -4,7 +4,10 @@ | 
|  | 
| #include "content/renderer/webcrypto_impl.h" | 
|  | 
| +#include "base/memory/scoped_ptr.h" | 
| #include "third_party/WebKit/public/platform/WebArrayBuffer.h" | 
| +#include "third_party/WebKit/public/platform/WebCryptoAlgorithm.h" | 
| +#include "third_party/WebKit/public/platform/WebCryptoKey.h" | 
|  | 
| namespace content { | 
|  | 
| @@ -14,7 +17,50 @@ void WebCryptoImpl::digest( | 
| size_t data_size, | 
| WebKit::WebCryptoResult result) { | 
| WebKit::WebArrayBuffer buffer; | 
| -  if (!digestInternal(algorithm, data, data_size, &buffer)) { | 
| +  if (!DigestInternal(algorithm, data, data_size, &buffer)) { | 
| +    result.completeWithError(); | 
| +  } else { | 
| +    result.completeWithBuffer(buffer); | 
| +  } | 
| +} | 
| + | 
| +void WebCryptoImpl::importKey( | 
| +    WebKit::WebCryptoKeyFormat format, | 
| +    const unsigned char* key_data, | 
| +    size_t key_data_size, | 
| +    const WebKit::WebCryptoAlgorithm& algorithm, | 
| +    bool extractable, | 
| +    WebKit::WebCryptoKeyUsageMask usage_mask, | 
| +    WebKit::WebCryptoResult result) { | 
| +  WebKit::WebCryptoKeyType type; | 
| +  scoped_ptr<WebKit::WebCryptoKeyHandle> handle; | 
| + | 
| +  if (!ImportKeyInternal(format, | 
| +                         key_data, | 
| +                         key_data_size, | 
| +                         algorithm, | 
| +                         usage_mask, | 
| +                         &handle, | 
| +                         &type)) { | 
| +    result.completeWithError(); | 
| +    return; | 
| +  } | 
| + | 
| +  WebKit::WebCryptoKey key( | 
| +      WebKit::WebCryptoKey::create( | 
| +          handle.release(), type, extractable, algorithm, usage_mask)); | 
| + | 
| +  result.completeWithKey(key); | 
| +} | 
| + | 
| +void WebCryptoImpl::sign( | 
| +    const WebKit::WebCryptoAlgorithm& algorithm, | 
| +    const WebKit::WebCryptoKey& key, | 
| +    const unsigned char* data, | 
| +    size_t data_size, | 
| +    WebKit::WebCryptoResult result) { | 
| +  WebKit::WebArrayBuffer buffer; | 
| +  if (!SignInternal(algorithm, key.handle(), data, data_size, &buffer)) { | 
| result.completeWithError(); | 
| } else { | 
| result.completeWithBuffer(buffer); | 
|  |