Spec-Zone.ru › Deno 2

crypto

Модуль node:crypto предоставляет криптографические функции, включая набор обёрток для функций хеширования, HMAC, шифрования, расшифрования, подписания и проверки подписей OpenSSL.

const { createHmac } = await import('node:crypto');

const secret = 'abcdefg';
const hash = createHmac('sha256', secret)
               .update('I love cupcakes')
               .digest('hex');
console.log(hash);
// Prints:
//   c0fa1bc00531bd78ef38c628449c5102aeabd49b5dc3a2a516ea6ea959d6658e

Использование в Deno

import * as mod from "node:crypto";

класс Certificate

Использование в Deno

import { Certificate } from "node:crypto";
Совместимость с Deno

Методы являются неработающими заглушками.

SPKAC — это механизм запроса на подписание сертификата, первоначально реализованный Netscape и формально описанный в составе элемента keygen в HTML5.

<keygen> устарел начиная с версии HTML 5.2, поэтому в новых проектах этот элемент больше не следует использовать.

Модуль node:crypto предоставляет класс Certificate для работы с данными SPKAC. Чаще всего он используется для обработки вывода, сформированного элементом <keygen> HTML5. Node.js использует внутри реализацию SPKAC из OpenSSL.

Методы

exportChallenge(spkac: BinaryLike): Buffer
устарело
exportPublicKey(
spkac: BinaryLike,
encoding?: string,
): Buffer
устарело
verifySpkac(spkac: ArrayBufferView): boolean
устарело

Статические методы

exportChallenge(spkac: BinaryLike): Buffer
const { Certificate } = await import('node:crypto');
const spkac = getSpkacSomehow();
const challenge = Certificate.exportChallenge(spkac);
console.log(challenge.toString('utf8'));
// Prints: the challenge as a UTF8 string
exportPublicKey(
spkac: BinaryLike,
encoding?: string,
): Buffer
const { Certificate } = await import('node:crypto');
const spkac = getSpkacSomehow();
const publicKey = Certificate.exportPublicKey(spkac);
console.log(publicKey);
// Prints: the public key as <Buffer ...>
verifySpkac(spkac: ArrayBufferView): boolean
import { Buffer } from 'node:buffer';
const { Certificate } = await import('node:crypto');

const spkac = getSpkacSomehow();
console.log(Certificate.verifySpkac(Buffer.from(spkac)));
// Prints: true or false

класс Cipher

наследует stream.Transform

Использование в Deno

import { Cipher } from "node:crypto";

Экземпляры класса Cipher используются для шифрования данных. Класс можно использовать одним из двух способов:

  • Как stream, доступный и для чтения, и для записи: незашифрованные данные записываются, а на стороне чтения выдаются зашифрованные данные; или
  • С помощью методов cipher.update() и cipher.final() для получения зашифрованных данных.

Метод createCipheriv используется для создания экземпляров Cipher. Объекты Cipher не следует создавать напрямую с помощью ключевого слова new.

Пример: использование объектов Cipher в качестве потоков:

const {
  scrypt,
  randomFill,
  createCipheriv,
} = await import('node:crypto');

const algorithm = 'aes-192-cbc';
const password = 'Password used to generate key';

// First, we'll generate the key. The key length is dependent on the algorithm.
// In this case for aes192, it is 24 bytes (192 bits).
scrypt(password, 'salt', 24, (err, key) => {
  if (err) throw err;
  // Then, we'll generate a random initialization vector
  randomFill(new Uint8Array(16), (err, iv) => {
    if (err) throw err;

    // Once we have the key and iv, we can create and use the cipher...
    const cipher = createCipheriv(algorithm, key, iv);

    let encrypted = '';
    cipher.setEncoding('hex');

    cipher.on('data', (chunk) => encrypted += chunk);
    cipher.on('end', () => console.log(encrypted));

    cipher.write('some clear text data');
    cipher.end();
  });
});

Пример: использование Cipher и связанных потоков:

import {
  createReadStream,
  createWriteStream,
} from 'node:fs';

import {
  pipeline,
} from 'node:stream';

const {
  scrypt,
  randomFill,
  createCipheriv,
} = await import('node:crypto');

const algorithm = 'aes-192-cbc';
const password = 'Password used to generate key';

// First, we'll generate the key. The key length is dependent on the algorithm.
// In this case for aes192, it is 24 bytes (192 bits).
scrypt(password, 'salt', 24, (err, key) => {
  if (err) throw err;
  // Then, we'll generate a random initialization vector
  randomFill(new Uint8Array(16), (err, iv) => {
    if (err) throw err;

    const cipher = createCipheriv(algorithm, key, iv);

    const input = createReadStream('test.js');
    const output = createWriteStream('test.enc');

    pipeline(input, cipher, output, (err) => {
      if (err) throw err;
    });
  });
});

Пример: использование методов cipher.update() и cipher.final():

const {
  scrypt,
  randomFill,
  createCipheriv,
} = await import('node:crypto');

const algorithm = 'aes-192-cbc';
const password = 'Password used to generate key';

// First, we'll generate the key. The key length is dependent on the algorithm.
// In this case for aes192, it is 24 bytes (192 bits).
scrypt(password, 'salt', 24, (err, key) => {
  if (err) throw err;
  // Then, we'll generate a random initialization vector
  randomFill(new Uint8Array(16), (err, iv) => {
    if (err) throw err;

    const cipher = createCipheriv(algorithm, key, iv);

    let encrypted = cipher.update('some clear text data', 'utf8', 'hex');
    encrypted += cipher.final('hex');
    console.log(encrypted);
  });
});

Конструкторы

Cipher()
новый

Методы

final(): Buffer

После вызова метода cipher.final() объект Cipher больше нельзя использовать для шифрования данных. Повторный вызов cipher.final() приведёт к ошибке.

final(outputEncoding: BufferEncoding): string
setAutoPadding(autoPadding?: boolean): this

При использовании блочных алгоритмов шифрования класс Cipher автоматически добавляет к входным данным дополнение до соответствующего размера блока. Чтобы отключить дополнение по умолчанию, вызовите cipher.setAutoPadding(false).

Если autoPadding имеет значение false, длина всех входных данных должна быть кратна размеру блока шифра, иначе cipher.final() вызовет ошибку. Отключение автоматического дополнения полезно для нестандартного заполнения, например при использовании 0x0 вместо дополнения PKCS.

Метод cipher.setAutoPadding() необходимо вызвать до cipher.final().

update(data: BinaryLike): Buffer

Обновляет шифр данными data. Если указан аргумент inputEncoding, аргумент data представляет собой строку в заданной кодировке. Если аргумент inputEncoding не указан, data должен иметь тип Buffer, TypedArray или DataView. Если data имеет тип Buffer, TypedArray или DataView, то inputEncoding игнорируется.

Параметр outputEncoding задаёт формат вывода зашифрованных данных. Если указан outputEncoding, возвращается строка в заданной кодировке. Если outputEncoding не указан, возвращается Buffer.

Метод cipher.update() можно вызывать несколько раз с новыми данными, пока не будет вызван cipher.final(). Вызов cipher.update() после cipher.final() приведёт к ошибке.

update(
data: string,
inputEncoding: Encoding,
): Buffer
update(
data: ArrayBufferView,
inputEncoding: undefined,
outputEncoding: Encoding,
): string
update(
data: string,
inputEncoding: Encoding | undefined,
outputEncoding: Encoding,
): string

класс Decipher

наследует stream.Transform

Использование в Deno

import { Decipher } from "node:crypto";

Экземпляры класса Decipher используются для расшифрования данных. Класс можно использовать одним из двух способов:

  • Как stream, доступный и для чтения, и для записи: зашифрованные данные записываются, а на стороне чтения выдаются расшифрованные данные; или
  • С помощью методов decipher.update() и decipher.final() для получения расшифрованных данных.

Метод createDecipheriv используется для создания экземпляров Decipher. Объекты Decipher не следует создавать напрямую с помощью ключевого слова new.

Пример: использование объектов Decipher в качестве потоков:

import { Buffer } from 'node:buffer';
const {
  scryptSync,
  createDecipheriv,
} = await import('node:crypto');

const algorithm = 'aes-192-cbc';
const password = 'Password used to generate key';
// Key length is dependent on the algorithm. In this case for aes192, it is
// 24 bytes (192 bits).
// Use the async `crypto.scrypt()` instead.
const key = scryptSync(password, 'salt', 24);
// The IV is usually passed along with the ciphertext.
const iv = Buffer.alloc(16, 0); // Initialization vector.

const decipher = createDecipheriv(algorithm, key, iv);

let decrypted = '';
decipher.on('readable', () => {
  let chunk;
  while (null !== (chunk = decipher.read())) {
    decrypted += chunk.toString('utf8');
  }
});
decipher.on('end', () => {
  console.log(decrypted);
  // Prints: some clear text data
});

// Encrypted with same algorithm, key and iv.
const encrypted =
  'e5f79c5915c02171eec6b212d5520d44480993d7d622a7c4c2da32f6efda0ffa';
decipher.write(encrypted, 'hex');
decipher.end();

Пример: использование Decipher и связанных потоков:

import {
  createReadStream,
  createWriteStream,
} from 'node:fs';
import { Buffer } from 'node:buffer';
const {
  scryptSync,
  createDecipheriv,
} = await import('node:crypto');

const algorithm = 'aes-192-cbc';
const password = 'Password used to generate key';
// Use the async `crypto.scrypt()` instead.
const key = scryptSync(password, 'salt', 24);
// The IV is usually passed along with the ciphertext.
const iv = Buffer.alloc(16, 0); // Initialization vector.

const decipher = createDecipheriv(algorithm, key, iv);

const input = createReadStream('test.enc');
const output = createWriteStream('test.js');

input.pipe(decipher).pipe(output);

Пример: использование методов decipher.update() и decipher.final():

import { Buffer } from 'node:buffer';
const {
  scryptSync,
  createDecipheriv,
} = await import('node:crypto');

const algorithm = 'aes-192-cbc';
const password = 'Password used to generate key';
// Use the async `crypto.scrypt()` instead.
const key = scryptSync(password, 'salt', 24);
// The IV is usually passed along with the ciphertext.
const iv = Buffer.alloc(16, 0); // Initialization vector.

const decipher = createDecipheriv(algorithm, key, iv);

// Encrypted using same algorithm, key and iv.
const encrypted =
  'e5f79c5915c02171eec6b212d5520d44480993d7d622a7c4c2da32f6efda0ffa';
let decrypted = decipher.update(encrypted, 'hex', 'utf8');
decrypted += decipher.final('utf8');
console.log(decrypted);
// Prints: some clear text data

Конструкторы

Decipher()
новый

Методы

final(): Buffer

После вызова метода decipher.final() объект Decipher больше нельзя использовать для расшифрования данных. Повторный вызов decipher.final() приведёт к ошибке.

final(outputEncoding: BufferEncoding): string
setAutoPadding(auto_padding?: boolean): this

Если данные были зашифрованы без стандартного блочного дополнения, вызов decipher.setAutoPadding(false) отключит автоматическое дополнение и не позволит decipher.final() проверять наличие дополнения и удалять его.

Отключение автоматического дополнения будет работать, только если длина входных данных кратна размеру блока шифра.

Метод decipher.setAutoPadding() необходимо вызвать до decipher.final().

update(data: ArrayBufferView): Buffer

Обновляет средство расшифрования данными data. Если указан аргумент inputEncoding, аргумент data представляет собой строку в заданной кодировке. Если аргумент inputEncoding не указан, data должен иметь тип Buffer. Если data имеет тип Buffer, то inputEncoding игнорируется.

Параметр outputEncoding задаёт формат вывода зашифрованных данных. Если указан outputEncoding, возвращается строка в заданной кодировке. Если outputEncoding не указан, возвращается Buffer.

Метод decipher.update() можно вызывать несколько раз с новыми данными, пока не будет вызван decipher.final(). Вызов decipher.update() после decipher.final() приведёт к ошибке.

update(
data: string,
inputEncoding: Encoding,
): Buffer
update(
data: ArrayBufferView,
inputEncoding: undefined,
outputEncoding: Encoding,
): string
update(
data: string,
inputEncoding: Encoding | undefined,
outputEncoding: Encoding,
): string

класс DiffieHellman

Использование в Deno

import { DiffieHellman } from "node:crypto";

Класс DiffieHellman предназначен для создания обмена ключами по алгоритму Диффи — Хеллмана.

Экземпляры класса DiffieHellman можно создать с помощью функции createDiffieHellman.

import assert from 'node:assert';

const {
  createDiffieHellman,
} = await import('node:crypto');

// Generate Alice's keys...
const alice = createDiffieHellman(2048);
const aliceKey = alice.generateKeys();

// Generate Bob's keys...
const bob = createDiffieHellman(alice.getPrime(), alice.getGenerator());
const bobKey = bob.generateKeys();

// Exchange and generate the secret...
const aliceSecret = alice.computeSecret(bobKey);
const bobSecret = bob.computeSecret(aliceKey);

// OK
assert.strictEqual(aliceSecret.toString('hex'), bobSecret.toString('hex'));

Конструкторы

DiffieHellman()
новый

Свойства

verifyError: number

Битовая маска, содержащая предупреждения и/или ошибки, возникшие при проверке во время инициализации объекта DiffieHellman.

Для этого свойства допустимы следующие значения (определённые в модуле node:constants):

  • DH_CHECK_P_NOT_SAFE_PRIME
  • DH_CHECK_P_NOT_PRIME
  • DH_UNABLE_TO_CHECK_GENERATOR
  • DH_NOT_SUITABLE_GENERATOR

Методы

computeSecret(
otherPublicKey: ArrayBufferView,
inputEncoding?: null,
outputEncoding?: null,
): Buffer

Вычисляет общий секрет, используя otherPublicKey в качестве открытого ключа другой стороны, и возвращает вычисленный общий секрет. Переданный ключ интерпретируется с использованием указанной inputEncoding, а секрет кодируется с использованием указанной outputEncoding. Если inputEncoding не задан, ожидается, что otherPublicKey имеет тип Buffer, TypedArray или DataView.

Если задан outputEncoding, возвращается строка; в противном случае возвращается Buffer.

computeSecret(
otherPublicKey: string,
inputEncoding: BinaryToTextEncoding,
outputEncoding?: null,
): Buffer
computeSecret(
otherPublicKey: ArrayBufferView,
inputEncoding: null,
outputEncoding: BinaryToTextEncoding,
): string
computeSecret(
otherPublicKey: string,
inputEncoding: BinaryToTextEncoding,
outputEncoding: BinaryToTextEncoding,
): string
generateKeys(): Buffer

Генерирует закрытый и открытый ключи Диффи — Хеллмана, если они ещё не были сгенерированы или вычислены, и возвращает открытый ключ в указанном формате encoding. Этот ключ следует передать другой стороне. Если указан encoding, возвращается строка; в противном случае возвращается Buffer.

Эта функция представляет собой тонкую обёртку над DH_generate_key(). В частности, если закрытый ключ уже сгенерирован или задан, вызов этой функции обновляет только открытый ключ, но не генерирует новый закрытый ключ.

generateKeys(encoding: BinaryToTextEncoding): string
getGenerator(): Buffer

Возвращает генератор Диффи — Хеллмана в указанном формате encoding. Если указан encoding, возвращается строка; в противном случае возвращается Buffer.

getGenerator(encoding: BinaryToTextEncoding): string
getPrime(): Buffer

Возвращает простое число Диффи — Хеллмана в указанном формате encoding. Если указан encoding, возвращается строка; в противном случае возвращается Buffer.

getPrime(encoding: BinaryToTextEncoding): string
getPrivateKey(): Buffer

Возвращает закрытый ключ Диффи — Хеллмана в указанном формате encoding. Если указан encoding, возвращается строка; в противном случае возвращается Buffer.

getPrivateKey(encoding: BinaryToTextEncoding): string
getPublicKey(): Buffer

Возвращает открытый ключ Диффи — Хеллмана в указанном формате encoding. Если указан encoding, возвращается строка; в противном случае возвращается Buffer.

getPublicKey(encoding: BinaryToTextEncoding): string
setPrivateKey(privateKey: ArrayBufferView): void

Задаёт закрытый ключ Диффи — Хеллмана. Если указан аргумент encoding, ожидается, что privateKey будет строкой. Если encoding не задан, ожидается, что privateKey имеет тип Buffer, TypedArray или DataView.

Эта функция не вычисляет автоматически соответствующий открытый ключ. Для ручного задания или автоматического вычисления открытого ключа можно использовать diffieHellman.setPublicKey() или diffieHellman.generateKeys().

setPrivateKey(
privateKey: string,
encoding: BufferEncoding,
): void
setPublicKey(publicKey: ArrayBufferView): void

Задаёт открытый ключ Диффи — Хеллмана. Если указан аргумент encoding, ожидается, что publicKey будет строкой. Если encoding не задан, ожидается, что publicKey имеет тип Buffer, TypedArray или DataView.

setPublicKey(
publicKey: string,
encoding: BufferEncoding,
): void

класс ECDH

Использование в Deno

import { ECDH } from "node:crypto";
Совместимость с Deno

Метод convertKey — неработающая заглушка.

Класс ECDH предназначен для создания обмена ключами по протоколу Диффи — Хеллмана на эллиптических кривых (ECDH).

Экземпляры класса ECDH можно создать с помощью функции createECDH.

import assert from 'node:assert';

const {
  createECDH,
} = await import('node:crypto');

// Generate Alice's keys...
const alice = createECDH('secp521r1');
const aliceKey = alice.generateKeys();

// Generate Bob's keys...
const bob = createECDH('secp521r1');
const bobKey = bob.generateKeys();

// Exchange and generate the secret...
const aliceSecret = alice.computeSecret(bobKey);
const bobSecret = bob.computeSecret(aliceKey);

assert.strictEqual(aliceSecret.toString('hex'), bobSecret.toString('hex'));
// OK

Конструкторы

ECDH()
new

Методы

computeSecret(otherPublicKey: ArrayBufferView): Buffer

Вычисляет общий секрет, используя otherPublicKey в качестве открытого ключа другой стороны, и возвращает вычисленный общий секрет. Переданный ключ интерпретируется с использованием указанного inputEncoding, а возвращаемый секрет кодируется с использованием указанного outputEncoding. Если inputEncoding не задан, предполагается, что otherPublicKey имеет тип Buffer, TypedArray или DataView.

Если задан outputEncoding, будет возвращена строка; в противном случае возвращается Buffer.

ecdh.computeSecret выбрасывает ошибку ERR_CRYPTO_ECDH_INVALID_PUBLIC_KEY, если otherPublicKey находится за пределами эллиптической кривой. Поскольку otherPublicKey обычно передаётся удалённым пользователем по небезопасной сети, обязательно предусмотрите соответствующую обработку этого исключения.

computeSecret(
otherPublicKey: string,
inputEncoding: BinaryToTextEncoding,
): Buffer
computeSecret(
otherPublicKey: ArrayBufferView,
outputEncoding: BinaryToTextEncoding,
): string
computeSecret(
otherPublicKey: string,
inputEncoding: BinaryToTextEncoding,
outputEncoding: BinaryToTextEncoding,
): string
generateKeys(): Buffer

Создаёт значения закрытого и открытого ключей для протокола Диффи — Хеллмана на эллиптических кривых и возвращает открытый ключ в указанном формате format и encoding. Этот ключ следует передать другой стороне.

Аргумент format задаёт кодирование точки и может иметь значение 'compressed' или 'uncompressed'. Если format не задан, точка будет возвращена в формате 'uncompressed'.

Если задан encoding, возвращается строка; в противном случае возвращается Buffer.

generateKeys(
encoding: BinaryToTextEncoding,
format?: ECDHKeyFormat,
): string
getPrivateKey(): Buffer

Если задан encoding, возвращается строка; в противном случае возвращается Buffer.

getPrivateKey(encoding: BinaryToTextEncoding): string
getPublicKey(
encoding?: null,
format?: ECDHKeyFormat,
): Buffer

Аргумент format задаёт кодирование точки и может иметь значение 'compressed' или 'uncompressed'. Если format не задан, точка будет возвращена в формате 'uncompressed'.

Если задан encoding, возвращается строка; в противном случае возвращается Buffer.

getPublicKey(
encoding: BinaryToTextEncoding,
format?: ECDHKeyFormat,
): string
setPrivateKey(privateKey: ArrayBufferView): void

Задаёт закрытый ключ для протокола Диффи — Хеллмана на эллиптических кривых. Если задан encoding, предполагается, что privateKey имеет строковый тип; в противном случае предполагается, что privateKey имеет тип Buffer, TypedArray или DataView.

Если privateKey недопустим для кривой, указанной при создании объекта ECDH, выбрасывается ошибка. После установки закрытого ключа связанная с ним открытая точка (ключ) также создаётся и устанавливается в объекте ECDH.

setPrivateKey(
privateKey: string,
encoding: BinaryToTextEncoding,
): void

Статические методы

convertKey(
key: BinaryLike,
curve: string,
inputEncoding?: BinaryToTextEncoding,
outputEncoding?:
"latin1"
| "hex"
| "base64"
| "base64url"
,
format?:
"uncompressed"
| "compressed"
| "hybrid"
,
): Buffer | string

Преобразует открытый ключ для протокола Диффи — Хеллмана на эллиптических кривых, заданный параметрами key и curve, в формат, указанный в format. Аргумент format задаёт кодирование точки и может иметь значение 'compressed', 'uncompressed' или 'hybrid'. Переданный ключ интерпретируется с использованием указанного inputEncoding, а возвращаемый ключ кодируется с использованием указанного outputEncoding.

Используйте getCurves, чтобы получить список доступных имён кривых. В последних версиях OpenSSL команда openssl ecparam -list_curves также выводит имя и описание каждой доступной эллиптической кривой.

Если format не задан, точка будет возвращена в формате 'uncompressed'.

Если inputEncoding не задан, предполагается, что key имеет тип Buffer, TypedArray или DataView.

Пример (снятие сжатия с ключа):

const {
  createECDH,
  ECDH,
} = await import('node:crypto');

const ecdh = createECDH('secp256k1');
ecdh.generateKeys();

const compressedKey = ecdh.getPublicKey('hex', 'compressed');

const uncompressedKey = ECDH.convertKey(compressedKey,
                                        'secp256k1',
                                        'hex',
                                        'hex',
                                        'uncompressed');

// The converted key and the uncompressed public key should be the same
console.log(uncompressedKey === ecdh.getPublicKey('hex'));

класс Hash

наследует stream.Transform

Использование в Deno

import { Hash } from "node:crypto";

Класс Hash предназначен для вычисления хеш-дайджестов данных. Его можно использовать одним из двух способов:

  • Как stream с возможностью чтения и записи: данные записываются, чтобы на стороне чтения получить вычисленный хеш-дайджест, либо
  • С помощью методов hash.update() и hash.digest() для вычисления хеша.

Для создания экземпляров Hash используется метод createHash. Объекты Hash нельзя создавать напрямую с помощью ключевого слова new.

Пример: использование объектов Hash в качестве потоков:

const {
  createHash,
} = await import('node:crypto');

const hash = createHash('sha256');

hash.on('readable', () => {
  // Only one element is going to be produced by the
  // hash stream.
  const data = hash.read();
  if (data) {
    console.log(data.toString('hex'));
    // Prints:
    //   6a2da20943931e9834fc12cfe5bb47bbd9ae43489a30726962b576f4e3993e50
  }
});

hash.write('some data to hash');
hash.end();

Пример: использование методов Hash и потоков с передачей данных:

import { createReadStream } from 'node:fs';
import { stdout } from 'node:process';
const { createHash } = await import('node:crypto');

const hash = createHash('sha256');

const input = createReadStream('test.js');
input.pipe(hash).setEncoding('hex').pipe(stdout);

Пример: использование методов hash.update() и hash.digest():

const {
  createHash,
} = await import('node:crypto');

const hash = createHash('sha256');

hash.update('some data to hash');
console.log(hash.digest('hex'));
// Prints:
//   6a2da20943931e9834fc12cfe5bb47bbd9ae43489a30726962b576f4e3993e50

Конструкторы

Hash()
new

Методы

copy(options?: HashOptions): Hash

Создаёт новый объект Hash, содержащий глубокую копию внутреннего состояния текущего объекта Hash.

Необязательный аргумент options управляет поведением потока. Для хеш-функций XOF, таких как 'shake256', параметр outputLength можно использовать для указания требуемой длины выходных данных в байтах.

При попытке скопировать объект Hash после вызова его метода hash.digest() выбрасывается ошибка.

// Calculate a rolling hash.
const {
  createHash,
} = await import('node:crypto');

const hash = createHash('sha256');

hash.update('one');
console.log(hash.copy().digest('hex'));

hash.update('two');
console.log(hash.copy().digest('hex'));

hash.update('three');
console.log(hash.copy().digest('hex'));

// Etc.
digest(): Buffer

Вычисляет дайджест всех переданных для хеширования данных (с помощью метода hash.update()). Если задан encoding, будет возвращена строка; в противном случае возвращается Buffer.

После вызова метода hash.digest() объект Hash больше нельзя использовать. Повторный вызов приведёт к ошибке.

digest(encoding: BinaryToTextEncoding): string
update(data: BinaryLike): Hash

Обновляет хешируемое содержимое указанными данными data, кодировка которых задаётся параметром inputEncoding. Если encoding не задан, а data — строка, применяется кодировка 'utf8'. Если data имеет тип Buffer, TypedArray или DataView, параметр inputEncoding игнорируется.

Этот метод можно вызывать многократно, добавляя новые данные по мере их поступления в потоке.

update(
data: string,
inputEncoding: Encoding,
): Hash

класс KeyObject

Использование в Deno

import { KeyObject } from "node:crypto";
Совместимость с Deno

Следующие элементы представлены неработающими заглушками:

  • from
  • symmetricKeySize
  • equals

Node.js использует класс KeyObject для представления симметричного или асимметричного ключа; для ключей каждого типа доступны разные функции. Методы createSecretKey, createPublicKey и createPrivateKey используются для создания экземпляров KeyObject. Объекты KeyObject нельзя создавать напрямую с помощью ключевого слова new.

