$ docker run --rm --name validator-libsodium-usage-ruby-rbnacl-ed25519-from-seed-deterministic-2732 -t --mount type=bind,src=/tmp/validator-status-libsodium-usage-ruby-rbnacl-ed25519-from-seed-deterministic,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-ruby-rbnacl-ed25519-from-seed-deterministic -- bash -c 'PS4=$1; shift; set -x; source "$@"' validator-xtrace '__VALIDATOR_XTRACE__ ' /validator/tests/libsodium/tests/cases/usage/usage-ruby-rbnacl-ed25519-from-seed-deterministic.sh no override packages found; continuing with apt originals seed_a = ("\xab".b * 32) seed_b = ("\xcd".b * 32) sk1 = RbNaCl::Signatures::Ed25519::SigningKey.new(seed_a) sk2 = RbNaCl::Signatures::Ed25519::SigningKey.new(seed_a) sk3 = RbNaCl::Signatures::Ed25519::SigningKey.new(seed_b) raise "verify keys differ for same seed" unless sk1.verify_key.to_bytes == sk2.verify_key.to_bytes raise "verify key length wrong: #{sk1.verify_key.to_bytes.bytesize}" unless sk1.verify_key.to_bytes.bytesize == 32 raise "verify keys match across distinct seeds" if sk1.verify_key.to_bytes == sk3.verify_key.to_bytes message = "deterministic ed25519 seed payload" sig1 = sk1.sign(message) sig2 = sk2.sign(message) sig3 = sk3.sign(message) raise "signature length wrong: #{sig1.bytesize}" unless sig1.bytesize == 64 raise "ed25519 signatures differ across same seed" unless sig1 == sig2 raise "signatures match across distinct seeds" if sig1 == sig3 vk = RbNaCl::Signatures::Ed25519::VerifyKey.new(sk1.verify_key.to_bytes) raise "verify failed for matching message" unless vk.verify(sig1, message) ok = begin vk.verify(sig1, message + "!") rescue RbNaCl::BadSignatureError :rejected end raise "verify accepted tampered message" unless ok == :rejected puts "ok #{sig1.unpack1("H*")[0,16]}" ' ok 2688d61957bc7470