1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
# frozen_string_literal: true
require "cose/algorithm/ecdsa"
require "cose/algorithm/eddsa"
require "cose/algorithm/hmac"
require "cose/algorithm/rsa_pss"
module COSE
module Algorithm
@registered_by_id = {}
@registered_by_name = {}
def self.register(algorithm)
@registered_by_id[algorithm.id] = algorithm
@registered_by_name[algorithm.name] = algorithm
end
def self.find(id_or_name)
by_id(id_or_name) || by_name(id_or_name)
end
def self.by_id(id)
@registered_by_id[id]
end
def self.by_name(name)
@registered_by_name[name]
end
register(ECDSA.new(-7, "ES256", hash_function: "SHA256", curve_name: "P-256"))
register(ECDSA.new(-35, "ES384", hash_function: "SHA384", curve_name: "P-384"))
register(ECDSA.new(-36, "ES512", hash_function: "SHA512", curve_name: "P-521"))
register(ECDSA.new(-47, "ES256K", hash_function: "SHA256", curve_name: "secp256k1"))
register(EdDSA.new(-8, "EdDSA"))
register(RSAPSS.new(-37, "PS256", hash_function: "SHA256", salt_length: 32))
register(RSAPSS.new(-38, "PS384", hash_function: "SHA384", salt_length: 48))
register(RSAPSS.new(-39, "PS512", hash_function: "SHA512", salt_length: 64))
register(HMAC.new(4, "HMAC 256/64", hash_function: "SHA256", tag_length: 64))
register(HMAC.new(5, "HMAC 256/256", hash_function: "SHA256", tag_length: 256))
register(HMAC.new(6, "HMAC 384/384", hash_function: "SHA384", tag_length: 384))
register(HMAC.new(7, "HMAC 512/512", hash_function: "SHA512", tag_length: 512))
end
end
|