Object-ingebouwd object

ObjectBlsKey

Elliptische curve encryptie-algoritme-object

Het BlsKey-object is een object dat in fibjs wordt gebruikt om een ​​BLS-sleutel weer te geven. Het kan worden gebruikt voor het bouwen, importeren, exporteren en manipuleren van BLS-sleutels. De BLS-sleutel is een coderingsmethode met een openbare sleutel die vaak wordt gebruikt voor authenticatie en gegevensondertekening, en heeft de kenmerken dat deze een hoge uitvoeringssnelheid biedt en tegelijkertijd de veiligheid garandeert.

Het BlsKey-object biedt verschillende constructormethoden om sleutels uit verschillende sleutelformaten te laden. Het biedt ook enkele openbare eigenschappen en methoden zoals toString(), clone(), name, publicKey(), enz., evenals enkele statische methoden, zoals from(), enz. U kunt deze methoden gebruiken om BlsKey-objecten te manipuleren.

Bovendien heeft het BlsKey-object lidkenmerken zoals isPrivate() en toJSON(key = ""), die kunnen worden gebruikt om te vragen of de sleutel een privésleutel is en om de JSON-indeling van het object te exporteren.

Het BlsKey-object biedt een reeks flexibele en krachtige API's om BLS-sleutels eenvoudig te beheren en beveiligingsvereisten zoals authenticatie en gegevensondertekening te implementeren.

Hieronder gebruiken we een eenvoudig voorbeeld om te demonstreren hoe u het BlsKey-object kunt gebruiken voor ondertekening en verificatie:

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

erfenis relatie

Constructeur

BlsKey

Construeer BlsKey van sleutel in JSON-indeling

1
new BlsKey(Object jsonKey);

Oproepparameters:

  • jsonKey: Object, sleutel in JSON-indeling

Het formaat van jsonKey ondersteunt de volgende twee soorten privésleutels:

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

Bls publieke sleutel:

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

statische functie

aggregateSignature

Voeg een reeks handtekeningen samen tot één handtekening

1
static Buffer BlsKey.aggregateSignature(Array sigs);

Oproepparameters:

  • sigs: Array, een reeks handtekeningen die moeten worden samengevoegd

Resultaten retourneren:

  • Buffer, retourneert de samengevoegde enkele handtekening

aggregatePublicKey

Voeg een set openbare sleutels samen tot één enkele openbare sleutel

1
static BlsKey BlsKey.aggregatePublicKey(Array keys);

Oproepparameters:

  • keys: Array, een set openbare sleutels die moeten worden samengevoegd

Resultaten retourneren:

  • BlsKey, retourneert de samengevoegde enkele openbare sleutel

recover

Herstel de openbare sleutel van een herstelbare handtekening, ondersteunt alleen secp256k1

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

Oproepparameters:

  • data:Buffer, de originele gegevens van de handtekening
  • sig:Buffer, herstelbare handtekening

Resultaten retourneren:

  • ECKey, retourneert een object dat de publieke sleutel bevat

from

Laad een sleutel in DER-formaat

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

Oproepparameters:

  • DerKey:Buffer, toets in DER-formaat
  • password: String, decoderingswachtwoord

Resultaten retourneren:

  • PKey, retourneert een object dat de sleutel bevat

Laad een sleutel in PEM-formaat

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

Oproepparameters:

  • pemKey: String, sleutel in PEM-formaat
  • password: String, decoderingswachtwoord

Resultaten retourneren:

  • PKey, retourneert een object dat de sleutel bevat

Laad een sleutel in JSON-indeling

1
static PKey BlsKey.from(Object jsonKey);

Oproepparameters:

  • jsonKey: Object, sleutel in JSON-indeling

Resultaten retourneren:

  • PKey, retourneert een object dat de sleutel bevat

Het formaat van jsonKey ondersteunt de volgende vier typen RSA-privésleutels:

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

Openbare RSA-sleutel:

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

EC-privésleutel:

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

Publieke sleutel van de EC:

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

eigenschappen van leden

bbs_suite

String, BBS ondertekende coderingssuite, standaard is Bls12381Sha256, kan worden gewijzigd naar Bls12381Shake256, ondersteunt alleen BLS12-381-G2-curve

1
String BlsKey.bbs_suite;

curve

String, retourneert de elliptische curvenaam van het huidige algoritme

1
readonly String BlsKey.curve;

name

String, retourneert de huidige algoritmenaam

1
readonly String BlsKey.name;

keySize

Geheel getal, retourneert de huidige wachtwoordlengte van het algoritme in bits

1
readonly Integer BlsKey.keySize;

alg

String, retourneert en stelt het huidige objecthandtekeningalgoritme in

1
readonly String BlsKey.alg;

publicKey

PKey, retourneert de openbare sleutel van de huidige sleutel

1
readonly PKey BlsKey.publicKey;

Resultaten retourneren:

  • de publieke sleutel van de huidige sleutel

lid functie

bbsSign

Onderteken een reeks berichten met de huidige privésleutel, die alleen de BLS12-381-G2-curve ondersteunt

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

Oproepparameters:

  • messages: Array, specificeert de berichtenarray die moet worden ondertekend
  • opts: Object, handtekeningopties opgeven

Resultaten retourneren:

  • Buffer, retourneert het ondertekende bericht

opts ondersteunt de volgende parameters:

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

bbsVerify

Verifieer de handtekening met de huidige openbare sleutel, ondersteunt alleen de BLS12-381-G2-curve

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

Oproepparameters:

  • messages: Array, specificeert de volledige berichtenarray
  • sig:Buffer, geef de handtekening op die moet worden geverifieerd
  • opts: Object, verificatieopties opgeven

Resultaten retourneren:

  • Boolean, retourneert het geverifieerde resultaat

opts ondersteunt de volgende parameters:

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

proofGen

Genereer een certificaat met behulp van de huidige openbare sleutel en handtekening, ondersteunt alleen de BLS12-381-G2-curve

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

Oproepparameters:

  • sig:Buffer, specificeert de handtekening die wordt gebruikt bij het genereren van het certificaat
  • messages: Array, specificeert de volledige berichtenarray
  • idx: Array, specificeert de berichtenindex die wordt gebruikt bij het genereren van proefdrukken, de index is gebaseerd op 1
  • opts: Object, specificeer proefopties

Resultaten retourneren:

  • Buffer, retourneert het gegenereerde bewijs

opts ondersteunt de volgende parameters:

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

Gebruik de huidige openbare sleutel om het certificaat te verifiëren, waarbij alleen de BLS12-381-G2-curve wordt ondersteund

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

Oproepparameters:

  • messages: Array, specificeert een reeks berichten die zijn gefilterd op basis van index
  • idx: Array, specificeert de berichtenindex die in het bewijs wordt gebruikt, de index is gebaseerd op 1
  • proof:Buffer, specificeer het gegenereerde bewijs
  • opts: Object, specificeer proefopties

Resultaten retourneren:

  • Boolean, retourneert het geverifieerde resultaat

opts ondersteunt de volgende parameters:

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

Bereken de gedeelde sleutel Elliptic Curve Diffie-Hellman (ECDH) met behulp van het huidige algoritme

1
Buffer BlsKey.computeSecret(ECKey publicKey) async;

Oproepparameters:

  • publicKey:ECKey, geef de openbare sleutel van de andere partij op

Resultaten retourneren:

  • Buffer, retourneert de berekende gedeelde geheime sleutel

isPrivate

Vraag of de huidige sleutel een privésleutel is

1
Boolean BlsKey.isPrivate();

Resultaten retourneren:

  • Boolean, is True en vertegenwoordigt de privésleutel

clone

kopieer de huidige sleutel

1
PKey BlsKey.clone();

Resultaten retourneren:

  • PKey, het kopieerobject van de huidige sleutel

pem

Retourneert de PEM-indelingscodering van de huidige sleutel

1
String BlsKey.pem();

Resultaten retourneren:

  • String, PEM-formaatcodering van de huidige sleutel

der

Retourneert de DER-indelingscodering van de huidige sleutel

1
Buffer BlsKey.der();

Resultaten retourneren:

  • Buffer, de DER-formaatcodering van de huidige sleutel

json

Retourneert de jwt-indelingscodering van de huidige sleutel

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

Oproepparameters:

  • opts: Object, exportopties opgeven

Resultaten retourneren:

  • Object, de jwt-indelingscodering van de huidige sleutel

opts ondersteunt de volgende parameters:

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

Curven die compressie ondersteunen zijn: secp192r1, secp192k1, secp256r1, secp256k1, brainpoolP256r1, secp384r1, brainpoolP384r1, brainpoolP512r1, secp521r1, sm2


equals

Vergelijk twee publieke/privésleutels om te zien of ze hetzelfde zijn

1
Boolean BlsKey.equals(object key);

Oproepparameters:

  • key:object, geef de openbare/privésleutel van de andere partij op

Resultaten retourneren:

  • Boolean, als ze hetzelfde zijn, retourneert u waar

encrypt

Versleutel gegevens met behulp van de huidige openbare sleutel voor algoritmecodering

1
Buffer BlsKey.encrypt(Buffer data) async;

Oproepparameters:

  • data:Buffer, geef de gegevens op die moeten worden gecodeerd

Resultaten retourneren:

  • Buffer, retourneert de gecodeerde gegevens

decrypt

Decodeer gegevens met behulp van de huidige privésleutel van het algoritme

1
Buffer BlsKey.decrypt(Buffer data) async;

Oproepparameters:

  • data:Buffer, specificeer de gegevens die moeten worden gedecodeerd

Resultaten retourneren:

  • Buffer, retourneert de gedecodeerde gegevens

sign

Onderteken gegevens met behulp van de huidige cryptografische privésleutel van het algoritme

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

Oproepparameters:

  • data:Buffer, specificeer de gegevens die moeten worden ondertekend. Als het algoritme RSA is, moet de invoerparameter worden uitgevoerd met het algoritme dat is opgegeven door alg.hash
  • opts: Object, handtekeningopties opgeven

Resultaten retourneren:

  • Buffer, retourneer de ondertekende gegevens

opts ondersteunt de volgende parameters:

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

Verifieer gegevens met behulp van de huidige cryptografische openbare sleutel van het algoritme

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

Oproepparameters:

  • data:Buffer, specificeer de gegevens die moeten worden geverifieerd
  • sign:Buffer, geef de handtekening op die moet worden geverifieerd
  • opts: Object, verificatieopties opgeven

Resultaten retourneren:

  • Boolean, retourneert het geverifieerde resultaat

opts ondersteunt de volgende parameters:

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

Retourneert de tekenreeksweergave van het object. Over het algemeen wordt '[Native Object]' geretourneerd. Het object kan opnieuw worden geïmplementeerd op basis van zijn eigen kenmerken.

1
String BlsKey.toString();

Resultaten retourneren:

  • String, retourneert de tekenreeksrepresentatie van het object

toJSON

Retourneert een weergave in JSON-indeling van het object, waarbij doorgaans een verzameling leesbare eigenschappen wordt geretourneerd die door het object zijn gedefinieerd.

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

Oproepparameters:

  • key: Tekenreeks, niet gebruikt

Resultaten retourneren:

  • Value, retourneert een waarde die JSON-serialiseerbaar bevat