Example #1
0
<?php

if (!extension_loaded("libsodium")) {
    exit(0);
}
include "../autoload.php";
$salt = Salt::instance();
$keys = crypto_sign_keypair();
$sodium_sk = crypto_sign_secretkey($keys);
$sodium_pk = crypto_sign_publickey($keys);
$sk = FieldElement::fromString($sodium_sk);
$pk = FieldElement::fromString($sodium_pk);
$msg = "Lorem ipsum dolor sit amet, consectetur adipiscing elit.";
$sodium_sm = crypto_sign($msg, $sodium_sk);
$signed_msg = $salt->crypto_sign($msg, strlen($msg), $sk);
if (sodium_memcmp($sodium_sm, $signed_msg->toString()) === 0) {
    echo $sodium_sm . "\n";
    echo $signed_msg->toString() . "\n\n";
} else {
    echo "invalid signed message";
    exit(0);
}
$sodium_open_msg = crypto_sign_open($sodium_sm, $sodium_pk);
$plaintext = $salt->crypto_sign_open($signed_msg, count($signed_msg), $pk);
if ($plaintext === false) {
    echo "debug time...";
    exit(0);
}
if (sodium_memcmp($sodium_open_msg, $plaintext->toString()) === 0) {
    echo $sodium_open_msg . "\n";
    echo $plaintext->toString() . "\n";
Example #2
0
File: Salt.php Project: rugk/Salt
 /**
  * Generates a secret key and a corresponding public key.
  *
  * @param  mixed   optional random 32 byte
  * @return array   secret key, public key
  */
 public static function sign_keypair($seed = null)
 {
     return Salt::instance()->crypto_sign_keypair($seed);
 }