ObjetEd25519Clé
Objet algorithme de chiffrement de courbe elliptique
L'exemple suivant illustre l'utilisation de Ed25519Key :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17const crypto = require('crypto');
// generate a ed25519 key
const key = crypto.generateKey('ed25519');
// output key in PEM format
console.log('PrivateKey:', key.pem());
console.log('PublicKey:', key.publicKey.pem());
// sign a message
const message = 'Hello, World!';
const sig = key.sign(message);
console.log('Sig:', sig.hex());
// verify the signature
const verifyResult = key.verify(message, sig);
console.log('Verify Result:', verifyResult);
relation d'héritage
fonction statique
recover
Récupérer la clé publique à partir de la signature récupérable, prend uniquement en charge secp256k1
1
2static ECKey Ed25519Key.recover(Buffer data,
Buffer sig) async;
Paramètres d'appel :
Résultats de retour :
- ECKey, renvoie un objet contenant la clé publique
from
Charger une clé au format DER
1
2static PKey Ed25519Key.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
2static PKey Ed25519Key.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
1static PKey Ed25519Key.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
1readonly String Ed25519Key.curve;
name
String, renvoie le nom de l'algorithme actuel
1readonly String Ed25519Key.name;
keySize
Entier, renvoie la longueur actuelle du mot de passe de l'algorithme en bits
1readonly Integer Ed25519Key.keySize;
alg
String, renvoie et définit l'algorithme de signature d'objet actuel
1readonly String Ed25519Key.alg;
publicKey
PKey, renvoie la clé publique de la clé actuelle
1readonly PKey Ed25519Key.publicKey;
Résultats de retour :
- la clé publique de la clé actuelle
fonction membre
toX25519
Convertir la paire de clés publique-privée X25519 à partir de l'objet actuel, prend uniquement en charge Ed25519
1ECKey Ed25519Key.toX25519() async;
Résultats de retour :
- ECKey, renvoie l'objet clé publique X25519 correspondant
computeSecret
Calculer la clé partagée Elliptic Curve Diffie-Hellman (ECDH) à l'aide de l'algorithme actuel
1Buffer Ed25519Key.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
1Boolean Ed25519Key.isPrivate();
Résultats de retour :
- Boolean, est True et représente la clé privée
clone
copier la clé actuelle
1PKey Ed25519Key.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
1String Ed25519Key.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
1Buffer Ed25519Key.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
1Object Ed25519Key.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
1Boolean Ed25519Key.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
1Buffer Ed25519Key.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
1Buffer Ed25519Key.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
2Buffer Ed25519Key.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
3Boolean Ed25519Key.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.
1String Ed25519Key.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.
1Value Ed25519Key.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