Большинству приложений следует использовать новый API KeyObject вместо передачи ключей в виде строк или Buffer из-за повышенного уровня безопасности.

Экземпляры KeyObject можно передавать в другие потоки выполнения с помощью postMessage(). Получатель получает клонированный объект KeyObject, а KeyObject не нужно указывать в аргументе transferList.

Конструкторы

KeyObject()
new

Свойства

asymmetricKeyDetails: AsymmetricKeyDetails | undefined
необязательное

Это свойство существует только для асимметричных ключей. В зависимости от типа ключа этот объект содержит сведения о нём. Ни одна из сведений, полученных с помощью этого свойства, не может использоваться для однозначной идентификации ключа или нарушения его безопасности.

Для ключей RSA-PSS, если материал ключа содержит последовательность RSASSA-PSS-params, будут заданы свойства hashAlgorithm, mgf1HashAlgorithm и saltLength.

Это API может предоставлять дополнительные сведения о ключе через другие атрибуты.

asymmetricKeyType: KeyType | undefined
необязательное

Для асимметричных ключей это свойство определяет тип ключа. Поддерживаются следующие типы ключей:

  • 'rsa' (OID 1.2.840.113549.1.1.1)
  • 'rsa-pss' (OID 1.2.840.113549.1.1.10)
  • 'dsa' (OID 1.2.840.10040.4.1)
  • 'ec' (OID 1.2.840.10045.2.1)
  • 'x25519' (OID 1.3.101.110)
  • 'x448' (OID 1.3.101.111)
  • 'ed25519' (OID 1.3.101.112)
  • 'ed448' (OID 1.3.101.113)
  • 'dh' (OID 1.2.840.113549.1.3.1)

Для нераспознанных типов KeyObject и симметричных ключей это свойство имеет значение undefined.

symmetricKeySize: number | undefined
необязательное

Для секретных ключей это свойство определяет размер ключа в байтах. Для асимметричных ключей это свойство имеет значение undefined.

type: KeyObjectType

В зависимости от типа объекта KeyObject это свойство имеет значение 'secret' для секретных (симметричных) ключей, 'public' для открытых (асимметричных) ключей или 'private' для закрытых (асимметричных) ключей.

Методы

equals(otherKeyObject: KeyObject): boolean

Возвращает true или false в зависимости от того, совпадают ли тип, значение и параметры ключей. Этот метод не работает за постоянное время.

export(options: KeyExportOptions<"pem">): string | Buffer

Для симметричных ключей доступны следующие варианты кодирования:

Для открытых ключей доступны следующие варианты кодирования:

Для закрытых ключей доступны следующие варианты кодирования:

Тип результата зависит от выбранного формата кодирования: для PEM результатом будет строка, для DER — буфер с данными в формате DER, а для JWK — объект.

Если выбран формат кодирования JWK, все остальные параметры кодирования игнорируются.

Ключи типов PKCS#1, SEC1 и PKCS#8 можно зашифровать, используя сочетание параметров cipher и format. Параметр type для PKCS#8 можно использовать с любым format, чтобы зашифровать ключ любого алгоритма (RSA, EC или DH), указав cipher. Ключи PKCS#1 и SEC1 можно зашифровать, указав cipher, только при использовании формата PEM format. Для максимальной совместимости используйте PKCS#8 для зашифрованных закрытых ключей. Поскольку PKCS#8 определяет собственный механизм шифрования, при шифровании ключа PKCS#8 шифрование на уровне PEM не поддерживается. Сведения о шифровании PKCS#8 см. в RFC 5208, а о шифровании PKCS#1 и SEC1 — в RFC 1421.

export(options?: KeyExportOptions<"der">): Buffer
export(options?: JwkKeyExportOptions): JsonWebKey
toCryptoKey(
algorithm:
webcrypto.AlgorithmIdentifier
| webcrypto.RsaHashedImportParams
| webcrypto.EcKeyImportParams
| webcrypto.HmacImportParams
,
extractable: boolean,
keyUsages: readonly webcrypto.KeyUsage[],
): webcrypto.CryptoKey

Преобразует экземпляр KeyObject в CryptoKey.

Статические методы

from(key: webcrypto.CryptoKey): KeyObject

Пример: преобразование экземпляра CryptoKey в KeyObject:

const { KeyObject } = await import('node:crypto');
const { subtle } = globalThis.crypto;

const key = await subtle.generateKey({
  name: 'HMAC',
  hash: 'SHA-256',
  length: 256,
}, true, ['sign', 'verify']);

const keyObject = KeyObject.from(key);
console.log(keyObject.symmetricKeySize);
// Prints: 32 (symmetric key size in bytes)

класс Sign

наследует stream.Writable

Использование в Deno

import { Sign } from "node:crypto";
Совместимость с Deno

Методы sign и verify не поддерживают входные данные, не относящиеся к BinaryLike.

Класс Sign предназначен для создания цифровых подписей. Его можно использовать одним из двух способов:

  • Как записываемый stream: данные для подписания записываются в поток, а метод sign.sign() используется для создания и возврата подписи, либо
  • С помощью методов sign.update() и sign.sign() для создания подписи.

Для создания экземпляров Sign используется метод createSign. В качестве аргумента передаётся строковое имя используемой хеш-функции. Объекты Sign нельзя создавать напрямую с помощью ключевого слова new.

Пример: использование объектов Sign и Verify в качестве потоков:

const {
  generateKeyPairSync,
  createSign,
  createVerify,
} = await import('node:crypto');

const { privateKey, publicKey } = generateKeyPairSync('ec', {
  namedCurve: 'sect239k1',
});

const sign = createSign('SHA256');
sign.write('some data to sign');
sign.end();
const signature = sign.sign(privateKey, 'hex');

const verify = createVerify('SHA256');
verify.write('some data to sign');
verify.end();
console.log(verify.verify(publicKey, signature, 'hex'));
// Prints: true

Пример: использование методов sign.update() и verify.update():

const {
  generateKeyPairSync,
  createSign,
  createVerify,
} = await import('node:crypto');

const { privateKey, publicKey } = generateKeyPairSync('rsa', {
  modulusLength: 2048,
});

const sign = createSign('SHA256');
sign.update('some data to sign');
sign.end();
const signature = sign.sign(privateKey);

const verify = createVerify('SHA256');
verify.update('some data to sign');
verify.end();
console.log(verify.verify(publicKey, signature));
// Prints: true

Конструкторы

Sign()
new

Методы

sign(privateKey:
KeyLike
| SignKeyObjectInput
| SignPrivateKeyInput
| SignJsonWebKeyInput
): Buffer

Вычисляет подпись для всех переданных данных, используя sign.update() или sign.write().

Если privateKey не является KeyObject, функция работает так, как если бы в createPrivateKey был передан privateKey. Если это объект, можно передать следующие дополнительные свойства:

Если задан outputEncoding, возвращается строка; в противном случае возвращается Buffer.

После вызова метода sign.sign() объект Sign больше нельзя использовать. Повторный вызов sign.sign() приведёт к ошибке.

sign(
privateKey:
KeyLike
| SignKeyObjectInput
| SignPrivateKeyInput
| SignJsonWebKeyInput
,
outputFormat: BinaryToTextEncoding,
): string
update(data: BinaryLike): this

Обновляет содержимое Sign указанными данными data, кодировка которых задаётся параметром inputEncoding. Если encoding не задан, а data — строка, применяется кодировка 'utf8'. Если data имеет тип Buffer, TypedArray или DataView, параметр inputEncoding игнорируется.

Этот метод можно вызывать многократно, добавляя новые данные по мере их поступления в потоке.

update(
data: string,
inputEncoding: Encoding,
): this

класс Verify

наследует stream.Writable

Использование в Deno

import { Verify } from "node:crypto";

Класс Verify предназначен для проверки цифровых подписей. Его можно использовать одним из двух способов:

  • Как записываемый stream, в который записываются данные для проверки соответствия переданной подписи, либо
  • С помощью методов verify.update() и verify.verify() для проверки подписи.

Для создания экземпляров Verify используется метод createVerify. Объекты Verify нельзя создавать напрямую с помощью ключевого слова new.

Примеры см. в разделе Sign.

Конструкторы

Verify()
new

Методы

update(data: BinaryLike): Verify

Обновляет содержимое Verify указанными данными data, кодировка которых задаётся параметром inputEncoding. Если inputEncoding не задан, а data — строка, применяется кодировка 'utf8'. Если data имеет тип Buffer, TypedArray или DataView, параметр inputEncoding игнорируется.

Этот метод можно вызывать многократно, добавляя новые данные по мере их поступления в потоке.

update(
data: string,
inputEncoding: Encoding,
): Verify
verify(
object:
KeyLike
| VerifyKeyObjectInput
| VerifyPublicKeyInput
| VerifyJsonWebKeyInput
,
signature: ArrayBufferView,
): boolean

Проверяет переданные данные с использованием указанного object и signature.

Если object не является KeyObject, функция работает так, как если бы в createPublicKey был передан object. Если это объект, можно передать следующие дополнительные свойства:

Аргумент signature — это ранее вычисленная подпись данных в формате signatureEncoding. Если задан signatureEncoding, предполагается, что signature имеет строковый тип; в противном случае предполагается, что signature имеет тип Buffer, TypedArray или DataView.

После вызова verify.verify() объект verify больше нельзя использовать. Повторный вызов verify.verify() приведёт к ошибке.

Поскольку открытые ключи можно получить из закрытых, вместо открытого ключа можно передать закрытый.

verify(
object:
KeyLike
| VerifyKeyObjectInput
| VerifyPublicKeyInput
| VerifyJsonWebKeyInput
,
signature: string,
signature_format?: BinaryToTextEncoding,
): boolean

класс X509Certificate

Использование в Deno

import { X509Certificate } from "node:crypto";

Инкапсулирует сертификат X509 и предоставляет доступ только для чтения к содержащейся в нем информации.

const { X509Certificate } = await import('node:crypto');

const x509 = new X509Certificate('{... pem encoded cert ...}');

console.log(x509.subject);

Конструкторы

X509Certificate(buffer: BinaryLike)
новый

Свойства

ca: boolean
только для чтения

Имеет значение `true`, если это сертификат удостоверяющего центра (CA).

fingerprint: string
только для чтения

Отпечаток этого сертификата SHA-1.

Поскольку SHA-1 криптографически взломан, а его безопасность значительно ниже безопасности алгоритмов, обычно используемых для подписания сертификатов, рассмотрите возможность использования x509.fingerprint256.

fingerprint256: string
только для чтения

Отпечаток этого сертификата SHA-256.

fingerprint512: string
только для чтения

Отпечаток этого сертификата SHA-512.

Поскольку вычисление отпечатка SHA-256 обычно выполняется быстрее, а его размер вдвое меньше размера отпечатка SHA-512, x509.fingerprint256 может быть предпочтительнее. Хотя SHA-512, предположительно, обеспечивает более высокий уровень безопасности в целом, безопасность SHA-256 соответствует безопасности большинства алгоритмов, обычно используемых для подписания сертификатов.

infoAccess: string | undefined
только для чтения

Текстовое представление расширения сертификата для доступа к информации об удостоверяющем центре.

Это список описаний доступа, разделенных символами перевода строки. Каждая строка начинается с метода доступа и типа местоположения доступа, за которыми следуют двоеточие и значение, связанное с местоположением доступа.

После префикса, обозначающего метод доступа и тип местоположения доступа, оставшаяся часть каждой строки может быть заключена в кавычки, указывающие на то, что значение представляет собой строковый литерал JSON. Для обратной совместимости Node.js использует строковые литералы JSON в этом свойстве только тогда, когда это необходимо для устранения неоднозначности. Сторонний код должен быть готов обрабатывать оба возможных формата записей.

issuer: string
только для чтения

Идентификатор издателя, включенный в этот сертификат.

issuerCertificate: X509Certificate | undefined
только для чтения
необязательный

Сертификат издателя или undefined, если сертификат издателя недоступен.

keyUsage: string[]
только для чтения

Массив с подробными сведениями о назначении ключа для этого сертификата.

publicKey: KeyObject
только для чтения

Открытый ключ KeyObject для этого сертификата.

raw: Buffer
только для чтения

Buffer с DER-кодировкой этого сертификата.

serialNumber: string
только для чтения

Серийный номер этого сертификата.

Серийные номера присваиваются удостоверяющими центрами и не являются уникальными идентификаторами сертификатов. В качестве уникального идентификатора рассмотрите возможность использования x509.fingerprint256.

subject: string
только для чтения

Полное имя субъекта этого сертификата.

subjectAltName: string | undefined
только для чтения

Альтернативное имя субъекта, указанное для этого сертификата.

Это разделенный запятыми список альтернативных имен субъекта. Каждая запись начинается со строки, обозначающей тип альтернативного имени субъекта, за которой следуют двоеточие и значение, связанное с записью.

В более ранних версиях Node.js ошибочно предполагалось, что это свойство можно безопасно разделить по двухсимвольной последовательности ', ' (см. CVE-2021-44532). Однако как вредоносные, так и легитимные сертификаты могут содержать альтернативные имена субъекта с этой последовательностью в строковом представлении.

После префикса, обозначающего тип записи, оставшаяся часть каждой записи может быть заключена в кавычки, указывающие на то, что значение представляет собой строковый литерал JSON. Для обратной совместимости Node.js использует строковые литералы JSON в этом свойстве только тогда, когда это необходимо для устранения неоднозначности. Сторонний код должен быть готов обрабатывать оба возможных формата записей.

validFrom: string
только для чтения

Дата и время, начиная с которых этот сертификат считается действительным.

validFromDate: Date
только для чтения

Дата и время, начиная с которых этот сертификат действителен, инкапсулированные в объект Date.

validTo: string
только для чтения

Дата и время, до которых этот сертификат считается действительным.

validToDate: Date
только для чтения

Дата и время, до которых этот сертификат действителен, инкапсулированные в объект Date.

Методы

checkEmail(
email: string,
options?: Pick<X509CheckOptions, "subject">,
): string | undefined

Проверяет, соответствует ли сертификат указанному адресу электронной почты.

Если параметр 'subject' не задан или имеет значение 'default', субъект сертификата учитывается только в том случае, если расширение альтернативных имен субъекта отсутствует или не содержит адресов электронной почты.

Если параметру 'subject' присвоено значение 'always' и расширение альтернативных имен субъекта отсутствует или не содержит соответствующий адрес электронной почты, учитывается субъект сертификата.

Если параметру 'subject' присвоено значение 'never', субъект сертификата не учитывается никогда, даже если сертификат не содержит альтернативных имен субъекта.

checkHost(
name: string,
options?: X509CheckOptions,
): string | undefined

Проверяет, соответствует ли сертификат указанному имени хоста.

Если сертификат соответствует указанному имени хоста, возвращается совпадающее имя субъекта. Возвращаемое имя может точно совпадать (например, foo.example.com) или содержать подстановочные символы (например, *.example.com). Поскольку сравнение имен хостов не учитывает регистр, возвращаемое имя субъекта может также отличаться от указанного name регистром букв.

Если параметр 'subject' не задан или имеет значение 'default', субъект сертификата учитывается только в том случае, если расширение альтернативных имен субъекта отсутствует или не содержит имен DNS. Это поведение соответствует RFC 2818 («HTTP поверх TLS»).

Если параметру 'subject' присвоено значение 'always' и расширение альтернативных имен субъекта отсутствует или не содержит соответствующего имени DNS, учитывается субъект сертификата.

Если параметру 'subject' присвоено значение 'never', субъект сертификата не учитывается никогда, даже если сертификат не содержит альтернативных имен субъекта.

checkIP(ip: string): string | undefined

Проверяет, соответствует ли сертификат указанному IP-адресу (IPv4 или IPv6).

Учитываются только альтернативные имена субъекта iPAddress по RFC 5280, которые должны точно совпадать с указанным ip адресом. Остальные альтернативные имена субъекта, а также поле субъекта сертификата игнорируются.

checkIssued(otherCert: X509Certificate): boolean

Проверяет, был ли этот сертификат выдан указанным otherCert.

checkPrivateKey(privateKey: KeyObject): boolean

Проверяет, соответствует ли открытый ключ этого сертификата указанному закрытому ключу.

toJSON(): string

Стандартного способа кодирования сертификатов X509 в JSON не существует. Метод toJSON() возвращает строку, содержащую сертификат в кодировке PEM.

toLegacyObject(): PeerCertificate

Возвращает сведения об этом сертификате в устаревшей кодировке certificate object.

toString(): string

Возвращает сертификат в кодировке PEM.

verify(publicKey: KeyObject): boolean

Проверяет, подписан ли этот сертификат указанным открытым ключом. Другие проверки сертификата не выполняются.


класс Hmac

наследует stream.Transform

Использование в Deno

import { Hmac } from "node:crypto";
Устарело

Начиная с версии v20.13.0 прямой вызов класса Hmac с Hmac() или new Hmac() считается устаревшим, поскольку это внутренние компоненты, не предназначенные для публичного использования. Для создания экземпляров Hmac используйте метод createHmac.

Класс Hmac предназначен для создания криптографических дайджестов HMAC. Его можно использовать одним из двух способов:

  • Как stream, одновременно доступный для чтения и записи: данные записываются для вычисления дайджеста HMAC, который можно прочитать, или
  • С помощью методов hmac.update() и hmac.digest() для вычисления дайджеста HMAC.

Для создания экземпляров Hmac используется метод createHmac. Экземпляры Hmac нельзя создавать напрямую с помощью ключевого слова new.

Пример: использование объектов Hmac в качестве потоков:

const {
  createHmac,
} = await import('node:crypto');

const hmac = createHmac('sha256', 'a secret');

hmac.on('readable', () => {
  // Only one element is going to be produced by the
  // hash stream.
  const data = hmac.read();
  if (data) {
    console.log(data.toString('hex'));
    // Prints:
    //   7fd04df92f636fd450bc841c9418e5825c17f33ad9c87c518115a45971f7f77e
  }
});

hmac.write('some data to hash');
hmac.end();

Пример: использование Hmac и потоков с передачей данных:

import { createReadStream } from 'node:fs';
import { stdout } from 'node:process';
const {
  createHmac,
} = await import('node:crypto');

const hmac = createHmac('sha256', 'a secret');

const input = createReadStream('test.js');
input.pipe(hmac).pipe(stdout);

Пример: использование методов hmac.update() и hmac.digest():

const {
  createHmac,
} = await import('node:crypto');

const hmac = createHmac('sha256', 'a secret');

hmac.update('some data to hash');
console.log(hmac.digest('hex'));
// Prints:
//   7fd04df92f636fd450bc841c9418e5825c17f33ad9c87c518115a45971f7f77e

Конструкторы

Hmac()
новый

Методы

digest(): Buffer

Вычисляет дайджест HMAC для всех данных, переданных с помощью hmac.update(). Если указан encoding, возвращается строка; в противном случае возвращается Buffer;

После вызова hmac.digest() объект Hmac больше нельзя использовать. Повторные вызовы hmac.digest() приведут к ошибке.

digest(encoding: BinaryToTextEncoding): string
update(data: BinaryLike): Hmac

Обновляет содержимое Hmac указанным значением data, кодировка которого задается в inputEncoding. Если encoding не указан, а data является строкой, принудительно используется кодировка 'utf8'. Если data является Buffer, TypedArray или DataView, то inputEncoding игнорируется.

Этот метод можно вызывать многократно по мере поступления новых данных в потоке.

update(
data: string,
inputEncoding: Encoding,
): Hmac

функция checkPrime

Использование в Deno

import { checkPrime } from "node:crypto";

Перегрузка 1

checkPrime(
value: LargeNumberLike,
callback: (
err: Error | null,
result: boolean,
) => void
,
): void

Проверяет, является ли candidate простым числом.

Параметры

value: LargeNumberLike
callback: (
err: Error | null,
result: boolean,
) => void

Возвращаемый тип

void

Перегрузка 2

checkPrime(
value: LargeNumberLike,
options: CheckPrimeOptions,
callback: (
err: Error | null,
result: boolean,
) => void
,
): void

Параметры

value: LargeNumberLike
options: CheckPrimeOptions
callback: (
err: Error | null,
result: boolean,
) => void

Возвращаемый тип

void

функция checkPrimeSync

Использование в Deno

import { checkPrimeSync } from "node:crypto";
checkPrimeSync(
candidate: LargeNumberLike,
options?: CheckPrimeOptions,
): boolean

Проверяет, является ли candidate простым числом.

Параметры

candidate: LargeNumberLike

Возможное простое число, закодированное как последовательность октетов произвольной длины в порядке от старшего байта к младшему.

options: CheckPrimeOptions
необязательный

Возвращаемый тип

boolean

true, если кандидат является простым числом с вероятностью ошибки менее 0.25 ** options.checks.


функция createCipheriv

Использование в Deno

import { createCipheriv } from "node:crypto";

Вариант 1

createCipheriv(
algorithm: CipherCCMTypes,
key: CipherKey,
iv: BinaryLike,
options: CipherCCMOptions,
): CipherCCM

Создаёт и возвращает объект Cipher с заданными algorithm, key и вектором инициализации (iv).

Аргумент options управляет поведением потока и является необязательным, за исключением случаев, когда используется шифр в режиме CCM или OCB (например, 'aes-128-ccm'). В этом случае требуется параметр authTagLength, задающий длину тега аутентификации в байтах; см. CCM mode. В режиме GCM параметр authTagLength не является обязательным, но с его помощью можно задать длину тега аутентификации, возвращаемого методом getAuthTag(); по умолчанию она составляет 16 байт. Для chacha20-poly1305 значение параметра authTagLength по умолчанию составляет 16 байт.

Набор algorithm зависит от OpenSSL; примеры: 'aes192' и т. д. В последних версиях OpenSSL команда openssl list -cipher-algorithms выводит список доступных алгоритмов шифрования.

Параметр key — это необработанный ключ, используемый методом algorithm, а iv — это вектор инициализации. Оба аргумента должны быть строками в кодировке 'utf8', объектами Buffers, TypedArray или DataView. Параметр key также может быть KeyObject типа secret. Если шифру не требуется вектор инициализации, значение iv может быть равно null.

При передаче строк для key или iv рекомендуется учесть caveats when using strings as inputs to cryptographic APIs.

Векторы инициализации должны быть непредсказуемыми и уникальными; в идеале они должны быть криптографически случайными. Они не обязаны быть секретными: обычно IV просто добавляются к зашифрованным сообщениям в открытом виде. Может показаться противоречивым, что значение должно быть непредсказуемым и уникальным, но при этом не обязано быть секретным; помните, что злоумышленник не должен иметь возможности заранее предсказать значение конкретного IV.

Параметры

algorithm: CipherCCMTypes
key: CipherKey
iv: BinaryLike
options: CipherCCMOptions

параметры stream.transform

Тип возвращаемого значения

CipherCCM

Вариант 2

createCipheriv(
algorithm: CipherOCBTypes,
key: CipherKey,
iv: BinaryLike,
options: CipherOCBOptions,
): CipherOCB

Параметры

algorithm: CipherOCBTypes
key: CipherKey
iv: BinaryLike
options: CipherOCBOptions

Тип возвращаемого значения

CipherOCB

Вариант 3

createCipheriv(
algorithm: CipherGCMTypes,
key: CipherKey,
iv: BinaryLike,
options?: CipherGCMOptions,
): CipherGCM

Параметры

algorithm: CipherGCMTypes
key: CipherKey
iv: BinaryLike
options: CipherGCMOptions
необязательно

Тип возвращаемого значения

CipherGCM

Вариант 4

createCipheriv(
algorithm: CipherChaCha20Poly1305Types,
key: CipherKey,
iv: BinaryLike,
options?: CipherChaCha20Poly1305Options,
): CipherChaCha20Poly1305

Параметры

algorithm: CipherChaCha20Poly1305Types
key: CipherKey
iv: BinaryLike
options: CipherChaCha20Poly1305Options
необязательно

Тип возвращаемого значения

CipherChaCha20Poly1305

Вариант 5

createCipheriv(
algorithm: string,
key: CipherKey,
iv: BinaryLike | null,
options?: stream.TransformOptions,
): Cipher

Параметры

algorithm: string
key: CipherKey
iv: BinaryLike | null
options: stream.TransformOptions
необязательно

Тип возвращаемого значения

Cipher

функция createDecipheriv

Использование в Deno

import { createDecipheriv } from "node:crypto";

Вариант 1

createDecipheriv(
algorithm: CipherCCMTypes,
key: CipherKey,
iv: BinaryLike,
options: CipherCCMOptions,
): DecipherCCM

Создаёт и возвращает объект Decipher, использующий заданные algorithm, key и вектор инициализации (iv).

Аргумент options управляет поведением потока и является необязательным, за исключением случаев, когда используется шифр в режиме CCM или OCB (например, 'aes-128-ccm'). В этом случае требуется параметр authTagLength, задающий длину тега аутентификации в байтах; см. CCM mode. В режиме GCM параметр authTagLength не является обязательным, но с его помощью можно ограничить допустимые теги аутентификации, указав их длину. Для chacha20-poly1305 значение параметра authTagLength по умолчанию составляет 16 байт.

Набор algorithm зависит от OpenSSL; примеры: 'aes192' и т. д. В последних версиях OpenSSL команда openssl list -cipher-algorithms выводит список доступных алгоритмов шифрования.

Параметр key — это необработанный ключ, используемый методом algorithm, а iv — это вектор инициализации. Оба аргумента должны быть строками в кодировке 'utf8', объектами Buffers, TypedArray или DataView. Параметр key также может быть KeyObject типа secret. Если шифру не требуется вектор инициализации, значение iv может быть равно null.

При передаче строк для key или iv рекомендуется учесть caveats when using strings as inputs to cryptographic APIs.

Векторы инициализации должны быть непредсказуемыми и уникальными; в идеале они должны быть криптографически случайными. Они не обязаны быть секретными: обычно IV просто добавляются к зашифрованным сообщениям в открытом виде. Может показаться противоречивым, что значение должно быть непредсказуемым и уникальным, но при этом не обязано быть секретным; помните, что злоумышленник не должен иметь возможности заранее предсказать значение конкретного IV.

