Objet objet intégré

objetECKey

La classe ECKey est danscryptoImplémentée dans le module, vous pouvez utiliser cette classe pour générer des paires de clés ECDSA, des signatures et des messages de vérification, etc.

Voici un exemple:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
const crypto = require("crypto"); // generate a secp256k1 key const key = crypto.generateKey("secp256k1"); console.log("Private key:", key.pem()); console.log("Public key:", key.publicKey.pem()); const message = "Hello, fibjs!"; // sign a message const sig = key.sign(message); console.log("Signature:", sig.hex()); // very the signature const verify = key.verify(message, sig); console.log("Verify result:", verify);

Dans cet exemple, nous générons d'abord un objet ECKey de secp256k1, puis imprimons les clés publiques et privées générées. Ensuite, nous avons signé le message "Bonjour, fibjs !" et imprimé le résultat de la signature. Enfin, nous avons vérifié la signature en utilisant le même objet clé et imprimé le résultat de la vérification.

relation d'héritage

Constructeur

ECKey

Construire ECKey à partir d'une clé au format DER

1 2
new ECKey(Buffer DerKey, String password = "");

Paramètres d'appel :

  • DerKey:Buffer, clé au format DER
  • password: Chaîne, mot de passe de décryptage

Construire ECKey à partir d'une clé au format PEM

1 2
new ECKey(String pemKey, String password = "");

Paramètres d'appel :

  • pemKey: Chaîne, clé au format PEM
  • password: Chaîne, mot de passe de décryptage

Construire ECKey à partir d'une clé au format JSON

1
new ECKey(Object jsonKey);

Paramètres d'appel :

  • jsonKey: Objet, clé au format JSON

Le format de jsonKey prend en charge les deux types suivants de clé privée EC :

1 2 3 4 5 6 7
{ "kty": "EC", "crv": "P-521", "x": "ATfNNFuuvlGxrTGoXgyfSAGgRNNDnO3rN3k74urKJdVS14RYhdnSwm91Bm-F1l-T1XKlAY2yRnzG9w1Ukvo8c0wL", "y": "ASBHqrruB6kdkEUB3vlW3-UIkk4HtKdUeTwN-7m3j2rgZvYR1ffRAapDvWqKGiBjomqWafxokBkbDI0c95f6f4XU", "d": "AfkIbUHXfW41njdpoKuqqKludcoLJS8D_oMEwkj-GVaXFNKccIoF5iKGu2c69kNDjo83R_7wyGlfRczsklkik1ST" }

Clé publique CE :

1 2 3 4 5 6
{ "kty": "EC", "crv": "P-521", "x": "ATfNNFuuvlGxrTGoXgyfSAGgRNNDnO3rN3k74urKJdVS14RYhdnSwm91Bm-F1l-T1XKlAY2yRnzG9w1Ukvo8c0wL", "y": "ASBHqrruB6kdkEUB3vlW3-UIkk4HtKdUeTwN-7m3j2rgZvYR1ffRAapDvWqKGiBjomqWafxokBkbDI0c95f6f4XU" }

fonction statique

recover

Récupérer la clé publique à partir de la signature récupérable, prend uniquement en charge secp256k1

1 2
static ECKey ECKey.recover(Buffer data, Buffer sig) async;

Paramètres d'appel :

  • data:Buffer, les données originales de la signature
  • sig:Buffer, signature récupérable

Résultats de retour :

  • ECKey, renvoie un objet contenant la clé publique

from

Charger une clé au format DER

1 2
static PKey ECKey.from(Buffer DerKey, String password = "");

Paramètres d'appel :

  • DerKey:Buffer, clé au format DER
  • password: Chaîne, mot de passe de décryptage

Résultats de retour :

  • PKey, renvoie un objet contenant la clé

Charger une clé au format PEM

1 2
static PKey ECKey.from(String pemKey, String password = "");

Paramètres d'appel :

  • pemKey: Chaîne, clé au format PEM
  • password: Chaîne, mot de passe de décryptage

Résultats de retour :

  • PKey, renvoie un objet contenant la clé

Charger une clé au format JSON

1
static PKey ECKey.from(Object jsonKey);

Paramètres d'appel :

  • jsonKey: Objet, clé au format JSON

Résultats de retour :

  • PKey, renvoie un objet contenant la clé

Le format de jsonKey prend en charge les quatre types de clés privées RSA suivants :

