WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru Самая быстрая Тема-конструктор для WordPress
функция не описана

ParagonIE_Sodium_Core32_Ed25519::sign_detached() public WP 1.0

{} Это метод класса: ParagonIE_Sodium_Core32_Ed25519{}

Хуков нет.

Возвращает

Строку.

Использование

$result = ParagonIE_Sodium_Core32_Ed25519::sign_detached( $message, $sk );
$message(строка) (обязательный)
$sk(строка) (обязательный)

Код ParagonIE_Sodium_Core32_Ed25519::sign_detached() WP 5.5.1

<?php
public static function sign_detached($message, $sk)
{
    # crypto_hash_sha512(az, sk, 32);
    $az =  hash('sha512', self::substr($sk, 0, 32), true);

    # az[0] &= 248;
    # az[31] &= 63;
    # az[31] |= 64;
    $az[0] = self::intToChr(self::chrToInt($az[0]) & 248);
    $az[31] = self::intToChr((self::chrToInt($az[31]) & 63) | 64);

    # crypto_hash_sha512_init(&hs);
    # crypto_hash_sha512_update(&hs, az + 32, 32);
    # crypto_hash_sha512_update(&hs, m, mlen);
    # crypto_hash_sha512_final(&hs, nonce);
    $hs = hash_init('sha512');
    hash_update($hs, self::substr($az, 32, 32));
    hash_update($hs, $message);
    $nonceHash = hash_final($hs, true);

    # memmove(sig + 32, sk + 32, 32);
    $pk = self::substr($sk, 32, 32);

    # sc_reduce(nonce);
    # ge_scalarmult_base(&R, nonce);
    # ge_p3_tobytes(sig, &R);
    $nonce = self::sc_reduce($nonceHash) . self::substr($nonceHash, 32);
    $sig = self::ge_p3_tobytes(
        self::ge_scalarmult_base($nonce)
    );

    # crypto_hash_sha512_init(&hs);
    # crypto_hash_sha512_update(&hs, sig, 64);
    # crypto_hash_sha512_update(&hs, m, mlen);
    # crypto_hash_sha512_final(&hs, hram);
    $hs = hash_init('sha512');
    hash_update($hs, self::substr($sig, 0, 32));
    hash_update($hs, self::substr($pk, 0, 32));
    hash_update($hs, $message);
    $hramHash = hash_final($hs, true);

    # sc_reduce(hram);
    # sc_muladd(sig + 32, hram, az, nonce);
    $hram = self::sc_reduce($hramHash);
    $sigAfter = self::sc_muladd($hram, $az, $nonce);
    $sig = self::substr($sig, 0, 32) . self::substr($sigAfter, 0, 32);

    try {
        ParagonIE_Sodium_Compat::memzero($az);
    } catch (SodiumException $ex) {
        $az = null;
    }
    return $sig;
}