El método ecdh.getPublicKey() es una interfaz de programación de aplicaciones integrada de clase ECDH dentro del módulo criptográfico que se utiliza para establecer la clave pública del objeto Elliptic Curve Diffie-Hellman (ECDH). La codificación de la clave se puede especificar utilizando el parámetro de codificación .
Este método no suele ser necesario, ya que los métodos generateKeys() y setPrivateKey() se pueden utilizar cuando se necesita calcular el secreto compartido en una aplicación. Se generaría un error si la clave pública no es válida para la curva especificada.
Sintaxis:
ecdh.setPublicKey( publicKey, encoding )
Parámetros: este método acepta dos parámetros, como se mencionó anteriormente y se describe a continuación:
- publicKey: esta es la clave pública que debe establecerse. Se puede dar en formato de string, ArrayBuffer, Buffer, TypedArray o DataView.
- codificación: este es un valor de string que especifica la codificación del valor devuelto. Es un parámetro opcional.
Los siguientes ejemplos demuestran este método:
Ejemplo 1:
Javascript
const crypto = require('crypto'); // Generate an ECDH object for geekOne const geekOne = crypto.createECDH('secp521r1'); // Generate a temporary ECDH object // for generating a public key const tmpECDH = crypto.createECDH('secp521r1'); // Get a temporary public key as a // Buffer for demonstration let tempECDHPublicKey = tmpECDH.generateKeys(); // Set the public key to be equal to the // above generated key in the Buffer format geekOne.setPublicKey(tempECDHPublicKey); // Get the public key that was set let geekOnePublicKey = geekOne.getPublicKey(); console.log("Public Key of Geek A is:", geekOnePublicKey);
Producción:
La clave pública de Geek One es: <Buffer 04 01 83 85 b9 13 fd 2b 2b 7a bd 9d 8e 72 d0 bb 95 ec 24 73 51 e5 4d f1 00 68 07 7d 45 5b 37 5c 02 f6 03 56 4e 99 43 5b ba 44 57 4c e9 59 c9 ef b9 f4 … 83 bytes más>
Ejemplo 2: En este ejemplo, la clave generada es una curva diferente. Por lo tanto, cuando esta clave se establece con este método, arroja un error ya que no coincide con la curva del objeto ECDH.
Javascript
const crypto = require('crypto'); // Generate an ECDH object for geekOne const geekOne = crypto.createECDH('secp521r1'); // Generate a key with the encryption // type as SHA256 let hashObj = crypto.createHash('sha256'); let tempPublicKey = hashObj.update('thisisapublickey', 'utf8').digest(); // Display the generated key console.log("The generated key is:", tempPublicKey); // Attempt to set the public key to // be equal to the above generated key geekOne.setPublicKey(tempPublicKey);
Producción:
La clave generada es: <Buffer a7 de ff 8e 06 ff 75 5d 3e a0 87 61 8c 92 e1 eb 5d fe 9d d6 6c 27 7d 15 30 6e a7 a6 55 b1 03 02>
node:internal/crypto/diffiehellman:231
this [kHandle].setPublicKey(clave);
^
Error: no se pudo convertir Buffer a EC_POINT
en ECDH.setPublicKey (node:internal/crypto/diffiehellman:231:17)
en Object.<anonymous> (G:\tutorials\ecdh-setPublicKey\ex2.js:16:9)
en Module._compile (node:internal/modules/cjs/loader:1095:14)
en Object.Module._extensions..js (node:internal/modules/cjs/loader:1124:10)
en Module.load (Node: internal/modules/cjs/loader:975:32)
en Function.Module._load (Node:internal/modules/cjs/loader:816:12)
en Function.executeUserEntryPoint [como runMain] (node:internal/modules/run_main:79:12)
en node:internal/main/run_main_module:17:47 {
código: ‘ERR_CRYPTO_OPERATION_FAILED’
}
Referencia: https://nodejs.org/api/crypto.html#crypto_ecdh_setpublickey_publickey_encoding
Publicación traducida automáticamente
Artículo escrito por sayantanm19 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA