tonyg / js-nacl

Pure-Javascript High-level API to Emscripten-compiled libsodium routines.
493 stars 51 forks source link

newbie question #47

Open MilaSy opened 6 years ago

MilaSy commented 6 years ago

Hi TonyG In my php I'm using sodium_bin2hex(sodium_crypto_box_publickey(sodium_crypto_box_keypair())) which I pass to the javascript: bpkeypair='<?php echo(sodium_bin2hex(sodium_crypto_box_publickey(sodium_crypto_box_keypair())));?>'; nacl_factory.instantiate(function(nacl){ akeypair=nacl.crypto_box_keypair(); message=nacl.encode_utf8(msg); nonce=nacl.crypto_box_random_nonce(); }); nacl_factory.instantiate(function(acl){ ctext=acl.crypto_box(message,nonce,bpkeypair,akeypair.boxSk); n2h=acl.to_hex(nonce); });

when I pass "cipher text" and the "nonce to hex" back to php through ajax and try to decrypt the message using: $jsnonce=sodium_hex2bin($n2h); $keydc=$keysk.$pk; $text=sodium_crypto_box_open($ctext,$jsnonce,$keydc);

I get this error: Uncaught SodiumException: keypair size should be SODIUM_CRYPTO_BOX_KEYPAIRBYTES.

I'll attach the two files Im using to play around. Please help? Thanks very much

test.docx testrespoonse.docx

RicardoSette commented 6 years ago

Hi @EmileDew,

I had crypto_box and crypto_secretbox compatibility with PHP 5.6.

Here's an example I used for proof of concept with PHP 5.6 example.php.txt example.ajax.php.txt

If you are using PHP 7.1 or higher replace "\Sodium\" with "sodium_" in PHP code.

MilaSy commented 5 years ago

Thank you so much @RicardoSette :) Going to check it out now :D

tonyg commented 5 years ago

Hi @EmileDew. In this snippet...

$keydc=$keysk.$pk;
$text=sodium_crypto_box_open($ctext,$jsnonce,$keydc);

... it looks like you're passing the public key to crypto_box_open? You probably need to supply the recipient's secret key (and the sender's public key).

@RicardoSette, thanks for supplying your example code!