From 6f0f5f0bb7d691cc269e44bec653844bc20414c5 Mon Sep 17 00:00:00 2001 From: Jesse Shawl Date: Wed, 7 Feb 2024 06:41:36 -0600 Subject: [PATCH] regenerate untrusted comment --- lib/minisign/public_key.rb | 8 +++++++- spec/minisign/public_key_spec.rb | 4 ++++ test/minisign.pub | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/lib/minisign/public_key.rb b/lib/minisign/public_key.rb index 18eb8eb..3572b4c 100644 --- a/lib/minisign/public_key.rb +++ b/lib/minisign/public_key.rb @@ -14,6 +14,12 @@ def initialize(str) @decoded = Base64.strict_decode64(parts.last) @public_key = @decoded[10..] @verify_key = Ed25519::VerifyKey.new(@public_key) + if parts.length == 1 + data = Base64.strict_encode64("Ed#{@decoded[2..9]}#{@public_key}") + @untrusted_comment = "minisign public key #{key_id}\n#{data}\n" + else + @untrusted_comment = parts.first.split("untrusted comment: ").last + end end # @return [String] the key id @@ -44,7 +50,7 @@ def verify(sig, message) def to_s data = Base64.strict_encode64("Ed#{@decoded[2..9]}#{@public_key}") - "untrusted comment: minisign public key #{key_id}\n#{data}\n" + "untrusted comment: #{@untrusted_comment}\n#{data}\n" end private diff --git a/spec/minisign/public_key_spec.rb b/spec/minisign/public_key_spec.rb index 57942d6..4da5b79 100644 --- a/spec/minisign/public_key_spec.rb +++ b/spec/minisign/public_key_spec.rb @@ -30,4 +30,8 @@ it 'can be written to a file' do expect(@pk.to_s).to eq(File.read('test/minisign.pub')) end + it 'regenerates an untrusted comment if not provided' do + @pk = Minisign::PublicKey.new('RWSmKaOrT6m3TGwjwBovgOmlhSbyBUw3hyhnSOYruHXbJa36xHr8rq2M') + expect(@pk.to_s).to match("minisign public key 4CB7A94FABA329A6") + end end diff --git a/test/minisign.pub b/test/minisign.pub index fce7ebe..7fd845f 100644 --- a/test/minisign.pub +++ b/test/minisign.pub @@ -1,2 +1,2 @@ -untrusted comment: minisign public key 4CB7A94FABA329A6 +untrusted comment: minisign public key 4CB7A94FABA329A6 yay RWSmKaOrT6m3TGwjwBovgOmlhSbyBUw3hyhnSOYruHXbJa36xHr8rq2M