Параметры

algorithm: CipherCCMTypes
key: CipherKey
iv: BinaryLike
options: CipherCCMOptions

параметры stream.transform

Тип возвращаемого значения

DecipherCCM

Вариант 2

createDecipheriv(
algorithm: CipherOCBTypes,
key: CipherKey,
iv: BinaryLike,
options: CipherOCBOptions,
): DecipherOCB

Параметры

algorithm: CipherOCBTypes
key: CipherKey
iv: BinaryLike
options: CipherOCBOptions

Тип возвращаемого значения

DecipherOCB

Вариант 3

createDecipheriv(
algorithm: CipherGCMTypes,
key: CipherKey,
iv: BinaryLike,
options?: CipherGCMOptions,
): DecipherGCM

Параметры

algorithm: CipherGCMTypes
key: CipherKey
iv: BinaryLike
options: CipherGCMOptions
необязательно

Тип возвращаемого значения

DecipherGCM

Вариант 4

createDecipheriv(
algorithm: CipherChaCha20Poly1305Types,
key: CipherKey,
iv: BinaryLike,
options?: CipherChaCha20Poly1305Options,
): DecipherChaCha20Poly1305

Параметры

algorithm: CipherChaCha20Poly1305Types
key: CipherKey
iv: BinaryLike
options: CipherChaCha20Poly1305Options
необязательно

Тип возвращаемого значения

DecipherChaCha20Poly1305

Вариант 5

createDecipheriv(
algorithm: string,
key: CipherKey,
iv: BinaryLike | null,
options?: stream.TransformOptions,
): Decipher

Параметры

algorithm: string
key: CipherKey
iv: BinaryLike | null
options: stream.TransformOptions
необязательно

Тип возвращаемого значения

Decipher

функция createDiffieHellman

Использование в Deno

import { createDiffieHellman } from "node:crypto";

Вариант 1

createDiffieHellman(
primeLength: number,
generator?: number,
): DiffieHellman

Создаёт объект обмена ключами DiffieHellman, используя переданное значение prime и необязательное конкретное значение generator.

Аргумент generator может быть числом, строкой или Buffer. Если generator не задан, используется значение 2.

Если задано primeEncoding, ожидается, что prime будет строкой; в противном случае ожидается Buffer, TypedArray или DataView.

Если задано generatorEncoding, ожидается, что generator будет строкой; в противном случае ожидается число, Buffer, TypedArray или DataView.

Параметры

primeLength: number
generator: number = 2
необязательно

Тип возвращаемого значения

DiffieHellman

Вариант 2

createDiffieHellman(
prime: ArrayBuffer | ArrayBufferView,
generator?:
number
| ArrayBuffer
| ArrayBufferView
,
): DiffieHellman

Параметры

prime: ArrayBuffer | ArrayBufferView
generator:
number
| ArrayBuffer
| ArrayBufferView
необязательно

Тип возвращаемого значения

DiffieHellman

Вариант 3

createDiffieHellman(
prime: ArrayBuffer | ArrayBufferView,
generator: string,
generatorEncoding: BinaryToTextEncoding,
): DiffieHellman

Параметры

prime: ArrayBuffer | ArrayBufferView
generator: string
generatorEncoding: BinaryToTextEncoding

Тип возвращаемого значения

DiffieHellman

Вариант 4

createDiffieHellman(
prime: string,
primeEncoding: BinaryToTextEncoding,
generator?:
number
| ArrayBuffer
| ArrayBufferView
,
): DiffieHellman

Параметры

prime: string
primeEncoding: BinaryToTextEncoding
generator:
number
| ArrayBuffer
| ArrayBufferView
необязательно

Тип возвращаемого значения

DiffieHellman

Вариант 5

createDiffieHellman(
prime: string,
primeEncoding: BinaryToTextEncoding,
generator: string,
generatorEncoding: BinaryToTextEncoding,
): DiffieHellman

Параметры

prime: string
primeEncoding: BinaryToTextEncoding
generator: string
generatorEncoding: BinaryToTextEncoding

Тип возвращаемого значения

DiffieHellman

функция createDiffieHellmanGroup

Использование в Deno

import { createDiffieHellmanGroup } from "node:crypto";
createDiffieHellmanGroup(name: string): DiffieHellmanGroup

Псевдоним для getDiffieHellman

Параметры

name: string

Тип возвращаемого значения

DiffieHellmanGroup

функция createECDH

Использование в Deno

import { createECDH } from "node:crypto";
createECDH(curveName: string): ECDH

Создаёт объект обмена ключами на основе криптографии на эллиптических кривых Диффи — Хеллмана (ECDH), используя заранее заданную кривую, указанную в строке curveName. Используйте getCurves, чтобы получить список доступных имён кривых. В последних версиях OpenSSL команда openssl ecparam -list_curves также выводит имена и описания доступных эллиптических кривых.

Параметры

curveName: string

Тип возвращаемого значения

ECDH

функция createHash

Использование в Deno

import { createHash } from "node:crypto";
createHash(
algorithm: string,
options?: HashOptions,
): Hash

Создаёт и возвращает объект Hash, который можно использовать для создания дайджестов хеша с помощью указанного algorithm. Необязательный аргумент options управляет поведением потока. Для хеш-функций XOF, таких как 'shake256', параметр outputLength можно использовать для указания желаемой длины выходных данных в байтах.

Значение algorithm зависит от доступных алгоритмов, поддерживаемых версией OpenSSL на платформе. Например: 'sha256', 'sha512' и т. д. В последних выпусках OpenSSL команда openssl list -digest-algorithms отображает доступные алгоритмы дайджеста.

Пример: вычисление суммы sha256 для файла

import {
  createReadStream,
} from 'node:fs';
import { argv } from 'node:process';
const {
  createHash,
} = await import('node:crypto');

const filename = argv[2];

const hash = createHash('sha256');

const input = createReadStream(filename);
input.on('readable', () => {
  // Only one element is going to be produced by the
  // hash stream.
  const data = input.read();
  if (data)
    hash.update(data);
  else {
    console.log(`${hash.digest('hex')}${filename}`);
  }
});

Параметры

algorithm: string
options: HashOptions
необязательный

stream.transform options

Тип возвращаемого значения

Hash

функция createHmac

Использование в Deno

import { createHmac } from "node:crypto";
createHmac(
algorithm: string,
key: BinaryLike | KeyObject,
options?: stream.TransformOptions,
): Hmac

Создаёт и возвращает объект Hmac, использующий указанные algorithm и key. Необязательный аргумент options управляет поведением потока.

Значение algorithm зависит от доступных алгоритмов, поддерживаемых версией OpenSSL на платформе. Например: 'sha256', 'sha512' и т. д. В последних выпусках OpenSSL команда openssl list -digest-algorithms отображает доступные алгоритмы дайджеста.

Значение key — это ключ HMAC, используемый для создания криптографического хеша HMAC. Если это KeyObject, его тип должен быть secret. Если это строка, рекомендуется ознакомиться с caveats when using strings as inputs to cryptographic APIs. Если ключ получен из криптографически безопасного источника энтропии, например randomBytes или generateKey, его длина не должна превышать размер блока algorithm (например, 512 бит для SHA-256).

Пример: вычисление HMAC sha256 для файла

import {
  createReadStream,
} from 'node:fs';
import { argv } from 'node:process';
const {
  createHmac,
} = await import('node:crypto');

const filename = argv[2];

const hmac = createHmac('sha256', 'a secret');

const input = createReadStream(filename);
input.on('readable', () => {
  // Only one element is going to be produced by the
  // hash stream.
  const data = input.read();
  if (data)
    hmac.update(data);
  else {
    console.log(`${hmac.digest('hex')}${filename}`);
  }
});

Параметры

algorithm: string
key: BinaryLike | KeyObject
options: stream.TransformOptions
необязательный

stream.transform options

Тип возвращаемого значения

Hmac

функция createPrivateKey

Использование в Deno

import { createPrivateKey } from "node:crypto";
createPrivateKey(key:
PrivateKeyInput
| string
| Buffer
| JsonWebKeyInput
): KeyObject

Создаёт и возвращает новый объект ключа, содержащий закрытый ключ. Если key — строка или Buffer, предполагается, что format имеет значение 'pem'; в противном случае key должен быть объектом со свойствами, описанными выше.

Если закрытый ключ зашифрован, необходимо указать passphrase. Длина парольной фразы ограничена 1024 байтами.

Параметры

key:
PrivateKeyInput
| string
| Buffer
| JsonWebKeyInput

Тип возвращаемого значения

KeyObject

функция createPublicKey

Использование в Deno

import { createPublicKey } from "node:crypto";
createPublicKey(key:
PublicKeyInput
| string
| Buffer
| KeyObject
| JsonWebKeyInput
): KeyObject

Создаёт и возвращает новый объект ключа, содержащий открытый ключ. Если key — строка или Buffer, предполагается, что format имеет значение 'pem'; если key — это KeyObject с типом 'private', открытый ключ выводится из указанного закрытого ключа; в противном случае key должен быть объектом со свойствами, описанными выше.

Если формат — 'pem', 'key' также может быть сертификатом X.509.

Поскольку открытые ключи можно получить из закрытых ключей, вместо открытого ключа можно передать закрытый. В этом случае функция ведёт себя так, как если бы была вызвана createPrivateKey, за исключением того, что тип возвращаемого KeyObject будет 'public', а извлечь закрытый ключ из возвращённого KeyObject будет невозможно. Аналогичным образом, если передан KeyObject с типом 'private', будет возвращён новый KeyObject с типом 'public', и извлечь закрытый ключ из возвращённого объекта будет невозможно.

Параметры

key:
PublicKeyInput
| string
| Buffer
| KeyObject
| JsonWebKeyInput

Тип возвращаемого значения

KeyObject

функция createSecretKey

Использование в Deno

import { createSecretKey } from "node:crypto";

Перегрузка 1

createSecretKey(key: ArrayBufferView): KeyObject

Создаёт и возвращает новый объект ключа, содержащий секретный ключ для симметричного шифрования или Hmac.

Параметры

key: ArrayBufferView

Тип возвращаемого значения

KeyObject

Перегрузка 2

createSecretKey(
key: string,
encoding: BufferEncoding,
): KeyObject

Параметры

key: string
encoding: BufferEncoding

Тип возвращаемого значения

KeyObject

функция createSign

Использование в Deno

import { createSign } from "node:crypto";
createSign(
algorithm: string,
options?: stream.WritableOptions,
): Sign

Создаёт и возвращает объект Sign, использующий указанный algorithm. Используйте getHashes, чтобы получить имена доступных алгоритмов дайджеста. Необязательный аргумент options управляет поведением stream.Writable.

В некоторых случаях экземпляр Sign можно создать, указав имя алгоритма подписи, например 'RSA-SHA256', вместо алгоритма дайджеста. В этом случае будет использоваться соответствующий алгоритм дайджеста. Это работает не для всех алгоритмов подписи, например 'ecdsa-with-SHA256', поэтому лучше всегда использовать имена алгоритмов дайджеста.

Параметры

algorithm: string
options: stream.WritableOptions
необязательный

stream.Writable options

Тип возвращаемого значения

Sign

функция createVerify

Использование в Deno

import { createVerify } from "node:crypto";
createVerify(
algorithm: string,
options?: stream.WritableOptions,
): Verify

Создаёт и возвращает объект Verify, использующий указанный алгоритм. Используйте getHashes, чтобы получить массив имён доступных алгоритмов подписи. Необязательный аргумент options управляет поведением stream.Writable.

В некоторых случаях экземпляр Verify можно создать, указав имя алгоритма подписи, например 'RSA-SHA256', вместо алгоритма дайджеста. В этом случае будет использоваться соответствующий алгоритм дайджеста. Это работает не для всех алгоритмов подписи, например 'ecdsa-with-SHA256', поэтому лучше всегда использовать имена алгоритмов дайджеста.

Параметры

algorithm: string
options: stream.WritableOptions
необязательный

stream.Writable options

Тип возвращаемого значения

Verify

функция diffieHellman

Использование в Deno

import { diffieHellman } from "node:crypto";
diffieHellman(options: { privateKey: KeyObject; publicKey: KeyObject; }): Buffer

Вычисляет общий секрет Диффи — Хеллмана на основе privateKey и publicKey. Оба ключа должны иметь одинаковый asymmetricKeyType, который должен быть одним из следующих: 'dh' (для Диффи — Хеллмана), 'ec' (для ECDH), 'x448' или 'x25519' (для ECDH-ES).

Параметры

options: { privateKey: KeyObject; publicKey: KeyObject; }

Тип возвращаемого значения

Buffer

функция generateKey

Использование в Deno

import { generateKey } from "node:crypto";
generateKey(
type: "hmac" | "aes",
options: { length: number; },
callback: (
err: Error | null,
key: KeyObject,
) => void
,
): void

Асинхронно создаёт новый случайный секретный ключ указанного length. Параметр type определяет, какие проверки будут выполнены для length.

const {
  generateKey,
} = await import('node:crypto');

generateKey('hmac', { length: 512 }, (err, key) => {
  if (err) throw err;
  console.log(key.export().toString('hex'));  // 46e..........620
});

Размер сгенерированного ключа HMAC не должен превышать размер блока используемой хеш-функции. Дополнительные сведения см. в разделе createHmac.

Параметры

type: "hmac" | "aes"

Предполагаемое назначение сгенерированного секретного ключа. В настоящее время принимаются значения 'hmac' и 'aes'.

options: { length: number; }
callback: (
err: Error | null,
key: KeyObject,
) => void

Тип возвращаемого значения

void

function generateKeyPair

Использование в Deno

import { generateKeyPair } from "node:crypto";

Перегрузка 1

generateKeyPair(
type: "rsa",
options: RSAKeyPairOptions<"pem", "pem">,
callback: (
err: Error | null,
publicKey: string,
privateKey: string,
) => void
,
): void
Совместимость с Deno

Параметр x448 не поддерживается.

Создаёт новую асимметричную пару ключей заданного типа type. В настоящее время поддерживаются RSA, RSA-PSS, DSA, EC, Ed25519, Ed448, X25519, X448 и DH.

Если был указан publicKeyEncoding или privateKeyEncoding, эта функция ведёт себя так, как если бы для её результата был вызван keyObject.export(). В противном случае соответствующая часть ключа возвращается как KeyObject.

Для долговременного хранения рекомендуется кодировать открытые ключи как 'spki', а закрытые ключи — как 'pkcs8' с шифрованием:

const {
  generateKeyPair,
} = await import('node:crypto');

generateKeyPair('rsa', {
  modulusLength: 4096,
  publicKeyEncoding: {
    type: 'spki',
    format: 'pem',
  },
  privateKeyEncoding: {
    type: 'pkcs8',
    format: 'pem',
    cipher: 'aes-256-cbc',
    passphrase: 'top secret',
  },
}, (err, publicKey, privateKey) => {
  // Handle errors and use the generated key pair.
});

По завершении будет вызван callback, где для err будет задано значение undefined, а publicKey / privateKey будут представлять сгенерированную пару ключей.

Если этот метод вызывается в своей версии с окончанием util.promisify(), он возвращает Promise для Object со свойствами publicKey и privateKey.

Параметры

type: "rsa"

Должен быть 'rsa', 'rsa-pss', 'dsa', 'ec', 'ed25519', 'ed448', 'x25519', 'x448' или 'dh'.

options: RSAKeyPairOptions<"pem", "pem">
callback: (
err: Error | null,
publicKey: string,
privateKey: string,
) => void

Тип возвращаемого значения

void

Перегрузка 2

generateKeyPair(
type: "rsa",
options: RSAKeyPairOptions<"pem", "der">,
callback: (
err: Error | null,
publicKey: string,
privateKey: Buffer,
) => void
,
): void
Совместимость с Deno

Параметр x448 не поддерживается.

Параметры

type: "rsa"
options: RSAKeyPairOptions<"pem", "der">
callback: (
err: Error | null,
publicKey: string,
privateKey: Buffer,
) => void

Тип возвращаемого значения

void

Перегрузка 3

generateKeyPair(
type: "rsa",
options: RSAKeyPairOptions<"der", "pem">,
callback: (
err: Error | null,
publicKey: Buffer,
privateKey: string,
) => void
,
): void
Совместимость с Deno

Параметр x448 не поддерживается.

Параметры

type: "rsa"
options: RSAKeyPairOptions<"der", "pem">
callback: (
err: Error | null,
publicKey: Buffer,
privateKey: string,
) => void

Тип возвращаемого значения

void

Перегрузка 4

generateKeyPair(
type: "rsa",
options: RSAKeyPairOptions<"der", "der">,
callback: (
err: Error | null,
publicKey: Buffer,
privateKey: Buffer,
) => void
,
): void
Совместимость с Deno

Параметр x448 не поддерживается.

Параметры

type: "rsa"
options: RSAKeyPairOptions<"der", "der">
callback: (
err: Error | null,
publicKey: Buffer,
privateKey: Buffer,
) => void

Тип возвращаемого значения

void

Перегрузка 5

generateKeyPair(
type: "rsa",
options: RSAKeyPairKeyObjectOptions,
callback: (
err: Error | null,
publicKey: KeyObject,
privateKey: KeyObject,
) => void
,
): void
Совместимость с Deno

Параметр x448 не поддерживается.

Параметры

type: "rsa"
options: RSAKeyPairKeyObjectOptions
callback: (
err: Error | null,
publicKey: KeyObject,
privateKey: KeyObject,
) => void

Тип возвращаемого значения

void

Перегрузка 6

generateKeyPair(
type: "rsa-pss",
options: RSAPSSKeyPairOptions<"pem", "pem">,
callback: (
err: Error | null,
publicKey: string,
privateKey: string,
) => void
,
): void
Совместимость с Deno

Параметр x448 не поддерживается.

Параметры

type: "rsa-pss"
options: RSAPSSKeyPairOptions<"pem", "pem">
callback: (
err: Error | null,
publicKey: string,
privateKey: string,
) => void

Тип возвращаемого значения

void

Перегрузка 7

generateKeyPair(
type: "rsa-pss",
options: RSAPSSKeyPairOptions<"pem", "der">,
callback: (
err: Error | null,
publicKey: string,
privateKey: Buffer,
) => void
,
): void
Совместимость с Deno

Параметр x448 не поддерживается.

Параметры

type: "rsa-pss"
options: RSAPSSKeyPairOptions<"pem", "der">
callback: (
err: Error | null,
publicKey: string,
privateKey: Buffer,
) => void

Тип возвращаемого значения

void

Перегрузка 8

generateKeyPair(
type: "rsa-pss",
options: RSAPSSKeyPairOptions<"der", "pem">,
callback: (
err: Error | null,
publicKey: Buffer,
privateKey: string,
) => void
,
): void
Совместимость с Deno

Параметр x448 не поддерживается.

Параметры

type: "rsa-pss"
options: RSAPSSKeyPairOptions<"der", "pem">
callback: (
err: Error | null,
publicKey: Buffer,
privateKey: string,
) => void

Тип возвращаемого значения

void

Перегрузка 9

generateKeyPair(
type: "rsa-pss",
options: RSAPSSKeyPairOptions<"der", "der">,
callback: (
err: Error | null,
publicKey: Buffer,
privateKey: Buffer,
) => void
,
): void
Совместимость с Deno

Параметр x448 не поддерживается.

Параметры

type: "rsa-pss"
options: RSAPSSKeyPairOptions<"der", "der">
callback: (
err: Error | null,
publicKey: Buffer,
privateKey: Buffer,
) => void

Тип возвращаемого значения

void

Перегрузка 10

generateKeyPair(
type: "rsa-pss",
options: RSAPSSKeyPairKeyObjectOptions,
callback: (
err: Error | null,
publicKey: KeyObject,
privateKey: KeyObject,
) => void
,
): void
Совместимость с Deno

Параметр x448 не поддерживается.

Параметры

type: "rsa-pss"
options: RSAPSSKeyPairKeyObjectOptions
callback: (
err: Error | null,
publicKey: KeyObject,
privateKey: KeyObject,
) => void

Тип возвращаемого значения

void

Перегрузка 11

generateKeyPair(
type: "dsa",
options: DSAKeyPairOptions<"pem", "pem">,
callback: (
err: Error | null,
publicKey: string,
privateKey: string,
) => void
,
): void
Совместимость с Deno

Параметр x448 не поддерживается.

Параметры

type: "dsa"
options: DSAKeyPairOptions<"pem", "pem">
callback: (
err: Error | null,
publicKey: string,
privateKey: string,
) => void

Тип возвращаемого значения

void

Перегрузка 12

generateKeyPair(
type: "dsa",
options: DSAKeyPairOptions<"pem", "der">,
callback: (
err: Error | null,
publicKey: string,
privateKey: Buffer,
) => void
,
): void
Совместимость с Deno

Параметр x448 не поддерживается.

Параметры

type: "dsa"
options: DSAKeyPairOptions<"pem", "der">
callback: (
err: Error | null,
publicKey: string,
privateKey: Buffer,
) => void

Тип возвращаемого значения

void

Перегрузка 13

generateKeyPair(
type: "dsa",
options: DSAKeyPairOptions<"der", "pem">,
callback: (
err: Error | null,
publicKey: Buffer,
privateKey: string,
) => void
,
): void
Совместимость с Deno

Параметр x448 не поддерживается.

Параметры

type: "dsa"
options: DSAKeyPairOptions<"der", "pem">
callback: (
err: Error | null,
publicKey: Buffer,
privateKey: string,
) => void

Тип возвращаемого значения

void

Перегрузка 14

generateKeyPair(
type: "dsa",
options: DSAKeyPairOptions<"der", "der">,
callback: (
err: Error | null,
publicKey: Buffer,
privateKey: Buffer,
) => void
,
): void
Совместимость с Deno

Параметр x448 не поддерживается.

Параметры

type: "dsa"
options: DSAKeyPairOptions<"der", "der">
callback: (
err: Error | null,
publicKey: Buffer,
privateKey: Buffer,
) => void

Тип возвращаемого значения

void

Перегрузка 15

generateKeyPair(
type: "dsa",
options: DSAKeyPairKeyObjectOptions,
callback: (
err: Error | null,
publicKey: KeyObject,
privateKey: KeyObject,
) => void
,
): void
Совместимость с Deno

Параметр x448 не поддерживается.

Параметры

type: "dsa"
options: DSAKeyPairKeyObjectOptions
callback: (
err: Error | null,
publicKey: KeyObject,
privateKey: KeyObject,
) => void

Тип возвращаемого значения

void

Перегрузка 16

generateKeyPair(
type: "ec",
options: ECKeyPairOptions<"pem", "pem">,
callback: (
err: Error | null,
publicKey: string,
privateKey: string,
) => void
,
): void
Совместимость с Deno

Параметр x448 не поддерживается.

Параметры

type: "ec"
options: ECKeyPairOptions<"pem", "pem">
callback: (
err: Error | null,
publicKey: string,
privateKey: string,
) => void

Тип возвращаемого значения

void

Перегрузка 17

generateKeyPair(
type: "ec",
options: ECKeyPairOptions<"pem", "der">,
callback: (
err: Error | null,
publicKey: string,
privateKey: Buffer,
) => void
,
): void
Совместимость с Deno

Параметр x448 не поддерживается.

Параметры

type: "ec"
options: ECKeyPairOptions<"pem", "der">
callback: (
err: Error | null,
publicKey: string,
privateKey: Buffer,
) => void

Тип возвращаемого значения

void

Перегрузка 18

generateKeyPair(
type: "ec",
options: ECKeyPairOptions<"der", "pem">,
callback: (
err: Error | null,
publicKey: Buffer,
privateKey: string,
) => void
,
): void
Совместимость с Deno

Параметр x448 не поддерживается.

Параметры

type: "ec"
options: ECKeyPairOptions<"der", "pem">
callback: (
err: Error | null,
publicKey: Buffer,
privateKey: string,
) => void

Тип возвращаемого значения

void

Перегрузка 19

generateKeyPair(
type: "ec",
options: ECKeyPairOptions<"der", "der">,
callback: (
err: Error | null,
publicKey: Buffer,
privateKey: Buffer,
) => void
,
): void
Совместимость с Deno

Параметр x448 не поддерживается.

Параметры

type: "ec"
options: ECKeyPairOptions<"der", "der">
callback: (
err: Error | null,
publicKey: Buffer,
privateKey: Buffer,
) => void

Тип возвращаемого значения

void

Перегрузка 20

generateKeyPair(
type: "ec",
options: ECKeyPairKeyObjectOptions,
callback: (
err: Error | null,
publicKey: KeyObject,
privateKey: KeyObject,
) => void
,
): void
Совместимость с Deno

Параметр x448 не поддерживается.

Параметры

type: "ec"
options: ECKeyPairKeyObjectOptions
callback: (
err: Error | null,
publicKey: KeyObject,
privateKey: KeyObject,
) => void

Тип возвращаемого значения

void

Перегрузка 21

generateKeyPair(
type: "ed25519",
options: ED25519KeyPairOptions<"pem", "pem">,
callback: (
err: Error | null,
publicKey: string,
privateKey: string,
) => void
,
): void
Совместимость с Deno

Параметр x448 не поддерживается.

Параметры

type: "ed25519"
options: ED25519KeyPairOptions<"pem", "pem">
callback: (
err: Error | null,
publicKey: string,
privateKey: string,
) => void

Тип возвращаемого значения

void

Перегрузка 22

generateKeyPair(
type: "ed25519",
options: ED25519KeyPairOptions<"pem", "der">,
callback: (
err: Error | null,
publicKey: string,
privateKey: Buffer,
) => void
,
): void
Совместимость с Deno

Параметр x448 не поддерживается.

Параметры

type: "ed25519"
options: ED25519KeyPairOptions<"pem", "der">
callback: (
err: Error | null,
publicKey: string,
privateKey: Buffer,
) => void

Тип возвращаемого значения

void

Перегрузка 23