1 2 3 4 5 6 7 8 9 10 11
{ "kty": "RSA", "n": "0m5lvKpWqy9JS7tV2HIPqHCYHLquSuxIC3F8strIQLJKO3rZmTT96KTnhsOfBO7Y1bI7mnT0PB3_vcHd9ekWMEoZJQw7MuB8KeM_Wn54-elJr5DNLk5bMppSGxX7ZnumiXGG51_X3Yp-_EbGtDG80GxXXix7Mucyo7K25uE0uW8=", "e": "AQAB", "d": "agN2O9NxMHL1MTMi75WfL9Pxvl-KWXKqZSF6mjzAsF9iKI8euyHIXYFepzU8kual1RsjDhCnzvWqFvZplW8lXqrHf_P-rS_9Y4gBUw6pjnI_DnFIRwWHRvrUHHSCfWOdTCIKdOTkgLZuGFuhEY3RMIW0WSYejjLtftwy0RVxAzk=", "p": "6a4G1qmfwWmn1biigN7IVFlkbLf9oVe6g7rOmHxI-hn1GRxKDSVuAUrmR1IhuAnca9M0y7SD-7TUs6wjOxWxaw==", "q": "5ofkxFKdPBD0CQHMb9q13AMHUVe0rJ-hSjqqIBrmqApUOneyAcMV76M0QyIQnI2p3POa4Qu_7XChDwRVl7LlDQ==", "dp": "2mXGiGwCHl8j-FBWuID-1C6z-BRB3MBEVoeKPOOzxOPruatB3mWEGXsqG7A8SWgV9URxTI2K6P3J6Z7RUpBkvw==", "dq": "oagn5vfb5NQqnOpS9xkSsD67cfIj821ZSFlNFYhnuOzNVda7z_qCtnHm4zDPH0lEFXoKYMfBhfqWJpaugttjPQ==", "qi": "dqEQgxNmOVFrF4s776hTqeC6oEDila8EvpVb2F2ZvwAOLjCQ66OiAZK1BiYGHqUy0NeqNmtlsLSuBEZQZvqZwg==" }

Clé publique RSA :

1 2 3 4 5
{ "kty": "RSA", "n": "0m5lvKpWqy9JS7tV2HIPqHCYHLquSuxIC3F8strIQLJKO3rZmTT96KTnhsOfBO7Y1bI7mnT0PB3_vcHd9ekWMEoZJQw7MuB8KeM_Wn54-elJr5DNLk5bMppSGxX7ZnumiXGG51_X3Yp-_EbGtDG80GxXXix7Mucyo7K25uE0uW8=", "e": "AQAB" }

Clé privée EC :

1 2 3 4 5 6 7
{ "kty": "EC", "crv": "P-521", "x": "ATfNNFuuvlGxrTGoXgyfSAGgRNNDnO3rN3k74urKJdVS14RYhdnSwm91Bm-F1l-T1XKlAY2yRnzG9w1Ukvo8c0wL", "y": "ASBHqrruB6kdkEUB3vlW3-UIkk4HtKdUeTwN-7m3j2rgZvYR1ffRAapDvWqKGiBjomqWafxokBkbDI0c95f6f4XU", "d": "AfkIbUHXfW41njdpoKuqqKludcoLJS8D_oMEwkj-GVaXFNKccIoF5iKGu2c69kNDjo83R_7wyGlfRczsklkik1ST" }

Clé publique CE :

1 2 3 4 5 6
{ "kty": "EC", "crv": "P-521", "x": "ATfNNFuuvlGxrTGoXgyfSAGgRNNDnO3rN3k74urKJdVS14RYhdnSwm91Bm-F1l-T1XKlAY2yRnzG9w1Ukvo8c0wL", "y": "ASBHqrruB6kdkEUB3vlW3-UIkk4HtKdUeTwN-7m3j2rgZvYR1ffRAapDvWqKGiBjomqWafxokBkbDI0c95f6f4XU" }

propriétés des membres

curve

String, renvoie le nom de la courbe elliptique de l'algorithme actuel

1
readonly String ECKey.curve;

name

String, renvoie le nom de l'algorithme actuel

1
readonly String ECKey.name;

keySize

Entier, renvoie la longueur actuelle du mot de passe de l'algorithme en bits

1
readonly Integer ECKey.keySize;

alg

String, renvoie et définit l'algorithme de signature d'objet actuel

1
readonly String ECKey.alg;

publicKey

PKey, renvoie la clé publique de la clé actuelle

1
readonly PKey ECKey.publicKey;

Résultats de retour :

  • la clé publique de la clé actuelle

fonction membre

computeSecret

Calculer la clé partagée Elliptic Curve Diffie-Hellman (ECDH) à l'aide de l'algorithme actuel

1
Buffer ECKey.computeSecret(ECKey publicKey) async;

Paramètres d'appel :

  • publicKey: ECKey, précisez la clé publique de l'autre partie

Résultats de retour :

  • Buffer, renvoie la clé secrète partagée calculée

