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
19var 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
1new 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
1static 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
1static 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
2static ECKey BlsKey.recover(Buffer data,
Buffer sig) async;
Oproepparameters:
Resultaten retourneren:
- ECKey, retourneert een object dat de publieke sleutel bevat
from
Laad een sleutel in DER-formaat
1
2static 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
2static 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
1static 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
1String BlsKey.bbs_suite;
curve
String, retourneert de elliptische curvenaam van het huidige algoritme
1readonly String BlsKey.curve;
name
String, retourneert de huidige algoritmenaam
1readonly String BlsKey.name;
keySize
Geheel getal, retourneert de huidige wachtwoordlengte van het algoritme in bits
1readonly Integer BlsKey.keySize;
alg
String, retourneert en stelt het huidige objecthandtekeningalgoritme in
1readonly String BlsKey.alg;
publicKey
PKey, retourneert de openbare sleutel van de huidige sleutel
1readonly 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
2Buffer 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
3Boolean 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
4Buffer 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
4Boolean 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
1Buffer 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
1Boolean BlsKey.isPrivate();
Resultaten retourneren:
- Boolean, is True en vertegenwoordigt de privésleutel
clone
kopieer de huidige sleutel
1PKey BlsKey.clone();
Resultaten retourneren:
- PKey, het kopieerobject van de huidige sleutel
pem
Retourneert de PEM-indelingscodering van de huidige sleutel
1String BlsKey.pem();
Resultaten retourneren:
- String, PEM-formaatcodering van de huidige sleutel
der
Retourneert de DER-indelingscodering van de huidige sleutel
1Buffer BlsKey.der();
Resultaten retourneren:
- Buffer, de DER-formaatcodering van de huidige sleutel
json
Retourneert de jwt-indelingscodering van de huidige sleutel
1Object 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
1Boolean 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
1Buffer 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
1Buffer 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
2Buffer 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
3Boolean 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.
1String 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.
1Value BlsKey.toJSON(String key = "");
Oproepparameters:
- key: Tekenreeks, niet gebruikt
Resultaten retourneren:
- Value, retourneert een waarde die JSON-serialiseerbaar bevat