$ docker run --rm --name validator-libsodium-usage-r-cran-sodium-sig-verify-2732 -t --mount type=bind,src=/tmp/validator-status-libsodium-usage-r-cran-sodium-sig-verify,dst=/validator/status validator-libsodium-shared bash -lc 'set -euo pipefail /validator/tests/_shared/install_override_debs.sh exec /validator/tests/_shared/run_library_tests.sh "$@"' validator-testcase libsodium usage-r-cran-sodium-sig-verify -- bash -c 'PS4=$1; shift; set -x; source "$@"' validator-xtrace '__VALIDATOR_XTRACE__ ' /validator/tests/libsodium/tests/cases/usage/usage-r-cran-sodium-sig-verify.sh no override packages found; continuing with apt originals suppressMessages(library(sodium)) sk <- sig_keygen() stopifnot(is.raw(sk)) # r-cran-sodium returns the full libsodium expanded secret key # (crypto_sign_SECRETKEYBYTES == 64), which is the Ed25519 seed concatenated # with the public key. stopifnot(length(sk) == 64) pk <- sig_pubkey(sk) stopifnot(is.raw(pk)) stopifnot(length(pk) == 32) msg <- charToRaw("r sodium signature payload") signature <- sig_sign(msg, sk) stopifnot(is.raw(signature)) stopifnot(length(signature) == 64) stopifnot(isTRUE(sig_verify(msg, signature, pk))) tampered <- charToRaw("r sodium signature payload!") ok <- tryCatch(sig_verify(tampered, signature, pk), error = function(e) FALSE) stopifnot(!isTRUE(ok)) cat("ok", length(sk), length(signature), "\n") ' ok 64 64