generateKeyPair(
type: "ed25519",
options: ED25519KeyPairOptions<"der", "pem">,
callback: (
err: Error | null,
publicKey: Buffer,
privateKey: string,
) => void
,
): void
Совместимость с Deno

Параметр x448 не поддерживается.

Параметры

type: "ed25519"
options: ED25519KeyPairOptions<"der", "pem">
callback: (
err: Error | null,
publicKey: Buffer,
privateKey: string,
) => void

Тип возвращаемого значения

void

Перегрузка 24

generateKeyPair(
type: "ed25519",
options: ED25519KeyPairOptions<"der", "der">,
callback: (
err: Error | null,
publicKey: Buffer,
privateKey: Buffer,
) => void
,
): void
Совместимость с Deno

Параметр x448 не поддерживается.

Параметры

type: "ed25519"
options: ED25519KeyPairOptions<"der", "der">
callback: (
err: Error | null,
publicKey: Buffer,
privateKey: Buffer,
) => void

Тип возвращаемого значения

void

Перегрузка 25

generateKeyPair(
type: "ed25519",
options: ED25519KeyPairKeyObjectOptions | undefined,
callback: (
err: Error | null,
publicKey: KeyObject,
privateKey: KeyObject,
) => void
,
): void
Совместимость с Deno

Параметр x448 не поддерживается.

Параметры

type: "ed25519"
options: ED25519KeyPairKeyObjectOptions | undefined
callback: (
err: Error | null,
publicKey: KeyObject,
privateKey: KeyObject,
) => void

Тип возвращаемого значения

void

Перегрузка 26

generateKeyPair(
type: "ed448",
options: ED448KeyPairOptions<"pem", "pem">,
callback: (
err: Error | null,
publicKey: string,
privateKey: string,
) => void
,
): void
Совместимость с Deno

Параметр x448 не поддерживается.

Параметры

type: "ed448"
options: ED448KeyPairOptions<"pem", "pem">
callback: (
err: Error | null,
publicKey: string,
privateKey: string,
) => void

Тип возвращаемого значения

void

Перегрузка 27

generateKeyPair(
type: "ed448",
options: ED448KeyPairOptions<"pem", "der">,
callback: (
err: Error | null,
publicKey: string,
privateKey: Buffer,
) => void
,
): void
Совместимость с Deno

Параметр x448 не поддерживается.

Параметры

type: "ed448"
options: ED448KeyPairOptions<"pem", "der">
callback: (
err: Error | null,
publicKey: string,
privateKey: Buffer,
) => void

Тип возвращаемого значения

void

Перегрузка 28

generateKeyPair(
type: "ed448",
options: ED448KeyPairOptions<"der", "pem">,
callback: (
err: Error | null,
publicKey: Buffer,
privateKey: string,
) => void
,
): void
Совместимость с Deno

Параметр x448 не поддерживается.

Параметры

type: "ed448"
options: ED448KeyPairOptions<"der", "pem">
callback: (
err: Error | null,
publicKey: Buffer,
privateKey: string,
) => void

Тип возвращаемого значения

void

Перегрузка 29

generateKeyPair(
type: "ed448",
options: ED448KeyPairOptions<"der", "der">,
callback: (
err: Error | null,
publicKey: Buffer,
privateKey: Buffer,
) => void
,
): void
Совместимость с Deno

Параметр x448 не поддерживается.

Параметры

type: "ed448"
options: ED448KeyPairOptions<"der", "der">
callback: (
err: Error | null,
publicKey: Buffer,
privateKey: Buffer,
) => void

Тип возвращаемого значения

void

Перегрузка 30

generateKeyPair(
type: "ed448",
options: ED448KeyPairKeyObjectOptions | undefined,
callback: (
err: Error | null,
publicKey: KeyObject,
privateKey: KeyObject,
) => void
,
): void
Совместимость с Deno

Параметр x448 не поддерживается.

Параметры

type: "ed448"
options: ED448KeyPairKeyObjectOptions | undefined
callback: (
err: Error | null,
publicKey: KeyObject,
privateKey: KeyObject,
) => void

Тип возвращаемого значения

void

Перегрузка 31

generateKeyPair(
type: "x25519",
options: X25519KeyPairOptions<"pem", "pem">,
callback: (
err: Error | null,
publicKey: string,
privateKey: string,
) => void
,
): void
Совместимость с Deno

Параметр x448 не поддерживается.

Параметры

type: "x25519"
options: X25519KeyPairOptions<"pem", "pem">
callback: (
err: Error | null,
publicKey: string,
privateKey: string,
) => void

Тип возвращаемого значения

void

Перегрузка 32

generateKeyPair(
type: "x25519",
options: X25519KeyPairOptions<"pem", "der">,
callback: (
err: Error | null,
publicKey: string,
privateKey: Buffer,
) => void
,
): void
Совместимость с Deno

Параметр x448 не поддерживается.

Параметры

type: "x25519"
options: X25519KeyPairOptions<"pem", "der">
callback: (
err: Error | null,
publicKey: string,
privateKey: Buffer,
) => void

Тип возвращаемого значения

void

Перегрузка 33

generateKeyPair(
type: "x25519",
options: X25519KeyPairOptions<"der", "pem">,
callback: (
err: Error | null,
publicKey: Buffer,
privateKey: string,
) => void
,
): void
Совместимость с Deno

Параметр x448 не поддерживается.

Параметры

type: "x25519"
options: X25519KeyPairOptions<"der", "pem">
callback: (
err: Error | null,
publicKey: Buffer,
privateKey: string,
) => void

Тип возвращаемого значения

void

Перегрузка 34

generateKeyPair(
type: "x25519",
options: X25519KeyPairOptions<"der", "der">,
callback: (
err: Error | null,
publicKey: Buffer,
privateKey: Buffer,
) => void
,
): void
Совместимость с Deno

Параметр x448 не поддерживается.

Параметры

type: "x25519"
options: X25519KeyPairOptions<"der", "der">
callback: (
err: Error | null,
publicKey: Buffer,
privateKey: Buffer,
) => void

Тип возвращаемого значения

void

Перегрузка 35

generateKeyPair(
type: "x25519",
options: X25519KeyPairKeyObjectOptions | undefined,
callback: (
err: Error | null,
publicKey: KeyObject,
privateKey: KeyObject,
) => void
,
): void
Совместимость с Deno

Параметр x448 не поддерживается.

Параметры

type: "x25519"
options: X25519KeyPairKeyObjectOptions | undefined
callback: (
err: Error | null,
publicKey: KeyObject,
privateKey: KeyObject,
) => void

Тип возвращаемого значения

void

Перегрузка 36

generateKeyPair(
type: "x448",
options: X448KeyPairOptions<"pem", "pem">,
callback: (
err: Error | null,
publicKey: string,
privateKey: string,
) => void
,
): void
Совместимость с Deno

Параметр x448 не поддерживается.

Параметры

type: "x448"
options: X448KeyPairOptions<"pem", "pem">
callback: (
err: Error | null,
publicKey: string,
privateKey: string,
) => void

Тип возвращаемого значения

void

Перегрузка 37

generateKeyPair(
type: "x448",
options: X448KeyPairOptions<"pem", "der">,
callback: (
err: Error | null,
publicKey: string,
privateKey: Buffer,
) => void
,
): void
Совместимость с Deno

Параметр x448 не поддерживается.

Параметры

type: "x448"
options: X448KeyPairOptions<"pem", "der">
callback: (
err: Error | null,
publicKey: string,
privateKey: Buffer,
) => void

Тип возвращаемого значения

void

Перегрузка 38

generateKeyPair(
type: "x448",
options: X448KeyPairOptions<"der", "pem">,
callback: (
err: Error | null,
publicKey: Buffer,
privateKey: string,
) => void
,
): void
Совместимость с Deno

Параметр x448 не поддерживается.

Параметры

type: "x448"
options: X448KeyPairOptions<"der", "pem">
callback: (
err: Error | null,
publicKey: Buffer,
privateKey: string,
) => void

Тип возвращаемого значения

void

Перегрузка 39

generateKeyPair(
type: "x448",
options: X448KeyPairOptions<"der", "der">,
callback: (
err: Error | null,
publicKey: Buffer,
privateKey: Buffer,
) => void
,
): void
Совместимость с Deno

Параметр x448 не поддерживается.

Параметры

type: "x448"
options: X448KeyPairOptions<"der", "der">
callback: (
err: Error | null,
publicKey: Buffer,
privateKey: Buffer,
) => void

Тип возвращаемого значения

void

Перегрузка 40

generateKeyPair(
type: "x448",
options: X448KeyPairKeyObjectOptions | undefined,
callback: (
err: Error | null,
publicKey: KeyObject,
privateKey: KeyObject,
) => void
,
): void
Совместимость с Deno

Параметр x448 не поддерживается.

Параметры

type: "x448"
options: X448KeyPairKeyObjectOptions | undefined
callback: (
err: Error | null,
publicKey: KeyObject,
privateKey: KeyObject,
) => void

Тип возвращаемого значения

void

функция generateKeyPairSync

Использование в Deno

import { generateKeyPairSync } from "node:crypto";

Перегрузка 1

generateKeyPairSync(
type: "rsa",
options: RSAKeyPairOptions<"pem", "pem">,
): KeyPairSyncResult<string, string>

Создаёт новую асимметричную пару ключей указанного типа type. В настоящее время поддерживаются RSA, RSA-PSS, DSA, EC, Ed25519, Ed448, X25519, X448 и DH.

Если был указан publicKeyEncoding или privateKeyEncoding, эта функция работает так, как если бы для результата был вызван keyObject.export(). В противном случае соответствующая часть ключа возвращается как KeyObject.

Для кодирования открытых ключей рекомендуется использовать 'spki'. Для кодирования закрытых ключей рекомендуется использовать 'pkcs8' с надёжной парольной фразой и хранить её в тайне.

const {
  generateKeyPairSync,
} = await import('node:crypto');

const {
  publicKey,
  privateKey,
} = generateKeyPairSync('rsa', {
  modulusLength: 4096,
  publicKeyEncoding: {
    type: 'spki',
    format: 'pem',
  },
  privateKeyEncoding: {
    type: 'pkcs8',
    format: 'pem',
    cipher: 'aes-256-cbc',
    passphrase: 'top secret',
  },
});

Возвращаемое значение { publicKey, privateKey } представляет собой созданную пару ключей. Если выбрано кодирование PEM, соответствующий ключ будет строкой, в противном случае это будет буфер, содержащий данные в кодировке DER.

Параметры

type: "rsa"

Должен быть 'rsa', 'rsa-pss', 'dsa', 'ec', 'ed25519', 'ed448', 'x25519', 'x448' или 'dh'.

options: RSAKeyPairOptions<"pem", "pem">

Возвращаемый тип

KeyPairSyncResult<string, string>

Перегрузка 2

generateKeyPairSync(
type: "rsa",
options: RSAKeyPairOptions<"pem", "der">,
): KeyPairSyncResult<string, Buffer>

Параметры

type: "rsa"
options: RSAKeyPairOptions<"pem", "der">

Возвращаемый тип

KeyPairSyncResult<string, Buffer>

Перегрузка 3

generateKeyPairSync(
type: "rsa",
options: RSAKeyPairOptions<"der", "pem">,
): KeyPairSyncResult<Buffer, string>

Параметры

type: "rsa"
options: RSAKeyPairOptions<"der", "pem">

Возвращаемый тип

KeyPairSyncResult<Buffer, string>

Перегрузка 4

generateKeyPairSync(
type: "rsa",
options: RSAKeyPairOptions<"der", "der">,
): KeyPairSyncResult<Buffer, Buffer>

Параметры

type: "rsa"
options: RSAKeyPairOptions<"der", "der">

Возвращаемый тип

KeyPairSyncResult<Buffer, Buffer>

Перегрузка 5

generateKeyPairSync(
type: "rsa",
options: RSAKeyPairKeyObjectOptions,
): KeyPairKeyObjectResult

Параметры

type: "rsa"
options: RSAKeyPairKeyObjectOptions

Возвращаемый тип

KeyPairKeyObjectResult

Перегрузка 6

generateKeyPairSync(
type: "rsa-pss",
options: RSAPSSKeyPairOptions<"pem", "pem">,
): KeyPairSyncResult<string, string>

Параметры

type: "rsa-pss"
options: RSAPSSKeyPairOptions<"pem", "pem">

Возвращаемый тип

KeyPairSyncResult<string, string>

Перегрузка 7

generateKeyPairSync(
type: "rsa-pss",
options: RSAPSSKeyPairOptions<"pem", "der">,
): KeyPairSyncResult<string, Buffer>

Параметры

type: "rsa-pss"
options: RSAPSSKeyPairOptions<"pem", "der">

Возвращаемый тип

KeyPairSyncResult<string, Buffer>

Перегрузка 8

generateKeyPairSync(
type: "rsa-pss",
options: RSAPSSKeyPairOptions<"der", "pem">,
): KeyPairSyncResult<Buffer, string>

Параметры

type: "rsa-pss"
options: RSAPSSKeyPairOptions<"der", "pem">

Возвращаемый тип

KeyPairSyncResult<Buffer, string>

Перегрузка 9

generateKeyPairSync(
type: "rsa-pss",
options: RSAPSSKeyPairOptions<"der", "der">,
): KeyPairSyncResult<Buffer, Buffer>

Параметры

type: "rsa-pss"
options: RSAPSSKeyPairOptions<"der", "der">

Возвращаемый тип

KeyPairSyncResult<Buffer, Buffer>

Перегрузка 10

generateKeyPairSync(
type: "rsa-pss",
options: RSAPSSKeyPairKeyObjectOptions,
): KeyPairKeyObjectResult

Параметры

type: "rsa-pss"
options: RSAPSSKeyPairKeyObjectOptions

Возвращаемый тип

KeyPairKeyObjectResult

Перегрузка 11

generateKeyPairSync(
type: "dsa",
options: DSAKeyPairOptions<"pem", "pem">,
): KeyPairSyncResult<string, string>

Параметры

type: "dsa"
options: DSAKeyPairOptions<"pem", "pem">

Возвращаемый тип

KeyPairSyncResult<string, string>

Перегрузка 12

generateKeyPairSync(
type: "dsa",
options: DSAKeyPairOptions<"pem", "der">,
): KeyPairSyncResult<string, Buffer>

Параметры

type: "dsa"
options: DSAKeyPairOptions<"pem", "der">

Возвращаемый тип

KeyPairSyncResult<string, Buffer>

Перегрузка 13

generateKeyPairSync(
type: "dsa",
options: DSAKeyPairOptions<"der", "pem">,
): KeyPairSyncResult<Buffer, string>

Параметры

type: "dsa"
options: DSAKeyPairOptions<"der", "pem">

Возвращаемый тип

KeyPairSyncResult<Buffer, string>

Перегрузка 14

generateKeyPairSync(
type: "dsa",
options: DSAKeyPairOptions<"der", "der">,
): KeyPairSyncResult<Buffer, Buffer>

Параметры

type: "dsa"
options: DSAKeyPairOptions<"der", "der">

Возвращаемый тип

KeyPairSyncResult<Buffer, Buffer>

Перегрузка 15

generateKeyPairSync(
type: "dsa",
options: DSAKeyPairKeyObjectOptions,
): KeyPairKeyObjectResult

Параметры

type: "dsa"
options: DSAKeyPairKeyObjectOptions

Возвращаемый тип

KeyPairKeyObjectResult

Перегрузка 16

generateKeyPairSync(
type: "ec",
options: ECKeyPairOptions<"pem", "pem">,
): KeyPairSyncResult<string, string>

Параметры

type: "ec"
options: ECKeyPairOptions<"pem", "pem">

Возвращаемый тип

KeyPairSyncResult<string, string>

Перегрузка 17

generateKeyPairSync(
type: "ec",
options: ECKeyPairOptions<"pem", "der">,
): KeyPairSyncResult<string, Buffer>

Параметры

type: "ec"
options: ECKeyPairOptions<"pem", "der">

Возвращаемый тип

KeyPairSyncResult<string, Buffer>

Перегрузка 18

generateKeyPairSync(
type: "ec",
options: ECKeyPairOptions<"der", "pem">,
): KeyPairSyncResult<Buffer, string>

Параметры

type: "ec"
options: ECKeyPairOptions<"der", "pem">

Возвращаемый тип

KeyPairSyncResult<Buffer, string>

Перегрузка 19

generateKeyPairSync(
type: "ec",
options: ECKeyPairOptions<"der", "der">,
): KeyPairSyncResult<Buffer, Buffer>

Параметры

type: "ec"
options: ECKeyPairOptions<"der", "der">

Возвращаемый тип

KeyPairSyncResult<Buffer, Buffer>

Перегрузка 20

generateKeyPairSync(
type: "ec",
options: ECKeyPairKeyObjectOptions,
): KeyPairKeyObjectResult

Параметры

type: "ec"
options: ECKeyPairKeyObjectOptions

Возвращаемый тип

KeyPairKeyObjectResult

Перегрузка 21

generateKeyPairSync(
type: "ed25519",
options: ED25519KeyPairOptions<"pem", "pem">,
): KeyPairSyncResult<string, string>

Параметры

type: "ed25519"
options: ED25519KeyPairOptions<"pem", "pem">

Возвращаемый тип

KeyPairSyncResult<string, string>

Перегрузка 22

generateKeyPairSync(
type: "ed25519",
options: ED25519KeyPairOptions<"pem", "der">,
): KeyPairSyncResult<string, Buffer>

Параметры

type: "ed25519"
options: ED25519KeyPairOptions<"pem", "der">

Возвращаемый тип

KeyPairSyncResult<string, Buffer>

Перегрузка 23

generateKeyPairSync(
type: "ed25519",
options: ED25519KeyPairOptions<"der", "pem">,
): KeyPairSyncResult<Buffer, string>

Параметры

type: "ed25519"
options: ED25519KeyPairOptions<"der", "pem">

Возвращаемый тип

KeyPairSyncResult<Buffer, string>

Перегрузка 24

generateKeyPairSync(
type: "ed25519",
options: ED25519KeyPairOptions<"der", "der">,
): KeyPairSyncResult<Buffer, Buffer>

Параметры

type: "ed25519"
options: ED25519KeyPairOptions<"der", "der">

Возвращаемый тип

KeyPairSyncResult<Buffer, Buffer>

Перегрузка 25

generateKeyPairSync(
type: "ed25519",
options?: ED25519KeyPairKeyObjectOptions,
): KeyPairKeyObjectResult

Параметры

type: "ed25519"
options: ED25519KeyPairKeyObjectOptions
необязательный

Возвращаемый тип

KeyPairKeyObjectResult

Перегрузка 26

generateKeyPairSync(
type: "ed448",
options: ED448KeyPairOptions<"pem", "pem">,
): KeyPairSyncResult<string, string>

Параметры

type: "ed448"
options: ED448KeyPairOptions<"pem", "pem">

Возвращаемый тип

KeyPairSyncResult<string, string>

Перегрузка 27

generateKeyPairSync(
type: "ed448",
options: ED448KeyPairOptions<"pem", "der">,
): KeyPairSyncResult<string, Buffer>

Параметры

type: "ed448"
options: ED448KeyPairOptions<"pem", "der">

Возвращаемый тип

KeyPairSyncResult<string, Buffer>

Перегрузка 28

generateKeyPairSync(
type: "ed448",
options: ED448KeyPairOptions<"der", "pem">,
): KeyPairSyncResult<Buffer, string>

Параметры

type: "ed448"
options: ED448KeyPairOptions<"der", "pem">

Возвращаемый тип

KeyPairSyncResult<Buffer, string>

Перегрузка 29

generateKeyPairSync(
type: "ed448",
options: ED448KeyPairOptions<"der", "der">,
): KeyPairSyncResult<Buffer, Buffer>

Параметры

type: "ed448"
options: ED448KeyPairOptions<"der", "der">

Возвращаемый тип

KeyPairSyncResult<Buffer, Buffer>

Перегрузка 30

generateKeyPairSync(
type: "ed448",
options?: ED448KeyPairKeyObjectOptions,
): KeyPairKeyObjectResult

Параметры

type: "ed448"
options: ED448KeyPairKeyObjectOptions
необязательный

Тип возвращаемого значения

KeyPairKeyObjectResult

Перегрузка 31

generateKeyPairSync(
type: "x25519",
options: X25519KeyPairOptions<"pem", "pem">,
): KeyPairSyncResult<string, string>

Параметры

type: "x25519"
options: X25519KeyPairOptions<"pem", "pem">

Тип возвращаемого значения

KeyPairSyncResult<string, string>

Перегрузка 32

generateKeyPairSync(
type: "x25519",
options: X25519KeyPairOptions<"pem", "der">,
): KeyPairSyncResult<string, Buffer>

Параметры

type: "x25519"
options: X25519KeyPairOptions<"pem", "der">

Тип возвращаемого значения

KeyPairSyncResult<string, Buffer>

Перегрузка 33

generateKeyPairSync(
type: "x25519",
options: X25519KeyPairOptions<"der", "pem">,
): KeyPairSyncResult<Buffer, string>

Параметры

type: "x25519"
options: X25519KeyPairOptions<"der", "pem">

Тип возвращаемого значения

KeyPairSyncResult<Buffer, string>

Перегрузка 34

generateKeyPairSync(
type: "x25519",
options: X25519KeyPairOptions<"der", "der">,
): KeyPairSyncResult<Buffer, Buffer>

Параметры

type: "x25519"
options: X25519KeyPairOptions<"der", "der">

Тип возвращаемого значения

KeyPairSyncResult<Buffer, Buffer>

Перегрузка 35

generateKeyPairSync(
type: "x25519",
options?: X25519KeyPairKeyObjectOptions,
): KeyPairKeyObjectResult

Параметры

type: "x25519"
options: X25519KeyPairKeyObjectOptions
необязательный

Тип возвращаемого значения

KeyPairKeyObjectResult

Перегрузка 36

generateKeyPairSync(
type: "x448",
options: X448KeyPairOptions<"pem", "pem">,
): KeyPairSyncResult<string, string>

Параметры

type: "x448"
options: X448KeyPairOptions<"pem", "pem">

Тип возвращаемого значения

KeyPairSyncResult<string, string>

Перегрузка 37

generateKeyPairSync(
type: "x448",
options: X448KeyPairOptions<"pem", "der">,
): KeyPairSyncResult<string, Buffer>

Параметры

type: "x448"
options: X448KeyPairOptions<"pem", "der">

Тип возвращаемого значения

KeyPairSyncResult<string, Buffer>

Перегрузка 38

generateKeyPairSync(
type: "x448",
options: X448KeyPairOptions<"der", "pem">,
): KeyPairSyncResult<Buffer, string>

Параметры

type: "x448"
options: X448KeyPairOptions<"der", "pem">

Тип возвращаемого значения

KeyPairSyncResult<Buffer, string>

Перегрузка 39

generateKeyPairSync(
type: "x448",
options: X448KeyPairOptions<"der", "der">,
): KeyPairSyncResult<Buffer, Buffer>

Параметры

type: "x448"
options: X448KeyPairOptions<"der", "der">

Тип возвращаемого значения

KeyPairSyncResult<Buffer, Buffer>

Перегрузка 40

generateKeyPairSync(
type: "x448",
options?: X448KeyPairKeyObjectOptions,
): KeyPairKeyObjectResult

Параметры

type: "x448"
options: X448KeyPairKeyObjectOptions
необязательный

Тип возвращаемого значения

KeyPairKeyObjectResult

function generateKeySync

Использование в Deno

import { generateKeySync } from "node:crypto";
generateKeySync(
type: "hmac" | "aes",
options: { length: number; },
): KeyObject

Синхронно генерирует новый случайный секретный ключ заданного length. type определяет, какие проверки будут выполнены для length.

const {
  generateKeySync,
} = await import('node:crypto');

const key = generateKeySync('hmac', { length: 512 });
console.log(key.export().toString('hex'));  // e89..........41e

Размер сгенерированного ключа HMAC не должен превышать размер блока используемой хеш-функции. Дополнительные сведения см. в разделе createHmac.

Параметры

type: "hmac" | "aes"

Предполагаемое назначение сгенерированного секретного ключа. В настоящее время принимаются значения 'hmac' и 'aes'.

options: { length: number; }

Тип возвращаемого значения

KeyObject

function generatePrime

Использование в Deno

import { generatePrime } from "node:crypto";

Перегрузка 1

generatePrime(
size: number,
callback: (
err: Error | null,
prime: ArrayBuffer,
) => void
,
): void
Совместимость с Deno

Параметр safe, add и rem не поддерживается.

Генерирует псевдослучайное простое число длиной size бит.

Если options.safe равно true, простое число будет безопасным, то есть (prime - 1) / 2 также будет простым числом.

Параметры options.add и options.rem можно использовать для задания дополнительных требований, например, для алгоритма Диффи — Хеллмана:

  • Если заданы и options.add, и options.rem, простое число будет удовлетворять условию prime % add = rem.
  • Если задан только options.add, а options.safe не равен true, простое число будет удовлетворять условию prime % add = 1.
  • Если задан только options.add, а options.safe задан как true, простое число будет удовлетворять условию prime % add = 3. Это необходимо, поскольку prime % add = 1 для options.add > 2 противоречило бы условию, обеспечиваемому options.safe.
  • options.rem игнорируется, если options.add не задан.

Если значения options.add и options.rem заданы как ArrayBuffer, SharedArrayBuffer, TypedArray, Buffer или DataView, их необходимо кодировать в виде последовательностей в порядке от старшего байта к младшему.

По умолчанию простое число кодируется в виде последовательности октетов в порядке от старшего байта к младшему в ArrayBuffer. Если параметр bigint равен true, возвращается значение типа bigint.

Параметры

size: number

Размер генерируемого простого числа (в битах).

callback: (
err: Error | null,
prime: ArrayBuffer,
) => void

Тип возвращаемого значения

void

Перегрузка 2

generatePrime(
size: number,
options: GeneratePrimeOptionsBigInt,
callback: (
err: Error | null,
prime: bigint,
) => void
,
): void
Совместимость с Deno

Параметр safe, add и rem не поддерживается.

Параметры

size: number
options: GeneratePrimeOptionsBigInt
callback: (
err: Error | null,
prime: bigint,
) => void

