curve = 0;
val = njs_vm_object_prop(vm, jwk, &string_crv, &value);
- if (val != NULL && !njs_value_is_undefined(val)) {
- njs_value_string_get(vm, val, &name);
+ if (val == NULL || !njs_value_is_string(val)) {
+ njs_vm_type_error(vm, "Invalid JWK EC key");
+ return NULL;
+ }
- for (e = &njs_webcrypto_curve[0]; e->name.length != 0; e++) {
- if (njs_strstr_eq(&name, &e->name)) {
- curve = e->value;
- break;
- }
+ njs_value_string_get(vm, val, &name);
+
+ for (e = &njs_webcrypto_curve[0]; e->name.length != 0; e++) {
+ if (njs_strstr_eq(&name, &e->name)) {
+ curve = e->value;
+ break;
}
}
extractable: true,
usage: [ "sign" ] },
exception: "TypeError: Invalid JWK EC key" },
+ { key: { fmt: "jwk",
+ key: { kty: "EC",
+ x: "cUUsZRGuVYReGiTQl9MqR7ir6dZIgw-8pM-F0phJWdw",
+ y: "4Nzn_7uNz0AA3U4fhpfVxSD4U5QciGyEoM4r3jC7bjI",
+ d: "E2sW0_4a3QXaSTJ0JKbSUbieKTD1UFtr7i_2CuetP6A" },
+ alg: { name: "ECDSA", namedCurve: "P-256" },
+ extractable: true,
+ usage: [ "sign" ] },
+ exception: "TypeError: Invalid JWK EC key" },
{ key: { fmt: "jwk",
key: { kty: "EC",
x: "cUUsZRGuVYReGiTQl9MqR7ir6dZIgw-8pM-F0phJWdw",
y: "4Nzn_7uNz0AA3U4fhpfVxSD4U5QciGyEoM4r3jC7bjI",
- d: "E2sW0_4a3QXaSTJ0JKbSUbieKTD1UFtr7i_2CuetP6A" },
+ d: "E2sW0_4a3QXaSTJ0JKbSUbieKTD1UFtr7i_2CuetP6A",
+ crv: 256 },
alg: { name: "ECDSA", namedCurve: "P-256" },
extractable: true,
usage: [ "sign" ] },
- exception: "JWK EC curve mismatch" },
+ exception: "TypeError: Invalid JWK EC key" },
{ key: { fmt: "jwk",
key: { kty: "EC",
x: "cUUsZRGuVYReGiTQl9MqR7ir6dZIgw-8pM-F0phJWdw",