Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(509)

Side by Side Diff: content/renderer/webcrypto/webcrypto_impl_unittest.cc

Issue 117013002: [webcrypto] Add import of AES-KW key for NSS. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/webcrypto/webcrypto_impl.h" 5 #include "content/renderer/webcrypto/webcrypto_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 blink::WebCryptoKey key = blink::WebCryptoKey::createNull(); 115 blink::WebCryptoKey key = blink::WebCryptoKey::createNull();
116 bool extractable = true; 116 bool extractable = true;
117 EXPECT_TRUE(crypto_.ImportKeyInternal(blink::WebCryptoKeyFormatRaw, 117 EXPECT_TRUE(crypto_.ImportKeyInternal(blink::WebCryptoKeyFormatRaw,
118 webcrypto::Uint8VectorStart(key_raw), 118 webcrypto::Uint8VectorStart(key_raw),
119 key_raw.size(), 119 key_raw.size(),
120 algorithm, 120 algorithm,
121 extractable, 121 extractable,
122 usage, 122 usage,
123 &key)); 123 &key));
124 124
125 EXPECT_EQ(blink::WebCryptoKeyTypeSecret, key.type());
126 EXPECT_FALSE(key.isNull()); 125 EXPECT_FALSE(key.isNull());
127 EXPECT_TRUE(key.handle()); 126 EXPECT_TRUE(key.handle());
127 EXPECT_EQ(blink::WebCryptoKeyTypeSecret, key.type());
128 EXPECT_EQ(algorithm.id(), key.algorithm().id());
129 EXPECT_EQ(extractable, key.extractable());
130 EXPECT_EQ(usage, key.usages());
128 return key; 131 return key;
129 } 132 }
130 133
131 // Forwarding methods to gain access to protected methods of 134 // Forwarding methods to gain access to protected methods of
132 // WebCryptoImpl. 135 // WebCryptoImpl.
133 136
134 bool DigestInternal( 137 bool DigestInternal(
135 const blink::WebCryptoAlgorithm& algorithm, 138 const blink::WebCryptoAlgorithm& algorithm,
136 const std::vector<uint8>& data, 139 const std::vector<uint8>& data,
137 blink::WebArrayBuffer* buffer) { 140 blink::WebArrayBuffer* buffer) {
(...skipping 1473 matching lines...) Expand 10 before | Expand all | Expand 10 after
1611 // Do a successful decrypt with good data just for confirmation. 1614 // Do a successful decrypt with good data just for confirmation.
1612 EXPECT_TRUE(DecryptInternal( 1615 EXPECT_TRUE(DecryptInternal(
1613 algorithm, 1616 algorithm,
1614 private_key, 1617 private_key,
1615 reinterpret_cast<const unsigned char*>(encrypted_data.data()), 1618 reinterpret_cast<const unsigned char*>(encrypted_data.data()),
1616 encrypted_data.byteLength(), 1619 encrypted_data.byteLength(),
1617 &decrypted_data)); 1620 &decrypted_data));
1618 ExpectArrayBufferMatchesHex(message_hex_str, decrypted_data); 1621 ExpectArrayBufferMatchesHex(message_hex_str, decrypted_data);
1619 } 1622 }
1620 1623
1624 TEST_F(WebCryptoImplTest, MAYBE(AesKwKeyImport)) {
1625
eroman 2013/12/18 02:10:30 Can you delete this extra line?
padolph 2013/12/18 03:21:41 Done.
1626 blink::WebCryptoKey key = blink::WebCryptoKey::createNull();
1627 blink::WebCryptoAlgorithm algorithm =
1628 webcrypto::CreateAlgorithm(blink::WebCryptoAlgorithmIdAesKw);
1629
1630 // Import a 128-bit Key Encryption Key (KEK)
1631 std::string key_raw_hex_in = "025a8cf3f08b4f6c5f33bbc76a471939";
1632 ASSERT_TRUE(ImportKeyInternal(blink::WebCryptoKeyFormatRaw,
1633 HexStringToBytes(key_raw_hex_in),
1634 algorithm,
1635 true,
1636 blink::WebCryptoKeyUsageWrapKey,
1637 &key));
1638 blink::WebArrayBuffer key_raw_out;
1639 EXPECT_TRUE(ExportKeyInternal(blink::WebCryptoKeyFormatRaw,
1640 key,
1641 &key_raw_out));
1642 ExpectArrayBufferMatchesHex(key_raw_hex_in, key_raw_out);
1643
1644 // Import a 192-bit KEK
1645 key_raw_hex_in = "c0192c6466b2370decbb62b2cfef4384544ffeb4d2fbc103";
1646 ASSERT_TRUE(ImportKeyInternal(blink::WebCryptoKeyFormatRaw,
1647 HexStringToBytes(key_raw_hex_in),
1648 algorithm,
1649 true,
1650 blink::WebCryptoKeyUsageWrapKey,
1651 &key));
1652 EXPECT_TRUE(ExportKeyInternal(blink::WebCryptoKeyFormatRaw,
1653 key,
1654 &key_raw_out));
1655 ExpectArrayBufferMatchesHex(key_raw_hex_in, key_raw_out);
1656
1657 // Import a 256-bit Key Encryption Key (KEK)
1658 key_raw_hex_in =
1659 "e11fe66380d90fa9ebefb74e0478e78f95664d0c67ca20ce4a0b5842863ac46f";
1660 ASSERT_TRUE(ImportKeyInternal(blink::WebCryptoKeyFormatRaw,
1661 HexStringToBytes(key_raw_hex_in),
1662 algorithm,
1663 true,
1664 blink::WebCryptoKeyUsageWrapKey,
1665 &key));
1666 EXPECT_TRUE(ExportKeyInternal(blink::WebCryptoKeyFormatRaw,
1667 key,
1668 &key_raw_out));
1669 ExpectArrayBufferMatchesHex(key_raw_hex_in, key_raw_out);
1670
1671 // Fail import of 0 length key
1672 EXPECT_FALSE(ImportKeyInternal(blink::WebCryptoKeyFormatRaw,
1673 HexStringToBytes(""),
1674 algorithm,
1675 true,
1676 blink::WebCryptoKeyUsageWrapKey,
1677 &key));
1678
1679 // Fail import of 124-bit KEK
1680 key_raw_hex_in = "3e4566a2bdaa10cb68134fa66c15ddb";
1681 EXPECT_FALSE(ImportKeyInternal(blink::WebCryptoKeyFormatRaw,
1682 HexStringToBytes(key_raw_hex_in),
1683 algorithm,
1684 true,
1685 blink::WebCryptoKeyUsageWrapKey,
1686 &key));
1687
1688 // Fail import of 200-bit KEK
1689 key_raw_hex_in = "0a1d88608a5ad9fec64f1ada269ebab4baa2feeb8d95638c0e";
1690 EXPECT_FALSE(ImportKeyInternal(blink::WebCryptoKeyFormatRaw,
1691 HexStringToBytes(key_raw_hex_in),
1692 algorithm,
1693 true,
1694 blink::WebCryptoKeyUsageWrapKey,
1695 &key));
1696
1697 // Fail import of 260-bit KEK
1698 key_raw_hex_in =
1699 "72d4e475ff34215416c9ad9c8281247a4d730c5f275ac23f376e73e3bce8d7d5a";
1700 EXPECT_FALSE(ImportKeyInternal(blink::WebCryptoKeyFormatRaw,
1701 HexStringToBytes(key_raw_hex_in),
1702 algorithm,
1703 true,
1704 blink::WebCryptoKeyUsageWrapKey,
1705 &key));
1706 }
1707
1621 } // namespace content 1708 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698