Тип возвращаемого значения

void

Перегрузка 3

generatePrime(
size: number,
options: GeneratePrimeOptionsArrayBuffer,
callback: (
err: Error | null,
prime: ArrayBuffer,
) => void
,
): void
Совместимость с Deno

Параметр safe, add и rem не поддерживается.

Параметры

size: number
options: GeneratePrimeOptionsArrayBuffer
callback: (
err: Error | null,
prime: ArrayBuffer,
) => void

Тип возвращаемого значения

void

Перегрузка 4

generatePrime(
size: number,
options: GeneratePrimeOptions,
callback: (
err: Error | null,
prime: ArrayBuffer | bigint,
) => void
,
): void
Совместимость с Deno

Параметр safe, add и rem не поддерживается.

Параметры

size: number
options: GeneratePrimeOptions
callback: (
err: Error | null,
prime: ArrayBuffer | bigint,
) => void

Тип возвращаемого значения

void

function generatePrimeSync

Использование в Deno

import { generatePrimeSync } from "node:crypto";

Перегрузка 1

generatePrimeSync(size: number): ArrayBuffer

Генерирует псевдослучайное простое число длиной size бит.

Если options.safe равно true, простое число будет безопасным, то есть (prime - 1) / 2 также будет простым числом.

Параметры options.add и options.rem можно использовать для задания дополнительных требований, например, для алгоритма Диффи — Хеллмана:

  • Если заданы и options.add, и options.rem, простое число будет удовлетворять условию prime % add = rem.
  • Если задан только options.add, а options.safe не равен true, простое число будет удовлетворять условию prime % add = 1.
  • Если задан только options.add, а options.safe задан как true, простое число будет удовлетворять условию prime % add = 3. Это необходимо, поскольку prime % add = 1 для options.add > 2 противоречило бы условию, обеспечиваемому options.safe.
  • options.rem игнорируется, если options.add не задан.

Если значения options.add и options.rem заданы как ArrayBuffer, SharedArrayBuffer, TypedArray, Buffer или DataView, их необходимо кодировать в виде последовательностей в порядке от старшего байта к младшему.

По умолчанию простое число кодируется в виде последовательности октетов в порядке от старшего байта к младшему в ArrayBuffer. Если параметр bigint равен true, возвращается значение типа bigint.

Параметры

size: number

Размер генерируемого простого числа (в битах).

Тип возвращаемого значения

ArrayBuffer

Перегрузка 2

generatePrimeSync(
size: number,
options: GeneratePrimeOptionsBigInt,
): bigint

Параметры

size: number
options: GeneratePrimeOptionsBigInt

Тип возвращаемого значения

bigint

Перегрузка 3

generatePrimeSync(
size: number,
options: GeneratePrimeOptionsArrayBuffer,
): ArrayBuffer

Параметры

size: number
options: GeneratePrimeOptionsArrayBuffer

Тип возвращаемого значения

ArrayBuffer

Перегрузка 4

generatePrimeSync(
size: number,
options: GeneratePrimeOptions,
): ArrayBuffer | bigint

Параметры

size: number
options: GeneratePrimeOptions

Тип возвращаемого значения

ArrayBuffer | bigint

function getCipherInfo

Использование в Deno

import { getCipherInfo } from "node:crypto";
getCipherInfo(
nameOrNid: string | number,
options?: CipherInfoOptions,
): CipherInfo | undefined

Возвращает сведения о заданном шифре.

Некоторые шифры поддерживают ключи и векторы инициализации переменной длины. По умолчанию метод crypto.getCipherInfo() возвращает значения по умолчанию для таких шифров. Чтобы проверить, допустима ли заданная длина ключа или вектора инициализации для указанного шифра, используйте параметры keyLength и ivLength. Если заданные значения недопустимы, будет возвращено undefined.

Параметры

nameOrNid: string | number

Имя или nid шифра, сведения о котором нужно получить.

options: CipherInfoOptions
необязательный

Тип возвращаемого значения

CipherInfo | undefined

функция getCiphers

Использование в Deno

import { getCiphers } from "node:crypto";
getCiphers(): string[]
const {
  getCiphers,
} = await import('node:crypto');

console.log(getCiphers()); // ['aes-128-cbc', 'aes-128-ccm', ...]

Тип возвращаемого значения

string[]

Массив с названиями поддерживаемых алгоритмов шифрования.


функция getCurves

Использование в Deno

import { getCurves } from "node:crypto";
getCurves(): string[]
const {
  getCurves,
} = await import('node:crypto');

console.log(getCurves()); // ['Oakley-EC2N-3', 'Oakley-EC2N-4', ...]

Тип возвращаемого значения

string[]

Массив с названиями поддерживаемых эллиптических кривых.


функция getDiffieHellman

Использование в Deno

import { getDiffieHellman } from "node:crypto";
getDiffieHellman(groupName: string): DiffieHellmanGroup

Создает предопределенный объект обмена ключами DiffieHellmanGroup. Поддерживаемые группы перечислены в документации для DiffieHellmanGroup.

Возвращаемый объект имитирует интерфейс объектов, создаваемых с помощью createDiffieHellman, но не позволяет изменять ключи (например, с помощью diffieHellman.setPublicKey()). Преимущество этого метода состоит в том, что сторонам не нужно заранее генерировать или обмениваться модулем группы, что позволяет сэкономить процессорное время и время на обмен данными.

Пример (получение общего секрета):

const {
  getDiffieHellman,
} = await import('node:crypto');
const alice = getDiffieHellman('modp14');
const bob = getDiffieHellman('modp14');

alice.generateKeys();
bob.generateKeys();

const aliceSecret = alice.computeSecret(bob.getPublicKey(), null, 'hex');
const bobSecret = bob.computeSecret(alice.getPublicKey(), null, 'hex');

// aliceSecret and bobSecret should be the same
console.log(aliceSecret === bobSecret);

Параметры

groupName: string

Тип возвращаемого значения

DiffieHellmanGroup

функция getFips

Использование в Deno

import { getFips } from "node:crypto";
getFips(): 1 | 0

Тип возвращаемого значения

1 | 0

1 тогда и только тогда, когда в данный момент используется криптографический провайдер, соответствующий стандарту FIPS, и 0 в противном случае. В будущем выпуске с изменением основной версии semver тип возвращаемого значения этого API может быть изменен на {boolean}.


функция getHashes

Использование в Deno

import { getHashes } from "node:crypto";
getHashes(): string[]
const {
  getHashes,
} = await import('node:crypto');

console.log(getHashes()); // ['DSA', 'DSA-SHA', 'DSA-SHA1', ...]

Тип возвращаемого значения

string[]

Массив названий поддерживаемых алгоритмов хеширования, например 'RSA-SHA256'. Алгоритмы хеширования также называют алгоритмами «дайджеста».


функция getRandomValues

Использование в Deno

import { getRandomValues } from "node:crypto";
getRandomValues<T extends webcrypto.BufferSource>(typedArray: T): T

Удобный псевдоним для webcrypto.getRandomValues. Эта реализация не соответствует спецификации Web Crypto; для написания совместимого с вебом кода используйте вместо нее webcrypto.getRandomValues.

Параметры типа

T extends webcrypto.BufferSource

Параметры

typedArray: T

Тип возвращаемого значения

T

Возвращает typedArray.


функция hash

Использование в Deno

import { hash } from "node:crypto";

Перегрузка 1

hash(
algorithm: string,
data: BinaryLike,
outputEncoding?: BinaryToTextEncoding,
): string

Вспомогательная функция для однократного вычисления хеш-дайджеста данных. При хешировании небольшого объема уже доступных данных (<= 5MB) она может работать быстрее, чем объектный интерфейс crypto.createHash(). Если данных может быть много или они передаются потоком, рекомендуется использовать crypto.createHash(). Набор algorithm зависит от алгоритмов, поддерживаемых установленной на платформе версией OpenSSL. Например, 'sha256', 'sha512' и т. д. В последних версиях OpenSSL команда openssl list -digest-algorithms выводит список доступных алгоритмов дайджестов.

Пример:

import crypto from 'node:crypto';
import { Buffer } from 'node:buffer';

// Hashing a string and return the result as a hex-encoded string.
const string = 'Node.js';
// 10b3493287f831e81a438811a1ffba01f8cec4b7
console.log(crypto.hash('sha1', string));

// Encode a base64-encoded string into a Buffer, hash it and return
// the result as a buffer.
const base64 = 'Tm9kZS5qcw==';
// <Buffer 10 b3 49 32 87 f8 31 e8 1a 43 88 11 a1 ff ba 01 f8 ce c4 b7>
console.log(crypto.hash('sha1', Buffer.from(base64, 'base64'), 'buffer'));

Параметры

algorithm: string
data: BinaryLike

Если data — строка, перед хешированием она будет закодирована в UTF-8. Если для строкового ввода требуется другая кодировка, можно закодировать строку в TypedArray с помощью TextEncoder или Buffer.from() и передать вместо этого закодированный TypedArray в этот API.

outputEncoding: BinaryToTextEncoding = 'hex'
необязательный

Кодировка, используемая для кодирования возвращаемого дайджеста.

Тип возвращаемого значения

string

Перегрузка 2

hash(
algorithm: string,
data: BinaryLike,
outputEncoding: "buffer",
): Buffer

Параметры

algorithm: string
data: BinaryLike
outputEncoding: "buffer"

Тип возвращаемого значения

Buffer

Перегрузка 3

hash(
algorithm: string,
data: BinaryLike,
outputEncoding?: BinaryToTextEncoding | "buffer",
): string | Buffer

Параметры

algorithm: string
data: BinaryLike
outputEncoding: BinaryToTextEncoding | "buffer"
необязательный

Тип возвращаемого значения

string | Buffer

функция hkdf

Использование в Deno

import { hkdf } from "node:crypto";
hkdf(
digest: string,
irm: BinaryLike | KeyObject,
salt: BinaryLike,
info: BinaryLike,
keylen: number,
callback: (
err: Error | null,
derivedKey: ArrayBuffer,
) => void
,
): void

HKDF — это простая функция выработки ключа, определенная в RFC 5869. Заданные ikm, salt и info используются вместе с digest для получения ключа длиной keylen байт.

Переданная функция callback вызывается с двумя аргументами: err и derivedKey. Если при выработке ключа возникает ошибка, будет установлено значение err; в противном случае err будет иметь значение null. Успешно созданный derivedKey будет передан обратному вызову в виде ArrayBuffer. Если какой-либо входной аргумент содержит недопустимое значение или имеет недопустимый тип, будет выброшена ошибка.

import { Buffer } from 'node:buffer';
const {
  hkdf,
} = await import('node:crypto');

hkdf('sha512', 'key', 'salt', 'info', 64, (err, derivedKey) => {
  if (err) throw err;
  console.log(Buffer.from(derivedKey).toString('hex'));  // '24156e2...5391653'
});

Параметры

digest: string

Используемый алгоритм дайджеста.

irm: BinaryLike | KeyObject
salt: BinaryLike

Значение соли. Параметр обязателен, но может быть пустым.

info: BinaryLike

Дополнительная информация. Параметр обязателен, но может быть пустым и не может превышать 1024 байта.

keylen: number

Длина создаваемого ключа. Должна быть больше 0. Максимально допустимое значение равно 255, умноженному на число байтов, генерируемых выбранной функцией дайджеста (например, sha512 генерирует 64-байтовые хеши, поэтому максимальный размер выходных данных HKDF составляет 16320 байт).

callback: (
err: Error | null,
derivedKey: ArrayBuffer,
) => void

Тип возвращаемого значения

void

функция hkdfSync

Использование в Deno

import { hkdfSync } from "node:crypto";
hkdfSync(
digest: string,
ikm: BinaryLike | KeyObject,
salt: BinaryLike,
info: BinaryLike,
keylen: number,
): ArrayBuffer

Предоставляет синхронную функцию выработки ключа HKDF, определенную в RFC 5869. Заданные ikm, salt и info используются вместе с digest для получения ключа длиной keylen байт.

Успешно созданный derivedKey возвращается в виде ArrayBuffer.

Если какой-либо входной аргумент содержит недопустимое значение или имеет недопустимый тип либо если невозможно создать производный ключ, будет выброшена ошибка.

import { Buffer } from 'node:buffer';
const {
  hkdfSync,
} = await import('node:crypto');

const derivedKey = hkdfSync('sha512', 'key', 'salt', 'info', 64);
console.log(Buffer.from(derivedKey).toString('hex'));  // '24156e2...5391653'

Параметры

digest: string

Используемый алгоритм дайджеста.

ikm: BinaryLike | KeyObject

Входной материал для выработки ключа. Параметр обязателен, но может быть пустым.

salt: BinaryLike

Значение соли. Параметр обязателен, но может быть пустым.

info: BinaryLike

Дополнительная информация. Параметр обязателен, но может быть пустым и не может превышать 1024 байта.

keylen: number

Длина создаваемого ключа. Должна быть больше 0. Максимально допустимое значение равно 255, умноженному на число байтов, генерируемых выбранной функцией дайджеста (например, sha512 генерирует 64-байтовые хеши, поэтому максимальный размер выходных данных HKDF составляет 16320 байт).

Тип возвращаемого значения

ArrayBuffer

функция pbkdf2

Использование в Deno

import { pbkdf2 } from "node:crypto";
pbkdf2(
password: BinaryLike,
salt: BinaryLike,
iterations: number,
keylen: number,
digest: string,
callback: (
err: Error | null,
derivedKey: Buffer,
) => void
,
): void

Предоставляет асинхронную реализацию функции выработки ключа на основе пароля 2 (PBKDF2). Для получения ключа запрошенной длины (в байтах) (keylen) из значений password, salt и iterations применяется выбранный алгоритм дайджеста HMAC, указанный в digest.

Переданная функция callback вызывается с двумя аргументами: err и derivedKey. Если при выработке ключа возникает ошибка, будет установлено значение err; в противном случае err будет иметь значение null. По умолчанию успешно созданный derivedKey передается обратному вызову в виде Buffer. Если какой-либо входной аргумент содержит недопустимое значение или имеет недопустимый тип, будет выброшена ошибка.

Аргумент iterations должен быть числом, значение которого следует установить как можно выше. Чем больше число итераций, тем надежнее будет производный ключ, но тем больше времени займет выполнение.

Значение salt должно быть как можно более уникальным. Рекомендуется использовать случайную соль длиной не менее 16 байт. Подробности см. в документе NIST SP 800-132.

При передаче строк для password или salt обратите внимание на caveats when using strings as inputs to cryptographic APIs.

const {
  pbkdf2,
} = await import('node:crypto');

pbkdf2('secret', 'salt', 100000, 64, 'sha512', (err, derivedKey) => {
  if (err) throw err;
  console.log(derivedKey.toString('hex'));  // '3745e48...08d59ae'
});

Массив поддерживаемых функций дайджеста можно получить с помощью getHashes.

Этот API использует пул потоков libuv, что может неожиданно и отрицательно сказаться на производительности некоторых приложений; дополнительную информацию см. в документации UV_THREADPOOL_SIZE.

Параметры

password: BinaryLike
salt: BinaryLike
iterations: number
keylen: number
digest: string
callback: (
err: Error | null,
derivedKey: Buffer,
) => void

Тип возвращаемого значения

void

функция pbkdf2Sync

Использование в Deno

import { pbkdf2Sync } from "node:crypto";
pbkdf2Sync(
password: BinaryLike,
salt: BinaryLike,
iterations: number,
keylen: number,
digest: string,
): Buffer

Предоставляет синхронную реализацию функции выработки ключа на основе пароля 2 (PBKDF2). Для получения ключа запрошенной длины (в байтах) (keylen) из значений password, salt и iterations применяется выбранный алгоритм дайджеста HMAC, указанный в digest.

При возникновении ошибки будет выброшено Error; в противном случае производный ключ будет возвращен в виде Buffer.

Аргумент iterations должен быть числом, значение которого следует установить как можно выше. Чем больше число итераций, тем надежнее будет производный ключ, но тем больше времени займет выполнение.

Значение salt должно быть как можно более уникальным. Рекомендуется использовать случайную соль длиной не менее 16 байт. Подробности см. в документе NIST SP 800-132.

При передаче строк для password или salt обратите внимание на caveats when using strings as inputs to cryptographic APIs.

const {
  pbkdf2Sync,
} = await import('node:crypto');

const key = pbkdf2Sync('secret', 'salt', 100000, 64, 'sha512');
console.log(key.toString('hex'));  // '3745e48...08d59ae'

Массив поддерживаемых функций дайджеста можно получить с помощью getHashes.

Параметры

password: BinaryLike
salt: BinaryLike
iterations: number
keylen: number
digest: string

Тип возвращаемого значения

Buffer

функция privateDecrypt

Использование в Deno

import { privateDecrypt } from "node:crypto";
privateDecrypt(
privateKey: RsaPrivateKey | KeyLike,
buffer: ArrayBufferView | string,
): Buffer

Расшифровывает buffer с помощью privateKey. buffer ранее был зашифрован с помощью соответствующего открытого ключа, например с использованием publicEncrypt.

Если privateKey не является KeyObject, эта функция работает так, как если бы privateKey был передан в createPrivateKey. Если это объект, можно передать свойство padding. В противном случае эта функция использует RSA_PKCS1_OAEP_PADDING.

Параметры

privateKey: RsaPrivateKey | KeyLike
buffer: ArrayBufferView | string

Тип возвращаемого значения

Buffer

функция privateEncrypt

Использование в Deno

import { privateEncrypt } from "node:crypto";
privateEncrypt(
privateKey: RsaPrivateKey | KeyLike,
buffer: ArrayBufferView | string,
): Buffer

Шифрует buffer с помощью privateKey. Возвращённые данные можно расшифровать с помощью соответствующего открытого ключа, например с использованием publicDecrypt.

Если privateKey не является KeyObject, эта функция работает так, как если бы privateKey был передан в createPrivateKey. Если это объект, можно передать свойство padding. В противном случае эта функция использует RSA_PKCS1_PADDING.

Параметры

privateKey: RsaPrivateKey | KeyLike
buffer: ArrayBufferView | string

Тип возвращаемого значения

Buffer

функция pseudoRandomBytes

Использование в Deno

import { pseudoRandomBytes } from "node:crypto";

Вариант 1

pseudoRandomBytes(size: number): Buffer

Параметры

size: number

Тип возвращаемого значения

Buffer

Вариант 2

pseudoRandomBytes(
size: number,
callback: (
err: Error | null,
buf: Buffer,
) => void
,
): void

Параметры

size: number
callback: (
err: Error | null,
buf: Buffer,
) => void

Тип возвращаемого значения

void

функция publicDecrypt

Использование в Deno

import { publicDecrypt } from "node:crypto";
publicDecrypt(
key:
RsaPublicKey
| RsaPrivateKey
| KeyLike
,
buffer: ArrayBufferView | string,
): Buffer
Совместимость с Deno

Этот символ представляет собой неработающую заглушку.

Расшифровывает buffer с помощью key.buffer ранее был зашифрован с помощью соответствующего закрытого ключа, например с использованием privateEncrypt.

Если key не является KeyObject, эта функция работает так, как если бы key был передан в createPublicKey. Если это объект, можно передать свойство padding. В противном случае эта функция использует RSA_PKCS1_PADDING.

Поскольку открытые ключи RSA можно получить из закрытых ключей, вместо открытого ключа можно передать закрытый ключ.

Параметры

key:
RsaPublicKey
| RsaPrivateKey
| KeyLike
buffer: ArrayBufferView | string

Тип возвращаемого значения

Buffer

функция publicEncrypt

Использование в Deno

import { publicEncrypt } from "node:crypto";
publicEncrypt(
key:
RsaPublicKey
| RsaPrivateKey
| KeyLike
,
buffer: ArrayBufferView | string,
): Buffer

Шифрует содержимое buffer с помощью key и возвращает новый Buffer с зашифрованным содержимым. Возвращённые данные можно расшифровать с помощью соответствующего закрытого ключа, например с использованием privateDecrypt.

Если key не является KeyObject, эта функция работает так, как если бы key был передан в createPublicKey. Если это объект, можно передать свойство padding. В противном случае эта функция использует RSA_PKCS1_OAEP_PADDING.

Поскольку открытые ключи RSA можно получить из закрытых ключей, вместо открытого ключа можно передать закрытый ключ.

Параметры

key:
RsaPublicKey
| RsaPrivateKey
| KeyLike
buffer: ArrayBufferView | string

Тип возвращаемого значения

Buffer

функция randomBytes

Использование в Deno

import { randomBytes } from "node:crypto";

Вариант 1

randomBytes(size: number): Buffer

Генерирует криптографически стойкие псевдослучайные данные. Аргумент size — это число, указывающее количество байтов для генерации.

Если указана функция callback, байты генерируются асинхронно, а функция callback вызывается с двумя аргументами: err и buf. В случае ошибки err будет объектом Error; в противном случае это null. Аргумент buf — это Buffer, содержащий сгенерированные байты.

// Asynchronous
const {
  randomBytes,
} = await import('node:crypto');

randomBytes(256, (err, buf) => {
  if (err) throw err;
  console.log(`${buf.length} bytes of random data: ${buf.toString('hex')}`);
});

Если функция callback не указана, случайные байты генерируются синхронно и возвращаются в виде Buffer. Если при генерации байтов возникнет проблема, будет выброшена ошибка.

// Synchronous
const {
  randomBytes,
} = await import('node:crypto');

const buf = randomBytes(256);
console.log(
  `${buf.length} bytes of random data: ${buf.toString('hex')}`);

Метод crypto.randomBytes() не завершится, пока не станет доступно достаточное количество энтропии. Обычно это занимает не более нескольких миллисекунд. Единственный случай, когда генерация случайных байтов может занять заметно больше времени, — сразу после загрузки системы, когда уровень энтропии ещё низок.

Этот API использует пул потоков libuv, что может оказывать неожиданное и негативное влияние на производительность некоторых приложений; дополнительную информацию см. в документации UV_THREADPOOL_SIZE.

Асинхронная версия crypto.randomBytes() выполняется в рамках одного запроса к пулу потоков. Чтобы уменьшить разброс длительности задач в пуле потоков, разбивайте большие запросы randomBytes на части, если они выполняются в рамках обработки запроса клиента.

Параметры

size: number

Количество байтов для генерации. Значение size не должно превышать 2**31 - 1.

Тип возвращаемого значения

Buffer

если функция callback не указана.

Вариант 2

randomBytes(
size: number,
callback: (
err: Error | null,
buf: Buffer,
) => void
,
): void

Параметры

size: number
callback: (
err: Error | null,
buf: Buffer,
) => void

Тип возвращаемого значения

void

функция randomFill

Использование в Deno

import { randomFill } from "node:crypto";

Вариант 1

randomFill<T extends ArrayBufferView>(
buffer: T,
callback: (
err: Error | null,
buf: T,
) => void
,
): void

Эта функция похожа на randomBytes, но в качестве первого аргумента требует Buffer, который будет заполнен. Кроме того, необходимо передать функцию обратного вызова.

Если функция callback не указана, будет выброшена ошибка.

import { Buffer } from 'node:buffer';
const { randomFill } = await import('node:crypto');

const buf = Buffer.alloc(10);
randomFill(buf, (err, buf) => {
  if (err) throw err;
  console.log(buf.toString('hex'));
});

randomFill(buf, 5, (err, buf) => {
  if (err) throw err;
  console.log(buf.toString('hex'));
});

// The above is equivalent to the following:
randomFill(buf, 5, 5, (err, buf) => {
  if (err) throw err;
  console.log(buf.toString('hex'));
});

В качестве buffer можно передать любой экземпляр ArrayBuffer, TypedArray или DataView.

Хотя сюда входят экземпляры Float32Array и Float64Array, эту функцию не следует использовать для генерации случайных чисел с плавающей точкой. Результат может содержать +Infinity, -Infinity и NaN; и даже если массив содержит только конечные числа, они не будут иметь равномерного случайного распределения и не будут иметь осмысленных нижней или верхней границы.

import { Buffer } from 'node:buffer';
const { randomFill } = await import('node:crypto');

const a = new Uint32Array(10);
randomFill(a, (err, buf) => {
  if (err) throw err;
  console.log(Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength)
    .toString('hex'));
});

const b = new DataView(new ArrayBuffer(10));
randomFill(b, (err, buf) => {
  if (err) throw err;
  console.log(Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength)
    .toString('hex'));
});

const c = new ArrayBuffer(10);
randomFill(c, (err, buf) => {
  if (err) throw err;
  console.log(Buffer.from(buf).toString('hex'));
});

Этот API использует пул потоков libuv, что может оказывать неожиданное и негативное влияние на производительность некоторых приложений; дополнительную информацию см. в документации UV_THREADPOOL_SIZE.

Асинхронная версия crypto.randomFill() выполняется в рамках одного запроса к пулу потоков. Чтобы уменьшить разброс длительности задач в пуле потоков, разбивайте большие запросы randomFill на части, если они выполняются в рамках обработки запроса клиента.

Параметры типа

T extends ArrayBufferView

Параметры

buffer: T

Обязательный параметр. Размер переданного buffer не должен превышать 2**31 - 1.

callback: (
err: Error | null,
buf: T,
) => void

function(err, buf) {}.

Тип возвращаемого значения

void

Вариант 2

randomFill<T extends ArrayBufferView>(
buffer: T,
offset: number,
callback: (
err: Error | null,
buf: T,
) => void
,
): void

Параметры типа

T extends ArrayBufferView

Параметры

buffer: T
offset: number
callback: (
err: Error | null,
buf: T,
) => void

Тип возвращаемого значения

void

Вариант 3

randomFill<T extends ArrayBufferView>(
buffer: T,
offset: number,
size: number,
callback: (
err: Error | null,
buf: T,
) => void
,
): void

Параметры типа

T extends ArrayBufferView

Параметры

buffer: T
offset: number
size: number
callback: (
err: Error | null,
buf: T,
) => void

Тип возвращаемого значения

void

функция randomFillSync

Использование в Deno

