1. 13 Dec, 2013 1 commit
    • ap@apple.com's avatar
      WebCrypto Key.usages should be ordered alphabetically · 20890d48
      ap@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=125696
      
      Reviewed by Darin Adler.
      
      Source/WebCore: 
      
      * crypto/CryptoKey.cpp: (WebCore::CryptoKey::usages): Do it.
      
      LayoutTests: 
      
      * crypto/subtle/aes-cbc-192-encrypt-decrypt-expected.txt:
      * crypto/subtle/aes-cbc-192-encrypt-decrypt.html:
      * crypto/subtle/aes-cbc-256-encrypt-decrypt-expected.txt:
      * crypto/subtle/aes-cbc-256-encrypt-decrypt.html:
      * crypto/subtle/aes-cbc-encrypt-decrypt-expected.txt:
      * crypto/subtle/aes-cbc-encrypt-decrypt-with-padding-expected.txt:
      * crypto/subtle/aes-cbc-encrypt-decrypt-with-padding.html:
      * crypto/subtle/aes-cbc-encrypt-decrypt.html:
      * crypto/subtle/aes-cbc-generate-key-expected.txt:
      * crypto/subtle/aes-cbc-generate-key.html:
      * crypto/subtle/aes-cbc-invalid-length-expected.txt:
      * crypto/subtle/aes-cbc-invalid-length.html:
      * crypto/subtle/aes-kw-wrap-unwrap-aes-expected.txt:
      * crypto/subtle/aes-kw-wrap-unwrap-aes.html:
      * crypto/subtle/aes-postMessage-expected.txt:
      * crypto/subtle/aes-postMessage.html:
      * crypto/subtle/hmac-postMessage-expected.txt:
      * crypto/subtle/hmac-postMessage.html:
      * crypto/subtle/jwk-import-use-values-expected.txt:
      * crypto/subtle/jwk-import-use-values.html:
      * crypto/subtle/postMessage-worker-expected.txt:
      * crypto/subtle/postMessage-worker.html:
      * crypto/subtle/resources/postMessage-worker.js:
      (onmessage):
      * crypto/subtle/rsa-oaep-key-manipulation-expected.txt:
      * crypto/subtle/rsa-oaep-key-manipulation.html:
      * crypto/subtle/rsa-oaep-wrap-unwrap-aes-expected.txt:
      * crypto/subtle/rsa-oaep-wrap-unwrap-aes.html:
      * crypto/subtle/rsaes-pkcs1-v1_5-wrap-unwrap-aes-expected.txt:
      * crypto/subtle/rsaes-pkcs1-v1_5-wrap-unwrap-aes.html:
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@160547 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      20890d48
  2. 12 Dec, 2013 1 commit
    • ap@apple.com's avatar
      Make algorithm.name return registered name, not normalized one · 8199d8e9
      ap@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=125641
      
      Reviewed by Anders Carlsson.
      
      Source/WebCore: 
      
      Currently, WebCrypto editor's draft stipulates that algorithm name is lowercased
      as part of normalization.
      
      But it makes little sense to register algorithms as mixed (mostly upper) case, yet
      return the name lowercased. Other implementations don't bother respecting this,
      and signs are that the spec will change.
      
      I'd like to match other implementations here, because sticking to the spec only
      makes us fail 3rd party test suites for no good reason.
      
      Updated many existing tests.
      
      * crypto/CryptoAlgorithmRegistry.cpp:
      (WebCore::CryptoAlgorithmRegistry::getIdentifierForName):
      (WebCore::CryptoAlgorithmRegistry::registerAlgorithm):
      * crypto/CryptoAlgorithmRegistry.h:
      * crypto/algorithms/CryptoAlgorithmAES_CBC.cpp:
      * crypto/algorithms/CryptoAlgorithmAES_KW.cpp:
      * crypto/algorithms/CryptoAlgorithmHMAC.cpp:
      * crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp:
      * crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:
      * crypto/algorithms/CryptoAlgorithmSHA1.cpp:
      * crypto/algorithms/CryptoAlgorithmSHA224.cpp:
      * crypto/algorithms/CryptoAlgorithmSHA256.cpp:
      * crypto/algorithms/CryptoAlgorithmSHA384.cpp:
      * crypto/algorithms/CryptoAlgorithmSHA512.cpp:
      
      LayoutTests: 
      
      * crypto/subtle/aes-cbc-192-encrypt-decrypt-expected.txt:
      * crypto/subtle/aes-cbc-192-encrypt-decrypt.html:
      * crypto/subtle/aes-cbc-256-encrypt-decrypt-expected.txt:
      * crypto/subtle/aes-cbc-256-encrypt-decrypt.html:
      * crypto/subtle/aes-cbc-encrypt-decrypt-expected.txt:
      * crypto/subtle/aes-cbc-encrypt-decrypt-with-padding-expected.txt:
      * crypto/subtle/aes-cbc-encrypt-decrypt-with-padding.html:
      * crypto/subtle/aes-cbc-encrypt-decrypt.html:
      * crypto/subtle/aes-cbc-generate-key-expected.txt:
      * crypto/subtle/aes-cbc-generate-key.html:
      * crypto/subtle/aes-cbc-import-jwk-expected.txt:
      * crypto/subtle/aes-cbc-import-jwk.html:
      * crypto/subtle/aes-cbc-invalid-length-expected.txt:
      * crypto/subtle/aes-cbc-invalid-length.html:
      * crypto/subtle/aes-cbc-unwrap-failure-expected.txt:
      * crypto/subtle/aes-cbc-unwrap-failure.html:
      * crypto/subtle/aes-cbc-unwrap-rsa-expected.txt:
      * crypto/subtle/aes-cbc-unwrap-rsa.html:
      * crypto/subtle/aes-cbc-wrap-rsa-expected.txt:
      * crypto/subtle/aes-cbc-wrap-rsa-non-extractable-expected.txt:
      * crypto/subtle/aes-cbc-wrap-rsa-non-extractable.html:
      * crypto/subtle/aes-cbc-wrap-rsa.html:
      * crypto/subtle/aes-kw-key-manipulation-expected.txt:
      * crypto/subtle/aes-kw-key-manipulation.html:
      * crypto/subtle/aes-kw-wrap-unwrap-aes-expected.txt:
      * crypto/subtle/aes-kw-wrap-unwrap-aes.html:
      * crypto/subtle/aes-postMessage-expected.txt:
      * crypto/subtle/aes-postMessage.html:
      * crypto/subtle/hmac-generate-key-expected.txt:
      * crypto/subtle/hmac-generate-key.html:
      * crypto/subtle/hmac-import-jwk-expected.txt:
      * crypto/subtle/hmac-import-jwk.html:
      * crypto/subtle/hmac-postMessage-expected.txt:
      * crypto/subtle/hmac-postMessage.html:
      * crypto/subtle/hmac-sign-verify-empty-key-expected.txt:
      * crypto/subtle/hmac-sign-verify-empty-key.html:
      * crypto/subtle/hmac-sign-verify-expected.txt:
      * crypto/subtle/hmac-sign-verify.html:
      * crypto/subtle/postMessage-worker-expected.txt:
      * crypto/subtle/postMessage-worker.html:
      * crypto/subtle/resources/postMessage-worker.js:
      * crypto/subtle/rsa-oaep-key-manipulation-expected.txt:
      * crypto/subtle/rsa-oaep-key-manipulation.html:
      * crypto/subtle/rsa-oaep-wrap-unwrap-aes-expected.txt:
      * crypto/subtle/rsa-oaep-wrap-unwrap-aes.html:
      * crypto/subtle/rsa-postMessage-expected.txt:
      * crypto/subtle/rsa-postMessage.html:
      * crypto/subtle/rsassa-pkcs1-v1_5-generate-key-expected.txt:
      * crypto/subtle/rsassa-pkcs1-v1_5-generate-key.html:
      * crypto/subtle/rsassa-pkcs1-v1_5-import-jwk-expected.txt:
      * crypto/subtle/rsassa-pkcs1-v1_5-import-jwk.html:
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@160491 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      8199d8e9
  3. 11 Dec, 2013 1 commit
    • ap@apple.com's avatar
      WebCrypto keys should support structured clone · 351ac9ca
      ap@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=125590
      
      Reviewed by Oliver Hunt.
      
      Source/WebCore: 
      
      Tests: crypto/subtle/aes-postMessage.html
             crypto/subtle/hmac-postMessage.html
             crypto/subtle/postMessage-worker.html
             crypto/subtle/rsa-postMessage.html
      
      * crypto/CryptoAlgorithmIdentifier.h:
      (WebCore::CryptoAlgorithmIdentifier):
      * bindings/js/JSCryptoAlgorithmDictionary.cpp:
      (WebCore::JSCryptoAlgorithmDictionary::createParametersForEncrypt):
      (WebCore::JSCryptoAlgorithmDictionary::createParametersForDecrypt):
      (WebCore::JSCryptoAlgorithmDictionary::createParametersForSign):
      (WebCore::JSCryptoAlgorithmDictionary::createParametersForVerify):
      (WebCore::JSCryptoAlgorithmDictionary::createParametersForDigest):
      (WebCore::JSCryptoAlgorithmDictionary::createParametersForGenerateKey):
      (WebCore::JSCryptoAlgorithmDictionary::createParametersForDeriveKey):
      (WebCore::JSCryptoAlgorithmDictionary::createParametersForDeriveBits):
      (WebCore::JSCryptoAlgorithmDictionary::createParametersForImportKey):
      (WebCore::JSCryptoAlgorithmDictionary::createParametersForExportKey):
      AES_KW was added to WebCrypto spec editor's draft yesterday night. Now that we're
      adding a matching enum for structired clone serialization, it's as good a time as
      any to update the order of values to match.
      
      * bindings/js/SerializedScriptValue.cpp:
      (WebCore::countUsages):
      (WebCore::CloneSerializer::dumpIfTerminal):
      (WebCore::CloneSerializer::write):
      (WebCore::CloneDeserializer::read):
      (WebCore::CloneDeserializer::readHMACKey):
      (WebCore::CloneDeserializer::readAESKey):
      (WebCore::CloneDeserializer::readRSAKey):
      (WebCore::CloneDeserializer::readCryptoKey):
      (WebCore::CloneDeserializer::readTerminal):
      Added serialization/deserialization for CryptoKey. This doesn't update version
      number, because we don't currently store structured clones in persistent storage -
      and even if we did, we wouldn't want to invalidate everything users already stored.
      
      * crypto/CryptoAlgorithmRegistry.cpp:
      (WebCore::CryptoAlgorithmRegistry::shared):
      (WebCore::registryMutex):
      (WebCore::CryptoAlgorithmRegistry::getIdentifierForName):
      (WebCore::CryptoAlgorithmRegistry::nameForIdentifier):
      (WebCore::CryptoAlgorithmRegistry::create):
      (WebCore::CryptoAlgorithmRegistry::registerAlgorithm):
      * crypto/CryptoKey.idl:
      With structured clone, it is now possible to send a Key to a web worker. That's
      of no practical use because the crypto API is not exposed in workers, but we
      shouldn't crash anyway.
      
      * crypto/keys/CryptoKeyAES.cpp:
      (WebCore::CryptoKeyAES::CryptoKeyAES):
      (WebCore::CryptoKeyAES::isValidAESAlgorithm):
      * crypto/keys/CryptoKeyAES.h:
      Exposed isValidAESAlgorithm, so that a caller could know whether the constructor
      will assert.
      
      * CMakeLists.txt:
      * GNUmakefile.am:
      * WebCore.vcxproj/WebCore.vcxproj.filters:
      * WebCore.vcxproj/WebCoreCommon.props:
      Added crypto/keys to search paths to avoid build breakage.
      
      LayoutTests: 
      
      * crypto/subtle/aes-postMessage-expected.txt: Added.
      * crypto/subtle/aes-postMessage.html: Added.
      * crypto/subtle/hmac-postMessage-expected.txt: Added.
      * crypto/subtle/hmac-postMessage.html: Added.
      * crypto/subtle/postMessage-worker-expected.txt: Added.
      * crypto/subtle/postMessage-worker.html: Added.
      * crypto/subtle/rsa-postMessage-expected.txt: Added.
      * crypto/subtle/rsa-postMessage.html: Added.
      * crypto/subtle/resources/postMessage-worker.js: Added.
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@160455 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      351ac9ca