Objecte objecte incorporat

ObjectBlsKey

Objecte d'algoritme de xifratge de corba el·líptica

L'objecte BlsKey és un objecte utilitzat en fibjs per representar una clau BLS. Es pot utilitzar per crear, importar, exportar i manipular claus BLS. La clau BLS és un mètode de xifratge de clau pública que s'utilitza habitualment per a l'autenticació i la signatura de dades, i té les característiques de proporcionar una alta velocitat d'execució alhora que garanteix la seguretat.

L'objecte BlsKey proporciona diversos mètodes constructors per carregar claus de diferents formats de clau. També proporciona algunes propietats i mètodes públics com toString(), clone(), name, publicKey(), etc., així com alguns mètodes estàtics, com ara from(), etc. Podeu utilitzar aquests mètodes per manipular objectes BlsKey.

A més, l'objecte BlsKey té atributs de membre com ara isPrivate() i toJSON(key = ""), que es poden utilitzar per consultar si la clau és una clau privada i exportar la representació en format JSON de l'objecte.

L'objecte BlsKey proporciona un conjunt d'API flexibles i potents per gestionar fàcilment les claus BLS i implementar requisits de seguretat com ara l'autenticació i la signatura de dades.

A continuació fem servir un exemple senzill per demostrar com utilitzar l'objecte BlsKey per signar i verificar:

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);

relació hereditària

Constructor

BlsKey

Construeix BlsKey a partir de la clau en format JSON

1
new BlsKey(Object jsonKey);

Paràmetres de trucada:

  • jsonKey: Objecte, clau en format JSON

El format de jsonKey admet els dos tipus de claus privades següents:

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

Clau pública Bls:

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

funció estàtica

aggregateSignature

Combina un conjunt de signatures en una única signatura

1
static Buffer BlsKey.aggregateSignature(Array sigs);

Paràmetres de trucada:

  • sigs: Matriu, un conjunt de signatures que s'han de combinar

Resultats de retorn:

  • Buffer, retorna la signatura única combinada

aggregatePublicKey

Combina un conjunt de claus públiques en una única clau pública

1
static BlsKey BlsKey.aggregatePublicKey(Array keys);

Paràmetres de trucada:

  • keys: Matriu, un conjunt de claus públiques que s'han de combinar

Resultats de retorn:

  • BlsKey, retorna la clau pública única combinada

recover

Recupereu la clau pública de la signatura recuperable, només admet secp256k1

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

Paràmetres de trucada:

  • data:Buffer, les dades originals de la signatura
  • sig:Buffer, signatura recuperable

Resultats de retorn:

  • ECKey, retorna un objecte que conté la clau pública

from

Carregueu una clau en format DER

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

Paràmetres de trucada:

  • DerKey:Buffer, clau en format DER
  • password: Cadena, contrasenya de desxifrat

Resultats de retorn:

  • PKey, retorna un objecte que conté la clau

Carregueu una clau en format PEM

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

Paràmetres de trucada:

  • pemKey: Cadena, clau en format PEM
  • password: Cadena, contrasenya de desxifrat

Resultats de retorn:

  • PKey, retorna un objecte que conté la clau

Carregueu una clau en format JSON

1
static PKey BlsKey.from(Object jsonKey);

Paràmetres de trucada:

  • jsonKey: Objecte, clau en format JSON

Resultats de retorn:

  • PKey, retorna un objecte que conté la clau

El format de jsonKey admet els quatre tipus de claus privades RSA següents:

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

Clau pública RSA:

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

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

Clau pública EC:

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

propietats dels membres

bbs_suite

Cadena, conjunt de xifratge signat BBS, per defecte és Bls12381Sha256, es pot modificar a Bls12381Shake256, només admet la corba BLS12-381-G2

1
String BlsKey.bbs_suite;

curve

Cadena, retorna el nom de la corba el·líptica de l'algorisme actual

1
readonly String BlsKey.curve;

name

String, retorna el nom de l'algorisme actual

1
readonly String BlsKey.name;

keySize

Enter, retorna la longitud actual de la contrasenya de l'algorisme en bits

1
readonly Integer BlsKey.keySize;

alg

String, retorna i estableix l'algoritme de signatura de l'objecte actual

1
readonly String BlsKey.alg;

publicKey

PKey, retorna la clau pública de la clau actual

1
readonly PKey BlsKey.publicKey;

Resultats de retorn:

  • la clau pública de la clau actual

funció de membre

bbsSign

Signa un conjunt de missatges amb la clau privada actual, només compatible amb la corba BLS12-381-G2

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

Paràmetres de trucada:

  • messages: Matriu, especifica la matriu de missatges que s'ha de signar
  • opts: Objecte, especifica les opcions de signatura

Resultats de retorn:

  • Buffer, retorna el missatge signat

opts admet els paràmetres següents:

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

bbsVerify

Verifiqueu la signatura mitjançant la clau pública actual, només admet la corba BLS12-381-G2

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

Paràmetres de trucada:

  • messages: Matriu, especifica la matriu de missatges completa
  • sig:Buffer, especifiqueu la signatura a verificar
  • opts: Objecte, especifiqueu opcions de verificació

