Generate Sodium::Sign::SecretKey#seed.
parent
f0213b88c8
commit
da188875c4
|
@ -49,7 +49,7 @@ describe Sodium::Sign::SecretKey do
|
||||||
it "seed keys" do
|
it "seed keys" do
|
||||||
seed = Bytes.new Sodium::Sign::SecretKey::SEED_SIZE
|
seed = Bytes.new Sodium::Sign::SecretKey::SEED_SIZE
|
||||||
key1 = Sodium::Sign::SecretKey.new seed: seed
|
key1 = Sodium::Sign::SecretKey.new seed: seed
|
||||||
key2 = Sodium::Sign::SecretKey.new seed: seed
|
key2 = Sodium::Sign::SecretKey.new seed: Sodium::Sign::SecretKey.new(key1.to_slice).seed
|
||||||
key1.to_slice.should eq key2.to_slice
|
key1.to_slice.should eq key2.to_slice
|
||||||
key1.public_key.to_slice.should eq key2.public_key.to_slice
|
key1.public_key.to_slice.should eq key2.public_key.to_slice
|
||||||
key1.seed.should eq seed
|
key1.seed.should eq seed
|
||||||
|
|
|
@ -23,8 +23,6 @@ module Sodium
|
||||||
# Returns key
|
# Returns key
|
||||||
delegate_to_slice to: @sbuf
|
delegate_to_slice to: @sbuf
|
||||||
|
|
||||||
@seed : SecureBuffer?
|
|
||||||
|
|
||||||
# Generates a new random secret/public key pair.
|
# Generates a new random secret/public key pair.
|
||||||
def initialize
|
def initialize
|
||||||
@sbuf = SecureBuffer.new KEY_SIZE
|
@sbuf = SecureBuffer.new KEY_SIZE
|
||||||
|
@ -70,9 +68,12 @@ module Sodium
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def seed
|
getter seed : SecureBuffer? do
|
||||||
# BUG: Generate seed if not set.
|
SecureBuffer.new(SEED_SIZE).tap do |s|
|
||||||
@seed.not_nil!.to_slice
|
if LibSodium.crypto_sign_ed25519_sk_to_seed(s.to_slice, self.to_slice) != 0
|
||||||
|
raise Sodium::Error.new("crypto_sign_ed25519_sk_to_seed")
|
||||||
|
end
|
||||||
|
end.readonly
|
||||||
end
|
end
|
||||||
|
|
||||||
# Signs message and returns a detached signature.
|
# Signs message and returns a detached signature.
|
||||||
|
|
Loading…
Reference in New Issue