import { randomFillSync } from "node:crypto";
randomFillSync<T extends ArrayBufferView>(
buffer: T,
offset?: number,
size?: number,
): T

Синхронная версия randomFill.

import { Buffer } from 'node:buffer';
const { randomFillSync } = await import('node:crypto');

const buf = Buffer.alloc(10);
console.log(randomFillSync(buf).toString('hex'));

randomFillSync(buf, 5);
console.log(buf.toString('hex'));

// The above is equivalent to the following:
randomFillSync(buf, 5, 5);
console.log(buf.toString('hex'));

В качестве buffer можно передать любой экземпляр ArrayBuffer, TypedArray или DataView.

import { Buffer } from 'node:buffer';
const { randomFillSync } = await import('node:crypto');

const a = new Uint32Array(10);
console.log(Buffer.from(randomFillSync(a).buffer,
                        a.byteOffset, a.byteLength).toString('hex'));

const b = new DataView(new ArrayBuffer(10));
console.log(Buffer.from(randomFillSync(b).buffer,
                        b.byteOffset, b.byteLength).toString('hex'));

const c = new ArrayBuffer(10);
console.log(Buffer.from(randomFillSync(c)).toString('hex'));

Параметры типа

T extends ArrayBufferView

Параметры

buffer: T

Обязательный параметр. Размер переданного buffer не должен превышать 2**31 - 1.

offset: number = 0
необязательный
size: number = buffer.length - offset
необязательный

Тип возвращаемого значения

T

Объект, переданный в качестве аргумента buffer.


функция randomInt

Использование в Deno

import { randomInt } from "node:crypto";

Вариант 1

randomInt(max: number): number

Возвращает случайное целое число n, такое что min <= n < max. В этой реализации исключено смещение по модулю.

Диапазон (max - min) должен быть меньше 2**48. min и max должны быть безопасными целыми числами.

Если функция callback не указана, случайное целое число генерируется синхронно.

// Asynchronous
const {
  randomInt,
} = await import('node:crypto');

randomInt(3, (err, n) => {
  if (err) throw err;
  console.log(`Random number chosen from (0, 1, 2): ${n}`);
});
// Synchronous
const {
  randomInt,
} = await import('node:crypto');

const n = randomInt(3);
console.log(`Random number chosen from (0, 1, 2): ${n}`);
// With `min` argument
const {
  randomInt,
} = await import('node:crypto');

const n = randomInt(1, 7);
console.log(`The dice rolled: ${n}`);

Параметры

max: number

Конец случайного диапазона (не включительно).

Тип возвращаемого значения

number

Вариант 2

randomInt(
min: number,
max: number,
): number

Параметры

min: number
max: number

Тип возвращаемого значения

number

Вариант 3

randomInt(
max: number,
callback: (
err: Error | null,
value: number,
) => void
,
): void

Параметры

max: number
callback: (
err: Error | null,
value: number,
) => void

Тип возвращаемого значения

void

Вариант 4

randomInt(
min: number,
max: number,
callback: (
err: Error | null,
value: number,
) => void
,
): void

Параметры

min: number
max: number
callback: (
err: Error | null,
value: number,
) => void

Тип возвращаемого значения

void

функция randomUUID

Использование в Deno

import { randomUUID } from "node:crypto";
randomUUID(options?: RandomUUIDOptions): UUID

Создаёт случайный UUID версии 4 в соответствии с RFC 4122. UUID генерируется с помощью криптографического генератора псевдослучайных чисел.

Параметры

options: RandomUUIDOptions
необязательный

Тип возвращаемого значения

UUID

функция scrypt

Использование в Deno

import { scrypt } from "node:crypto";

Вариант перегрузки 1

scrypt(
password: BinaryLike,
salt: BinaryLike,
keylen: number,
callback: (
err: Error | null,
derivedKey: Buffer,
) => void
,
): void

Предоставляет асинхронную реализацию scrypt. Scrypt — это функция выработки ключа на основе пароля, разработанная таким образом, чтобы требовать значительных вычислительных ресурсов и объёма памяти, делая атаки методом перебора неэффективными.

salt должен быть как можно более уникальным. Рекомендуется использовать случайную соль длиной не менее 16 байт. Подробнее см. в документе NIST SP 800-132.

При передаче строк для password или salt рекомендуется учитывать caveats when using strings as inputs to cryptographic APIs.

Функция callback вызывается с двумя аргументами: err и derivedKey. err — это объект исключения, если при выработке ключа произошла ошибка; в противном случае err — это null. derivedKey передаётся функции обратного вызова как Buffer.

Если какой-либо из входных аргументов содержит недопустимое значение или имеет недопустимый тип, возникает исключение.

const {
  scrypt,
} = await import('node:crypto');

// Using the factory defaults.
scrypt('password', 'salt', 64, (err, derivedKey) => {
  if (err) throw err;
  console.log(derivedKey.toString('hex'));  // '3745e48...08d59ae'
});
// Using a custom N parameter. Must be a power of two.
scrypt('password', 'salt', 64, { N: 1024 }, (err, derivedKey) => {
  if (err) throw err;
  console.log(derivedKey.toString('hex'));  // '3745e48...aa39b34'
});

Параметры

password: BinaryLike
salt: BinaryLike
keylen: number
callback: (
err: Error | null,
derivedKey: Buffer,
) => void

Тип возвращаемого значения

void

Вариант перегрузки 2

scrypt(
password: BinaryLike,
salt: BinaryLike,
keylen: number,
options: ScryptOptions,
callback: (
err: Error | null,
derivedKey: Buffer,
) => void
,
): void

Параметры

password: BinaryLike
salt: BinaryLike
keylen: number
options: ScryptOptions
callback: (
err: Error | null,
derivedKey: Buffer,
) => void

Тип возвращаемого значения

void

функция scryptSync

Использование в Deno

import { scryptSync } from "node:crypto";
scryptSync(
password: BinaryLike,
salt: BinaryLike,
keylen: number,
options?: ScryptOptions,
): Buffer

Предоставляет синхронную реализацию scrypt. Scrypt — это функция выработки ключа на основе пароля, разработанная таким образом, чтобы требовать значительных вычислительных ресурсов и объёма памяти, делая атаки методом перебора неэффективными.

salt должен быть как можно более уникальным. Рекомендуется использовать случайную соль длиной не менее 16 байт. Подробнее см. в документе NIST SP 800-132.

При передаче строк для password или salt рекомендуется учитывать caveats when using strings as inputs to cryptographic APIs.

Если при выработке ключа произошла ошибка, возникает исключение; в противном случае выработанный ключ возвращается как Buffer.

Если какой-либо из входных аргументов содержит недопустимое значение или имеет недопустимый тип, возникает исключение.

const {
  scryptSync,
} = await import('node:crypto');
// Using the factory defaults.

const key1 = scryptSync('password', 'salt', 64);
console.log(key1.toString('hex'));  // '3745e48...08d59ae'
// Using a custom N parameter. Must be a power of two.
const key2 = scryptSync('password', 'salt', 64, { N: 1024 });
console.log(key2.toString('hex'));  // '3745e48...aa39b34'

Параметры

password: BinaryLike
salt: BinaryLike
keylen: number
options: ScryptOptions
необязательный

Тип возвращаемого значения

Buffer

функция secureHeapUsed

Использование в Deno

import { secureHeapUsed } from "node:crypto";
secureHeapUsed(): SecureHeapUsage
Совместимость с Deno

Этот символ является нефункциональной заглушкой.

Тип возвращаемого значения

SecureHeapUsage

функция setEngine

Использование в Deno

import { setEngine } from "node:crypto";
setEngine(
engine: string,
flags?: number,
): void
Совместимость с Deno

Этот символ является нефункциональной заглушкой.

Загружает и задаёт engine для некоторых или всех функций OpenSSL (выбор определяется флагами).

engine может быть идентификатором или путём к разделяемой библиотеке движка.

Для необязательного аргумента flags по умолчанию используется ENGINE_METHOD_ALL. flags — это битовое поле, принимающее один или несколько из следующих флагов (определённых в crypto.constants):

  • crypto.constants.ENGINE_METHOD_RSA
  • crypto.constants.ENGINE_METHOD_DSA
  • crypto.constants.ENGINE_METHOD_DH
  • crypto.constants.ENGINE_METHOD_RAND
  • crypto.constants.ENGINE_METHOD_EC
  • crypto.constants.ENGINE_METHOD_CIPHERS
  • crypto.constants.ENGINE_METHOD_DIGESTS
  • crypto.constants.ENGINE_METHOD_PKEY_METHS
  • crypto.constants.ENGINE_METHOD_PKEY_ASN1_METHS
  • crypto.constants.ENGINE_METHOD_ALL
  • crypto.constants.ENGINE_METHOD_NONE

Параметры

engine: string
flags: number
необязательный

Тип возвращаемого значения

void

функция setFips

Использование в Deno

import { setFips } from "node:crypto";
setFips(bool: boolean): void

Включает криптографический провайдер, совместимый с FIPS, в сборке Node.js с поддержкой FIPS. Вызывает ошибку, если режим FIPS недоступен.

Параметры

bool: boolean

true для включения режима FIPS.

Тип возвращаемого значения

void

функция sign

Использование в Deno

import { sign } from "node:crypto";

Вариант перегрузки 1

sign(
algorithm:
string
| null
| undefined
,
data: ArrayBufferView,
key:
KeyLike
| SignKeyObjectInput
| SignPrivateKeyInput
| SignJsonWebKeyInput
,
): Buffer

Вычисляет и возвращает подпись для data с использованием заданного закрытого ключа и алгоритма. Если algorithm имеет значение null или undefined, используемый алгоритм зависит от типа ключа (в частности, для Ed25519 и Ed448).

Если key не является KeyObject, функция работает так, как если бы key был передан в createPrivateKey. Если это объект, можно передать следующие дополнительные свойства:

Если указана функция callback, эта функция использует пул потоков libuv.

Параметры

algorithm:
string
| null
| undefined
data: ArrayBufferView
key:
KeyLike
| SignKeyObjectInput
| SignPrivateKeyInput
| SignJsonWebKeyInput

Тип возвращаемого значения

Buffer

Вариант перегрузки 2

sign(
algorithm:
string
| null
| undefined
,
data: ArrayBufferView,
key:
KeyLike
| SignKeyObjectInput
| SignPrivateKeyInput
| SignJsonWebKeyInput
,
callback: (
error: Error | null,
data: Buffer,
) => void
,
): void

Параметры

algorithm:
string
| null
| undefined
data: ArrayBufferView
key:
KeyLike
| SignKeyObjectInput
| SignPrivateKeyInput
| SignJsonWebKeyInput
callback: (
error: Error | null,
data: Buffer,
) => void

Тип возвращаемого значения

void

функция timingSafeEqual

Использование в Deno

import { timingSafeEqual } from "node:crypto";
timingSafeEqual(
a: ArrayBufferView,
b: ArrayBufferView,
): boolean

Эта функция сравнивает базовые байты, представляющие заданные экземпляры ArrayBuffer, TypedArray или DataView, с использованием алгоритма с постоянным временем выполнения.

Эта функция не раскрывает информацию о времени выполнения, которая могла бы позволить злоумышленнику угадать одно из значений. Она подходит для сравнения дайджестов HMAC или секретных значений, таких как файлы cookie аутентификации или URL-адреса с возможностью передачи полномочий.

a и b должны быть экземплярами Buffer, TypedArray или DataView и иметь одинаковую длину в байтах. Если длины a и b в байтах различаются, возникает ошибка.

Если хотя бы один из аргументов a и b является TypedArray, содержащим более одного байта на элемент, например Uint16Array, результат будет вычислен с учётом порядка байтов платформы.

Если оба входных значения являются Float32Array или Float64Array, эта функция может возвращать неожиданные результаты из-за кодирования чисел с плавающей запятой по стандарту IEEE 754. В частности, ни x === y, ни Object.is(x, y) не означает, что байтовые представления двух чисел с плавающей запятой x и y совпадают.

Использование crypto.timingSafeEqual не гарантирует, что окружающий код безопасен с точки зрения времени выполнения. Следует убедиться, что окружающий код не создаёт уязвимостей, связанных со временем выполнения.

Параметры

a: ArrayBufferView
b: ArrayBufferView

Тип возвращаемого значения

boolean

функция verify

Использование в Deno

import { verify } from "node:crypto";

Вариант перегрузки 1

verify(
algorithm:
string
| null
| undefined
,
data: ArrayBufferView,
key:
KeyLike
| VerifyKeyObjectInput
| VerifyPublicKeyInput
| VerifyJsonWebKeyInput
,
signature: ArrayBufferView,
): boolean

Проверяет заданную подпись для data с использованием указанного ключа и алгоритма. Если algorithm имеет значение null или undefined, используемый алгоритм зависит от типа ключа (в частности, для Ed25519 и Ed448).

Если key не является KeyObject, функция работает так, как если бы key был передан в createPublicKey. Если это объект, можно передать следующие дополнительные свойства:

Аргумент signature — это ранее вычисленная подпись для data.

Поскольку открытые ключи можно получить из закрытых ключей, для key можно передать как закрытый, так и открытый ключ.

Если указана функция callback, эта функция использует пул потоков libuv.

Параметры

algorithm:
string
| null
| undefined
data: ArrayBufferView
key:
KeyLike
| VerifyKeyObjectInput
| VerifyPublicKeyInput
| VerifyJsonWebKeyInput
signature: ArrayBufferView

Тип возвращаемого значения

boolean

Вариант перегрузки 2

verify(
algorithm:
string
| null
| undefined
,
data: ArrayBufferView,
key:
KeyLike
| VerifyKeyObjectInput
| VerifyPublicKeyInput
| VerifyJsonWebKeyInput
,
signature: ArrayBufferView,
callback: (
error: Error | null,
result: boolean,
) => void
,
): void

Параметры

algorithm:
string
| null
| undefined
data: ArrayBufferView
key:
KeyLike
| VerifyKeyObjectInput
| VerifyPublicKeyInput
| VerifyJsonWebKeyInput
signature: ArrayBufferView
callback: (
error: Error | null,
result: boolean,
) => void

Тип возвращаемого значения

void

интерфейс AsymmetricKeyDetails

Использование в Deno

import { type AsymmetricKeyDetails } from "node:crypto";

Свойства

modulusLength: number | undefined
необязательный

Размер ключа в битах (RSA, DSA).

publicExponent: bigint | undefined
необязательный

Открытый показатель степени (RSA).

hashAlgorithm: string | undefined
необязательный

Название хеш-функции (RSA-PSS).

mgf1HashAlgorithm: string | undefined
необязательный

Название хеш-функции, используемой MGF1 (RSA-PSS).

saltLength: number | undefined
необязательный

Минимальная длина соли в байтах (RSA-PSS).

divisorLength: number | undefined
необязательный

Размер q в битах (DSA).

namedCurve: string | undefined
необязательный

Название кривой (EC).


интерфейс BasePrivateKeyEncodingOptions

Использование в Deno

import { type BasePrivateKeyEncodingOptions } from "node:crypto";

Параметры типа

T extends KeyFormat

Свойства

format: T
cipher: string | undefined
необязательное
passphrase: string | undefined
необязательное

интерфейс CheckPrimeOptions

Использование в Deno

import { type CheckPrimeOptions } from "node:crypto";

Свойства

checks: number | undefined
необязательное

Количество вероятностных итераций проверки простоты Миллера — Рабина. Если значение равно 0 (нулю), используется такое количество проверок, которое обеспечивает вероятность ложноположительного результата не более 2**-64 для случайного ввода. Выбирая количество проверок, следует проявлять осторожность. Дополнительные сведения см. в документации OpenSSL о параметре nchecks функции BN_is_prime_ex.


интерфейс CipherCCM

расширяет Cipher

Использование в Deno

import { type CipherCCM } from "node:crypto";

Методы

setAAD(
buffer: ArrayBufferView,
options: { plaintextLength: number; },
): this
getAuthTag(): Buffer

интерфейс CipherCCMOptions

расширяет [stream.TransformOptions]

Использование в Deno

import { type CipherCCMOptions } from "node:crypto";

Свойства

authTagLength: number

интерфейс CipherChaCha20Poly1305

расширяет Cipher

Использование в Deno

import { type CipherChaCha20Poly1305 } from "node:crypto";

Методы

setAAD(
buffer: ArrayBufferView,
options: { plaintextLength: number; },
): this
getAuthTag(): Buffer

интерфейс CipherChaCha20Poly1305Options

расширяет [stream.TransformOptions]

Использование в Deno

import { type CipherChaCha20Poly1305Options } from "node:crypto";

Свойства

authTagLength: number | undefined
необязательное

интерфейс CipherGCM

расширяет Cipher

Использование в Deno

import { type CipherGCM } from "node:crypto";

Методы

setAAD(
buffer: ArrayBufferView,
options?: { plaintextLength: number; },
): this
getAuthTag(): Buffer

интерфейс CipherGCMOptions

расширяет [stream.TransformOptions]

Использование в Deno

import { type CipherGCMOptions } from "node:crypto";

Свойства

authTagLength: number | undefined
необязательное

интерфейс CipherInfo

Использование в Deno

import { type CipherInfo } from "node:crypto";

Свойства

name: string

Название шифра.

nid: number

Идентификатор nid шифра.

blockSize: number | undefined
необязательное

Размер блока шифра в байтах. Это свойство отсутствует, если режим — 'stream'.

ivLength: number | undefined
необязательное

Ожидаемая длина вектора инициализации в байтах или длина по умолчанию. Это свойство отсутствует, если шифр не использует вектор инициализации.

keyLength: number

Ожидаемая длина ключа в байтах или длина по умолчанию.

mode: CipherMode

Режим шифрования.


интерфейс CipherInfoOptions

Использование в Deno

import { type CipherInfoOptions } from "node:crypto";

Свойства

keyLength: number | undefined
необязательное

Тестовая длина ключа.

ivLength: number | undefined
необязательное

Тестовая длина IV.


интерфейс CipherOCB

расширяет Cipher

Использование в Deno

import { type CipherOCB } from "node:crypto";

Методы

setAAD(
buffer: ArrayBufferView,
options?: { plaintextLength: number; },
): this
getAuthTag(): Buffer

интерфейс CipherOCBOptions

расширяет [stream.TransformOptions]

Использование в Deno

import { type CipherOCBOptions } from "node:crypto";

Свойства

authTagLength: number

интерфейс DecipherCCM

расширяет Decipher

Использование в Deno

import { type DecipherCCM } from "node:crypto";

Методы

setAuthTag(buffer: ArrayBufferView): this
setAAD(
buffer: ArrayBufferView,
options: { plaintextLength: number; },
): this

интерфейс DecipherChaCha20Poly1305

расширяет Decipher

Использование в Deno

import { type DecipherChaCha20Poly1305 } from "node:crypto";

Методы

setAuthTag(buffer: ArrayBufferView): this
setAAD(
buffer: ArrayBufferView,
options: { plaintextLength: number; },
): this

интерфейс DecipherGCM

расширяет Decipher

Использование в Deno

import { type DecipherGCM } from "node:crypto";

Методы

setAuthTag(buffer: ArrayBufferView): this
setAAD(
buffer: ArrayBufferView,
options?: { plaintextLength: number; },
): this

интерфейс DecipherOCB

расширяет Decipher

Использование в Deno

import { type DecipherOCB } from "node:crypto";

Методы

setAuthTag(buffer: ArrayBufferView): this
setAAD(
buffer: ArrayBufferView,
options?: { plaintextLength: number; },
): this

интерфейс DiffieHellmanGroupConstructor

Использование в Deno

import { type DiffieHellmanGroupConstructor } from "node:crypto";

Сигнатуры вызова

(name: string): DiffieHellmanGroup

Свойства

prototype: DiffieHellmanGroup
только для чтения

интерфейс DSAKeyPairKeyObjectOptions

Использование в Deno

import { type DSAKeyPairKeyObjectOptions } from "node:crypto";

Свойства

modulusLength: number

Размер ключа в битах

divisorLength: number

Размер q в битах


интерфейс DSAKeyPairOptions

Использование в Deno

import { type DSAKeyPairOptions } from "node:crypto";

Параметры типа

PubF extends KeyFormat
PrivF extends KeyFormat

Свойства

modulusLength: number

Размер ключа в битах

divisorLength: number

Размер q в битах

publicKeyEncoding: { type: "spki"; format: PubF; }
privateKeyEncoding: BasePrivateKeyEncodingOptions<PrivF> & { type: "pkcs8"; }

интерфейс ECKeyPairKeyObjectOptions

Использование в Deno

import { type ECKeyPairKeyObjectOptions } from "node:crypto";

Свойства

namedCurve: string

Название используемой кривой

paramEncoding:
"explicit"
| "named"
| undefined
необязательное

Должно быть 'named' или 'explicit'. Значение по умолчанию: 'named'.


интерфейс ECKeyPairOptions

расширяет ECKeyPairKeyObjectOptions

Использование в Deno

import { type ECKeyPairOptions } from "node:crypto";

Параметры типа

PubF extends KeyFormat
PrivF extends KeyFormat

Свойства

publicKeyEncoding: { type: "pkcs1" | "spki"; format: PubF; }
privateKeyEncoding: BasePrivateKeyEncodingOptions<PrivF> & { type: "sec1" | "pkcs8"; }

интерфейс ED25519KeyPairKeyObjectOptions

Использование в Deno

import { type ED25519KeyPairKeyObjectOptions } from "node:crypto";

интерфейс ED25519KeyPairOptions

Использование в Deno

import { type ED25519KeyPairOptions } from "node:crypto";

Параметры типа

PubF extends KeyFormat
PrivF extends KeyFormat

Свойства

publicKeyEncoding: { type: "spki"; format: PubF; }
privateKeyEncoding: BasePrivateKeyEncodingOptions<PrivF> & { type: "pkcs8"; }

интерфейс ED448KeyPairKeyObjectOptions

Использование в Deno

import { type ED448KeyPairKeyObjectOptions } from "node:crypto";

интерфейс ED448KeyPairOptions

Использование в Deno

import { type ED448KeyPairOptions } from "node:crypto";

Параметры типа

PubF extends KeyFormat
PrivF extends KeyFormat

Свойства

publicKeyEncoding: { type: "spki"; format: PubF; }
privateKeyEncoding: BasePrivateKeyEncodingOptions<PrivF> & { type: "pkcs8"; }

интерфейс GeneratePrimeOptions

Использование в Deno

import { type GeneratePrimeOptions } from "node:crypto";

Свойства

add: LargeNumberLike | undefined
необязательный
rem: LargeNumberLike | undefined
необязательный
safe: boolean | undefined
необязательный
bigint: boolean | undefined
необязательный

интерфейс GeneratePrimeOptionsArrayBuffer

наследует GeneratePrimeOptions

Использование в Deno

import { type GeneratePrimeOptionsArrayBuffer } from "node:crypto";

Свойства

bigint: false | undefined
необязательный

интерфейс GeneratePrimeOptionsBigInt

наследует GeneratePrimeOptions

Использование в Deno

import { type GeneratePrimeOptionsBigInt } from "node:crypto";

Свойства

bigint: true

интерфейс HashOptions

наследует [stream.TransformOptions]

Использование в Deno

import { type HashOptions } from "node:crypto";

Свойства

outputLength: number | undefined
необязательный

Для хеш-функций XOF, таких как shake256, параметр outputLength позволяет задать желаемую длину выходных данных в байтах.


интерфейс JsonWebKey

Использование в Deno

import { type JsonWebKey } from "node:crypto";

Сигнатуры индекса

[key: string]: unknown

Свойства

crv: string | undefined
необязательный
d: string | undefined
необязательный
dp: string | undefined
необязательный
dq: string | undefined
необязательный
e: string | undefined
необязательный
k: string | undefined
необязательный
kty: string | undefined
необязательный
n: string | undefined
необязательный
p: string | undefined
необязательный
q: string | undefined
необязательный
qi: string | undefined
необязательный
x: string | undefined
необязательный
y: string | undefined
необязательный

интерфейс JsonWebKeyInput

Использование в Deno

import { type JsonWebKeyInput } from "node:crypto";

Свойства

key: JsonWebKey
format: "jwk"

интерфейс JwkKeyExportOptions

Использование в Deno

import { type JwkKeyExportOptions } from "node:crypto";

Свойства

format: "jwk"

интерфейс KeyExportOptions

Использование в Deno

import { type KeyExportOptions } from "node:crypto";

Параметры типа

T extends KeyFormat

Свойства

type:
"pkcs1"
| "spki"
| "pkcs8"
| "sec1"
format: T
cipher: string | undefined
необязательный
passphrase:
string
| Buffer
| undefined
необязательный

интерфейс KeyPairKeyObjectResult

Использование в Deno

import { type KeyPairKeyObjectResult } from "node:crypto";

Свойства

publicKey: KeyObject
privateKey: KeyObject

интерфейс KeyPairSyncResult

Использование в Deno

import { type KeyPairSyncResult } from "node:crypto";

Параметры типа

T1 extends string | Buffer
T2 extends string | Buffer

Свойства

publicKey: T1
privateKey: T2

интерфейс PrivateKeyInput

Использование в Deno

import { type PrivateKeyInput } from "node:crypto";

Свойства

key: string | Buffer
format: KeyFormat | undefined
необязательный
type:
"pkcs1"
| "pkcs8"
| "sec1"
| undefined
необязательный
passphrase:
string
| Buffer
| undefined
необязательный
encoding: string | undefined
необязательный

интерфейс PublicKeyInput

Использование в Deno

import { type PublicKeyInput } from "node:crypto";

Свойства

key: string | Buffer
format: KeyFormat | undefined
необязательный
type:
"pkcs1"
| "spki"
| undefined
необязательный
encoding: string | undefined
необязательный

интерфейс RandomUUIDOptions

Использование в Deno

import { type RandomUUIDOptions } from "node:crypto";

Свойства

disableEntropyCache: boolean | undefined
необязательный

По умолчанию для повышения производительности Node.js заранее генерирует и сохраняет в кэше достаточное количество случайных данных для создания до 128 случайных UUID. Чтобы сгенерировать UUID без использования кэша, задайте для disableEntropyCache значение true.


