Oggetto oggetto incorporato

OggettoBlsKey

Oggetto algoritmo di crittografia della curva ellittica

L'oggetto BlsKey è un oggetto utilizzato in fibjs per rappresentare una chiave BLS. Può essere utilizzato per creare, importare, esportare e manipolare chiavi BLS. La chiave BLS è un metodo di crittografia a chiave pubblica comunemente utilizzato per l'autenticazione e la firma dei dati e ha le caratteristiche di fornire un'elevata velocità di esecuzione garantendo al tempo stesso la sicurezza.

L'oggetto BlsKey fornisce vari metodi di costruzione per caricare chiavi da diversi formati di chiave. Fornisce inoltre alcune proprietà e metodi pubblici come toString(), clone(), name, publicKey(), ecc., nonché alcuni metodi statici, come from(), ecc. È possibile utilizzare questi metodi per manipolare gli oggetti BlsKey.

Inoltre, l'oggetto BlsKey dispone di attributi membro come isPrivate() e toJSON(key = ""), che possono essere utilizzati per verificare se la chiave è una chiave privata ed esportare la rappresentazione in formato JSON dell'oggetto.

L'oggetto BlsKey fornisce una serie di API flessibili e potenti per gestire facilmente le chiavi BLS e implementare requisiti di sicurezza come l'autenticazione e la firma dei dati.

Di seguito utilizziamo un semplice esempio per dimostrare come utilizzare l'oggetto BlsKey per la firma e la verifica:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
var crypto = require('crypto'); // create a private key var privateKey = new crypto.BlsKey({ 'kty': 'EC', 'crv': 'BLS12-381-G1', 'x': 'TPk62yDxSISkoSBRPYkpO%tJmm0tZd4tJeLuCKVFv4UmBPfOQ2aDWrCifANam2wj', 'd': 'zE-pf24p-l0IT_lMcrX0gStTcsx_k1f7DnJmrN8V7ZU', }); // sign a message var message = '这是一条需要签名的消息'; var signature = privateKey.sign(message); // verify the signature var publicKey = privateKey.publicKey; var verify = publicKey.verify(message, signature); console.log('verification result:', verify);

rapporto ereditario

Costruttore

BlsKey

Costruisci BlsKey dalla chiave in formato JSON

1
new BlsKey(Object jsonKey);

Parametri di chiamata:

  • jsonKey: Oggetto, chiave in formato JSON

Il formato di jsonKey supporta i seguenti due tipi di chiavi private:

1 2 3 4 5 6
{ "kty": "EC", "crv": "BLS12381_G1", "x": "tCgCNuUYQotPEsrljWi-lIRIPpzhqsnJV1NPnE7je6glUb-FJm9IYkuv2hbHw22i", "d": "TXNvJBBG3h23H5hFJcnRZmYd_j1TqpwtJOllYGU3yyw" }

Chiave pubblica Bls:

1 2 3 4 5
{ "kty": "EC", "crv": "BLS12381_G1", "x": "tCgCNuUYQotPEsrljWi-lIRIPpzhqsnJV1NPnE7je6glUb-FJm9IYkuv2hbHw22i" }

funzione statica

aggregateSignature

Unisci una serie di firme in un'unica firma

1
static Buffer BlsKey.aggregateSignature(Array sigs);

Parametri di chiamata:

  • sigs: Array, un insieme di firme da unire

Risultati restituiti:

  • Buffer, restituisce la firma singola unita

aggregatePublicKey

Unisci un set di chiavi pubbliche in un'unica chiave pubblica

1
static BlsKey BlsKey.aggregatePublicKey(Array keys);

Parametri di chiamata:

  • keys: Array, un set di chiavi pubbliche da unire

Risultati restituiti:

  • BlsKey, restituisce la singola chiave pubblica unita

recover

Recupera la chiave pubblica dalla firma recuperabile, supporta solo secp256k1

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

Parametri di chiamata:

  • data:Buffer, i dati originali della firma
  • sig:Buffer, firma recuperabile

Risultati restituiti:

  • ECKey, restituisce un oggetto contenente la chiave pubblica

from

Carica una chiave in formato DER

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

Parametri di chiamata:

  • DerKey:Buffer, digitare il formato DER
  • password: Stringa, password di decrittazione

Risultati restituiti:

  • PKey, restituisce un oggetto contenente la chiave

