| 1 | /** |
| 2 | * @license |
| 3 | * Copyright 2013 Google Inc. All rights reserved. |
| 4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
| 5 | * you may not use this file except in compliance with the License. |
| 6 | * You may obtain a copy of the License at |
| 7 | * |
| 8 | * http://www.apache.org/licenses/LICENSE-2.0 |
| 9 | * |
| 10 | * Unless required by applicable law or agreed to in writing, software |
| 11 | * distributed under the License is distributed on an "AS IS" BASIS, |
| 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 13 | * See the License for the specific language governing permissions and |
| 14 | * limitations under the License. |
| 15 | */ |
| 16 | |
| 17 | /** |
| 18 | * @fileoverview Test data for verifying ECDH. These NIST provided test |
| 19 | * vectors and others can be found at |
| 20 | * http://csrc.nist.gov/groups/STM/cavp/documents/components/ecccdhtestvectors.zip |
| 21 | * @author thaidn@google.com (Thai Duong) |
| 22 | */ |
| 23 | |
| 24 | goog.provide('e2e.ecc.ecdhTestData.NistVectors'); |
| 25 | goog.setTestOnly(); |
| 26 | |
| 27 | goog.require('e2e.ecc.PrimeCurve'); |
| 28 | |
| 29 | |
| 30 | /** |
| 31 | * Test vectors for P-256/P-384/P-521, downloaded from NIST. |
| 32 | * - Q(Qx, Qy) is a public key; |
| 33 | * - d is a private key; |
| 34 | * - Z is the shared secret, which is the X coordinate of dQ. |
| 35 | */ |
| 36 | e2e.ecc.ecdhTestData.NistVectors = [ |
| 37 | { |
| 38 | 'curve': e2e.ecc.PrimeCurve.P_256, |
| 39 | 'Qx': '700c48f77f56584c5cc632ca65640db91b6bacce3a4df6b42ce7cc838833d287', |
| 40 | 'Qy': 'db71e509e3fd9b060ddb20ba5c51dcc5948d46fbf640dfe0441782cab85fa4ac', |
| 41 | 'd': '7d7dc5f71eb29ddaf80d6214632eeae03d9058af1fb6d22ed80badb62bc1a534', |
| 42 | 'Z': '46fc62106420ff012e54a434fbdd2d25ccc5852060561e68040dd7778997bd7b' |
| 43 | }, |
| 44 | { |
| 45 | 'curve': e2e.ecc.PrimeCurve.P_256, |
| 46 | 'Qx': '809f04289c64348c01515eb03d5ce7ac1a8cb9498f5caa50197e58d43a86a7ae', |
| 47 | 'Qy': 'b29d84e811197f25eba8f5194092cb6ff440e26d4421011372461f579271cda3', |
| 48 | 'd': '38f65d6dce47676044d58ce5139582d568f64bb16098d179dbab07741dd5caf5', |
| 49 | 'Z': '057d636096cb80b67a8c038c890e887d1adfa4195e9b3ce241c8a778c59cda67' |
| 50 | }, |
| 51 | { |
| 52 | 'curve': e2e.ecc.PrimeCurve.P_256, |
| 53 | 'Qx': 'df3989b9fa55495719b3cf46dccd28b5153f7808191dd518eff0c3cff2b705ed', |
| 54 | 'Qy': '422294ff46003429d739a33206c8752552c8ba54a270defc06e221e0feaf6ac4', |
| 55 | 'd': '207c43a79bfee03db6f4b944f53d2fb76cc49ef1c9c4d34d51b6c65c4db6932d', |
| 56 | 'Z': '96441259534b80f6aee3d287a6bb17b5094dd4277d9e294f8fe73e48bf2a0024' |
| 57 | }, |
| 58 | { |
| 59 | 'curve': e2e.ecc.PrimeCurve.P_256, |
| 60 | 'Qx': '356c5a444c049a52fee0adeb7e5d82ae5aa83030bfff31bbf8ce2096cf161c4b', |
| 61 | 'Qy': '57d128de8b2a57a094d1a001e572173f96e8866ae352bf29cddaf92fc85b2f92', |
| 62 | 'd': '85a268f9d7772f990c36b42b0a331adc92b5941de0b862d5d89a347cbf8faab0', |
| 63 | 'Z': '1e51373bd2c6044c129c436e742a55be2a668a85ae08441b6756445df5493857' |
| 64 | }, |
| 65 | { |
| 66 | 'curve': e2e.ecc.PrimeCurve.P_384, |
| 67 | 'Qx': 'a7c76b970c3b5fe8b05d2838ae04ab47697b9eaf52e764592efda27fe7513272' + |
| 68 | '734466b400091adbf2d68c58e0c50066', |
| 69 | 'Qy': 'ac68f19f2e1cb879aed43a9969b91a0839c4c38a49749b661efedf243451915e' + |
| 70 | 'd0905a32b060992b468c64766fc8437a', |
| 71 | 'd': '3cc3122a68f0d95027ad38c067916ba0eb8c38894d22e1b15618b6818a661774a' + |
| 72 | 'd463b205da88cf699ab4d43c9cf98a1', |
| 73 | 'Z': '5f9d29dc5e31a163060356213669c8ce132e22f57c9a04f40ba7fcead493b457e' + |
| 74 | '5621e766c40a2e3d4d6a04b25e533f1' |
| 75 | }, |
| 76 | { |
| 77 | 'curve': e2e.ecc.PrimeCurve.P_384, |
| 78 | 'Qx': '30f43fcf2b6b00de53f624f1543090681839717d53c7c955d1d69efaf0349b736' + |
| 79 | '3acb447240101cbb3af6641ce4b88e0', |
| 80 | 'Qy': '25e46c0c54f0162a77efcc27b6ea792002ae2ba82714299c860857a68153ab62e' + |
| 81 | '525ec0530d81b5aa15897981e858757', |
| 82 | 'd': '92860c21bde06165f8e900c687f8ef0a05d14f290b3f07d8b3a8cc6404366e5d51' + |
| 83 | '19cd6d03fb12dc58e89f13df9cd783', |
| 84 | 'Z': 'a23742a2c267d7425fda94b93f93bbcc24791ac51cd8fd501a238d40812f4cbfc5' + |
| 85 | '9aac9520d758cf789c76300c69d2ff' |
| 86 | }, |
| 87 | { |
| 88 | 'curve': e2e.ecc.PrimeCurve.P_521, |
| 89 | 'Qx': '000000685a48e86c79f0f0875f7bc18d25eb5fc8c0b07e5da4f4370f3a9490340' + |
| 90 | '854334b1e1b87fa395464c60626124a4e70d0f785601d37c09870ebf176666877a2' + |
| 91 | '046d', |
| 92 | 'Qy': '000001ba52c56fc8776d9e8f5db4f0cc27636d0b741bbe05400697942e80b7398' + |
| 93 | '84a83bde99e0f6716939e632bc8986fa18dccd443a348b6c3e522497955a4f3c302' + |
| 94 | 'f676', |
| 95 | 'd': '0000017eecc07ab4b329068fba65e56a1f8890aa935e57134ae0ffcce802735151' + |
| 96 | 'f4eac6564f6ee9974c5e6887a1fefee5743ae2241bfeb95d5ce31ddcb6f9edb4d6f' + |
| 97 | 'c47', |
| 98 | 'Z': '005fc70477c3e63bc3954bd0df3ea0d1f41ee21746ed95fc5e1fdf90930d5e1366' + |
| 99 | '72d72cc770742d1711c3c3a4c334a0ad9759436a4d3c5bf6e74b9578fac148c831' |
| 100 | }, |
| 101 | { |
| 102 | 'curve': e2e.ecc.PrimeCurve.P_521, |
| 103 | 'Qx': '000001df277c152108349bc34d539ee0cf06b24f5d3500677b4445453ccc21409' + |
| 104 | '453aafb8a72a0be9ebe54d12270aa51b3ab7f316aa5e74a951c5e53f74cd95fc29a' + |
| 105 | 'ee7a', |
| 106 | 'Qy': '0000013d52f33a9f3c14384d1587fa8abe7aed74bc33749ad9c570b471776422c' + |
| 107 | '7d4505d9b0a96b3bfac041e4c6a6990ae7f700e5b4a6640229112deafa0cd8bb0d0' + |
| 108 | '89b0', |
| 109 | 'd': '000000816f19c1fb10ef94d4a1d81c156ec3d1de08b66761f03f06ee4bb9dcebbb' + |
| 110 | 'fe1eaa1ed49a6a990838d8ed318c14d74cc872f95d05d07ad50f621ceb620cd905c' + |
| 111 | 'fb8', |
| 112 | 'Z': '000b3920ac830ade812c8f96805da2236e002acbbf13596a9ab254d44d0e91b625' + |
| 113 | '5ebf1229f366fb5a05c5884ef46032c26d42189273ca4efa4c3db6bd12a6853759' |
| 114 | }, |
| 115 | { |
| 116 | 'curve': e2e.ecc.PrimeCurve.P_521, |
| 117 | 'Qx': '00000092db3142564d27a5f0006f819908fba1b85038a5bc2509906a497daac67' + |
| 118 | 'fd7aee0fc2daba4e4334eeaef0e0019204b471cd88024f82115d8149cc0cf4f7ce1' + |
| 119 | 'a4d5', |
| 120 | 'Qy': '0000016bad0623f517b158d9881841d2571efbad63f85cbe2e581960c5d670601' + |
| 121 | 'a6760272675a548996217e4ab2b8ebce31d71fca63fcc3c08e91c1d8edd91cf6fe8' + |
| 122 | '45f8', |
| 123 | 'd': '0000012f2e0c6d9e9d117ceb9723bced02eb3d4eebf5feeaf8ee0113ccd8057b13' + |
| 124 | 'ddd416e0b74280c2d0ba8ed291c443bc1b141caf8afb3a71f97f57c225c03e1e4d4' + |
| 125 | '2b0', |
| 126 | 'Z': '006b380a6e95679277cfee4e8353bf96ef2a1ebdd060749f2f046fe571053740bb' + |
| 127 | 'cc9a0b55790bc9ab56c3208aa05ddf746a10a3ad694daae00d980d944aabc6a08f' |
| 128 | }, |
| 129 | { |
| 130 | 'curve': e2e.ecc.PrimeCurve.P_521, |
| 131 | 'Qx': '0000004f38816681771289ce0cb83a5e29a1ab06fc91f786994b23708ff08a08a' + |
| 132 | '0f675b809ae99e9f9967eb1a49f196057d69e50d6dedb4dd2d9a81c02bdcc8f7f51' + |
| 133 | '8460', |
| 134 | 'Qy': '0000009efb244c8b91087de1eed766500f0e81530752d469256ef79f6b965d8a2' + |
| 135 | '232a0c2dbc4e8e1d09214bab38485be6e357c4200d073b52f04e4a16fc6f5247187' + |
| 136 | 'aecb', |
| 137 | 'd': '0000005dc33aeda03c2eb233014ee468dff753b72f73b00991043ea353828ae69d' + |
| 138 | '4cd0fadeda7bb278b535d7c57406ff2e6e473a5a4ff98e90f90d6dadd25100e8d85' + |
| 139 | '666', |
| 140 | 'Z': '00c2bfafcd7fbd3e2fd1c750fdea61e70bd4787a7e68468c574ee99ebc47eedef0' + |
| 141 | '64e8944a73bcb7913dbab5d93dca660d216c553622362794f7a2acc71022bdb16f' |
| 142 | }, |
| 143 | { |
| 144 | 'curve': e2e.ecc.PrimeCurve.P_521, |
| 145 | 'Qx': '000001a32099b02c0bd85371f60b0dd20890e6c7af048c8179890fda308b359db' + |
| 146 | 'bc2b7a832bb8c6526c4af99a7ea3f0b3cb96ae1eb7684132795c478ad6f962e4a6f' + |
| 147 | '446d', |
| 148 | 'Qy': '0000017627357b39e9d7632a1370b3e93c1afb5c851b910eb4ead0c9d387df67c' + |
| 149 | 'de85003e0e427552f1cd09059aad0262e235cce5fba8cedc4fdc1463da76dcd4b6d' + |
| 150 | '1a46', |
| 151 | 'd': '000000df14b1f1432a7b0fb053965fd8643afee26b2451ecb6a8a53a655d5fbe16' + |
| 152 | 'e4c64ce8647225eb11e7fdcb23627471dffc5c2523bd2ae89957cba3a57a23933e5' + |
| 153 | 'a78', |
| 154 | 'Z': '01aaf24e5d47e4080c18c55ea35581cd8da30f1a079565045d2008d51b12d0abb4' + |
| 155 | '411cda7a0785b15d149ed301a3697062f42da237aa7f07e0af3fd00eb1800d9c41' |
| 156 | } |
| 157 | ]; |