Skip to content

Commit

Permalink
test/openssl/test_pkey_ec.rb: refactor tests for EC.builtin_curves
Browse files Browse the repository at this point in the history
Check that OpenSSL::PKey::EC.builtin_curves returns an array in the
expected format.

Similarly to OpenSSL::Cipher.ciphers, OpenSSL::PKey::EC.builtin_curves
returns a list of known named curves rather than actually usable ones.

#671 found that the list may
include unapproved (and thus unusable) curves when the FIPS module is
loaded.
  • Loading branch information
rhenium committed Aug 29, 2023
1 parent 7c34a43 commit c53cbab
Showing 1 changed file with 11 additions and 14 deletions.
25 changes: 11 additions & 14 deletions test/openssl/test_pkey_ec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,6 @@

class OpenSSL::TestEC < OpenSSL::PKeyTestCase
def test_ec_key
builtin_curves = OpenSSL::PKey::EC.builtin_curves
assert_not_empty builtin_curves

builtin_curves.each do |curve_name, comment|
# Oakley curves and X25519 are not suitable for signing and causes
# FIPS-selftest failure on some environment, so skip for now.
next if ["Oakley", "X25519"].any? { |n| curve_name.start_with?(n) }

key = OpenSSL::PKey::EC.generate(curve_name)
assert_predicate key, :private?
assert_predicate key, :public?
assert_nothing_raised { key.check_key }
end

key1 = OpenSSL::PKey::EC.generate("prime256v1")

# PKey is immutable in OpenSSL >= 3.0; constructing an empty EC object is
Expand Down Expand Up @@ -49,6 +35,17 @@ def test_ec_key
end
end

def test_builtin_curves
builtin_curves = OpenSSL::PKey::EC.builtin_curves
assert_not_empty builtin_curves
assert_equal 2, builtin_curves[0].size
assert_kind_of String, builtin_curves[0][0]
assert_kind_of String, builtin_curves[0][1]

builtin_curve_names = builtin_curves.map { |name, comment| name }
assert_include builtin_curve_names, "prime256v1"
end

def test_generate
assert_raise(OpenSSL::PKey::ECError) { OpenSSL::PKey::EC.generate("non-existent") }
g = OpenSSL::PKey::EC::Group.new("prime256v1")
Expand Down

0 comments on commit c53cbab

Please sign in to comment.