Resultats de retorn:

  • Boolean, retorna el resultat verificat

opts admet els paràmetres següents:

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

proofGen

Genereu un certificat utilitzant la clau pública i la signatura actuals, només admet la corba BLS12-381-G2

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

Paràmetres de trucada:

  • sig:Buffer, especifica la signatura utilitzada en generar el certificat
  • messages: Matriu, especifica la matriu de missatges completa
  • idx: Matriu, especifica l'índex de missatges utilitzat en generar proves, l'índex es basa en 1
  • opts: Objecte, especifiqueu opcions de prova

Resultats de retorn:

  • Buffer, retorna la prova generada

opts admet els paràmetres següents:

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

Utilitzeu la clau pública actual per verificar el certificat, només admet la corba BLS12-381-G2

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

Paràmetres de trucada:

  • messages: Matriu, especifica una matriu de missatges filtrats segons l'índex
  • idx: Matriu, especifica l'índex de missatges utilitzat a la prova, l'índex es basa en 1
  • proof:Buffer, especifiqueu la prova generada
  • opts: Objecte, especifiqueu opcions de prova

Resultats de retorn:

  • Boolean, retorna el resultat verificat

opts admet els paràmetres següents:

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

Calcula la clau compartida de la corba el·líptica Diffie-Hellman (ECDH) utilitzant l'algoritme actual

1
Buffer BlsKey.computeSecret(ECKey publicKey) async;

Paràmetres de trucada:

  • publicKey:ECKey, especifiqueu la clau pública de l'altra part

Resultats de retorn:

  • Buffer, retorna la clau secreta compartida calculada

isPrivate

Consulta si la clau actual és una clau privada

1
Boolean BlsKey.isPrivate();

Resultats de retorn:

  • Boolean, és True i representa la clau privada

clone

copiar la clau actual

1
PKey BlsKey.clone();

Resultats de retorn:

  • PKey, l'objecte de còpia de la clau actual

pem

Retorna la codificació en format PEM de la clau actual

1
String BlsKey.pem();

Resultats de retorn:

  • String, codificació en format PEM de la clau actual

der

Retorna la codificació en format DER de la clau actual

1
Buffer BlsKey.der();

Resultats de retorn:

  • Buffer, la codificació en format DER de la clau actual

json

Retorna la codificació en format jwt de la clau actual

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

Paràmetres de trucada:

  • opts: Objecte, especifiqueu les opcions d'exportació

Resultats de retorn:

  • Object, la codificació en format jwt de la clau actual

opts admet els paràmetres següents:

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

Les corbes que admeten la compressió són: secp192r1, secp192k1, secp256r1, secp256k1, brainpoolP256r1, secp384r1, brainpoolP384r1, brainpoolP512r1, secp521r1, sm2


equals

Compareu dues claus públiques/privades per veure si són iguals

1
Boolean BlsKey.equals(object key);

Paràmetres de trucada:

  • key:object, especifiqueu la clau pública/privada de l'altra part

Resultats de retorn:

  • Boolean, si són iguals, retorna true

encrypt

Xifra les dades amb la clau pública de xifrat de l'algoritme actual

1
Buffer BlsKey.encrypt(Buffer data) async;

Paràmetres de trucada:

  • data:Buffer, especifiqueu les dades que voleu xifrar

Resultats de retorn:

  • Buffer, retorna les dades xifrades

decrypt

Desxifra les dades amb la clau privada de la contrasenya actual de l'algoritme

1
Buffer BlsKey.decrypt(Buffer data) async;

Paràmetres de trucada:

  • data:Buffer, especifiqueu les dades a desxifrar

Resultats de retorn:

  • Buffer, retorna les dades desxifrades

sign

Signeu les dades amb la clau privada criptogràfica actual de l'algoritme

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

Paràmetres de trucada:

  • data:Buffer, especifiqueu les dades a signar. Quan l'algorisme és RSA, el paràmetre d'entrada s'ha d'executar amb l'algorisme especificat per alg.hash
  • opts: Objecte, especifica les opcions de signatura

Resultats de retorn:

  • Buffer, retorneu les dades signades

opts admet els paràmetres següents:

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

Verifiqueu les dades mitjançant la clau pública criptogràfica de l'algoritme actual

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

Paràmetres de trucada:

  • data:Buffer, especifiqueu les dades a verificar
  • sign:Buffer, especifiqueu la signatura a verificar
  • opts: Objecte, especifiqueu opcions de verificació

Resultats de retorn:

  • Boolean, retorna el resultat verificat

opts admet els paràmetres següents:

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

Retorna la representació de cadena de l'objecte. En general, es retorna "[Objecte natiu]". L'objecte es pot tornar a implementar segons les seves pròpies característiques.

1
String BlsKey.toString();

Resultats de retorn:

  • String, retorna la representació de cadena de l'objecte

toJSON

Retorna una representació en format JSON de l'objecte, generalment retornant una col·lecció de propietats llegibles definides per l'objecte.

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

Paràmetres de trucada:

  • key: Corda, no utilitzada

Resultats de retorn:

  • Value, retorna un valor que conté JSON serializable