интерфейс RSAKeyPairKeyObjectOptions

Использование в Deno

import { type RSAKeyPairKeyObjectOptions } from "node:crypto";

Свойства

modulusLength: number

Размер ключа в битах

publicExponent: number | undefined
необязательный

Открытая экспонента


интерфейс RSAKeyPairOptions

Использование в Deno

import { type RSAKeyPairOptions } from "node:crypto";

Параметры типа

PubF extends KeyFormat
PrivF extends KeyFormat

Свойства

modulusLength: number

Размер ключа в битах

publicExponent: number | undefined
необязательный

Открытая экспонента

publicKeyEncoding: { type: "pkcs1" | "spki"; format: PubF; }
privateKeyEncoding: BasePrivateKeyEncodingOptions<PrivF> & { type: "pkcs1" | "pkcs8"; }

интерфейс RsaPrivateKey

Использование в Deno

import { type RsaPrivateKey } from "node:crypto";

Свойства

key: KeyLike
passphrase: string | undefined
необязательный
oaepHash: string | undefined
необязательный
oaepLabel: TypedArray | undefined
необязательный
padding: number | undefined
необязательный

интерфейс RSAPSSKeyPairKeyObjectOptions

Использование в Deno

import { type RSAPSSKeyPairKeyObjectOptions } from "node:crypto";

Свойства

modulusLength: number

Размер ключа в битах

publicExponent: number | undefined
необязательный

Открытая экспонента

hashAlgorithm: string
необязательный

Название хеш-функции

mgf1HashAlgorithm: string
необязательный

Название хеш-функции, используемой MGF1

saltLength: string
необязательный

Минимальная длина соли в байтах


интерфейс RSAPSSKeyPairOptions

Использование в Deno

import { type RSAPSSKeyPairOptions } from "node:crypto";

Параметры типа

PubF extends KeyFormat
PrivF extends KeyFormat

Свойства

modulusLength: number

Размер ключа в битах

publicExponent: number | undefined
необязательный

Открытая экспонента

hashAlgorithm: string
необязательный

Название хеш-функции

mgf1HashAlgorithm: string
необязательный

Название хеш-функции, используемой MGF1

saltLength: string
необязательный

Минимальная длина соли в байтах

publicKeyEncoding: { type: "spki"; format: PubF; }
privateKeyEncoding: BasePrivateKeyEncodingOptions<PrivF> & { type: "pkcs8"; }

интерфейс RsaPublicKey

Использование в Deno

import { type RsaPublicKey } from "node:crypto";

Свойства

key: KeyLike
padding: number | undefined
необязательный

интерфейс ScryptOptions

Использование в Deno

import { type ScryptOptions } from "node:crypto";

Свойства

cost: number | undefined
необязательный
blockSize: number | undefined
необязательный
parallelization: number | undefined
необязательный
N: number | undefined
необязательный
r: number | undefined
необязательный
p: number | undefined
необязательный
maxmem: number | undefined
необязательный

интерфейс SecureHeapUsage

Использование в Deno

import { type SecureHeapUsage } from "node:crypto";

Свойства

total: number

Общий размер выделенной защищённой кучи, заданный с помощью флага командной строки --secure-heap=n.

min: number

Минимальный объём выделения из защищённой кучи, заданный с помощью флага командной строки --secure-heap-min.

used: number

Общее количество байтов, выделенных в данный момент из защищённой кучи.

utilization: number

Вычисленное отношение used к total выделенным байтам.


интерфейс SigningOptions

Использование в Deno

import { type SigningOptions } from "node:crypto";

Свойства

padding: number | undefined
необязательный
saltLength: number | undefined
необязательный
dsaEncoding: DSAEncoding | undefined
необязательный

интерфейс SignJsonWebKeyInput

наследует JsonWebKeyInputSigningOptions

Использование в Deno

import { type SignJsonWebKeyInput } from "node:crypto";

интерфейс SignKeyObjectInput

наследует SigningOptions

Использование в Deno

import { type SignKeyObjectInput } from "node:crypto";

Свойства

key: KeyObject

интерфейс SignPrivateKeyInput

наследует PrivateKeyInputSigningOptions

Использование в Deno

import { type SignPrivateKeyInput } from "node:crypto";

интерфейс VerifyJsonWebKeyInput

наследует JsonWebKeyInputSigningOptions

Использование в Deno

import { type VerifyJsonWebKeyInput } from "node:crypto";

интерфейс VerifyKeyObjectInput

наследует SigningOptions

Использование в Deno

import { type VerifyKeyObjectInput } from "node:crypto";

Свойства

key: KeyObject

интерфейс VerifyPublicKeyInput

наследует PublicKeyInputSigningOptions

Использование в Deno

import { type VerifyPublicKeyInput } from "node:crypto";

интерфейс webcrypto.AesCbcParams

наследует Algorithm

Использование в Deno

import { webcrypto } from "node:crypto";

Свойства

iv: BufferSource

интерфейс webcrypto.AesCtrParams

наследует Algorithm

Использование в Deno

import { webcrypto } from "node:crypto";

Свойства

counter: BufferSource
length: number

интерфейс webcrypto.AesDerivedKeyParams

наследует Algorithm

Использование в Deno

import { webcrypto } from "node:crypto";

Свойства

length: number

интерфейс webcrypto.AesGcmParams

наследует Algorithm

Использование в Deno

import { webcrypto } from "node:crypto";

Свойства

additionalData: BufferSource
необязательный
iv: BufferSource
tagLength: number
необязательный

интерфейс webcrypto.AesKeyAlgorithm

наследует KeyAlgorithm

Использование в Deno

import { webcrypto } from "node:crypto";

Свойства

length: number

интерфейс webcrypto.AesKeyGenParams

наследует Algorithm

Использование в Deno

import { webcrypto } from "node:crypto";

Свойства

length: number

интерфейс webcrypto.Algorithm

Использование в Deno

import { webcrypto } from "node:crypto";

Свойства

name: string

интерфейс webcrypto.Crypto

Использование в Deno

import { webcrypto } from "node:crypto";

Импорт объекта webcrypto (import { webcrypto } from 'node:crypto') создает экземпляр класса Crypto. Crypto — это одиночный экземпляр, предоставляющий доступ к остальной части API криптографии.

Свойства

subtle: SubtleCrypto
только для чтения

Предоставляет доступ к API SubtleCrypto.

CryptoKey: CryptoKeyConstructor

Методы

getRandomValues<T extends Exclude<TypedArray, Float32Array | Float64Array>>(typedArray: T): T

Генерирует криптографически стойкие случайные значения. Переданный typedArray заполняется случайными значениями, после чего возвращается ссылка на typedArray.

Переданный typedArray должен быть экземпляром NodeJS.TypedArray с целочисленным типом, то есть Float32Array и Float64Array не поддерживаются.

Если размер переданного typedArray превышает 65 536 байт, будет вызвана ошибка.

randomUUID(): UUID

Генерирует UUID версии 4, соответствующий RFC 4122. UUID создается с помощью криптографического генератора псевдослучайных чисел.


интерфейс webcrypto.CryptoKey

Использование в Deno

import { webcrypto } from "node:crypto";

Свойства

algorithm: KeyAlgorithm
только для чтения

Объект, описывающий алгоритм, для которого можно использовать ключ, а также дополнительные параметры, специфичные для алгоритма.

extractable: boolean
только для чтения

Если значение равно true, CryptoKey можно экспортировать с помощью subtleCrypto.exportKey() или subtleCrypto.wrapKey().

type: KeyType
только для чтения

Строка, указывающая, является ли ключ симметричным ('secret') или асимметричным ('private' или 'public').

usages: KeyUsage[]
только для чтения

Массив строк, указывающих операции, для которых можно использовать ключ.

Возможные варианты использования:

  • 'encrypt' — ключ можно использовать для шифрования данных.
  • 'decrypt' — ключ можно использовать для расшифрования данных.
  • 'sign' — ключ можно использовать для создания цифровых подписей.
  • 'verify' — ключ можно использовать для проверки цифровых подписей.
  • 'deriveKey' — ключ можно использовать для получения нового ключа.
  • 'deriveBits' — ключ можно использовать для получения битов.
  • 'wrapKey' — ключ можно использовать для обертывания другого ключа.
  • 'unwrapKey' — ключ можно использовать для развертывания другого ключа.

Допустимые варианты использования ключа зависят от алгоритма ключа (определяется cryptokey.algorithm.name).


интерфейс webcrypto.CryptoKeyConstructor

Использование в Deno

import { webcrypto } from "node:crypto";

Сигнатуры вызова

(_: { readonly _: unique symbol; }): never

Недопустимый конструктор

Свойства

length: 0
только для чтения
name: "CryptoKey"
только для чтения
prototype: CryptoKey
только для чтения

интерфейс webcrypto.CryptoKeyPair

Использование в Deno

import { webcrypto } from "node:crypto";

CryptoKeyPair — это простой объект-словарь со свойствами publicKey и privateKey, представляющий асимметричную пару ключей.

Свойства

privateKey: CryptoKey

CryptoKey, тип которого будет 'private'.

publicKey: CryptoKey

CryptoKey, тип которого будет 'public'.


интерфейс webcrypto.EcdhKeyDeriveParams

наследует Algorithm

Использование в Deno

import { webcrypto } from "node:crypto";

Свойства

public: CryptoKey

интерфейс webcrypto.EcdsaParams

наследует Algorithm

Использование в Deno

import { webcrypto } from "node:crypto";

Свойства

hash: HashAlgorithmIdentifier

интерфейс webcrypto.EcKeyAlgorithm

наследует KeyAlgorithm

Использование в Deno

import { webcrypto } from "node:crypto";

Свойства

namedCurve: NamedCurve

интерфейс webcrypto.EcKeyGenParams

наследует Algorithm

Использование в Deno

import { webcrypto } from "node:crypto";

Свойства

namedCurve: NamedCurve

интерфейс webcrypto.EcKeyImportParams

наследует Algorithm

Использование в Deno

import { webcrypto } from "node:crypto";

Свойства

namedCurve: NamedCurve

интерфейс webcrypto.Ed448Params

наследует Algorithm

Использование в Deno

import { webcrypto } from "node:crypto";

Свойства

context: BufferSource
необязательный

интерфейс webcrypto.HkdfParams

наследует Algorithm

Использование в Deno

import { webcrypto } from "node:crypto";

Свойства

hash: HashAlgorithmIdentifier
info: BufferSource
salt: BufferSource

интерфейс webcrypto.HmacImportParams

наследует Algorithm

Использование в Deno

import { webcrypto } from "node:crypto";

Свойства

hash: HashAlgorithmIdentifier
length: number
необязательный

интерфейс webcrypto.HmacKeyAlgorithm

наследует KeyAlgorithm

Использование в Deno

import { webcrypto } from "node:crypto";

Свойства

hash: KeyAlgorithm
length: number

интерфейс webcrypto.HmacKeyGenParams

наследует Algorithm

Использование в Deno

import { webcrypto } from "node:crypto";

Свойства

hash: HashAlgorithmIdentifier
length: number
необязательный

интерфейс webcrypto.JsonWebKey

Использование в Deno

import { webcrypto } from "node:crypto";

Свойства

alg: string
необязательно
crv: string
необязательно
d: string
необязательно
dp: string
необязательно
dq: string
необязательно
e: string
необязательно
ext: boolean
необязательно
k: string
необязательно
key_ops: string[]
необязательно
kty: string
необязательно
n: string
необязательно
oth: RsaOtherPrimesInfo[]
необязательно
p: string
необязательно
q: string
необязательно
qi: string
необязательно
use: string
необязательно
x: string
необязательно
y: string
необязательно

интерфейс webcrypto.KeyAlgorithm

Использование в Deno

import { webcrypto } from "node:crypto";

Свойства

name: string

интерфейс webcrypto.Pbkdf2Params

расширяет Algorithm

Использование в Deno

import { webcrypto } from "node:crypto";

Свойства

hash: HashAlgorithmIdentifier
iterations: number
salt: BufferSource

интерфейс webcrypto.RsaHashedImportParams

расширяет Algorithm

Использование в Deno

import { webcrypto } from "node:crypto";

Свойства

hash: HashAlgorithmIdentifier

интерфейс webcrypto.RsaHashedKeyAlgorithm

расширяет RsaKeyAlgorithm

Использование в Deno

import { webcrypto } from "node:crypto";

Свойства

hash: KeyAlgorithm

интерфейс webcrypto.RsaHashedKeyGenParams

расширяет RsaKeyGenParams

Использование в Deno

import { webcrypto } from "node:crypto";

Свойства

hash: HashAlgorithmIdentifier

интерфейс webcrypto.RsaKeyAlgorithm

расширяет KeyAlgorithm

Использование в Deno

import { webcrypto } from "node:crypto";

Свойства

modulusLength: number
publicExponent: BigInteger

интерфейс webcrypto.RsaKeyGenParams

расширяет Algorithm

Использование в Deno

import { webcrypto } from "node:crypto";

Свойства

modulusLength: number
publicExponent: BigInteger

интерфейс webcrypto.RsaOaepParams

расширяет Algorithm

Использование в Deno

import { webcrypto } from "node:crypto";

Свойства

label: BufferSource
необязательно

интерфейс webcrypto.RsaOtherPrimesInfo

Использование в Deno

import { webcrypto } from "node:crypto";

Свойства

d: string
необязательно
r: string
необязательно
t: string
необязательно

интерфейс webcrypto.RsaPssParams

расширяет Algorithm

Использование в Deno

import { webcrypto } from "node:crypto";

Свойства

saltLength: number

интерфейс webcrypto.SubtleCrypto

Использование в Deno

import { webcrypto } from "node:crypto";

Методы

decrypt(
algorithm:
AlgorithmIdentifier
| RsaOaepParams
| AesCtrParams
| AesCbcParams
| AesGcmParams
,
key: CryptoKey,
data: BufferSource,
): Promise<ArrayBuffer>

Используя метод и параметры, указанные в algorithm, а также ключевой материал, предоставленный key, subtle.decrypt() пытается расшифровать предоставленные данные data. В случае успеха возвращённый промис будет выполнен с объектом <ArrayBuffer>, содержащим результат в открытом виде.

В настоящее время поддерживаются следующие алгоритмы:

  • 'RSA-OAEP'
  • 'AES-CTR'
  • 'AES-CBC'
  • 'AES-GCM'
deriveBits(
algorithm: EcdhKeyDeriveParams,
baseKey: CryptoKey,
length: number | null,
): Promise<ArrayBuffer>

Используя метод и параметры, указанные в algorithm, а также ключевой материал, предоставленный baseKey, subtle.deriveBits() пытается создать length бит. Реализация Node.js требует, чтобы значение length, если оно является числом, было кратно 8. Если length — это null, генерируется максимальное количество бит для данного алгоритма. Это допустимо для алгоритмов 'ECDH', 'X25519' и 'X448'. В случае успеха возвращённый промис будет выполнен с объектом <ArrayBuffer>, содержащим сгенерированные данные.

В настоящее время поддерживаются следующие алгоритмы:

  • 'ECDH'
  • 'X25519'
  • 'X448'
  • 'HKDF'
  • 'PBKDF2'
deriveBits(
algorithm:
AlgorithmIdentifier
| HkdfParams
| Pbkdf2Params
,
baseKey: CryptoKey,
length: number,
): Promise<ArrayBuffer>
deriveKey(
algorithm:
AlgorithmIdentifier
| EcdhKeyDeriveParams
| HkdfParams
| Pbkdf2Params
,
baseKey: CryptoKey,
derivedKeyAlgorithm:
AlgorithmIdentifier
| AesDerivedKeyParams
| HmacImportParams
| HkdfParams
| Pbkdf2Params
,
extractable: boolean,
keyUsages: readonly KeyUsage[],
): Promise<CryptoKey>

