ObjetoEd25519Clave
Objeto de algoritmo de cifrado de curva elíptica
El siguiente ejemplo demuestra el uso 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);
relación de herencia
función estática
recover
Recuperar clave pública a partir de firma recuperable, solo admite secp256k1
1
2static ECKey Ed25519Key.recover(Buffer data,
Buffer sig) async;
Parámetros de llamada:
Resultados de devolución:
- ECKey, devuelve un objeto que contiene la clave pública
from
Cargar una clave en formato DER
1
2static PKey Ed25519Key.from(Buffer DerKey,
String password = "");
Parámetros de llamada:
- DerKey:Buffer, clave en formato DER
- password: Cadena, contraseña de descifrado
Resultados de devolución:
- PKey, devuelve un objeto que contiene la clave
Cargar una clave en formato PEM
1
2static PKey Ed25519Key.from(String pemKey,
String password = "");
Parámetros de llamada:
- pemKey: Cadena, clave en formato PEM
- password: Cadena, contraseña de descifrado
Resultados de devolución:
- PKey, devuelve un objeto que contiene la clave
Cargar una clave en formato JSON
1static PKey Ed25519Key.from(Object jsonKey);
Parámetros de llamada:
- jsonKey: Objeto, clave en formato JSON
Resultados de devolución:
- PKey, devuelve un objeto que contiene la clave
El formato de jsonKey admite los siguientes cuatro tipos de claves privadas 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=="
}
Clave pública RSA:
1
2
3
4
5{
"kty": "RSA",
"n": "0m5lvKpWqy9JS7tV2HIPqHCYHLquSuxIC3F8strIQLJKO3rZmTT96KTnhsOfBO7Y1bI7mnT0PB3_vcHd9ekWMEoZJQw7MuB8KeM_Wn54-elJr5DNLk5bMppSGxX7ZnumiXGG51_X3Yp-_EbGtDG80GxXXix7Mucyo7K25uE0uW8=",
"e": "AQAB"
}
Clave privada 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"
}
Clave pública CE:
1
2
3
4
5
6{
"kty": "EC",
"crv": "P-521",
"x": "ATfNNFuuvlGxrTGoXgyfSAGgRNNDnO3rN3k74urKJdVS14RYhdnSwm91Bm-F1l-T1XKlAY2yRnzG9w1Ukvo8c0wL",
"y": "ASBHqrruB6kdkEUB3vlW3-UIkk4HtKdUeTwN-7m3j2rgZvYR1ffRAapDvWqKGiBjomqWafxokBkbDI0c95f6f4XU"
}
propiedades de miembros
curve
Cadena, devuelve el nombre de la curva elíptica del algoritmo actual
1readonly String Ed25519Key.curve;
name
Cadena, devuelve el nombre del algoritmo actual
1readonly String Ed25519Key.name;
keySize
Entero, devuelve la longitud de la contraseña del algoritmo actual en bits
1readonly Integer Ed25519Key.keySize;
alg
Cadena, devuelve y establece el algoritmo de firma del objeto actual.
1readonly String Ed25519Key.alg;
publicKey
PKey, devuelve la clave pública de la clave actual
1readonly PKey Ed25519Key.publicKey;
Resultados de devolución:
- la clave pública de la clave actual
función miembro
toX25519
Convierta el par de claves pública-privada X25519 del objeto actual, solo admite Ed25519
1ECKey Ed25519Key.toX25519() async;
Resultados de devolución:
- ECKey, devuelve el objeto de clave pública X25519 correspondiente
computeSecret
Calcule la clave compartida de la curva elíptica Diffie-Hellman (ECDH) utilizando el algoritmo actual
1Buffer Ed25519Key.computeSecret(ECKey publicKey) async;
Parámetros de llamada:
- publicKey:ECKey, especifique la clave pública de la otra parte
Resultados de devolución:
- Buffer, devuelve la clave secreta compartida calculada
isPrivate
Consultar si la clave actual es una clave privada
1Boolean Ed25519Key.isPrivate();
Resultados de devolución:
- Boolean, es Verdadero y representa la clave privada
clone
copiar la clave actual
1PKey Ed25519Key.clone();
Resultados de devolución:
- PKey, el objeto de copia de la clave actual
pem
Devuelve la codificación en formato PEM de la clave actual.
1String Ed25519Key.pem();
Resultados de devolución:
- String, Codificación en formato PEM de la clave actual.
der
Devuelve la codificación en formato DER de la clave actual.
1Buffer Ed25519Key.der();
Resultados de devolución:
- Buffer, la codificación en formato DER de la clave actual
json
Devuelve la codificación en formato jwt de la clave actual.
1Object Ed25519Key.json(Object opts = {});
Parámetros de llamada:
- opts: Objeto, especificar opciones de exportación
Resultados de devolución:
- Object, la codificación en formato jwt de la clave actual
opts admite los siguientes parámetros:
1
2
3{
compress: false // specify whether to output public key in compressed form
}
Las curvas que soportan la compresión son: secp192r1, secp192k1, secp256r1, secp256k1, BrainpoolP256r1, secp384r1, BrainpoolP384r1, BrainpoolP512r1, secp521r1, sm2.
equals
Compare dos claves públicas/privadas para ver si son iguales
1Boolean Ed25519Key.equals(object key);
Parámetros de llamada:
- key:object, especifique la clave pública/privada de la otra parte
Resultados de devolución:
- Boolean, si son iguales, devuelve verdadero
encrypt
Cifrar datos utilizando la clave pública de cifrado del algoritmo actual
1Buffer Ed25519Key.encrypt(Buffer data) async;
Parámetros de llamada:
- data:Buffer, especifique los datos que se cifrarán
Resultados de devolución:
- Buffer, devuelve los datos cifrados
decrypt
Descifrar datos utilizando la clave privada de contraseña del algoritmo actual
1Buffer Ed25519Key.decrypt(Buffer data) async;
Parámetros de llamada:
- data:Buffer, especifique los datos a descifrar
Resultados de devolución:
- Buffer, devuelve los datos descifrados
sign
Firmar datos utilizando la clave privada criptográfica del algoritmo actual
1
2Buffer Ed25519Key.sign(Buffer data,
Object opts = {}) async;
Parámetros de llamada:
- data:Buffer, Especifique los datos que se van a firmar. Cuando el algoritmo es RSA, el parámetro de entrada debe ejecutarse con el algoritmo especificado por alg.hash
- opts: Objeto, especificar opciones de firma
Resultados de devolución:
- Buffer, devolver los datos firmados
opts admite los siguientes parámetros:
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
Verificar datos utilizando la clave pública criptográfica del algoritmo actual
1
2
3Boolean Ed25519Key.verify(Buffer data,
Buffer sign,
Object opts = {}) async;
Parámetros de llamada:
- data:Buffer, especifique los datos a verificar
- sign:Buffer, especifique la firma a verificar
- opts: Objeto, especificar opciones de verificación
Resultados de devolución:
- Boolean, devuelve el resultado verificado
opts admite los siguientes parámetros:
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
Devuelve la representación de cadena del objeto. Generalmente, se devuelve "[Objeto nativo]". El objeto se puede volver a implementar de acuerdo con sus propias características.
1String Ed25519Key.toString();
Resultados de devolución:
- String, devuelve la representación de cadena del objeto
toJSON
Devuelve una representación en formato JSON del objeto, que generalmente devuelve una colección de propiedades legibles definidas por el objeto.
1Value Ed25519Key.toJSON(String key = "");
Parámetros de llamada:
- key: Cadena, no utilizada
Resultados de devolución:
- Value, devuelve un valor que contiene JSON serializable