[Part 2 of 2] Add support for PKCS8 format while doing SubtleCrypto.importKey/exportKey
https://bugs.webkit.org/show_bug.cgi?id=129978
<rdar://problem/21799829>

Reviewed by Brent Fulgham.

LayoutTests/imported/w3c:

* WebCryptoAPI/encrypt_decrypt/test_rsa_oaep-expected.txt:

Source/WebCore:

This is part 2 of Bug 129978. In this patch, it adds the PKCS8 format support for
SubtleCrypto.importKey/exportKey. Currently support algorithms are RSAES-PKCS1-v1_5,
RSASSA-PKCS1-v1_5 and RSA-OAEP.

Tests: crypto/subtle/rsa-import-jwk-key-export-pkcs8-key.html
       crypto/subtle/rsa-import-pkcs8-key-export-jwk-key.html
       crypto/subtle/rsa-import-pkcs8-key-export-pkcs8-key.html
       crypto/subtle/rsa-oaep-generate-export-key-pkcs8.html
       crypto/subtle/rsa-oaep-import-pkcs8-key.html
       crypto/subtle/rsaes-pkcs1-v1_5-generate-export-key-pkcs8.html
       crypto/subtle/rsaes-pkcs1-v1_5-import-pkcs8-key.html
       crypto/subtle/rsassa-pkcs1-v1_5-generate-export-key-pkcs8.html
       crypto/subtle/rsassa-pkcs1-v1_5-import-pkcs8-key.html
       crypto/workers/subtle/rsa-export-pkcs8-key.html
       crypto/workers/subtle/rsa-import-pkcs8-key.html

* bindings/js/JSSubtleCryptoCustom.cpp:
(WebCore::toKeyData):
* crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:
(WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::importKey):
(WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::exportKey):
* crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp:
(WebCore::CryptoAlgorithmRSASSA_PKCS1_v1_5::importKey):
(WebCore::CryptoAlgorithmRSASSA_PKCS1_v1_5::exportKey):
* crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:
(WebCore::CryptoAlgorithmRSA_OAEP::importKey):
(WebCore::CryptoAlgorithmRSA_OAEP::exportKey):
* crypto/gnutls/CryptoKeyRSAGnuTLS.cpp:
(WebCore::CryptoKeyRSA::importPkcs8):
(WebCore::CryptoKeyRSA::exportPkcs8):
* crypto/keys/CryptoKeyRSA.h:
* crypto/mac/CryptoKeyRSAMac.cpp:
(WebCore::CryptoKeyRSA::importSpki):
(WebCore::CryptoKeyRSA::importPkcs8):
(WebCore::CryptoKeyRSA::exportPkcs8):

LayoutTests:

* crypto/subtle/import-key-malformed-parameters-expected.txt:
* crypto/subtle/import-key-malformed-parameters.html:
* crypto/subtle/rsa-export-key-malformed-parameters-expected.txt:
* crypto/subtle/rsa-export-key-malformed-parameters.html:
* crypto/subtle/rsa-import-jwk-key-export-pkcs8-key-expected.txt: Added.
* crypto/subtle/rsa-import-jwk-key-export-pkcs8-key.html: Added.
* crypto/subtle/rsa-import-jwk-key-export-spki-key-expected.txt:
* crypto/subtle/rsa-import-jwk-key-export-spki-key.html:
* crypto/subtle/rsa-import-key-malformed-parameters-expected.txt:
* crypto/subtle/rsa-import-key-malformed-parameters.html:
* crypto/subtle/rsa-import-pkcs8-key-export-jwk-key-expected.txt: Added.
* crypto/subtle/rsa-import-pkcs8-key-export-jwk-key.html: Added.
* crypto/subtle/rsa-import-pkcs8-key-export-pkcs8-key-expected.txt: Added.
* crypto/subtle/rsa-import-pkcs8-key-export-pkcs8-key.html: Added.
* crypto/subtle/rsa-oaep-generate-export-key-pkcs8-expected.txt: Added.
* crypto/subtle/rsa-oaep-generate-export-key-pkcs8.html: Added.
* crypto/subtle/rsa-oaep-import-pkcs8-key-expected.txt: Added.
* crypto/subtle/rsa-oaep-import-pkcs8-key.html: Added.
* crypto/subtle/rsaes-pkcs1-v1_5-generate-export-key-pkcs8-expected.txt: Added.
* crypto/subtle/rsaes-pkcs1-v1_5-generate-export-key-pkcs8.html: Added.
* crypto/subtle/rsaes-pkcs1-v1_5-import-pkcs8-key-expected.txt: Added.
* crypto/subtle/rsaes-pkcs1-v1_5-import-pkcs8-key.html: Added.
* crypto/subtle/rsassa-pkcs1-v1_5-generate-export-key-pkcs8-expected.txt: Added.
* crypto/subtle/rsassa-pkcs1-v1_5-generate-export-key-pkcs8.html: Added.
* crypto/subtle/rsassa-pkcs1-v1_5-import-pkcs8-key-expected.txt: Added.
* crypto/subtle/rsassa-pkcs1-v1_5-import-pkcs8-key.html: Added.
* crypto/workers/subtle/resources/rsa-export-pkcs8-key.js: Added.
* crypto/workers/subtle/resources/rsa-import-pkcs8-key.js: Added.
* crypto/workers/subtle/rsa-export-pkcs8-key-expected.txt: Added.
* crypto/workers/subtle/rsa-export-pkcs8-key.html: Added.
* crypto/workers/subtle/rsa-import-pkcs8-key-expected.txt: Added.
* crypto/workers/subtle/rsa-import-pkcs8-key.html: Added.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@209633 268f45cc-cd09-0410-ab3c-d52691b4dbfc
43 files changed