Используя метод и параметры, указанные в algorithm, а также ключевой материал, предоставленный baseKey, subtle.deriveKey() пытается создать новый based on the method and parameters inderivedKeyAlgorithm`.

Вызов subtle.deriveKey() эквивалентен вызову subtle.deriveBits() для создания необработанного ключевого материала с последующей передачей результата методу subtle.importKey() с использованием параметров deriveKeyAlgorithm, extractable и keyUsages в качестве входных данных.

В настоящее время поддерживаются следующие алгоритмы:

  • 'ECDH'
  • 'X25519'
  • 'X448'
  • 'HKDF'
  • 'PBKDF2'
digest(
algorithm: AlgorithmIdentifier,
data: BufferSource,
): Promise<ArrayBuffer>

Используя метод, указанный в algorithm, subtle.digest() пытается вычислить дайджест для data. В случае успеха возвращённый промис будет выполнен с объектом <ArrayBuffer>, содержащим вычисленный дайджест.

Если algorithm передан как <string>, он должен быть одним из следующих значений:

  • 'SHA-1'
  • 'SHA-256'
  • 'SHA-384'
  • 'SHA-512'

Если algorithm передан как <Object>, у него должно быть свойство name, значение которого должно совпадать с одним из перечисленных выше.

encrypt(
algorithm:
AlgorithmIdentifier
| RsaOaepParams
| AesCtrParams
| AesCbcParams
| AesGcmParams
,
key: CryptoKey,
data: BufferSource,
): Promise<ArrayBuffer>

Используя метод и параметры, указанные в algorithm, а также ключевой материал, предоставленный key, subtle.encrypt() пытается зашифровать data. В случае успеха возвращённый промис будет выполнен с объектом <ArrayBuffer>, содержащим результат шифрования.

В настоящее время поддерживаются следующие алгоритмы:

  • 'RSA-OAEP'
  • 'AES-CTR'
  • 'AES-CBC'
  • 'AES-GCM'
exportKey(
format: "jwk",
key: CryptoKey,
): Promise<JsonWebKey>

Экспортирует указанный ключ в заданном формате, если он поддерживается.

Если <CryptoKey> не является извлекаемым, возвращённый промис будет отклонён.

Если format имеет значение 'pkcs8' или 'spki' и экспорт выполнен успешно, возвращённый промис будет выполнен с объектом <ArrayBuffer>, содержащим экспортированные данные ключа.

Если format имеет значение 'jwk' и экспорт выполнен успешно, возвращённый промис будет выполнен с объектом JavaScript, соответствующим спецификации JSON Web Key.

exportKey(
format: Exclude<KeyFormat, "jwk">,
key: CryptoKey,
): Promise<ArrayBuffer>
generateKey(
algorithm: RsaHashedKeyGenParams | EcKeyGenParams,
extractable: boolean,
keyUsages: readonly KeyUsage[],
): Promise<CryptoKeyPair>

Используя метод и параметры, указанные в algorithm, subtle.generateKey() пытается создать новый ключевой материал. В зависимости от используемого метода может быть создан один <CryptoKey> или <CryptoKeyPair>.

Поддерживаются следующие алгоритмы генерации <CryptoKeyPair> (открытого и закрытого ключей):

  • 'RSASSA-PKCS1-v1_5'

  • 'RSA-PSS'

  • 'RSA-OAEP'

  • 'ECDSA'

  • 'Ed25519'

  • 'Ed448'

  • 'ECDH'

  • 'X25519'

  • 'X448' Поддерживаются следующие алгоритмы генерации <CryptoKey> (секретного ключа):

  • 'HMAC'

  • 'AES-CTR'

  • 'AES-CBC'

  • 'AES-GCM'

  • 'AES-KW'

generateKey(
algorithm:
AesKeyGenParams
| HmacKeyGenParams
| Pbkdf2Params
,
extractable: boolean,
keyUsages: readonly KeyUsage[],
): Promise<CryptoKey>
generateKey(
algorithm: AlgorithmIdentifier,
extractable: boolean,
keyUsages: KeyUsage[],
): Promise<CryptoKeyPair | CryptoKey>
importKey(
format: "jwk",
keyData: JsonWebKey,
algorithm:
AlgorithmIdentifier
| RsaHashedImportParams
| EcKeyImportParams
| HmacImportParams
| AesKeyAlgorithm
,
extractable: boolean,
keyUsages: readonly KeyUsage[],
): Promise<CryptoKey>

Метод subtle.importKey() пытается интерпретировать предоставленные данные keyData в указанном формате format, чтобы создать экземпляр <CryptoKey> с использованием аргументов algorithm, extractable и keyUsages. Если импорт выполнен успешно, возвращённый промис будет выполнен с созданным объектом <CryptoKey>.

При импорте ключа 'PBKDF2' значение extractable должно быть false.

importKey(
format: Exclude<KeyFormat, "jwk">,
keyData: BufferSource,
algorithm:
AlgorithmIdentifier
| RsaHashedImportParams
| EcKeyImportParams
| HmacImportParams
| AesKeyAlgorithm
,
extractable: boolean,
keyUsages: KeyUsage[],
): Promise<CryptoKey>
sign(
algorithm:
AlgorithmIdentifier
| RsaPssParams
| EcdsaParams
| Ed448Params
,
key: CryptoKey,
data: BufferSource,
): Promise<ArrayBuffer>

Используя метод и параметры, заданные в algorithm, а также ключевой материал, предоставленный key, subtle.sign() пытается создать криптографическую подпись для data. В случае успеха возвращённый промис будет выполнен с объектом <ArrayBuffer>, содержащим созданную подпись.

В настоящее время поддерживаются следующие алгоритмы:

  • 'RSASSA-PKCS1-v1_5'
  • 'RSA-PSS'
  • 'ECDSA'
  • 'Ed25519'
  • 'Ed448'
  • 'HMAC'
unwrapKey(
format: KeyFormat,
wrappedKey: BufferSource,
unwrappingKey: CryptoKey,
unwrapAlgorithm:
AlgorithmIdentifier
| RsaOaepParams
| AesCtrParams
| AesCbcParams
| AesGcmParams
,
unwrappedKeyAlgorithm:
AlgorithmIdentifier
| RsaHashedImportParams
| EcKeyImportParams
| HmacImportParams
| AesKeyAlgorithm
,
extractable: boolean,
keyUsages: KeyUsage[],
): Promise<CryptoKey>

В криптографии «упаковка ключа» означает экспорт ключевого материала с последующим его шифрованием. Метод subtle.unwrapKey() пытается расшифровать упакованный ключ и создать экземпляр <CryptoKey>. Он эквивалентен вызову subtle.decrypt() для зашифрованных данных ключа (с использованием аргументов wrappedKey, unwrapAlgo и unwrappingKey), а затем передаче результата методу subtle.importKey() с использованием аргументов unwrappedKeyAlgo, extractable и keyUsages в качестве входных данных. В случае успеха возвращённый промис будет выполнен с объектом <CryptoKey>.

В настоящее время поддерживаются следующие алгоритмы упаковки:

  • 'RSA-OAEP'
  • 'AES-CTR'
  • 'AES-CBC'
  • 'AES-GCM'
  • 'AES-KW'

Поддерживаются следующие алгоритмы для распакованных ключей:

  • 'RSASSA-PKCS1-v1_5'
  • 'RSA-PSS'
  • 'RSA-OAEP'
  • 'ECDSA'
  • 'Ed25519'
  • 'Ed448'
  • 'ECDH'
  • 'X25519'
  • 'X448'
  • 'HMAC'
  • 'AES-CTR'
  • 'AES-CBC'
  • 'AES-GCM'
  • 'AES-KW'
verify(
algorithm:
AlgorithmIdentifier
| RsaPssParams
| EcdsaParams
| Ed448Params
,
key: CryptoKey,
signature: BufferSource,
data: BufferSource,
): Promise<boolean>

Используя метод и параметры, указанные в algorithm, а также ключевой материал, предоставленный key, subtle.verify() пытается проверить, является ли signature действительной криптографической подписью data. Возвращённый промис будет выполнен со значением true или false.

В настоящее время поддерживаются следующие алгоритмы:

  • 'RSASSA-PKCS1-v1_5'
  • 'RSA-PSS'
  • 'ECDSA'
  • 'Ed25519'
  • 'Ed448'
  • 'HMAC'
wrapKey(
format: KeyFormat,
key: CryptoKey,
wrappingKey: CryptoKey,
wrapAlgorithm:
AlgorithmIdentifier
| RsaOaepParams
| AesCtrParams
| AesCbcParams
| AesGcmParams
,
): Promise<ArrayBuffer>

В криптографии «упаковка ключа» означает экспорт ключевого материала с последующим его шифрованием. Метод subtle.wrapKey() экспортирует ключевой материал в формате, указанном в format, а затем шифрует его с использованием метода и параметров, заданных в wrapAlgo, и ключевого материала, предоставленного wrappingKey. Это эквивалентно вызову subtle.exportKey() с аргументами format и key, а затем передаче результата методу subtle.encrypt() с использованием wrappingKey и wrapAlgo в качестве входных данных. В случае успеха возвращённый промис будет выполнен с объектом <ArrayBuffer>, содержащим зашифрованные данные ключа.

В настоящее время поддерживаются следующие алгоритмы упаковки:

  • 'RSA-OAEP'
  • 'AES-CTR'
  • 'AES-CBC'
  • 'AES-GCM'
  • 'AES-KW'

интерфейс X25519KeyPairKeyObjectOptions

Использование в Deno

import { type X25519KeyPairKeyObjectOptions } from "node:crypto";

интерфейс X25519KeyPairOptions

Использование в Deno

import { type X25519KeyPairOptions } from "node:crypto";

Параметры типа

PubF extends KeyFormat
PrivF extends KeyFormat

Свойства

publicKeyEncoding: { type: "spki"; format: PubF; }
privateKeyEncoding: BasePrivateKeyEncodingOptions<PrivF> & { type: "pkcs8"; }

интерфейс X448KeyPairKeyObjectOptions

Использование в Deno

import { type X448KeyPairKeyObjectOptions } from "node:crypto";

интерфейс X448KeyPairOptions

Использование в Deno

import { type X448KeyPairOptions } from "node:crypto";

Параметры типа

PubF extends KeyFormat
PrivF extends KeyFormat

Свойства

publicKeyEncoding: { type: "spki"; format: PubF; }
privateKeyEncoding: BasePrivateKeyEncodingOptions<PrivF> & { type: "pkcs8"; }

интерфейс X509CheckOptions

Использование в Deno

import { type X509CheckOptions } from "node:crypto";

Свойства

subject:
"always"
| "default"
| "never"
необязательное
wildcards: boolean
необязательное
partialWildcards: boolean
необязательное
multiLabelWildcards: boolean
необязательное
singleLabelSubdomains: boolean
необязательное

пространство имён constants

Использование в Deno

import { constants } from "node:crypto";

Переменные

constants.defaultCipherList

Задаёт активный список шифров по умолчанию, используемый текущим процессом Node.js (значения разделяются двоеточиями).

constants.defaultCoreCipherList

Задаёт встроенный список шифров по умолчанию, используемый Node.js (значения разделяются двоеточиями).

constants.DH_CHECK_P_NOT_PRIME
Документация отсутствует
constants.DH_CHECK_P_NOT_SAFE_PRIME
Документация отсутствует
constants.DH_NOT_SUITABLE_GENERATOR
Документация отсутствует
constants.DH_UNABLE_TO_CHECK_GENERATOR
Документация отсутствует
constants.ENGINE_METHOD_ALL
Документация отсутствует
constants.ENGINE_METHOD_CIPHERS
Документация отсутствует
constants.ENGINE_METHOD_DH
Документация отсутствует
constants.ENGINE_METHOD_DIGESTS
Документация отсутствует
constants.ENGINE_METHOD_DSA
Документация отсутствует
constants.ENGINE_METHOD_EC
Документация отсутствует
constants.ENGINE_METHOD_NONE
Документация отсутствует
constants.ENGINE_METHOD_PKEY_ASN1_METHS
Документация отсутствует
constants.ENGINE_METHOD_PKEY_METHS
Документация отсутствует
constants.ENGINE_METHOD_RAND
Документация отсутствует
constants.ENGINE_METHOD_RSA
Документация отсутствует
constants.OPENSSL_VERSION_NUMBER
Документация отсутствует
constants.POINT_CONVERSION_COMPRESSED
Документация отсутствует
constants.POINT_CONVERSION_HYBRID
Документация отсутствует
constants.POINT_CONVERSION_UNCOMPRESSED
Документация отсутствует
constants.RSA_NO_PADDING
Документация отсутствует
constants.RSA_PKCS1_OAEP_PADDING
Документация отсутствует
constants.RSA_PKCS1_PADDING
Документация отсутствует
constants.RSA_PKCS1_PSS_PADDING
Документация отсутствует
constants.RSA_PSS_SALTLEN_AUTO

При проверке подписи автоматически определяет длину соли для RSA_PKCS1_PSS_PADDING.

constants.RSA_PSS_SALTLEN_DIGEST

При подписании или проверке устанавливает длину соли для RSA_PKCS1_PSS_PADDING равной размеру дайджеста.

constants.RSA_PSS_SALTLEN_MAX_SIGN

При подписании данных устанавливает для RSA_PKCS1_PSS_PADDING максимально допустимую длину соли.

constants.RSA_SSLV23_PADDING
Документация отсутствует
constants.RSA_X931_PADDING
Документация отсутствует
constants.SSL_OP_ALL

Применяет несколько обходных решений для ошибок в OpenSSL. Подробнее см. в https://www.openssl.org/docs/man1.0.2/ssl/SSL_CTX_set_options.html.

constants.SSL_OP_ALLOW_NO_DHE_KEX

Указывает OpenSSL разрешить режим обмена ключами, не основанный на [EC]DHE, для TLS v1.3

constants.SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION

Разрешает устаревшую небезопасную повторную договорённость между OpenSSL и клиентами или серверами без исправлений. См. https://www.openssl.org/docs/man1.0.2/ssl/SSL_CTX_set_options.html.

constants.SSL_OP_CIPHER_SERVER_PREFERENCE

При выборе шифра пытается использовать предпочтения сервера, а не клиента. См. https://www.openssl.org/docs/man1.0.2/ssl/SSL_CTX_set_options.html.

constants.SSL_OP_CISCO_ANYCONNECT

Указывает OpenSSL использовать идентификатор версии DTLS_BAD_VER от Cisco.

constants.SSL_OP_COOKIE_EXCHANGE

Указывает OpenSSL включить обмен cookie.

constants.SSL_OP_CRYPTOPRO_TLSEXT_BUG

Указывает OpenSSL добавить расширение server-hello из ранней версии черновика cryptopro.

constants.SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS

Указывает OpenSSL отключить обходное решение уязвимости SSL 3.0/TLS 1.0, добавленное в OpenSSL 0.9.6d.

constants.SSL_OP_LEGACY_SERVER_CONNECT

Разрешает первоначальное подключение к серверам, не поддерживающим RI.

constants.SSL_OP_NO_COMPRESSION

Указывает OpenSSL отключить поддержку сжатия SSL/TLS.

constants.SSL_OP_NO_ENCRYPT_THEN_MAC

Указывает OpenSSL отключить режим encrypt-then-MAC.

constants.SSL_OP_NO_QUERY_MTU
Документация отсутствует
constants.SSL_OP_NO_RENEGOTIATION

Указывает OpenSSL отключить повторное согласование.

constants.SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION

Указывает OpenSSL всегда начинать новый сеанс при повторном согласовании.

constants.SSL_OP_NO_SSLv2

Указывает OpenSSL отключить SSL v2

constants.SSL_OP_NO_SSLv3

Указывает OpenSSL отключить SSL v3

constants.SSL_OP_NO_TICKET

Указывает OpenSSL отключить использование билетов RFC4507bis.

constants.SSL_OP_NO_TLSv1

Указывает OpenSSL отключить TLS v1

constants.SSL_OP_NO_TLSv1_1

Указывает OpenSSL отключить TLS v1.1

constants.SSL_OP_NO_TLSv1_2

Указывает OpenSSL отключить TLS v1.2

constants.SSL_OP_NO_TLSv1_3

Указывает OpenSSL отключить TLS v1.3

constants.SSL_OP_PRIORITIZE_CHACHA

Указывает серверу OpenSSL отдавать приоритет ChaCha20-Poly1305, если это делает клиент. Эта опция не действует, если SSL_OP_CIPHER_SERVER_PREFERENCE не включён.

constants.SSL_OP_TLS_ROLLBACK_BUG

Указывает OpenSSL отключить обнаружение атак с откатом версии.


псевдоним типа BinaryLike

Использование в Deno

import { type BinaryLike } from "node:crypto";

Определение

string | ArrayBufferView

псевдоним типа BinaryToTextEncoding

Использование в Deno

import { type BinaryToTextEncoding } from "node:crypto";

Определение

"base64"
| "base64url"
| "hex"
| "binary"

псевдоним типа CharacterEncoding

Использование в Deno

import { type CharacterEncoding } from "node:crypto";

Определение

"utf8"
| "utf-8"
| "utf16le"
| "utf-16le"
| "latin1"

псевдоним типа CipherCCMTypes

Использование в Deno

import { type CipherCCMTypes } from "node:crypto";

Определение

"aes-128-ccm"
| "aes-192-ccm"
| "aes-256-ccm"

псевдоним типа CipherChaCha20Poly1305Types

Использование в Deno

import { type CipherChaCha20Poly1305Types } from "node:crypto";

Определение

"chacha20-poly1305"

псевдоним типа CipherGCMTypes

Использование в Deno

import { type CipherGCMTypes } from "node:crypto";

Определение

"aes-128-gcm"
| "aes-192-gcm"
| "aes-256-gcm"

псевдоним типа CipherKey

Использование в Deno

import { type CipherKey } from "node:crypto";

Определение

BinaryLike | KeyObject

псевдоним типа CipherMode

Использование в Deno

import { type CipherMode } from "node:crypto";

Определение

"cbc"
| "ccm"
| "cfb"
| "ctr"
| "ecb"
| "gcm"
| "ocb"
| "ofb"
| "stream"
| "wrap"
| "xts"

псевдоним типа CipherOCBTypes

Использование в Deno

import { type CipherOCBTypes } from "node:crypto";

Определение

"aes-128-ocb"
| "aes-192-ocb"
| "aes-256-ocb"

псевдоним типа DSAEncoding

Использование в Deno

import { type DSAEncoding } from "node:crypto";

Определение

"der" | "ieee-p1363"

псевдоним типа ECDHKeyFormat

Использование в Deno

import { type ECDHKeyFormat } from "node:crypto";

Определение

"compressed"
| "uncompressed"
| "hybrid"

псевдоним типа Encoding

Использование в Deno

import { type Encoding } from "node:crypto";

Определение

BinaryToTextEncoding
| CharacterEncoding
| LegacyCharacterEncoding

псевдоним типа KeyFormat

Использование в Deno

import { type KeyFormat } from "node:crypto";

Определение

"pem"
| "der"
| "jwk"

псевдоним типа KeyLike

Использование в Deno

import { type KeyLike } from "node:crypto";

Определение

string
| Buffer
| KeyObject

псевдоним типа KeyObjectType

Использование в Deno

import { type KeyObjectType } from "node:crypto";

Определение

"secret"
| "public"
| "private"

псевдоним типа KeyType

Использование в Deno

import { type KeyType } from "node:crypto";

Определение

"rsa"
| "rsa-pss"
| "dsa"
| "ec"
| "ed25519"
| "ed448"
| "x25519"
| "x448"

псевдоним типа LargeNumberLike

Использование в Deno

import { type LargeNumberLike } from "node:crypto";

Определение

ArrayBufferView
| SharedArrayBuffer
| ArrayBuffer
| bigint

псевдоним типа LegacyCharacterEncoding

Использование в Deno

import { type LegacyCharacterEncoding } from "node:crypto";

Определение

"ascii"
| "binary"
| "ucs2"
| "ucs-2"

псевдоним типа UUID

Использование в Deno

import { type UUID } from "node:crypto";

Определение

`${string}-${string}-${string}-${string}-${string}`

псевдоним типа webcrypto.AlgorithmIdentifier

Использование в Deno

import { webcrypto } from "node:crypto";

Определение

Algorithm | string

псевдоним типа webcrypto.BigInteger

Использование в Deno

import { webcrypto } from "node:crypto";

Определение

Uint8Array

псевдоним типа webcrypto.BufferSource

Использование в Deno

import { webcrypto } from "node:crypto";

Определение

ArrayBufferView | ArrayBuffer

псевдоним типа webcrypto.HashAlgorithmIdentifier

Использование в Deno

import { webcrypto } from "node:crypto";

Определение

AlgorithmIdentifier

псевдоним типа webcrypto.KeyFormat

Использование в Deno

import { webcrypto } from "node:crypto";

Определение

"jwk"
| "pkcs8"
| "raw"
| "spki"

псевдоним типа webcrypto.KeyType

Использование в Deno

import { webcrypto } from "node:crypto";

Определение

"private"
| "public"
| "secret"

псевдоним типа webcrypto.KeyUsage

Использование в Deno

import { webcrypto } from "node:crypto";

Определение

"decrypt"
| "deriveBits"
| "deriveKey"
| "encrypt"
| "sign"
| "unwrapKey"
| "verify"
| "wrapKey"

псевдоним типа webcrypto.NamedCurve

Использование в Deno

import { webcrypto } from "node:crypto";

Определение

string

переменная constants.defaultCipherList

Использование в Deno

import { constants } from "node:crypto";

Указывает активный список шифров по умолчанию, используемый текущим процессом Node.js (значения разделены двоеточиями).

Тип

string

переменная constants.defaultCoreCipherList

Использование в Deno

import { constants } from "node:crypto";

Указывает встроенный список шифров по умолчанию, используемый Node.js (значения разделены двоеточиями).

Тип

string

переменная constants.DH_CHECK_P_NOT_PRIME

Использование в Deno

import { constants } from "node:crypto";

Тип

number

переменная constants.DH_CHECK_P_NOT_SAFE_PRIME

Использование в Deno

import { constants } from "node:crypto";

Тип

number

переменная constants.DH_NOT_SUITABLE_GENERATOR

Использование в Deno

import { constants } from "node:crypto";

Тип

number

переменная constants.DH_UNABLE_TO_CHECK_GENERATOR

Использование в Deno

import { constants } from "node:crypto";

Тип

number

переменная constants.ENGINE_METHOD_ALL

Использование в Deno

import { constants } from "node:crypto";

Тип

number

переменная constants.ENGINE_METHOD_CIPHERS

Использование в Deno

import { constants } from "node:crypto";

Тип

number

переменная constants.ENGINE_METHOD_DH

Использование в Deno

import { constants } from "node:crypto";

Тип

number

переменная constants.ENGINE_METHOD_DIGESTS

Использование в Deno

import { constants } from "node:crypto";

Тип

number

переменная constants.ENGINE_METHOD_DSA

Использование в Deno

import { constants } from "node:crypto";

Тип

number

переменная constants.ENGINE_METHOD_EC

Использование в Deno

import { constants } from "node:crypto";

Тип

number

переменная constants.ENGINE_METHOD_NONE

Использование в Deno

import { constants } from "node:crypto";

Тип

number

переменная constants.ENGINE_METHOD_PKEY_ASN1_METHS

Использование в Deno

import { constants } from "node:crypto";

Тип

number

переменная constants.ENGINE_METHOD_PKEY_METHS

Использование в Deno

import { constants } from "node:crypto";

Тип

number

переменная constants.ENGINE_METHOD_RAND

Использование в Deno

import { constants } from "node:crypto";

Тип

number

переменная constants.ENGINE_METHOD_RSA

Использование в Deno

import { constants } from "node:crypto";

Тип

number

переменная constants.OPENSSL_VERSION_NUMBER

Использование в Deno

import { constants } from "node:crypto";

Тип

number

переменная constants.POINT_CONVERSION_COMPRESSED

Использование в Deno

import { constants } from "node:crypto";

Тип

number

переменная constants.POINT_CONVERSION_HYBRID

Использование в Deno

import { constants } from "node:crypto";

Тип

number

переменная constants.POINT_CONVERSION_UNCOMPRESSED

Использование в Deno

import { constants } from "node:crypto";

Тип

number

переменная constants.RSA_NO_PADDING

Использование в Deno

import { constants } from "node:crypto";

Тип

number

переменная constants.RSA_PKCS1_OAEP_PADDING

Использование в Deno

import { constants } from "node:crypto";

Тип

number

переменная constants.RSA_PKCS1_PADDING

Использование в Deno

import { constants } from "node:crypto";

Тип

number

переменная constants.RSA_PKCS1_PSS_PADDING

Использование в Deno

import { constants } from "node:crypto";

Тип

number

переменная constants.RSA_PSS_SALTLEN_AUTO

Использование в Deno

import { constants } from "node:crypto";

При проверке подписи автоматически определяет длину соли для RSA_PKCS1_PSS_PADDING.

Тип

number

переменная constants.RSA_PSS_SALTLEN_DIGEST

Использование в Deno

import { constants } from "node:crypto";

При подписании или проверке подписи устанавливает длину соли для RSA_PKCS1_PSS_PADDING равной размеру дайджеста.

Тип

number

переменная constants.RSA_PSS_SALTLEN_MAX_SIGN

Использование в Deno

import { constants } from "node:crypto";

При подписании данных устанавливает длину соли для RSA_PKCS1_PSS_PADDING равной максимально допустимому значению.

Тип

number

переменная constants.RSA_SSLV23_PADDING

Использование в Deno

import { constants } from "node:crypto";

Тип

number

переменная constants.RSA_X931_PADDING

Использование в Deno

import { constants } from "node:crypto";

Тип

number

переменная constants.SSL_OP_ALL

Использование в Deno

import { constants } from "node:crypto";

Применяет в OpenSSL несколько обходных решений для устранения ошибок. Подробности см. на странице https://www.openssl.org/docs/man1.0.2/ssl/SSL_CTX_set_options.html.

Тип

number

переменная constants.SSL_OP_ALLOW_NO_DHE_KEX

Использование в Deno

import { constants } from "node:crypto";

Указывает OpenSSL разрешить режим обмена ключами для TLS v1.3, не основанный на [EC]DHE.

Тип

number

переменная constants.SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION

Использование в Deno

import { constants } from "node:crypto";

Разрешает устаревшую небезопасную повторную установку соединения между OpenSSL и клиентами или серверами без необходимых исправлений. См. https://www.openssl.org/docs/man1.0.2/ssl/SSL_CTX_set_options.html.

Тип

number

переменная constants.SSL_OP_CIPHER_SERVER_PREFERENCE

Использование в Deno

import { constants } from "node:crypto";

При выборе шифра пытается использовать предпочтения сервера вместо предпочтений клиента. См. https://www.openssl.org/docs/man1.0.2/ssl/SSL_CTX_set_options.html.

Тип

number

переменная constants.SSL_OP_CISCO_ANYCONNECT

Использование в Deno

import { constants } from "node:crypto";

Указывает OpenSSL использовать идентификатор версии DTLS_BAD_VER от Cisco.

Тип

number

переменная constants.SSL_OP_COOKIE_EXCHANGE

Использование в Deno

import { constants } from "node:crypto";

Указывает OpenSSL включить обмен cookie.

Тип

number

переменная constants.SSL_OP_CRYPTOPRO_TLSEXT_BUG

Использование в Deno

import { constants } from "node:crypto";

Указывает OpenSSL добавить расширение server-hello из ранней версии черновика cryptopro.

Тип

number

переменная constants.SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS

Использование в Deno

import { constants } from "node:crypto";

Указывает OpenSSL отключить обходное решение уязвимости SSL 3.0/TLS 1.0, добавленное в OpenSSL 0.9.6d.

Тип

number

переменная constants.SSL_OP_LEGACY_SERVER_CONNECT

Использование в Deno

import { constants } from "node:crypto";

Разрешает первоначальное подключение к серверам, не поддерживающим RI.

Тип

number

переменная constants.SSL_OP_NO_COMPRESSION

Использование в Deno

import { constants } from "node:crypto";

Указывает OpenSSL отключить поддержку сжатия SSL/TLS.

Тип

number

переменная constants.SSL_OP_NO_ENCRYPT_THEN_MAC

Использование в Deno

import { constants } from "node:crypto";

Указывает OpenSSL отключить режим encrypt-then-MAC.

Тип

number

переменная constants.SSL_OP_NO_QUERY_MTU

Использование в Deno

import { constants } from "node:crypto";

Тип

number

переменная constants.SSL_OP_NO_RENEGOTIATION

Использование в Deno

import { constants } from "node:crypto";

Указывает OpenSSL отключить повторное согласование.

Тип

number

переменная constants.SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION

Использование в Deno

import { constants } from "node:crypto";

Указывает OpenSSL всегда начинать новый сеанс при повторном согласовании.

Тип

number

переменная constants.SSL_OP_NO_SSLv2

Использование в Deno

import { constants } from "node:crypto";

Указывает OpenSSL отключить SSL v2

Тип

number

переменная constants.SSL_OP_NO_SSLv3

Использование в Deno

import { constants } from "node:crypto";

Указывает OpenSSL отключить SSL v3

Тип

number

переменная constants.SSL_OP_NO_TICKET

Использование в Deno

import { constants } from "node:crypto";

Указывает OpenSSL отключить использование билетов RFC4507bis.

Тип

number

переменная constants.SSL_OP_NO_TLSv1

Использование в Deno

import { constants } from "node:crypto";

Указывает OpenSSL отключить TLS v1

Тип

number

переменная constants.SSL_OP_NO_TLSv1_1

Использование в Deno

import { constants } from "node:crypto";

Указывает OpenSSL отключить TLS v1.1

Тип

number

переменная constants.SSL_OP_NO_TLSv1_2

Использование в Deno

import { constants } from "node:crypto";

Указывает OpenSSL отключить TLS v1.2

Тип

number

переменная constants.SSL_OP_NO_TLSv1_3

Использование в Deno

import { constants } from "node:crypto";

Указывает OpenSSL отключить TLS v1.3

Тип

number

переменная constants.SSL_OP_PRIORITIZE_CHACHA

Использование в Deno

import { constants } from "node:crypto";

Указывает серверу OpenSSL отдавать приоритет ChaCha20-Poly1305, если клиент предпочитает этот алгоритм. Эта опция не действует, если SSL_OP_CIPHER_SERVER_PREFERENCE не включён.

Тип

number

переменная constants.SSL_OP_TLS_ROLLBACK_BUG

Использование в Deno

import { constants } from "node:crypto";

Указывает OpenSSL отключить обнаружение атак с откатом версии.

Тип

number

переменная crypto

Использование в Deno

import { crypto } from "node:crypto";

Тип

globalThis extends { crypto: infer T; onmessage: any; } ? T : webcrypto.Crypto

псевдоним типа DiffieHellmanGroup

Использование в Deno

import { type DiffieHellmanGroup } from "node:crypto";

Определение

Omit<DiffieHellman, "setPublicKey" | "setPrivateKey">

переменная DiffieHellmanGroup

Класс DiffieHellmanGroup принимает в качестве аргумента хорошо известную группу modp. Он работает так же, как DiffieHellman, за исключением того, что после создания его ключи нельзя изменить. Иными словами, в нём не реализованы методы setPublicKey() и setPrivateKey().

const { createDiffieHellmanGroup } = await import('node:crypto');
const dh = createDiffieHellmanGroup('modp1');

Название (например, 'modp1') взято из RFC 2412 (modp1 и 2) и RFC 3526:

$ perl -ne 'print "$1\n" if /"(modp\d+)"/' src/node_crypto_groups.h
modp1  #  768 bits
modp2  # 1024 bits
modp5  # 1536 bits
modp14 # 2048 bits
modp15 # etc.
modp16
modp17
modp18

Тип

DiffieHellmanGroupConstructor

переменная subtle

Использование в Deno

import { subtle } from "node:crypto";

Удобный псевдоним для crypto.webcrypto.subtle.

Тип

webcrypto.SubtleCrypto

пространство имён webcrypto

Использование в Deno

import { webcrypto } from "node:crypto";

Интерфейсы

webcrypto.AesCbcParams
Документация отсутствует
  • iv
webcrypto.AesCtrParams
Документация отсутствует
  • counter
  • length
webcrypto.AesDerivedKeyParams
Документация отсутствует
  • length
webcrypto.AesGcmParams
Документация отсутствует
  • additionalData
  • iv
  • tagLength
webcrypto.AesKeyAlgorithm
Документация отсутствует
  • length
webcrypto.AesKeyGenParams
Документация отсутствует
  • length
webcrypto.Algorithm
Документация отсутствует
  • name
webcrypto.Crypto

Импорт объекта webcrypto (import { webcrypto } from 'node:crypto') создаёт экземпляр класса Crypto. Crypto — это синглтон, предоставляющий доступ к остальной части API криптографии.

  • CryptoKey
  • getRandomValues
  • randomUUID
  • subtle
webcrypto.CryptoKey
Документация отсутствует
  • algorithm
  • extractable
  • type
  • usages
webcrypto.CryptoKeyConstructor
Документация отсутствует
  • length
  • name
  • prototype
webcrypto.CryptoKeyPair

CryptoKeyPair — это простой объект-словарь со свойствами publicKey и privateKey, представляющий пару асимметричных ключей.

  • privateKey
  • publicKey
webcrypto.EcdhKeyDeriveParams
Документация отсутствует
  • public
webcrypto.EcdsaParams
Документация отсутствует
  • hash
webcrypto.EcKeyAlgorithm
Документация отсутствует
  • namedCurve
webcrypto.EcKeyGenParams
Документация отсутствует
  • namedCurve
webcrypto.EcKeyImportParams
Документация отсутствует
  • namedCurve
webcrypto.Ed448Params
Документация отсутствует
  • context
webcrypto.HkdfParams
Документация отсутствует
  • hash
  • info
  • salt
webcrypto.HmacImportParams
Документация отсутствует
  • hash
  • length
webcrypto.HmacKeyAlgorithm
Документация отсутствует
  • hash
  • length
webcrypto.HmacKeyGenParams
Документация отсутствует
  • hash
  • length
webcrypto.JsonWebKey
Документация отсутствует
  • alg
  • crv
  • d
  • dp
  • dq
  • e
  • ext
  • k
  • key_ops
  • kty
  • n
  • oth
  • p
  • q
  • qi
  • use
  • x
  • y
webcrypto.KeyAlgorithm
Документация отсутствует
  • name
webcrypto.Pbkdf2Params
Документация отсутствует
  • hash
  • iterations
  • salt
webcrypto.RsaHashedImportParams
Документация отсутствует
  • hash
webcrypto.RsaHashedKeyAlgorithm
Документация отсутствует
  • hash
webcrypto.RsaHashedKeyGenParams
Документация отсутствует
  • hash
webcrypto.RsaKeyAlgorithm
Документация отсутствует
  • modulusLength
  • publicExponent
webcrypto.RsaKeyGenParams
Документация отсутствует
  • modulusLength
  • publicExponent
webcrypto.RsaOaepParams
Документация отсутствует
  • label
webcrypto.RsaOtherPrimesInfo
Документация отсутствует
  • d
  • r
  • t
webcrypto.RsaPssParams
Документация отсутствует
  • saltLength
webcrypto.SubtleCrypto
Документация отсутствует
  • decrypt
  • deriveBits
  • deriveKey
  • digest
  • encrypt
  • exportKey
  • generateKey
  • importKey
  • sign
  • unwrapKey
  • verify
  • wrapKey

Псевдонимы типов

webcrypto.AlgorithmIdentifier
Документация отсутствует
webcrypto.BigInteger
Документация отсутствует
webcrypto.BufferSource
Документация отсутствует
webcrypto.HashAlgorithmIdentifier
Документация отсутствует
webcrypto.KeyFormat
Документация отсутствует
webcrypto.KeyType
Документация отсутствует
webcrypto.KeyUsage
Документация отсутствует
webcrypto.NamedCurve
Документация отсутствует

переменная webcrypto

Реализация стандарта Web Crypto API.

Подробности см. в документации по Web Crypto API.

Тип

webcrypto.Crypto

переменная fips

Использование в Deno

import { fips } from "node:crypto";
Устарело

начиная с версии v10.0.0

Тип

boolean

© 2018–2025 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/api/node/crypto

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API