Estoy tratando de implementar el algoritmo ECC (x25519) en PHP y Javascript.
Estoy usando sodio en PHP y criptografía en javascript, soy nuevo en criptografía y se trata de mis tres días buscando y probando bibliotecas. La función sodium_crypto_scalarmult arroja este error.
Fatal error: Uncaught SodiumException: scalar and point must be SODIUM_CRYPTO_SCALARMULT_SCALARBYTES byteCódigo NodeJS/Javascript
const { generateKeyPairSync } = require('crypto'); const { publicKey, privateKey } = generateKeyPairSync('x25519', { publicKeyEncoding: { type: 'spki', format: 'der' }, privateKeyEncoding: { type: 'pkcs8', format: 'der' } }); console.log("Public Key is: ", publicKey) console.log("The public key value in base64 is: ", publicKey.toString('base64') );Debido a que solo estoy probando en este momento antes de implementarlo, solo copié y pegué el resultado de la clave pública base64 de javascript a PHP.
PHP
$publicKeyfromJavascript = ""; $bob = sodium_crypto_box_keypair(); $bobPB = sodium_crypto_box_publickey($bob); $bobsharedKey = sodium_crypto_scalarmult(sodium_crypto_box_secretkey($bob), $publicKeyfromJavascript);