Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / components / test / data / webcrypto / bad_ec_keys.json
blobd08c86b6b6b692bbc58583941b35d78c63af7f9d
1 // This file contains incorrect key data in a variety of formats.
2 //   "key" -- either a dictionary for JWK, or hex encoded bytes for PKCS8/SPKI.
3 //   "key_format" -- one of: "jwk", "pkcs8", "spki"
4 //   "error" -- The expected rejection reason when importing the key.
6 // --------------------------------------------------------------------------
7 // Bad public keys
8 // --------------------------------------------------------------------------
9 // TODO(eroman): Group the bad public keys by format type.
11   // Import Error: P-521 is requested by importKey(), however the JWK's curve is for P-256.
12   {
13     "crv": "P-521",
14     "key_format": "jwk",
15     "key": {
16       "kty": "EC",
17       "crv": "P-256",
18       "x": "APUKCHAyUMFfBDyMRumXg0NSRc-Y9PJpSw4vjQKaUU3W8LCG1O2JIADNVZAQeq5pxMCnqV98905XcKB9XbVbzkq0",
19       "y": "APLHcLq4ub5M227NPcJsaY2g0lmc6_PZBPf5yjpV5kcxgQ1zzTFyZOULq6S8KGCFfhbWy7eVAbyeOjK9Fy6opx3u"
20     },
21     "error": "DataError: The JWK's \"crv\" member specifies a different curve than requested"
22   },
24   // Import Error: P-521 is requested by importKey(), however the JWK's algorithm implies P-256
25   {
26     "crv": "P-521",
27     "key_format": "jwk",
28     "key": {
29       "kty": "EC",
30       "alg": "ES256",
31       "crv": "P-521",
32       "x": "APUKCHAyUMFfBDyMRumXg0NSRc-Y9PJpSw4vjQKaUU3W8LCG1O2JIADNVZAQeq5pxMCnqV98905XcKB9XbVbzkq0",
33       "y": "APLHcLq4ub5M227NPcJsaY2g0lmc6_PZBPf5yjpV5kcxgQ1zzTFyZOULq6S8KGCFfhbWy7eVAbyeOjK9Fy6opx3u"
34     },
35     "error": "DataError: The JWK \"alg\" member was inconsistent with that specified by the Web Crypto call"
36   },
38   // Import Error: crv is missing
39   {
40     "crv": "P-384",
41     "key_format": "jwk",
42     "key": {
43       "kty": "EC",
44       "x": "hqwS3Qp_5bgf2uhrEkNdMW75OSo_ULMHq2XZxged0NLYGdwJ4ihhRZwu2Z-6tm-u",
45       "y": "rIREB3qu1tbMrL5npMqs7gtaCUo1dcoS6ktHdMAw_hyHDJJJAj9dxNmtbjM2aMw4"
46     },
47     "error": "DataError: The required JWK member \"crv\" was missing"
48   },
50   // Import Error: x is missing
51   {
52     "crv": "P-384",
53     "key_format": "jwk",
54     "key": {
55       "kty": "EC",
56       "crv": "P-384",
57       "y": "rIREB3qu1tbMrL5npMqs7gtaCUo1dcoS6ktHdMAw_hyHDJJJAj9dxNmtbjM2aMw4"
58     },
59     "error": "DataError: The required JWK member \"x\" was missing"
60   },
62   // Import Error: Invalid key (x was corrupted)
63   {
64     "crv": "P-256",
65     "key_format": "jwk",
66     "key": {
67       "kty": "EC",
68       "crv": "P-256",
69       "x": "nLPPaTA9r8dh1ORoe07PA55tNKuWSvgIENjVWKSo1vc",
70       "y": "LVEjOheIkgqG7gihlix576MX-3h54pfa0hRtuZX6HHg"
71     },
72     "error": "DataError"
73   },
75   // Import Error: Incorrect kty.
76   {
77     "crv": "P-384",
78     "key_format": "jwk",
79     "key": {
80       "kty": "RSA",
81       "crv": "P-384",
82       "x": "hqwS3Qp_5bgf2uhrEkNdMW75OSo_ULMHq2XZxged0NLYGdwJ4ihhRZwu2Z-6tm-u",
83       "y": "rIREB3qu1tbMrL5npMqs7gtaCUo1dcoS6ktHdMAw_hyHDJJJAj9dxNmtbjM2aMw4"
84     },
85     "error": "DataError: The JWK \"kty\" member was not \"EC\""
86   },
88   // Import Error: SPKI data is empty.
89   {
90     "crv": "P-384",
91     "key_format": "spki",
92     "key": "",
93     "error": "DataError"
94   },
96   // Import Error: SPKI data is invalid.
97   {
98     "crv": "P-384",
99     "key_format": "spki",
100     "key": "00010203",
101     "error": "DataError"
102   },
104   // Import Error: SPKI data is invalid (1 byte was corrupted)
105   {
106     "crv": "P-256",
107     "key_format": "spki",
108     "key": "3059301306072A8648CE3D020106082A8748CE3D030107034200049CB0CF69303DAFC761D4E4687B4ECF039E6D34AB964AF80810D8D558A4A8D6F72D51233A1788920A86EE08A1962C79EFA317FB7879E297DAD2146DB995FA1C78",
109     "error": "DataError"
110   },
112   // Import Error: SPKI data is invalid (1 byte truncated from end)
113   {
114     "crv": "P-256",
115     "key_format": "spki",
116     "key": "3059301306072A8648CE3D020106082A8648CE3D030107034200049CB0CF69303DAFC761D4E4687B4ECF039E6D34AB964AF80810D8D558A4A8D6F72D51233A1788920A86EE08A1962C79EFA317FB7879E297DAD2146DB995FA1C",
117     "error": "DataError"
118   },
120   // Import Error: Valid SPKI data was provided, however it is for an RSA key
121   {
122     "crv": "P-256",
123     "key_format": "spki",
124     "key": "30819f300d06092a864886f70d010101050003818d0030818902818100a56e4a0e701017589a5187dc7ea841d156f2ec0e36ad52a44dfeb1e61f7ad991d8c51056ffedb162b4c0f283a12a88a394dff526ab7291cbb307ceabfce0b1dfd5cd9508096d5b2b8b6df5d671ef6377c0921cb23c270a70e2598e6ff89d19f105acc2d3f0cb35f29280e1386b6f64c4ef22e1e1f20d0ce8cffb2249bd9a21370203010001",
125     "error": "DataError"
126   },
128   // Import Error: JWK was given where the "x" member is not zero-padded.
129   {
130     "crv": "P-256",
131     "key_format": "jwk",
132     "key": {
133       "kty": "EC",
134       "crv": "P-256",
135       "x": "2A0aLWA8otEPMLZFAksn2h5JC3HrJNNu4MRksc-b2Q",
136       "y": "lZYURbYRHyeqmHQOEKxrVVJZzL0_BByXwMCwRKzAN_k"
137     },
138     "error": "DataError: The JWK's \"x\" member defines an octet string of length 31 bytes but should be 32"
139   },
141   // Import Error: JWK was given where the "x" member is not zero-padded.
142   {
143     "crv": "P-256",
144     "key_format": "jwk",
145     "key": {
146       "kty": "EC",
147       "crv": "P-256",
148       "x": "V_S9kHyUTFiXiIJNovS89K0ctDtXe2qthCWjs4J7Bb0",
149       "y": "e-6aI45DddCJGrGWqgH83fFjn_eS7s8ygoeZJbh2Bg"
150     },
151     "error": "DataError: The JWK's \"y\" member defines an octet string of length 31 bytes but should be 32"
152   },
154   // Import Error: The SPKI is valid, however contains 3 trailing bytes.
155   {
156     "crv": "P-256",
157     "key_format": "spki",
158     "key": "3059301306072A8648CE3D020106082A8648CE3D030107034200049CB0CF69303DAFC761D4E4687B4ECF039E6D34AB964AF80810D8D558A4A8D6F72D51233A1788920A86EE08A1962C79EFA317FB7879E297DAD2146DB995FA1C78000000",
159     "error": "DataError"
160   },
162 // --------------------------------------------------------------------------
163 // Bad private keys (JWK)
164 // --------------------------------------------------------------------------
166   // The "d" parameter was modified, such that it is no longer consistent with
167   // the public key.
168   {
169     "crv": "P-256",
170     "key_format": "jwk",
171     "key": {
172       "kty": "EC",
173       "crv": "P-256",
174       "d": "H-M5UMX0YRKK6ZLCvf3xxzsWFfVxvVZ-YNGaofSM30I",
175       "x": "fBEMZtz9qAf25p5F3bPHT2mhSE0gPo3Frajpqd18s8c",
176       "y": "DfRImG5RveXRV2-ZkB-cLGqAakf9kHZDpyuDVZfvyMY"
177     },
178     "error": "DataError: The imported EC key is invalid"
179   },
181   // The "d" parameter is empty.
182   {
183     "crv": "P-256",
184     "key_format": "jwk",
185     "key": {
186       "kty": "EC",
187       "crv": "P-256",
188       "d": "",
189       "x": "fBEMZtz9qAf25p5F3bPHT2mhSE0gPo3Frajpqd18s8c",
190       "y": "DfRImG5RveXRV2-ZkB-cLGqAakf9kHZDpyuDVZfvyMY"
191     },
192     "error": "DataError: The JWK's \"d\" member defines an octet string of length 0 bytes but should be 32"
193   },
195   // The y parameter has been modified (no longer a valid point on curve).
196   {
197     "crv": "P-384",
198     "key_format": "jwk",
199     "key": {
200       "kty": "EC",
201       "crv": "P-384",
202       "d": "pJLOj6kAhMIn4aMveXTTnp_2en6HBew0GbNftgdYK-vUYeCxUgrHbsLdTptj665x",
203       "x": "5V_ubEnY1SP1znv5wEJc5P9lBwi33lz7CVkBUjl5p_BCYC2zCFRzU2mBO1w_Xvho",
204       "y": "KPWcxdxQlJKpiNOKjiUZ3j0MT9D72wmT448YUGwXYGxeJCSSRvHOlJg6U2HFvpg-"
205     },
206     "error": "DataError"
207   },
209 // --------------------------------------------------------------------------
210 // Bad private keys (PKCS8)
211 // --------------------------------------------------------------------------
212   
213   // The private key is exactly equal to the order, and the public key is
214   // private key * order.
215   {
216     "crv": "P-256",
217     "key_format": "pkcs8",
218     "key": "3066020100301306072A8648CE3D020106082A8648CE3D030107044C304A0201010420FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551A12303210000FFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551",
219     "error": "DataError"
220   },
222   // The private key is exactly equal to the order, and the public key is
223   // omitted.
224   {
225     "crv": "P-256",
226     "key_format": "pkcs8",
227     "key": "3041020100301306072A8648CE3D020106082A8648CE3D030107042730250201010420FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551",
228     "error": "DataError: The imported EC key is invalid"
229   },
231   // The private key is exactly equal to the order + 11, and the public key is
232   // private key * order.
233   {
234     "crv": "P-521",
235     "key_format": "pkcs8",
236     "key": "3081EE020100301006072A8648CE3D020106052B810400230481D63081D3020101044201FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA51868783BF2F966B7FCC0148F709A5D03BB5C9B8899C47AEBB6FB71E91386414A181890381860004008A75841259FDEDFF546F1A39573B4315CFED5DC7ED7C17849543EF2C54F2991652F3DBC5332663DA1BD19B1AEBE3191085015C024FA4C9A902ECC0E02DDA0CDB9A0096FB303FCBBA2129849D0CA877054FB2293ADD566210BD0493ED2E95D4E0B9B82B1BC8A90E8B42A4AB3892331914A95336DCAC80E3F4819B5D58874F92CE48C808",
237     "error": "DataError: The imported EC key is invalid"
238   },
240   // The private key is exactly equal to the order + 11, and the public key is
241   // omitted.
242   {
243     "crv": "P-521",
244     "key_format": "pkcs8",
245     "key": "3060020100301006072A8648CE3D020106052B8104002304493047020101044201FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA51868783BF2F966B7FCC0148F709A5D03BB5C9B8899C47AEBB6FB71E91386414",
246     "error": "DataError: The imported EC key is invalid"
247   }