<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[158494] trunk</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/158494">158494</a></dd>
<dt>Author</dt> <dd>ap@apple.com</dd>
<dt>Date</dt> <dd>2013-11-02 11:19:35 -0700 (Sat, 02 Nov 2013)</dd>
</dl>

<h3>Log Message</h3>
<pre>Implement remaining SHA variations for WebCrypto
https://bugs.webkit.org/show_bug.cgi?id=123659

Reviewed by Anders Carlsson.

Source/WebCore:

Tests: crypto/subtle/sha-224.html
       crypto/subtle/sha-256.html
       crypto/subtle/sha-384.html
       crypto/subtle/sha-512.html

* WebCore.xcodeproj/project.pbxproj:
* crypto/algorithms/CryptoAlgorithmSHA224.cpp: Added.
(WebCore::CryptoAlgorithmSHA224::CryptoAlgorithmSHA224):
(WebCore::CryptoAlgorithmSHA224::~CryptoAlgorithmSHA224):
(WebCore::CryptoAlgorithmSHA224::create):
(WebCore::CryptoAlgorithmSHA224::identifier):
* crypto/algorithms/CryptoAlgorithmSHA224.h: Added.
* crypto/algorithms/CryptoAlgorithmSHA256.cpp: Added.
(WebCore::CryptoAlgorithmSHA256::CryptoAlgorithmSHA256):
(WebCore::CryptoAlgorithmSHA256::~CryptoAlgorithmSHA256):
(WebCore::CryptoAlgorithmSHA256::create):
(WebCore::CryptoAlgorithmSHA256::identifier):
* crypto/algorithms/CryptoAlgorithmSHA256.h: Added.
* crypto/algorithms/CryptoAlgorithmSHA384.cpp: Added.
(WebCore::CryptoAlgorithmSHA384::CryptoAlgorithmSHA384):
(WebCore::CryptoAlgorithmSHA384::~CryptoAlgorithmSHA384):
(WebCore::CryptoAlgorithmSHA384::create):
(WebCore::CryptoAlgorithmSHA384::identifier):
* crypto/algorithms/CryptoAlgorithmSHA384.h: Added.
* crypto/algorithms/CryptoAlgorithmSHA512.cpp: Added.
(WebCore::CryptoAlgorithmSHA512::CryptoAlgorithmSHA512):
(WebCore::CryptoAlgorithmSHA512::~CryptoAlgorithmSHA512):
(WebCore::CryptoAlgorithmSHA512::create):
(WebCore::CryptoAlgorithmSHA512::identifier):
* crypto/algorithms/CryptoAlgorithmSHA512.h: Added.
* crypto/mac/CryptoAlgorithmRegistryMac.cpp:
(WebCore::CryptoAlgorithmRegistry::platformRegisterAlgorithms):
* crypto/mac/CryptoAlgorithmSHA224Mac.cpp: Added.
(WebCore::CryptoAlgorithmSHA224::digest):
* crypto/mac/CryptoAlgorithmSHA256Mac.cpp: Added.
(WebCore::CryptoAlgorithmSHA256::digest):
* crypto/mac/CryptoAlgorithmSHA384Mac.cpp: Added.
(WebCore::CryptoAlgorithmSHA384::digest):
* crypto/mac/CryptoAlgorithmSHA512Mac.cpp: Added.
(WebCore::CryptoAlgorithmSHA512::digest):

LayoutTests:

