36 lines
898 B
Crystal
36 lines
898 B
Crystal
# ===================
|
|
# ©AngelaMos | 2026
|
|
# kek_spec.cr
|
|
# ===================
|
|
|
|
require "../../spec_helper"
|
|
require "../../../src/cre/crypto/kek"
|
|
|
|
describe CRE::Crypto::Kek do
|
|
it "loads a 32-byte KEK from env hex" do
|
|
hex = "0" * 64
|
|
ENV["TEST_KEK_HEX"] = hex
|
|
kek = CRE::Crypto::Kek::EnvKek.new("TEST_KEK_HEX", version: 1)
|
|
kek.bytes.size.should eq 32
|
|
kek.version.should eq 1
|
|
kek.source.should eq "env:TEST_KEK_HEX"
|
|
ensure
|
|
ENV.delete("TEST_KEK_HEX")
|
|
end
|
|
|
|
it "raises on wrong-length hex" do
|
|
ENV["BAD_KEK"] = "abcd"
|
|
expect_raises(CRE::Crypto::Kek::InvalidKekError) do
|
|
CRE::Crypto::Kek::EnvKek.new("BAD_KEK", version: 1)
|
|
end
|
|
ensure
|
|
ENV.delete("BAD_KEK")
|
|
end
|
|
|
|
it "raises on missing env var" do
|
|
expect_raises(CRE::Crypto::Kek::InvalidKekError) do
|
|
CRE::Crypto::Kek::EnvKek.new("DOES_NOT_EXIST_XYZ_KEK", version: 1)
|
|
end
|
|
end
|
|
end
|