isPrivate

Demander si la clé actuelle est une clé privée

1
Boolean ECKey.isPrivate();

Résultats de retour :

  • Boolean, est True et représente la clé privée

clone

copier la clé actuelle

1
PKey ECKey.clone();

Résultats de retour :

  • PKey, l'objet de copie de la clé actuelle

pem

Renvoie l'encodage au format PEM de la clé actuelle

1
String ECKey.pem();

Résultats de retour :

  • String, encodage au format PEM de la clé actuelle

der

Renvoie l'encodage au format DER de la clé actuelle

1
Buffer ECKey.der();

Résultats de retour :

  • Buffer, l'encodage au format DER de la clé actuelle

json

Renvoie l'encodage au format jwt de la clé actuelle

1
Object ECKey.json(Object opts = {});

Paramètres d'appel :

  • opts: Objet, spécifiez les options d'exportation

Résultats de retour :

  • Object, l'encodage au format jwt de la clé actuelle

opts prend en charge les paramètres suivants :

1 2 3
{ compress: false // specify whether to output public key in compressed form }

Les courbes prenant en charge la compression sont : secp192r1, secp192k1, secp256r1, secp256k1, brainpoolP256r1, secp384r1, brainpoolP384r1, brainpoolP512r1, secp521r1, sm2.


equals

Comparez deux clés publiques/privées pour voir si elles sont identiques

1
Boolean ECKey.equals(object key);

Paramètres d'appel :

  • key:object, précisez la clé publique/privée de l'autre partie

Résultats de retour :

  • Boolean, s'ils sont identiques, renvoie vrai

encrypt

Chiffrer les données à l'aide de la clé publique de chiffrement de l'algorithme actuel

1
Buffer ECKey.encrypt(Buffer data) async;

Paramètres d'appel :

  • data:Buffer, précisez les données à chiffrer

Résultats de retour :

  • Buffer, renvoie les données chiffrées

decrypt

Décrypter les données à l'aide de la clé privée du mot de passe de l'algorithme actuel

1
Buffer ECKey.decrypt(Buffer data) async;

Paramètres d'appel :

  • data:Buffer, précisez les données à décrypter

Résultats de retour :

  • Buffer, renvoie les données décryptées

sign

Signer les données à l'aide de la clé privée cryptographique de l'algorithme actuel

1 2
Buffer ECKey.sign(Buffer data, Object opts = {}) async;

Paramètres d'appel :

  • data:Buffer, spécifiez les données à signer. Lorsque l'algorithme est RSA, le paramètre d'entrée doit être exécuté avec l'algorithme spécifié par alg.hash
  • opts: Objet, spécifiez les options de signature

Résultats de retour :

  • Buffer, renvoie les données signées

opts prend en charge les paramètres suivants :

1 2 3 4 5
{ alg: 0, // specify the hash algorithm for signing, only valid for RSA, default is 0. Supported algorithms: 0=NONE,1=MD5,2=SHA1,3=SHA224,4=SHA256,5=SHA384,6=SHA512,7=RIPEMD160 format: "der", // specify the signature format, default is der, supported formats: der, raw recoverable: false // specify whether to return a recoverable signature, only valid for secp256k1 }

verify

Vérifier les données à l'aide de la clé publique cryptographique de l'algorithme actuel

1 2 3
Boolean ECKey.verify(Buffer data, Buffer sign, Object opts = {}) async;

Paramètres d'appel :

  • data:Buffer, précisez les données à vérifier
  • sign:Buffer, précisez la signature à vérifier
  • opts: Objet, spécifiez les options de vérification

Résultats de retour :

  • Boolean, renvoie le résultat vérifié

opts prend en charge les paramètres suivants :

1 2 3 4
{ alg: 0, // specify the hash algorithm for signing, only valid for RSA, default is 0. Supported algorithms: 0=NONE,1=MD5,2=SHA1,3=SHA224,4=SHA256,5=SHA384,6=SHA512,7=RIPEMD160 format: "der" // specify the signature format, default is der, supported formats: der, raw }

toString

Renvoie la représentation sous forme de chaîne de l'objet. Généralement, "[Native Object]" est renvoyé. L'objet peut être réimplémenté en fonction de ses propres caractéristiques.

1
String ECKey.toString();

Résultats de retour :

  • String, renvoie la représentation sous forme de chaîne de l'objet

toJSON

Renvoie une représentation au format JSON de l'objet, renvoyant généralement une collection de propriétés lisibles définies par l'objet.

1
Value ECKey.toJSON(String key = "");

Paramètres d'appel :

  • key: Chaîne, non utilisée

Résultats de retour :

  • Value, renvoie une valeur contenant du JSON sérialisable