* crypto/subtle/sha-224-expected.txt: Added.
* crypto/subtle/sha-224.html: Added.
* crypto/subtle/sha-256-expected.txt: Added.
* crypto/subtle/sha-256.html: Added.
* crypto/subtle/sha-384-expected.txt: Added.
* crypto/subtle/sha-384.html: Added.
* crypto/subtle/sha-512-expected.txt: Added.
* crypto/subtle/sha-512.html: Added.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreWebCorexcodeprojprojectpbxproj">trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebCorecryptomacCryptoAlgorithmRegistryMaccpp">trunk/Source/WebCore/crypto/mac/CryptoAlgorithmRegistryMac.cpp</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestscryptosubtlesha224expectedtxt">trunk/LayoutTests/crypto/subtle/sha-224-expected.txt</a></li>
<li><a href="#trunkLayoutTestscryptosubtlesha224html">trunk/LayoutTests/crypto/subtle/sha-224.html</a></li>
<li><a href="#trunkLayoutTestscryptosubtlesha256expectedtxt">trunk/LayoutTests/crypto/subtle/sha-256-expected.txt</a></li>
<li><a href="#trunkLayoutTestscryptosubtlesha256html">trunk/LayoutTests/crypto/subtle/sha-256.html</a></li>
<li><a href="#trunkLayoutTestscryptosubtlesha384expectedtxt">trunk/LayoutTests/crypto/subtle/sha-384-expected.txt</a></li>
<li><a href="#trunkLayoutTestscryptosubtlesha384html">trunk/LayoutTests/crypto/subtle/sha-384.html</a></li>
<li><a href="#trunkLayoutTestscryptosubtlesha512expectedtxt">trunk/LayoutTests/crypto/subtle/sha-512-expected.txt</a></li>
<li><a href="#trunkLayoutTestscryptosubtlesha512html">trunk/LayoutTests/crypto/subtle/sha-512.html</a></li>
<li><a href="#trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmSHA224cpp">trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA224.cpp</a></li>
<li><a href="#trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmSHA224h">trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA224.h</a></li>
<li><a href="#trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmSHA256cpp">trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA256.cpp</a></li>
<li><a href="#trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmSHA256h">trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA256.h</a></li>
<li><a href="#trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmSHA384cpp">trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA384.cpp</a></li>
<li><a href="#trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmSHA384h">trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA384.h</a></li>
<li><a href="#trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmSHA512cpp">trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA512.cpp</a></li>
<li><a href="#trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmSHA512h">trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA512.h</a></li>
<li><a href="#trunkSourceWebCorecryptomacCryptoAlgorithmSHA224Maccpp">trunk/Source/WebCore/crypto/mac/CryptoAlgorithmSHA224Mac.cpp</a></li>
<li><a href="#trunkSourceWebCorecryptomacCryptoAlgorithmSHA256Maccpp">trunk/Source/WebCore/crypto/mac/CryptoAlgorithmSHA256Mac.cpp</a></li>
<li><a href="#trunkSourceWebCorecryptomacCryptoAlgorithmSHA384Maccpp">trunk/Source/WebCore/crypto/mac/CryptoAlgorithmSHA384Mac.cpp</a></li>
<li><a href="#trunkSourceWebCorecryptomacCryptoAlgorithmSHA512Maccpp">trunk/Source/WebCore/crypto/mac/CryptoAlgorithmSHA512Mac.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (158493 => 158494)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2013-11-02 17:54:17 UTC (rev 158493)
+++ trunk/LayoutTests/ChangeLog        2013-11-02 18:19:35 UTC (rev 158494)
</span><span class="lines">@@ -1,3 +1,19 @@
</span><ins>+2013-11-02  Alexey Proskuryakov  &lt;ap@apple.com&gt;
+
+        Implement remaining SHA variations for WebCrypto
+        https://bugs.webkit.org/show_bug.cgi?id=123659
+
+        Reviewed by Anders Carlsson.
+
+        * crypto/subtle/sha-224-expected.txt: Added.
+        * crypto/subtle/sha-224.html: Added.
+        * crypto/subtle/sha-256-expected.txt: Added.
+        * crypto/subtle/sha-256.html: Added.
+        * crypto/subtle/sha-384-expected.txt: Added.
+        * crypto/subtle/sha-384.html: Added.
+        * crypto/subtle/sha-512-expected.txt: Added.
+        * crypto/subtle/sha-512.html: Added.
+
</ins><span class="cx"> 2013-11-01  Alexey Proskuryakov  &lt;ap@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Add WebCrypto AES-CBC
</span></span></pre></div>
<a id="trunkLayoutTestscryptosubtlesha224expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/subtle/sha-224-expected.txt (0 => 158494)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/subtle/sha-224-expected.txt                                (rev 0)
+++ trunk/LayoutTests/crypto/subtle/sha-224-expected.txt        2013-11-02 18:19:35 UTC (rev 158494)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+Test crypto.subtle.digest.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+SHA224 of []
+    = [d1 4a 02 8c 2a 3a 2b c9 47 61 02 bb 28 82 34 c4 15 a2 b0 1f 82 8e a6 2a c5 b3 e4 2f]
+SHA224 of [0x0]
+    = [ff f9 29 2b 42 01 61 7b dc 4d 30 53 fc e0 27 34 16 6a 68 3d 7d 85 8a 7f 5f 59 b0 73]
+SHA224 of [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
+    = [76 7d 0c dc 11 07 9b a8 dc a2 76 df 5c 4b 85 50 7d e6 7d ce 47 ed a4 cd 91 96 d3 12]
+SHA224 of [new Uint8Array([0, 1, 2, 3, 4]), new Uint8Array(5, 6, 7, 8, 9, 10])]
+    = [76 7d 0c dc 11 07 9b a8 dc a2 76 df 5c 4b 85 50 7d e6 7d ce 47 ed a4 cd 91 96 d3 12]
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestscryptosubtlesha224html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/subtle/sha-224.html (0 => 158494)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/subtle/sha-224.html                                (rev 0)
+++ trunk/LayoutTests/crypto/subtle/sha-224.html        2013-11-02 18:19:35 UTC (rev 158494)
</span><span class="lines">@@ -0,0 +1,46 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;resources/common.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+
+&lt;script&gt;
+description(&quot;Test crypto.subtle.digest.&quot;);
+
+jsTestIsAsync = true;
+
+if (!window.subtle)
+    window.crypto.subtle = window.crypto.webkitSubtle;
+
+Promise.fulfill(null).then(function() {
+    debug(&quot;SHA224 of []&quot;);
+    return crypto.subtle.digest('sha-224', [new Uint8Array([])]);
+}).then(function(result) {
+    printAcceptedResult(result);
+
+    debug(&quot;SHA224 of [0x0]&quot;)
+    return crypto.subtle.digest({name: 'sha-224'}, [new Uint8Array([0])]);
+}).then(function(result) {
+    printAcceptedResult(result);
+
+    debug(&quot;SHA224 of [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]&quot;);
+    var data = new Uint8Array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
+    return crypto.subtle.digest({name: 'sha-224'}, [data]);
+}).then(function(result) {
+    printAcceptedResult(result);
+
+    debug(&quot;SHA224 of [new Uint8Array([0, 1, 2, 3, 4]), new Uint8Array(5, 6, 7, 8, 9, 10])]&quot;);
+    return crypto.subtle.digest({name: 'sha-224'}, [new Uint8Array([0, 1, 2, 3, 4]), new Uint8Array([5, 6, 7, 8, 9, 10])]);
+}).then(function(result) {
+    printAcceptedResult(result);
+    finishJSTest();
+});
+&lt;/script&gt;
+
+&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestscryptosubtlesha256expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/subtle/sha-256-expected.txt (0 => 158494)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/subtle/sha-256-expected.txt                                (rev 0)
+++ trunk/LayoutTests/crypto/subtle/sha-256-expected.txt        2013-11-02 18:19:35 UTC (rev 158494)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+Test crypto.subtle.digest.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+SHA256 of []
+    = [e3 b0 c4 42 98 fc 1c 14 9a fb f4 c8 99 6f b9 24 27 ae 41 e4 64 9b 93 4c a4 95 99 1b 78 52 b8 55]
+SHA256 of [0x0]
+    = [6e 34 0b 9c ff b3 7a 98 9c a5 44 e6 bb 78 0a 2c 78 90 1d 3f b3 37 38 76 85 11 a3 06 17 af a0 1d]
+SHA256 of [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
+    = [78 a6 27 31 03 d1 7c 39 a0 b6 12 6e 22 6c ec 70 e3 33 37 f4 bc 6a 38 06 74 01 b5 4a 33 e7 8e ad]
+SHA256 of [new Uint8Array([0, 1, 2, 3, 4]), new Uint8Array(5, 6, 7, 8, 9, 10])]
+    = [78 a6 27 31 03 d1 7c 39 a0 b6 12 6e 22 6c ec 70 e3 33 37 f4 bc 6a 38 06 74 01 b5 4a 33 e7 8e ad]
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestscryptosubtlesha256html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/subtle/sha-256.html (0 => 158494)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/subtle/sha-256.html                                (rev 0)
+++ trunk/LayoutTests/crypto/subtle/sha-256.html        2013-11-02 18:19:35 UTC (rev 158494)
</span><span class="lines">@@ -0,0 +1,46 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;resources/common.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+
+&lt;script&gt;
+description(&quot;Test crypto.subtle.digest.&quot;);
+
+jsTestIsAsync = true;
+
+if (!window.subtle)
+    window.crypto.subtle = window.crypto.webkitSubtle;
+
+Promise.fulfill(null).then(function() {
+    debug(&quot;SHA256 of []&quot;);
+    return crypto.subtle.digest('sha-256', [new Uint8Array([])]);
+}).then(function(result) {
+    printAcceptedResult(result);
+
+    debug(&quot;SHA256 of [0x0]&quot;)
+    return crypto.subtle.digest({name: 'sha-256'}, [new Uint8Array([0])]);
+}).then(function(result) {
+    printAcceptedResult(result);
+
+    debug(&quot;SHA256 of [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]&quot;);
+    var data = new Uint8Array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
+    return crypto.subtle.digest({name: 'sha-256'}, [data]);
+}).then(function(result) {
+    printAcceptedResult(result);
+
+    debug(&quot;SHA256 of [new Uint8Array([0, 1, 2, 3, 4]), new Uint8Array(5, 6, 7, 8, 9, 10])]&quot;);
+    return crypto.subtle.digest({name: 'sha-256'}, [new Uint8Array([0, 1, 2, 3, 4]), new Uint8Array([5, 6, 7, 8, 9, 10])]);
+}).then(function(result) {
+    printAcceptedResult(result);
+    finishJSTest();
+});
+&lt;/script&gt;
+
+&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestscryptosubtlesha384expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/subtle/sha-384-expected.txt (0 => 158494)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/subtle/sha-384-expected.txt                                (rev 0)
+++ trunk/LayoutTests/crypto/subtle/sha-384-expected.txt        2013-11-02 18:19:35 UTC (rev 158494)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+Test crypto.subtle.digest.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+SHA384 of []
+    = [38 b0 60 a7 51 ac 96 38 4c d9 32 7e b1 b1 e3 6a 21 fd b7 11 14 be 07 43 4c 0c c7 bf 63 f6 e1 da 27 4e de bf e7 6f 65 fb d5 1a d2 f1 48 98 b9 5b]
+SHA384 of [0x0]
+    = [be c0 21 b4 f3 68 e3 06 91 34 e0 12 c2 b4 30 70 83 d3 a9 bd d2 06 e2 4e 5f 0d 86 e1 3d 66 36 65 59 33 ec 2b 41 34 65 96 68 17 a9 c2 08 a1 17 17]
+SHA384 of [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
+    = [89 bf cf 56 9a e4 af 71 85 10 da 78 c6 74 14 10 9f 57 39 bb 5c 40 d5 1c 9c 8c 50 e2 b2 ce e8 6f 2f 80 c8 b9 d6 8f 7c 01 20 1a 07 14 57 2f e6 02]
+SHA384 of [new Uint8Array([0, 1, 2, 3, 4]), new Uint8Array(5, 6, 7, 8, 9, 10])]
+    = [89 bf cf 56 9a e4 af 71 85 10 da 78 c6 74 14 10 9f 57 39 bb 5c 40 d5 1c 9c 8c 50 e2 b2 ce e8 6f 2f 80 c8 b9 d6 8f 7c 01 20 1a 07 14 57 2f e6 02]
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestscryptosubtlesha384html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/subtle/sha-384.html (0 => 158494)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/subtle/sha-384.html                                (rev 0)
+++ trunk/LayoutTests/crypto/subtle/sha-384.html        2013-11-02 18:19:35 UTC (rev 158494)
</span><span class="lines">@@ -0,0 +1,46 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;resources/common.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+
+&lt;script&gt;
+description(&quot;Test crypto.subtle.digest.&quot;);
+
+jsTestIsAsync = true;
+
+if (!window.subtle)
+    window.crypto.subtle = window.crypto.webkitSubtle;
+
+Promise.fulfill(null).then(function() {
+    debug(&quot;SHA384 of []&quot;);
+    return crypto.subtle.digest('sha-384', [new Uint8Array([])]);
+}).then(function(result) {
+    printAcceptedResult(result);
+
+    debug(&quot;SHA384 of [0x0]&quot;)
+    return crypto.subtle.digest({name: 'sha-384'}, [new Uint8Array([0])]);
+}).then(function(result) {
+    printAcceptedResult(result);
+
+    debug(&quot;SHA384 of [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]&quot;);
+    var data = new Uint8Array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
+    return crypto.subtle.digest({name: 'sha-384'}, [data]);
+}).then(function(result) {
+    printAcceptedResult(result);
+
+    debug(&quot;SHA384 of [new Uint8Array([0, 1, 2, 3, 4]), new Uint8Array(5, 6, 7, 8, 9, 10])]&quot;);
+    return crypto.subtle.digest({name: 'sha-384'}, [new Uint8Array([0, 1, 2, 3, 4]), new Uint8Array([5, 6, 7, 8, 9, 10])]);
+}).then(function(result) {
+    printAcceptedResult(result);
+    finishJSTest();
+});
+&lt;/script&gt;
+
+&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestscryptosubtlesha512expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/subtle/sha-512-expected.txt (0 => 158494)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/subtle/sha-512-expected.txt                                (rev 0)
+++ trunk/LayoutTests/crypto/subtle/sha-512-expected.txt        2013-11-02 18:19:35 UTC (rev 158494)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+Test crypto.subtle.digest.
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+SHA512 of []
+    = [cf 83 e1 35 7e ef b8 bd f1 54 28 50 d6 6d 80 07 d6 20 e4 05 0b 57 15 dc 83 f4 a9 21 d3 6c e9 ce 47 d0 d1 3c 5d 85 f2 b0 ff 83 18 d2 87 7e ec 2f 63 b9 31 bd 47 41 7a 81 a5 38 32 7a f9 27 da 3e]
+SHA512 of [0x0]
+    = [b8 24 4d 02 89 81 d6 93 af 7b 45 6a f8 ef a4 ca d6 3d 28 2e 19 ff 14 94 2c 24 6e 50 d9 35 1d 22 70 4a 80 2a 71 c3 58 0b 63 70 de 4c eb 29 3c 32 4a 84 23 34 25 57 d4 e5 c3 84 38 f0 e3 69 10 ee]
+SHA512 of [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
+    = [8f fa ee 0c cc c1 62 85 1f af 05 1a e3 86 67 ee fd 42 3c 01 64 c5 00 55 f8 ad e0 0a fc 37 05 e3 cd eb 99 00 00 4b 0e 42 6c a6 6a b6 3a a3 b9 9b 07 52 73 f4 4f d3 7c 22 a3 55 5c 6f d1 f3 7c cb]
+SHA512 of [new Uint8Array([0, 1, 2, 3, 4]), new Uint8Array(5, 6, 7, 8, 9, 10])]
+    = [8f fa ee 0c cc c1 62 85 1f af 05 1a e3 86 67 ee fd 42 3c 01 64 c5 00 55 f8 ad e0 0a fc 37 05 e3 cd eb 99 00 00 4b 0e 42 6c a6 6a b6 3a a3 b9 9b 07 52 73 f4 4f d3 7c 22 a3 55 5c 6f d1 f3 7c cb]
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestscryptosubtlesha512html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/subtle/sha-512.html (0 => 158494)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/subtle/sha-512.html                                (rev 0)
+++ trunk/LayoutTests/crypto/subtle/sha-512.html        2013-11-02 18:19:35 UTC (rev 158494)
</span><span class="lines">@@ -0,0 +1,46 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;resources/common.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
+&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
+
+&lt;script&gt;
+description(&quot;Test crypto.subtle.digest.&quot;);
+
+jsTestIsAsync = true;
+
+if (!window.subtle)
+    window.crypto.subtle = window.crypto.webkitSubtle;
+
+Promise.fulfill(null).then(function() {
+    debug(&quot;SHA512 of []&quot;);
+    return crypto.subtle.digest('sha-512', [new Uint8Array([])]);
+}).then(function(result) {
+    printAcceptedResult(result);
+
+    debug(&quot;SHA512 of [0x0]&quot;)
+    return crypto.subtle.digest({name: 'sha-512'}, [new Uint8Array([0])]);
+}).then(function(result) {
+    printAcceptedResult(result);
+
+    debug(&quot;SHA512 of [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]&quot;);
+    var data = new Uint8Array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
+    return crypto.subtle.digest({name: 'sha-512'}, [data]);
+}).then(function(result) {
+    printAcceptedResult(result);
+
+    debug(&quot;SHA512 of [new Uint8Array([0, 1, 2, 3, 4]), new Uint8Array(5, 6, 7, 8, 9, 10])]&quot;);
+    return crypto.subtle.digest({name: 'sha-512'}, [new Uint8Array([0, 1, 2, 3, 4]), new Uint8Array([5, 6, 7, 8, 9, 10])]);
+}).then(function(result) {
+    printAcceptedResult(result);
+    finishJSTest();
+});
+&lt;/script&gt;
+
+&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (158493 => 158494)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2013-11-02 17:54:17 UTC (rev 158493)
+++ trunk/Source/WebCore/ChangeLog        2013-11-02 18:19:35 UTC (rev 158494)
</span><span class="lines">@@ -1,3 +1,51 @@
</span><ins>+2013-11-02  Alexey Proskuryakov  &lt;ap@apple.com&gt;
+
+        Implement remaining SHA variations for WebCrypto
+        https://bugs.webkit.org/show_bug.cgi?id=123659
+
+        Reviewed by Anders Carlsson.
+
+        Tests: crypto/subtle/sha-224.html
+               crypto/subtle/sha-256.html
+               crypto/subtle/sha-384.html
+               crypto/subtle/sha-512.html
+
+        * WebCore.xcodeproj/project.pbxproj:
+        * crypto/algorithms/CryptoAlgorithmSHA224.cpp: Added.
+        (WebCore::CryptoAlgorithmSHA224::CryptoAlgorithmSHA224):
+        (WebCore::CryptoAlgorithmSHA224::~CryptoAlgorithmSHA224):
+        (WebCore::CryptoAlgorithmSHA224::create):
+        (WebCore::CryptoAlgorithmSHA224::identifier):
+        * crypto/algorithms/CryptoAlgorithmSHA224.h: Added.
+        * crypto/algorithms/CryptoAlgorithmSHA256.cpp: Added.
+        (WebCore::CryptoAlgorithmSHA256::CryptoAlgorithmSHA256):
+        (WebCore::CryptoAlgorithmSHA256::~CryptoAlgorithmSHA256):
+        (WebCore::CryptoAlgorithmSHA256::create):
+        (WebCore::CryptoAlgorithmSHA256::identifier):
+        * crypto/algorithms/CryptoAlgorithmSHA256.h: Added.
+        * crypto/algorithms/CryptoAlgorithmSHA384.cpp: Added.
+        (WebCore::CryptoAlgorithmSHA384::CryptoAlgorithmSHA384):
+        (WebCore::CryptoAlgorithmSHA384::~CryptoAlgorithmSHA384):
+        (WebCore::CryptoAlgorithmSHA384::create):
+        (WebCore::CryptoAlgorithmSHA384::identifier):
+        * crypto/algorithms/CryptoAlgorithmSHA384.h: Added.
+        * crypto/algorithms/CryptoAlgorithmSHA512.cpp: Added.
+        (WebCore::CryptoAlgorithmSHA512::CryptoAlgorithmSHA512):
+        (WebCore::CryptoAlgorithmSHA512::~CryptoAlgorithmSHA512):
+        (WebCore::CryptoAlgorithmSHA512::create):
+        (WebCore::CryptoAlgorithmSHA512::identifier):
+        * crypto/algorithms/CryptoAlgorithmSHA512.h: Added.
+        * crypto/mac/CryptoAlgorithmRegistryMac.cpp:
+        (WebCore::CryptoAlgorithmRegistry::platformRegisterAlgorithms):
+        * crypto/mac/CryptoAlgorithmSHA224Mac.cpp: Added.
+        (WebCore::CryptoAlgorithmSHA224::digest):
+        * crypto/mac/CryptoAlgorithmSHA256Mac.cpp: Added.
+        (WebCore::CryptoAlgorithmSHA256::digest):
+        * crypto/mac/CryptoAlgorithmSHA384Mac.cpp: Added.
+        (WebCore::CryptoAlgorithmSHA384::digest):
+        * crypto/mac/CryptoAlgorithmSHA512Mac.cpp: Added.
+        (WebCore::CryptoAlgorithmSHA512::digest):
+
</ins><span class="cx"> 2013-11-02  Patrick Gansterer  &lt;paroga@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Various small WinCE build fixes
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (158493 => 158494)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2013-11-02 17:54:17 UTC (rev 158493)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2013-11-02 18:19:35 UTC (rev 158494)
</span><span class="lines">@@ -5579,6 +5579,18 @@
</span><span class="cx">                 E187056316E54A0D00585E97 /* MainThreadTask.h in Headers */ = {isa = PBXBuildFile; fileRef = E187056216E54A0D00585E97 /* MainThreadTask.h */; };
</span><span class="cx">                 E18772F1126E2629003DD586 /* Language.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E18772F0126E2629003DD586 /* Language.cpp */; };
</span><span class="cx">                 E19727161820549E00592D51 /* CryptoKeyType.h in Headers */ = {isa = PBXBuildFile; fileRef = E19727151820549E00592D51 /* CryptoKeyType.h */; };
</span><ins>+                E19AC3E21824DC6900349426 /* CryptoAlgorithmSHA224Mac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E19AC3DE1824DC6900349426 /* CryptoAlgorithmSHA224Mac.cpp */; };
+                E19AC3E31824DC6900349426 /* CryptoAlgorithmSHA256Mac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E19AC3DF1824DC6900349426 /* CryptoAlgorithmSHA256Mac.cpp */; };
+                E19AC3E41824DC6900349426 /* CryptoAlgorithmSHA384Mac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E19AC3E01824DC6900349426 /* CryptoAlgorithmSHA384Mac.cpp */; };
+                E19AC3E51824DC6900349426 /* CryptoAlgorithmSHA512Mac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E19AC3E11824DC6900349426 /* CryptoAlgorithmSHA512Mac.cpp */; };
+                E19AC3EE1824DC7900349426 /* CryptoAlgorithmSHA224.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E19AC3E61824DC7900349426 /* CryptoAlgorithmSHA224.cpp */; };
+                E19AC3EF1824DC7900349426 /* CryptoAlgorithmSHA224.h in Headers */ = {isa = PBXBuildFile; fileRef = E19AC3E71824DC7900349426 /* CryptoAlgorithmSHA224.h */; };
+                E19AC3F01824DC7900349426 /* CryptoAlgorithmSHA256.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E19AC3E81824DC7900349426 /* CryptoAlgorithmSHA256.cpp */; };
+                E19AC3F11824DC7900349426 /* CryptoAlgorithmSHA256.h in Headers */ = {isa = PBXBuildFile; fileRef = E19AC3E91824DC7900349426 /* CryptoAlgorithmSHA256.h */; };
+                E19AC3F21824DC7900349426 /* CryptoAlgorithmSHA384.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E19AC3EA1824DC7900349426 /* CryptoAlgorithmSHA384.cpp */; };
+                E19AC3F31824DC7900349426 /* CryptoAlgorithmSHA384.h in Headers */ = {isa = PBXBuildFile; fileRef = E19AC3EB1824DC7900349426 /* CryptoAlgorithmSHA384.h */; };
+                E19AC3F41824DC7900349426 /* CryptoAlgorithmSHA512.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E19AC3EC1824DC7900349426 /* CryptoAlgorithmSHA512.cpp */; };
+                E19AC3F51824DC7900349426 /* CryptoAlgorithmSHA512.h in Headers */ = {isa = PBXBuildFile; fileRef = E19AC3ED1824DC7900349426 /* CryptoAlgorithmSHA512.h */; };
</ins><span class="cx">                 E19DA29C18189ADD00088BC8 /* CryptoAlgorithmHmacKeyParams.h in Headers */ = {isa = PBXBuildFile; fileRef = E19DA29B18189ADD00088BC8 /* CryptoAlgorithmHmacKeyParams.h */; };
</span><span class="cx">                 E1A1470811102B1500EEC0F3 /* ContainerNodeAlgorithms.h in Headers */ = {isa = PBXBuildFile; fileRef = E1A1470711102B1500EEC0F3 /* ContainerNodeAlgorithms.h */; };
</span><span class="cx">                 E1A3162D134BC32D007C9A4F /* WebNSAttributedStringExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = E1A3162B134BC32D007C9A4F /* WebNSAttributedStringExtras.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="lines">@@ -12594,6 +12606,18 @@
</span><span class="cx">                 E187056216E54A0D00585E97 /* MainThreadTask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MainThreadTask.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 E18772F0126E2629003DD586 /* Language.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Language.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 E19727151820549E00592D51 /* CryptoKeyType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CryptoKeyType.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                E19AC3DE1824DC6900349426 /* CryptoAlgorithmSHA224Mac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CryptoAlgorithmSHA224Mac.cpp; path = mac/CryptoAlgorithmSHA224Mac.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                E19AC3DF1824DC6900349426 /* CryptoAlgorithmSHA256Mac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CryptoAlgorithmSHA256Mac.cpp; path = mac/CryptoAlgorithmSHA256Mac.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                E19AC3E01824DC6900349426 /* CryptoAlgorithmSHA384Mac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CryptoAlgorithmSHA384Mac.cpp; path = mac/CryptoAlgorithmSHA384Mac.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                E19AC3E11824DC6900349426 /* CryptoAlgorithmSHA512Mac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CryptoAlgorithmSHA512Mac.cpp; path = mac/CryptoAlgorithmSHA512Mac.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                E19AC3E61824DC7900349426 /* CryptoAlgorithmSHA224.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CryptoAlgorithmSHA224.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                E19AC3E71824DC7900349426 /* CryptoAlgorithmSHA224.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CryptoAlgorithmSHA224.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                E19AC3E81824DC7900349426 /* CryptoAlgorithmSHA256.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CryptoAlgorithmSHA256.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                E19AC3E91824DC7900349426 /* CryptoAlgorithmSHA256.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CryptoAlgorithmSHA256.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                E19AC3EA1824DC7900349426 /* CryptoAlgorithmSHA384.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CryptoAlgorithmSHA384.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                E19AC3EB1824DC7900349426 /* CryptoAlgorithmSHA384.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CryptoAlgorithmSHA384.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                E19AC3EC1824DC7900349426 /* CryptoAlgorithmSHA512.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CryptoAlgorithmSHA512.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                E19AC3ED1824DC7900349426 /* CryptoAlgorithmSHA512.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CryptoAlgorithmSHA512.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 E19DA29B18189ADD00088BC8 /* CryptoAlgorithmHmacKeyParams.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CryptoAlgorithmHmacKeyParams.h; path = parameters/CryptoAlgorithmHmacKeyParams.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 E1A1470711102B1500EEC0F3 /* ContainerNodeAlgorithms.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContainerNodeAlgorithms.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 E1A3162B134BC32D007C9A4F /* WebNSAttributedStringExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebNSAttributedStringExtras.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -20138,6 +20162,10 @@
</span><span class="cx">                                 E125F8371822F1EB00D84CD9 /* CryptoAlgorithmHMACMac.cpp */,
</span><span class="cx">                                 E1BB84AC1822CA7400525043 /* CryptoAlgorithmRegistryMac.cpp */,
</span><span class="cx">                                 E125F82D1822CFFF00D84CD9 /* CryptoAlgorithmSHA1Mac.cpp */,
</span><ins>+                                E19AC3DE1824DC6900349426 /* CryptoAlgorithmSHA224Mac.cpp */,
+                                E19AC3DF1824DC6900349426 /* CryptoAlgorithmSHA256Mac.cpp */,
+                                E19AC3E01824DC6900349426 /* CryptoAlgorithmSHA384Mac.cpp */,
+                                E19AC3E11824DC6900349426 /* CryptoAlgorithmSHA512Mac.cpp */,
</ins><span class="cx">                         );
</span><span class="cx">                         name = mac;
</span><span class="cx">                         sourceTree = &quot;&lt;group&gt;&quot;;
</span><span class="lines">@@ -20151,6 +20179,14 @@
</span><span class="cx">                                 E125F8301822F11B00D84CD9 /* CryptoAlgorithmHMAC.h */,
</span><span class="cx">                                 E125F8291822CFEC00D84CD9 /* CryptoAlgorithmSHA1.cpp */,
</span><span class="cx">                                 E125F82A1822CFEC00D84CD9 /* CryptoAlgorithmSHA1.h */,
</span><ins>+                                E19AC3E61824DC7900349426 /* CryptoAlgorithmSHA224.cpp */,
+                                E19AC3E71824DC7900349426 /* CryptoAlgorithmSHA224.h */,
+                                E19AC3E81824DC7900349426 /* CryptoAlgorithmSHA256.cpp */,
+                                E19AC3E91824DC7900349426 /* CryptoAlgorithmSHA256.h */,
+                                E19AC3EA1824DC7900349426 /* CryptoAlgorithmSHA384.cpp */,
+                                E19AC3EB1824DC7900349426 /* CryptoAlgorithmSHA384.h */,
+                                E19AC3EC1824DC7900349426 /* CryptoAlgorithmSHA512.cpp */,
+                                E19AC3ED1824DC7900349426 /* CryptoAlgorithmSHA512.h */,
</ins><span class="cx">                         );
</span><span class="cx">                         path = algorithms;
</span><span class="cx">                         sourceTree = &quot;&lt;group&gt;&quot;;
</span><span class="lines">@@ -21694,6 +21730,7 @@
</span><span class="cx">                                 AAC08CF315F941FD00F1E188 /* AccessibilitySVGRoot.h in Headers */,
</span><span class="cx">                                 29A8122B0FBB9C1D00510293 /* AccessibilityTable.h in Headers */,
</span><span class="cx">                                 29A812320FBB9C1D00510293 /* AccessibilityTableCell.h in Headers */,
</span><ins>+                                E19AC3F11824DC7900349426 /* CryptoAlgorithmSHA256.h in Headers */,
</ins><span class="cx">                                 29A812410FBB9C1D00510293 /* AccessibilityTableColumn.h in Headers */,
</span><span class="cx">                                 29A8123F0FBB9C1D00510293 /* AccessibilityTableHeaderContainer.h in Headers */,
</span><span class="cx">                                 29A812310FBB9C1D00510293 /* AccessibilityTableRow.h in Headers */,
</span><span class="lines">@@ -23075,6 +23112,7 @@
</span><span class="cx">                                 A9D248090D757E7D00FDF959 /* JSDOMMimeTypeArray.h in Headers */,
</span><span class="cx">                                 52CCA9E315E3F62C0053C77F /* JSDOMNamedFlowCollection.h in Headers */,
</span><span class="cx">                                 1ACE53E00A8D18810022947D /* JSDOMParser.h in Headers */,
</span><ins>+                                E19AC3F31824DC7900349426 /* CryptoAlgorithmSHA384.h in Headers */,
</ins><span class="cx">                                 FB91392A16AE4FC0001FE682 /* JSDOMPath.h in Headers */,
</span><span class="cx">                                 A9D247FF0D757E6900FDF959 /* JSDOMPlugin.h in Headers */,
</span><span class="cx">                                 A9D248010D757E6900FDF959 /* JSDOMPluginArray.h in Headers */,
</span><span class="lines">@@ -23344,6 +23382,7 @@
</span><span class="cx">                                 B2CB92480B5BD984009BAA78 /* JSSVGElementInstanceList.h in Headers */,
</span><span class="cx">                                 8542A7990AE5C94400DF58DF /* JSSVGElementWrapperFactory.h in Headers */,
</span><span class="cx">                                 B2FA3D690AB75A6F000E5AC4 /* JSSVGEllipseElement.h in Headers */,
</span><ins>+                                E19AC3EF1824DC7900349426 /* CryptoAlgorithmSHA224.h in Headers */,
</ins><span class="cx">                                 078E092B17D14D1C00420AA1 /* RTCStatsRequestImpl.h in Headers */,
</span><span class="cx">                                 B266CD4E0C3AEC6500EB08D2 /* JSSVGException.h in Headers */,
</span><span class="cx">                                 B2FA3D6B0AB75A6F000E5AC4 /* JSSVGFEBlendElement.h in Headers */,
</span><span class="lines">@@ -24708,6 +24747,7 @@
</span><span class="cx">                                 A7D20F6D107F438B00A80392 /* WebGLActiveInfo.h in Headers */,
</span><span class="cx">                                 07C59B5717F4AC15000FBCBB /* VideoStreamTrack.h in Headers */,
</span><span class="cx">                                 49C7B9C91042D32F0009D447 /* WebGLBuffer.h in Headers */,
</span><ins>+                                E19AC3F51824DC7900349426 /* CryptoAlgorithmSHA512.h in Headers */,
</ins><span class="cx">                                 7E66E23416D6EB6C00F7E7FF /* WebGLCompressedTextureATC.h in Headers */,
</span><span class="cx">                                 7E66E23417E6EB6C00F7E7FF /* WebGLCompressedTexturePVRTC.h in Headers */,
</span><span class="cx">                                 6E3FAE8F14733FDB00E42306 /* WebGLCompressedTextureS3TC.h in Headers */,
</span><span class="lines">@@ -25391,6 +25431,7 @@
</span><span class="cx">                                 37C236101097EE7700EF9F72 /* ComplexTextController.cpp in Sources */,
</span><span class="cx">                                 37C238221098C84200EF9F72 /* ComplexTextControllerCoreText.mm in Sources */,
</span><span class="cx">                                 316FE1150E6E1DA700BF6088 /* CompositeAnimation.cpp in Sources */,
</span><ins>+                                E19AC3E31824DC6900349426 /* CryptoAlgorithmSHA256Mac.cpp in Sources */,
</ins><span class="cx">                                 93309DDC099E64920056E581 /* CompositeEditCommand.cpp in Sources */,
</span><span class="cx">                                 79F2F5A11091939A000D87CB /* CompositionEvent.cpp in Sources */,
</span><span class="cx">                                 FD31608E12B026F700C1A359 /* Cone.cpp in Sources */,
</span><span class="lines">@@ -26074,6 +26115,7 @@
</span><span class="cx">                                 A871DB300A150BD600B12A68 /* HTMLTableRowElement.cpp in Sources */,
</span><span class="cx">                                 93442CA00D2B336000338FF9 /* HTMLTableRowsCollection.cpp in Sources */,
</span><span class="cx">                                 A871DB260A150BD600B12A68 /* HTMLTableSectionElement.cpp in Sources */,
</span><ins>+                                E19AC3F01824DC7900349426 /* CryptoAlgorithmSHA256.cpp in Sources */,
</ins><span class="cx">                                 511EF2CB17F0FD3500E4FA16 /* JSIDBVersionChangeEvent.cpp in Sources */,
</span><span class="cx">                                 D66817FA166FE6D700FA07B4 /* HTMLTemplateElement.cpp in Sources */,
</span><span class="cx">                                 A81369D7097374F600D74463 /* HTMLTextAreaElement.cpp in Sources */,
</span><span class="lines">@@ -26389,6 +26431,7 @@
</span><span class="cx">                                 CD336F6717FA0AC600DDDCD0 /* VideoTrackPrivateAVFObjC.cpp in Sources */,
</span><span class="cx">                                 938E65F709F0985D008A48EC /* JSHTMLElementWrapperFactory.cpp in Sources */,
</span><span class="cx">                                 BC6D44EC0C07F2ED0072D2C9 /* JSHTMLEmbedElement.cpp in Sources */,
</span><ins>+                                E19AC3EE1824DC7900349426 /* CryptoAlgorithmSHA224.cpp in Sources */,
</ins><span class="cx">                                 BC6D44BE0C07EFB60072D2C9 /* JSHTMLEmbedElementCustom.cpp in Sources */,
</span><span class="cx">                                 1AE2AA260A1CDAB400B42B25 /* JSHTMLFieldSetElement.cpp in Sources */,
</span><span class="cx">                                 1AE2AA280A1CDAB400B42B25 /* JSHTMLFontElement.cpp in Sources */,
</span><span class="lines">@@ -26478,6 +26521,7 @@
</span><span class="cx">                                 CD27F6E51457685A0078207D /* JSMediaController.cpp in Sources */,
</span><span class="cx">                                 FD23A12513F5FA5900F67001 /* JSMediaElementAudioSourceNode.cpp in Sources */,
</span><span class="cx">                                 E44614180CD6826900FADA75 /* JSMediaError.cpp in Sources */,
</span><ins>+                                E19AC3F41824DC7900349426 /* CryptoAlgorithmSHA512.cpp in Sources */,
</ins><span class="cx">                                 CDA98DA31601464100FEA3B1 /* JSMediaKeyError.cpp in Sources */,
</span><span class="cx">                                 CDB859FA160D494900E5B07F /* JSMediaKeyEvent.cpp in Sources */,
</span><span class="cx">                                 CDA98DDF16026A3700FEA3B1 /* JSMediaKeyMessageEvent.cpp in Sources */,
</span><span class="lines">@@ -26947,6 +26991,7 @@
</span><span class="cx">                                 FDB1700514A2BAB200A2B5D9 /* MultiChannelResampler.cpp in Sources */,
</span><span class="cx">                                 85031B490A44EFC700F992E0 /* MutationEvent.cpp in Sources */,
</span><span class="cx">                                 C6F0900E14327B6100685849 /* MutationObserver.cpp in Sources */,
</span><ins>+                                E19AC3E51824DC6900349426 /* CryptoAlgorithmSHA512Mac.cpp in Sources */,
</ins><span class="cx">                                 D6E528A3149A926D00EFE1F3 /* MutationObserverInterestGroup.cpp in Sources */,
</span><span class="cx">                                 D6E276AF14637455001D280A /* MutationObserverRegistration.cpp in Sources */,
</span><span class="cx">                                 C6F08FBC1430FE8F00685849 /* MutationRecord.cpp in Sources */,
</span><span class="lines">@@ -27314,6 +27359,7 @@
</span><span class="cx">                                 976F36EA14686225005E93B4 /* SecurityContext.cpp in Sources */,
</span><span class="cx">                                 BCD0E0FA0E972C3500265DEA /* SecurityOrigin.cpp in Sources */,
</span><span class="cx">                                 974D2DA4146A535D00D51F8B /* SecurityPolicy.cpp in Sources */,
</span><ins>+                                E19AC3E21824DC6900349426 /* CryptoAlgorithmSHA224Mac.cpp in Sources */,
</ins><span class="cx">                                 371F4FFD0D25E7F300ECE0D5 /* SegmentedFontData.cpp in Sources */,
</span><span class="cx">                                 B2C3DA2E0D006C1D00EF6F26 /* SegmentedString.cpp in Sources */,
</span><span class="cx">                                 E44B4BB3141650D7002B1D8B /* SelectorChecker.cpp in Sources */,
</span><span class="lines">@@ -27506,6 +27552,7 @@
</span><span class="cx">                                 B22279A70D00BF220071B782 /* SVGCursorElement.cpp in Sources */,
</span><span class="cx">                                 B22279AD0D00BF220071B782 /* SVGDefsElement.cpp in Sources */,
</span><span class="cx">                                 B22279B00D00BF220071B782 /* SVGDescElement.cpp in Sources */,
</span><ins>+                                E19AC3F21824DC7900349426 /* CryptoAlgorithmSHA384.cpp in Sources */,
</ins><span class="cx">                                 CDE3A85717F6020400C5BE20 /* AudioTrackPrivateAVFObjC.mm in Sources */,
</span><span class="cx">                                 B22279B30D00BF220071B782 /* SVGDocument.cpp in Sources */,
</span><span class="cx">                                 B28C6A270D00C44800334AA4 /* SVGDocumentExtensions.cpp in Sources */,
</span><span class="lines">@@ -27887,6 +27934,7 @@
</span><span class="cx">                                 59C28045138DC2410079B7E2 /* XMLErrors.cpp in Sources */,
</span><span class="cx">                                 BC772C460C4EB2C60083285F /* XMLHttpRequest.cpp in Sources */,
</span><span class="cx">                                 978D07CE145A10370096908D /* XMLHttpRequestException.cpp in Sources */,
</span><ins>+                                E19AC3E41824DC6900349426 /* CryptoAlgorithmSHA384Mac.cpp in Sources */,
</ins><span class="cx">                                 A136A00C1134DBD200CC8D50 /* XMLHttpRequestProgressEventThrottle.cpp in Sources */,
</span><span class="cx">                                 BCDFD48F0E305290009D10AD /* XMLHttpRequestUpload.cpp in Sources */,
</span><span class="cx">                                 A833C80C0A2CF25600D57664 /* XMLNames.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmSHA224cppfromrev158493trunkSourceWebCorecryptomacCryptoAlgorithmRegistryMaccpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA224.cpp (from rev 158493, trunk/Source/WebCore/crypto/mac/CryptoAlgorithmRegistryMac.cpp) (0 => 158494)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA224.cpp                                (rev 0)
+++ trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA224.cpp        2013-11-02 18:19:35 UTC (rev 158494)
</span><span class="lines">@@ -0,0 +1,55 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;CryptoAlgorithmSHA224.h&quot;
+
+#if ENABLE(SUBTLE_CRYPTO)
+
+namespace WebCore {
+
+const char* const CryptoAlgorithmSHA224::s_name = &quot;sha-224&quot;;
+
+CryptoAlgorithmSHA224::CryptoAlgorithmSHA224()
+{
+}
+
+CryptoAlgorithmSHA224::~CryptoAlgorithmSHA224()
+{
+}
+
+std::unique_ptr&lt;CryptoAlgorithm&gt; CryptoAlgorithmSHA224::create()
+{
+    return std::unique_ptr&lt;CryptoAlgorithm&gt;(new CryptoAlgorithmSHA224);
+}
+
+CryptoAlgorithmIdentifier CryptoAlgorithmSHA224::identifier() const
+{
+    return s_identifier;
+}
+
+}
+
+#endif // ENABLE(SUBTLE_CRYPTO)
</ins></span></pre></div>
<a id="trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmSHA224hfromrev158493trunkSourceWebCorecryptomacCryptoAlgorithmRegistryMaccpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA224.h (from rev 158493, trunk/Source/WebCore/crypto/mac/CryptoAlgorithmRegistryMac.cpp) (0 => 158494)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA224.h                                (rev 0)
+++ trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA224.h        2013-11-02 18:19:35 UTC (rev 158494)
</span><span class="lines">@@ -0,0 +1,54 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef CryptoAlgorithmSHA224_h
+#define CryptoAlgorithmSHA224_h
+
+#include &quot;CryptoAlgorithm.h&quot;
+
+#if ENABLE(SUBTLE_CRYPTO)
+
+namespace WebCore {
+
+class CryptoAlgorithmSHA224 FINAL : public CryptoAlgorithm {
+public:
+    static const char* const s_name;
+    static const CryptoAlgorithmIdentifier s_identifier = CryptoAlgorithmIdentifier::SHA_224;
+
+    static std::unique_ptr&lt;CryptoAlgorithm&gt; create();
+
+    virtual CryptoAlgorithmIdentifier identifier() const OVERRIDE;
+
+    virtual void digest(const CryptoAlgorithmParameters&amp;, const Vector&lt;CryptoOperationData&gt;&amp;, std::unique_ptr&lt;PromiseWrapper&gt;, ExceptionCode&amp;) OVERRIDE;
+
+private:
+    CryptoAlgorithmSHA224();
+    virtual ~CryptoAlgorithmSHA224();
+};
+
+}
+
+#endif // ENABLE(SUBTLE_CRYPTO)
+#endif // CryptoAlgorithmSHA224_h
</ins></span></pre></div>
<a id="trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmSHA256cppfromrev158493trunkSourceWebCorecryptomacCryptoAlgorithmRegistryMaccpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA256.cpp (from rev 158493, trunk/Source/WebCore/crypto/mac/CryptoAlgorithmRegistryMac.cpp) (0 => 158494)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA256.cpp                                (rev 0)
+++ trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA256.cpp        2013-11-02 18:19:35 UTC (rev 158494)
</span><span class="lines">@@ -0,0 +1,55 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;CryptoAlgorithmSHA256.h&quot;
+
+#if ENABLE(SUBTLE_CRYPTO)
+
+namespace WebCore {
+
+const char* const CryptoAlgorithmSHA256::s_name = &quot;sha-256&quot;;
+
+CryptoAlgorithmSHA256::CryptoAlgorithmSHA256()
+{
+}
+
+CryptoAlgorithmSHA256::~CryptoAlgorithmSHA256()
+{
+}
+
+std::unique_ptr&lt;CryptoAlgorithm&gt; CryptoAlgorithmSHA256::create()
+{
+    return std::unique_ptr&lt;CryptoAlgorithm&gt;(new CryptoAlgorithmSHA256);
+}
+
+CryptoAlgorithmIdentifier CryptoAlgorithmSHA256::identifier() const
+{
+    return s_identifier;
+}
+
+}
+
+#endif // ENABLE(SUBTLE_CRYPTO)
</ins></span></pre></div>
<a id="trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmSHA256hfromrev158493trunkSourceWebCorecryptomacCryptoAlgorithmRegistryMaccpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA256.h (from rev 158493, trunk/Source/WebCore/crypto/mac/CryptoAlgorithmRegistryMac.cpp) (0 => 158494)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA256.h                                (rev 0)
+++ trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA256.h        2013-11-02 18:19:35 UTC (rev 158494)
</span><span class="lines">@@ -0,0 +1,54 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef CryptoAlgorithmSHA256_h
+#define CryptoAlgorithmSHA256_h
+
+#include &quot;CryptoAlgorithm.h&quot;
+
+#if ENABLE(SUBTLE_CRYPTO)
+
+namespace WebCore {
+
+class CryptoAlgorithmSHA256 FINAL : public CryptoAlgorithm {
+public:
+    static const char* const s_name;
+    static const CryptoAlgorithmIdentifier s_identifier = CryptoAlgorithmIdentifier::SHA_256;
+
+    static std::unique_ptr&lt;CryptoAlgorithm&gt; create();
+
+    virtual CryptoAlgorithmIdentifier identifier() const OVERRIDE;
+
+    virtual void digest(const CryptoAlgorithmParameters&amp;, const Vector&lt;CryptoOperationData&gt;&amp;, std::unique_ptr&lt;PromiseWrapper&gt;, ExceptionCode&amp;) OVERRIDE;
+
+private:
+    CryptoAlgorithmSHA256();
+    virtual ~CryptoAlgorithmSHA256();
+};
+
+}
+
+#endif // ENABLE(SUBTLE_CRYPTO)
+#endif // CryptoAlgorithmSHA256_h
</ins></span></pre></div>
<a id="trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmSHA384cppfromrev158493trunkSourceWebCorecryptomacCryptoAlgorithmRegistryMaccpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA384.cpp (from rev 158493, trunk/Source/WebCore/crypto/mac/CryptoAlgorithmRegistryMac.cpp) (0 => 158494)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA384.cpp                                (rev 0)
+++ trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA384.cpp        2013-11-02 18:19:35 UTC (rev 158494)
</span><span class="lines">@@ -0,0 +1,55 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;CryptoAlgorithmSHA384.h&quot;
+
+#if ENABLE(SUBTLE_CRYPTO)
+
+namespace WebCore {
+
+const char* const CryptoAlgorithmSHA384::s_name = &quot;sha-384&quot;;
+
+CryptoAlgorithmSHA384::CryptoAlgorithmSHA384()
+{
+}
+
+CryptoAlgorithmSHA384::~CryptoAlgorithmSHA384()
+{
+}
+
+std::unique_ptr&lt;CryptoAlgorithm&gt; CryptoAlgorithmSHA384::create()
+{
+    return std::unique_ptr&lt;CryptoAlgorithm&gt;(new CryptoAlgorithmSHA384);
+}
+
+CryptoAlgorithmIdentifier CryptoAlgorithmSHA384::identifier() const
+{
+    return s_identifier;
+}
+
+}
+
+#endif // ENABLE(SUBTLE_CRYPTO)
</ins></span></pre></div>
<a id="trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmSHA384hfromrev158493trunkSourceWebCorecryptomacCryptoAlgorithmRegistryMaccpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA384.h (from rev 158493, trunk/Source/WebCore/crypto/mac/CryptoAlgorithmRegistryMac.cpp) (0 => 158494)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA384.h                                (rev 0)
+++ trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA384.h        2013-11-02 18:19:35 UTC (rev 158494)
</span><span class="lines">@@ -0,0 +1,54 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef CryptoAlgorithmSHA384_h
+#define CryptoAlgorithmSHA384_h
+
+#include &quot;CryptoAlgorithm.h&quot;
+
+#if ENABLE(SUBTLE_CRYPTO)
+
+namespace WebCore {
+
+class CryptoAlgorithmSHA384 FINAL : public CryptoAlgorithm {
+public:
+    static const char* const s_name;
+    static const CryptoAlgorithmIdentifier s_identifier = CryptoAlgorithmIdentifier::SHA_384;
+
+    static std::unique_ptr&lt;CryptoAlgorithm&gt; create();
+
+    virtual CryptoAlgorithmIdentifier identifier() const OVERRIDE;
+
+    virtual void digest(const CryptoAlgorithmParameters&amp;, const Vector&lt;CryptoOperationData&gt;&amp;, std::unique_ptr&lt;PromiseWrapper&gt;, ExceptionCode&amp;) OVERRIDE;
+
+private:
+    CryptoAlgorithmSHA384();
+    virtual ~CryptoAlgorithmSHA384();
+};
+
+}
+
+#endif // ENABLE(SUBTLE_CRYPTO)
+#endif // CryptoAlgorithmSHA384_h
</ins></span></pre></div>
<a id="trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmSHA512cppfromrev158493trunkSourceWebCorecryptomacCryptoAlgorithmRegistryMaccpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA512.cpp (from rev 158493, trunk/Source/WebCore/crypto/mac/CryptoAlgorithmRegistryMac.cpp) (0 => 158494)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA512.cpp                                (rev 0)
+++ trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA512.cpp        2013-11-02 18:19:35 UTC (rev 158494)
</span><span class="lines">@@ -0,0 +1,55 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;CryptoAlgorithmSHA512.h&quot;
+
+#if ENABLE(SUBTLE_CRYPTO)
+
+namespace WebCore {
+
+const char* const CryptoAlgorithmSHA512::s_name = &quot;sha-512&quot;;
+
+CryptoAlgorithmSHA512::CryptoAlgorithmSHA512()
+{
+}
+
+CryptoAlgorithmSHA512::~CryptoAlgorithmSHA512()
+{
+}
+
+std::unique_ptr&lt;CryptoAlgorithm&gt; CryptoAlgorithmSHA512::create()
+{
+    return std::unique_ptr&lt;CryptoAlgorithm&gt;(new CryptoAlgorithmSHA512);
+}
+
+CryptoAlgorithmIdentifier CryptoAlgorithmSHA512::identifier() const
+{
+    return s_identifier;
+}
+
+}
+
+#endif // ENABLE(SUBTLE_CRYPTO)
</ins></span></pre></div>
<a id="trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmSHA512hfromrev158493trunkSourceWebCorecryptomacCryptoAlgorithmRegistryMaccpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA512.h (from rev 158493, trunk/Source/WebCore/crypto/mac/CryptoAlgorithmRegistryMac.cpp) (0 => 158494)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA512.h                                (rev 0)
+++ trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmSHA512.h        2013-11-02 18:19:35 UTC (rev 158494)
</span><span class="lines">@@ -0,0 +1,54 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef CryptoAlgorithmSHA512_h
+#define CryptoAlgorithmSHA512_h
+
+#include &quot;CryptoAlgorithm.h&quot;
+
+#if ENABLE(SUBTLE_CRYPTO)
+
+namespace WebCore {
+
+class CryptoAlgorithmSHA512 FINAL : public CryptoAlgorithm {
+public:
+    static const char* const s_name;
+    static const CryptoAlgorithmIdentifier s_identifier = CryptoAlgorithmIdentifier::SHA_512;
+
+    static std::unique_ptr&lt;CryptoAlgorithm&gt; create();
+
+    virtual CryptoAlgorithmIdentifier identifier() const OVERRIDE;
+
+    virtual void digest(const CryptoAlgorithmParameters&amp;, const Vector&lt;CryptoOperationData&gt;&amp;, std::unique_ptr&lt;PromiseWrapper&gt;, ExceptionCode&amp;) OVERRIDE;
+
+private:
+    CryptoAlgorithmSHA512();
+    virtual ~CryptoAlgorithmSHA512();
+};
+
+}
+
+#endif // ENABLE(SUBTLE_CRYPTO)
+#endif // CryptoAlgorithmSHA512_h
</ins></span></pre></div>
<a id="trunkSourceWebCorecryptomacCryptoAlgorithmRegistryMaccpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/mac/CryptoAlgorithmRegistryMac.cpp (158493 => 158494)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/mac/CryptoAlgorithmRegistryMac.cpp        2013-11-02 17:54:17 UTC (rev 158493)
+++ trunk/Source/WebCore/crypto/mac/CryptoAlgorithmRegistryMac.cpp        2013-11-02 18:19:35 UTC (rev 158494)
</span><span class="lines">@@ -31,6 +31,10 @@
</span><span class="cx"> #include &quot;CryptoAlgorithmAES_CBC.h&quot;
</span><span class="cx"> #include &quot;CryptoAlgorithmHMAC.h&quot;
</span><span class="cx"> #include &quot;CryptoAlgorithmSHA1.h&quot;
</span><ins>+#include &quot;CryptoAlgorithmSHA224.h&quot;
+#include &quot;CryptoAlgorithmSHA256.h&quot;
+#include &quot;CryptoAlgorithmSHA384.h&quot;
+#include &quot;CryptoAlgorithmSHA512.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -39,6 +43,10 @@
</span><span class="cx">     registerAlgorithm(CryptoAlgorithmAES_CBC::s_name, CryptoAlgorithmAES_CBC::s_identifier, CryptoAlgorithmAES_CBC::create);
</span><span class="cx">     registerAlgorithm(CryptoAlgorithmHMAC::s_name, CryptoAlgorithmHMAC::s_identifier, CryptoAlgorithmHMAC::create);
</span><span class="cx">     registerAlgorithm(CryptoAlgorithmSHA1::s_name, CryptoAlgorithmSHA1::s_identifier, CryptoAlgorithmSHA1::create);
</span><ins>+    registerAlgorithm(CryptoAlgorithmSHA224::s_name, CryptoAlgorithmSHA224::s_identifier, CryptoAlgorithmSHA224::create);
+    registerAlgorithm(CryptoAlgorithmSHA256::s_name, CryptoAlgorithmSHA256::s_identifier, CryptoAlgorithmSHA256::create);
+    registerAlgorithm(CryptoAlgorithmSHA384::s_name, CryptoAlgorithmSHA384::s_identifier, CryptoAlgorithmSHA384::create);
+    registerAlgorithm(CryptoAlgorithmSHA512::s_name, CryptoAlgorithmSHA512::s_identifier, CryptoAlgorithmSHA512::create);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorecryptomacCryptoAlgorithmSHA224Maccppfromrev158493trunkSourceWebCorecryptomacCryptoAlgorithmRegistryMaccpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/crypto/mac/CryptoAlgorithmSHA224Mac.cpp (from rev 158493, trunk/Source/WebCore/crypto/mac/CryptoAlgorithmRegistryMac.cpp) (0 => 158494)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/mac/CryptoAlgorithmSHA224Mac.cpp                                (rev 0)
+++ trunk/Source/WebCore/crypto/mac/CryptoAlgorithmSHA224Mac.cpp        2013-11-02 18:19:35 UTC (rev 158494)
</span><span class="lines">@@ -0,0 +1,53 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;CryptoAlgorithmSHA224.h&quot;
+
+#if ENABLE(SUBTLE_CRYPTO)
+
+#include &quot;JSDOMPromise.h&quot;
+#include &lt;CommonCrypto/CommonCrypto.h&gt;
+
+namespace WebCore {
+
+void CryptoAlgorithmSHA224::digest(const CryptoAlgorithmParameters&amp;, const Vector&lt;CryptoOperationData&gt;&amp; data, std::unique_ptr&lt;PromiseWrapper&gt; promise, ExceptionCode&amp;)
+{
+    Vector&lt;unsigned char&gt; result(CC_SHA224_DIGEST_LENGTH);
+
+    CC_SHA256_CTX context; // Same context struct is used for SHA224 and SHA256.
+    CC_SHA224_Init(&amp;context);
+
+    for (size_t i = 0, size = data.size(); i &lt; size; ++i)
+        CC_SHA224_Update(&amp;context, data[i].first, data[i].second);
+
+    CC_SHA224_Final(result.data(), &amp;context);
+
+    promise-&gt;fulfill(result);
+}
+
+}
+
+#endif // ENABLE(SUBTLE_CRYPTO)
</ins></span></pre></div>
<a id="trunkSourceWebCorecryptomacCryptoAlgorithmSHA256Maccppfromrev158493trunkSourceWebCorecryptomacCryptoAlgorithmRegistryMaccpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/crypto/mac/CryptoAlgorithmSHA256Mac.cpp (from rev 158493, trunk/Source/WebCore/crypto/mac/CryptoAlgorithmRegistryMac.cpp) (0 => 158494)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/mac/CryptoAlgorithmSHA256Mac.cpp                                (rev 0)
+++ trunk/Source/WebCore/crypto/mac/CryptoAlgorithmSHA256Mac.cpp        2013-11-02 18:19:35 UTC (rev 158494)
</span><span class="lines">@@ -0,0 +1,53 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;CryptoAlgorithmSHA256.h&quot;
+
+#if ENABLE(SUBTLE_CRYPTO)
+
+#include &quot;JSDOMPromise.h&quot;
+#include &lt;CommonCrypto/CommonCrypto.h&gt;
+
+namespace WebCore {
+
+void CryptoAlgorithmSHA256::digest(const CryptoAlgorithmParameters&amp;, const Vector&lt;CryptoOperationData&gt;&amp; data, std::unique_ptr&lt;PromiseWrapper&gt; promise, ExceptionCode&amp;)
+{
+    Vector&lt;unsigned char&gt; result(CC_SHA256_DIGEST_LENGTH);
+
+    CC_SHA256_CTX context;
+    CC_SHA256_Init(&amp;context);
+
+    for (size_t i = 0, size = data.size(); i &lt; size; ++i)
+        CC_SHA256_Update(&amp;context, data[i].first, data[i].second);
+
+    CC_SHA256_Final(result.data(), &amp;context);
+
+    promise-&gt;fulfill(result);
+}
+
+}
+
+#endif // ENABLE(SUBTLE_CRYPTO)
</ins></span></pre></div>
<a id="trunkSourceWebCorecryptomacCryptoAlgorithmSHA384Maccppfromrev158493trunkSourceWebCorecryptomacCryptoAlgorithmRegistryMaccpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/crypto/mac/CryptoAlgorithmSHA384Mac.cpp (from rev 158493, trunk/Source/WebCore/crypto/mac/CryptoAlgorithmRegistryMac.cpp) (0 => 158494)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/mac/CryptoAlgorithmSHA384Mac.cpp                                (rev 0)
+++ trunk/Source/WebCore/crypto/mac/CryptoAlgorithmSHA384Mac.cpp        2013-11-02 18:19:35 UTC (rev 158494)
</span><span class="lines">@@ -0,0 +1,53 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;CryptoAlgorithmSHA384.h&quot;
+
+#if ENABLE(SUBTLE_CRYPTO)
+
+#include &quot;JSDOMPromise.h&quot;
+#include &lt;CommonCrypto/CommonCrypto.h&gt;
+
+namespace WebCore {
+
+void CryptoAlgorithmSHA384::digest(const CryptoAlgorithmParameters&amp;, const Vector&lt;CryptoOperationData&gt;&amp; data, std::unique_ptr&lt;PromiseWrapper&gt; promise, ExceptionCode&amp;)
+{
+    Vector&lt;unsigned char&gt; result(CC_SHA384_DIGEST_LENGTH);
+
+    CC_SHA512_CTX context; // Same context struct is used for SHA384 and SHA512.
+    CC_SHA384_Init(&amp;context);
+
+    for (size_t i = 0, size = data.size(); i &lt; size; ++i)
+        CC_SHA384_Update(&amp;context, data[i].first, data[i].second);
+
+    CC_SHA384_Final(result.data(), &amp;context);
+
+    promise-&gt;fulfill(result);
+}
+
+}
+
+#endif // ENABLE(SUBTLE_CRYPTO)
</ins></span></pre></div>
<a id="trunkSourceWebCorecryptomacCryptoAlgorithmSHA512Maccppfromrev158493trunkSourceWebCorecryptomacCryptoAlgorithmRegistryMaccpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/crypto/mac/CryptoAlgorithmSHA512Mac.cpp (from rev 158493, trunk/Source/WebCore/crypto/mac/CryptoAlgorithmRegistryMac.cpp) (0 => 158494)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/mac/CryptoAlgorithmSHA512Mac.cpp                                (rev 0)
+++ trunk/Source/WebCore/crypto/mac/CryptoAlgorithmSHA512Mac.cpp        2013-11-02 18:19:35 UTC (rev 158494)
</span><span class="lines">@@ -0,0 +1,53 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;CryptoAlgorithmSHA512.h&quot;
+
+#if ENABLE(SUBTLE_CRYPTO)
+
+#include &quot;JSDOMPromise.h&quot;
+#include &lt;CommonCrypto/CommonCrypto.h&gt;
+
+namespace WebCore {
+
+void CryptoAlgorithmSHA512::digest(const CryptoAlgorithmParameters&amp;, const Vector&lt;CryptoOperationData&gt;&amp; data, std::unique_ptr&lt;PromiseWrapper&gt; promise, ExceptionCode&amp;)
+{
+    Vector&lt;unsigned char&gt; result(CC_SHA512_DIGEST_LENGTH);
+
+    CC_SHA512_CTX context;
+    CC_SHA512_Init(&amp;context);
+
+    for (size_t i = 0, size = data.size(); i &lt; size; ++i)
+        CC_SHA512_Update(&amp;context, data[i].first, data[i].second);
+
+    CC_SHA512_Final(result.data(), &amp;context);
+
+    promise-&gt;fulfill(result);
+}
+
+}
+
+#endif // ENABLE(SUBTLE_CRYPTO)
</ins></span></pre>
</div>
</div>

</body>
</html>