/
algorithm.rb
43 lines (36 loc) · 1.53 KB
/
algorithm.rb
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