Carica una chiave in formato PEM

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

Parametri di chiamata:

  • pemKey: stringa, chiave in formato PEM
  • password: Stringa, password di decrittazione

Risultati restituiti:

  • PKey, restituisce un oggetto contenente la chiave

Carica una chiave in formato JSON

1
static PKey BlsKey.from(Object jsonKey);

Parametri di chiamata:

  • jsonKey: Oggetto, chiave in formato JSON

Risultati restituiti:

  • PKey, restituisce un oggetto contenente la chiave

Il formato di jsonKey supporta i seguenti quattro tipi di chiavi private RSA:

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==" }

Chiave pubblica RSA:

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

Chiave privata CE:

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" }

Chiave pubblica CE:

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

proprietà dei membri

bbs_suite

Stringa, suite di crittografia firmata BBS, l'impostazione predefinita è Bls12381Sha256, può essere modificata in Bls12381Shake256, supporta solo la curva BLS12-381-G2

1
String BlsKey.bbs_suite;

curve

String, restituisce il nome della curva ellittica dell'algoritmo corrente

1
readonly String BlsKey.curve;

name

String, restituisce il nome dell'algoritmo corrente

1
readonly String BlsKey.name;

keySize

Intero, restituisce la lunghezza della password dell'algoritmo corrente in bit

1
readonly Integer BlsKey.keySize;

alg

Stringa, restituisce e imposta l'algoritmo di firma dell'oggetto corrente

1
readonly String BlsKey.alg;

publicKey

PKey, restituisce la chiave pubblica della chiave corrente

1
readonly PKey BlsKey.publicKey;

Risultati restituiti:

  • la chiave pubblica della chiave corrente

funzione membro

bbsSign

Firma una serie di messaggi utilizzando la chiave privata corrente, supportando solo la curva BLS12-381-G2

1 2
Buffer BlsKey.bbsSign(Array messages, Object opts = {}) async;

Parametri di chiamata:

  • messages: Array, specifica l'array di messaggi da firmare
  • opts: Oggetto, specifica le opzioni di firma

Risultati restituiti:

  • Buffer, restituisce il messaggio firmato

opts supporta i seguenti parametri:

1 2 3
{ header: Buffer | string // specified header for signature, default is empty }

bbsVerify

Verifica la firma utilizzando la chiave pubblica corrente, supporta solo la curva BLS12-381-G2

1 2 3
Boolean BlsKey.bbsVerify(Array messages, Buffer sig, Object opts = {}) async;

Parametri di chiamata:

  • messages: Array, specifica l'array completo del messaggio
  • sig:Buffer, specificare la firma da verificare
  • opts: Oggetto, specifica le opzioni di verifica

Risultati restituiti:

  • Boolean, restituisce il risultato verificato

opts supporta i seguenti parametri:

1 2 3
{ header: Buffer | string // specified header for signature, default is empty }

proofGen

Genera un certificato utilizzando la chiave pubblica e la firma correnti, supporta solo la curva BLS12-381-G2

1 2 3 4
Buffer BlsKey.proofGen(Buffer sig, Array messages, Array idx, Object opts = {}) async;

Parametri di chiamata:

  • sig:Buffer, specifica la firma utilizzata durante la generazione del certificato
  • messages: Array, specifica l'array completo del messaggio
  • idx: Array, specifica l'indice del messaggio utilizzato durante la generazione delle prove, l'indice è basato su 1
  • opts: Oggetto, specifica le opzioni di prova

Risultati restituiti:

  • Buffer, restituisce la prova generata

opts supporta i seguenti parametri:

1 2 3 4
{ header: Buffer | string, // specified header for signature, default is empty proof_header: Buffer | string // specified header for proof, default is empty }

proofVerify

Utilizza la chiave pubblica corrente per verificare il certificato, supportando solo la curva BLS12-381-G2

1 2 3 4
Boolean BlsKey.proofVerify(Array messages, Array idx, Buffer proof, Object opts = {}) async;

Parametri di chiamata:

  • messages: Array, specifica un array di messaggi filtrati in base all'indice
  • idx: Array, specifica l'indice del messaggio utilizzato nella prova, l'indice è basato su 1
  • proof:Buffer, specificare la prova generata
  • opts: Oggetto, specifica le opzioni di prova

Risultati restituiti:

  • Boolean, restituisce il risultato verificato

opts supporta i seguenti parametri:

1 2 3 4
{ header: Buffer | string, // specified header for signature, default is empty proof_header: Buffer | string // specified header for proof, default is empty }

computeSecret

Calcola la chiave condivisa Elliptic Curve Diffie-Hellman (ECDH) utilizzando l'algoritmo corrente

1
Buffer BlsKey.computeSecret(ECKey publicKey) async;

Parametri di chiamata:

  • publicKey:ECKey, specificare la chiave pubblica dell'altra parte

Risultati restituiti:

  • Buffer, restituisce la chiave segreta condivisa calcolata

isPrivate

Interroga se la chiave corrente è una chiave privata

1
Boolean BlsKey.isPrivate();

Risultati restituiti:

  • Boolean, è True e rappresenta la chiave privata

clone

copia la chiave corrente

1
PKey BlsKey.clone();

Risultati restituiti:

  • PKey, l'oggetto copia della chiave corrente

pem

Restituisce la codifica del formato PEM della chiave corrente

1
String BlsKey.pem();

Risultati restituiti:

  • String, Codifica del formato PEM della chiave corrente

der

Restituisce la codifica del formato DER della chiave corrente

1
Buffer BlsKey.der();

Risultati restituiti:

  • Buffer, la codifica del formato DER della chiave corrente

json

Restituisce la codifica del formato jwt della chiave corrente

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

Parametri di chiamata:

  • opts: Oggetto, specifica le opzioni di esportazione

Risultati restituiti:

  • Object, la codifica del formato jwt della chiave corrente

opts supporta i seguenti parametri:

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

Le curve che supportano la compressione sono: secp192r1, secp192k1, secp256r1, secp256k1, brainpoolP256r1, secp384r1, brainpoolP384r1, brainpoolP512r1, secp521r1, sm2


equals

Confronta due chiavi pubblica/privata per vedere se sono la stessa cosa

1
Boolean BlsKey.equals(object key);

Parametri di chiamata:

  • key:object, specificare la chiave pubblica/privata dell'altra parte

Risultati restituiti:

  • Boolean, se sono uguali, restituisce true

encrypt

Crittografare i dati utilizzando la chiave pubblica di crittografia dell'algoritmo corrente

1
Buffer BlsKey.encrypt(Buffer data) async;

Parametri di chiamata:

  • data:Buffer, specificare i dati da crittografare

Risultati restituiti:

  • Buffer, restituisce i dati crittografati

decrypt

Decrittografare i dati utilizzando la chiave privata della password dell'algoritmo corrente

1
Buffer BlsKey.decrypt(Buffer data) async;

Parametri di chiamata:

  • data:Buffer, specificare i dati da decrittografare

Risultati restituiti:

  • Buffer, restituisce i dati decrittografati

sign

Firmare i dati utilizzando la chiave privata crittografica dell'algoritmo corrente

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

Parametri di chiamata:

  • data:Buffer, specificare i dati da firmare. Quando l'algoritmo è RSA, il parametro di input deve essere eseguito con l'algoritmo specificato da alg.hash
  • opts: Oggetto, specifica le opzioni di firma

Risultati restituiti:

  • Buffer, restituisce i dati firmati

opts supporta i seguenti parametri:

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

Verificare i dati utilizzando la chiave pubblica crittografica dell'algoritmo corrente

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

Parametri di chiamata:

  • data:Buffer, specificare i dati da verificare
  • sign:Buffer, specificare la firma da verificare
  • opts: Oggetto, specifica le opzioni di verifica

Risultati restituiti:

  • Boolean, restituisce il risultato verificato

opts supporta i seguenti parametri:

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

Restituisce la rappresentazione in formato stringa dell'oggetto. Generalmente viene restituito "[Oggetto nativo]". L'oggetto può essere reimplementato in base alle proprie caratteristiche.

1
String BlsKey.toString();

Risultati restituiti:

  • String, restituisce la rappresentazione di stringa dell'oggetto

toJSON

Restituisce una rappresentazione in formato JSON dell'oggetto, generalmente restituendo una raccolta di proprietà leggibili definite dall'oggetto.

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

Parametri di chiamata:

  • key: Stringa, non utilizzata

Risultati restituiti:

  • Value, restituisce un valore contenente JSON serializzabile