From 5487e8162ac9cc7d2bf081c09db82af8c899e74d Mon Sep 17 00:00:00 2001 From: Oskar Eichler Date: Sun, 30 Aug 2026 01:38:56 +0200 Subject: [PATCH] Reject incompatible verification key algorithms --- lib/openssl/signature_algorithm/eddsa.rb | 4 ++++ lib/openssl/signature_algorithm/rsa.rb | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/lib/openssl/signature_algorithm/eddsa.rb b/lib/openssl/signature_algorithm/eddsa.rb index 88a755c..a32dc65 100644 --- a/lib/openssl/signature_algorithm/eddsa.rb +++ b/lib/openssl/signature_algorithm/eddsa.rb @@ -34,6 +34,10 @@ def generate_signing_key @signing_key = SigningKey.generate end + def compatible_verify_key?(key) + key.is_a?(::Ed25519::VerifyKey) + end + def sign(data) signing_key.sign(data) end diff --git a/lib/openssl/signature_algorithm/rsa.rb b/lib/openssl/signature_algorithm/rsa.rb index b1cdcd4..5098670 100644 --- a/lib/openssl/signature_algorithm/rsa.rb +++ b/lib/openssl/signature_algorithm/rsa.rb @@ -44,6 +44,10 @@ def initialize(hash_function: self.class::ACCEPTED_HASH_FUNCTIONS.first) end end + def compatible_verify_key?(key) + super && key.respond_to?(:n) && key.respond_to?(:e) + end + def generate_signing_key(size: DEFAULT_KEY_SIZE) @signing_key = SigningKey.new(size) end