You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.0 KiB
54 lines
1.0 KiB
module CryptCheck
|
|
module Tls
|
|
class Curve
|
|
attr_reader :name
|
|
|
|
def initialize(name)
|
|
name = name.to_sym if name.is_a? String
|
|
@name = name
|
|
end
|
|
|
|
SUPPORTED = (%i(secp256k1 sect283k1 sect283r1 secp384r1
|
|
sect409k1 sect409r1 secp521r1 sect571k1 sect571r1
|
|
prime192v1 prime256v1
|
|
brainpoolP256r1 brainpoolP384r1 brainpoolP512r1 x25519) & OpenSSL::PKey::EC::builtin_curves.collect { |c| c.first.to_sym }).collect { |c| self.new c }.freeze
|
|
|
|
extend Enumerable
|
|
|
|
def self.each(&block)
|
|
SUPPORTED.each &block
|
|
end
|
|
|
|
def to_s
|
|
@name
|
|
end
|
|
|
|
def to_h
|
|
{ name: @name, states: self.states }
|
|
end
|
|
|
|
def ==(other)
|
|
case other
|
|
when String
|
|
@name == other.to_sym
|
|
when Symbol
|
|
@name == other
|
|
else
|
|
@name == other.name
|
|
end
|
|
end
|
|
|
|
protected
|
|
|
|
include State
|
|
|
|
CHECKS = [].freeze
|
|
|
|
protected
|
|
|
|
def available_checks
|
|
CHECKS
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|