Lines Matching refs:key
126 static from(key) {
127 if (!isCryptoKey(key))
128 throw new ERR_INVALID_ARG_TYPE('key', 'CryptoKey', key);
129 return key[kKeyObject];
361 passphrase = getArrayBufferOrView(passphrase, 'key.passphrase', encoding);
366 // Parses the public key encoding based on an object. keyType must be undefined
367 // when this is used to parse an input encoding and must be a valid key type if
373 // Parses the private key encoding based on an object. keyType must be undefined
374 // when this is used to parse an input encoding and must be a valid key type if
380 function getKeyObjectHandle(key, ctx) {
383 'key',
385 key,
389 if (key.type !== 'private') {
391 throw new ERR_CRYPTO_INVALID_KEY_OBJECT_TYPE(key.type, 'private');
392 if (key.type !== 'public') {
393 throw new ERR_CRYPTO_INVALID_KEY_OBJECT_TYPE(key.type,
398 return key[kHandle];
419 function getKeyObjectHandleFromJwk(key, ctx) {
420 validateObject(key, 'key');
422 key.kty, 'key.kty', ['RSA', 'EC', 'OKP']);
425 if (key.kty === 'OKP') {
426 validateString(key.crv, 'key.crv');
428 key.crv, 'key.crv', ['Ed25519', 'Ed448', 'X25519', 'X448']);
429 validateString(key.x, 'key.x');
432 validateString(key.d, 'key.d');
436 keyData = Buffer.from(key.x, 'base64');
438 keyData = Buffer.from(key.d, 'base64');
440 switch (key.crv) {
462 if (!handle.initEDRaw(key.crv, keyData, keyType)) {
469 if (key.kty === 'EC') {
470 validateString(key.crv, 'key.crv');
472 key.crv, 'key.crv', ['P-256', 'secp256k1', 'P-384', 'P-521']);
473 validateString(key.x, 'key.x');
474 validateString(key.y, 'key.y');
477 kty: key.kty,
478 crv: key.crv,
479 x: key.x,
480 y: key.y,
484 validateString(key.d, 'key.d');
485 jwk.d = key.d;
497 validateString(key.n, 'key.n');
498 validateString(key.e, 'key.e');
501 kty: key.kty,
502 n: key.n,
503 e: key.e,
507 validateString(key.d, 'key.d');
508 validateString(key.p, 'key.p');
509 validateString(key.q, 'key.q');
510 validateString(key.dp, 'key.dp');
511 validateString(key.dq, 'key.dq');
512 validateString(key.qi, 'key.qi');
513 jwk.d = key.d;
514 jwk.p = key.p;
515 jwk.q = key.q;
516 jwk.dp = key.dp;
517 jwk.dq = key.dq;
518 jwk.qi = key.qi;
529 function prepareAsymmetricKey(key, ctx) {
530 if (isKeyObject(key)) {
531 // Best case: A key object, as simple as that.
532 return { data: getKeyObjectHandle(key, ctx) };
533 } else if (isCryptoKey(key)) {
534 return { data: getKeyObjectHandle(key[kKeyObject], ctx) };
535 } else if (isStringOrBuffer(key)) {
537 return { format: kKeyFormatPEM, data: getArrayBufferOrView(key, 'key') };
538 } else if (typeof key === 'object') {
539 const { key: data, encoding, format } = key;
541 // The 'key' property can be a KeyObject as well to allow specifying
542 // additional options such as padding along with the key.
548 validateObject(data, 'key.key');
555 'key.key',
563 data: getArrayBufferOrView(data, 'key', encoding),
564 ...parseKeyEncoding(key, undefined, isPublic),
568 'key',
570 key);
573 function preparePrivateKey(key) {
574 return prepareAsymmetricKey(key, kConsumePrivate);
577 function preparePublicOrPrivateKey(key) {
578 return prepareAsymmetricKey(key, kConsumePublic);
581 function prepareSecretKey(key, encoding, bufferOnly = false) {
583 if (isKeyObject(key)) {
584 if (key.type !== 'secret')
585 throw new ERR_CRYPTO_INVALID_KEY_OBJECT_TYPE(key.type, 'secret');
586 return key[kHandle];
587 } else if (isCryptoKey(key)) {
588 if (key.type !== 'secret')
589 throw new ERR_CRYPTO_INVALID_KEY_OBJECT_TYPE(key.type, 'secret');
590 return key[kKeyObject][kHandle];
593 if (typeof key !== 'string' &&
594 !isArrayBufferView(key) &&
595 !isAnyArrayBuffer(key)) {
597 'key',
599 key);
601 return getArrayBufferOrView(key, 'key', encoding);
604 function createSecretKey(key, encoding) {
605 key = prepareSecretKey(key, encoding, true);
607 handle.init(kKeyTypeSecret, key);
611 function createPublicKey(key) {
613 prepareAsymmetricKey(key, kCreatePublic);
624 function createPrivateKey(key) {
626 prepareAsymmetricKey(key, kCreatePrivate);