1import hashlib
2
3
4class Algorithms(object):
5    NONE = 'none'
6    HS256 = 'HS256'
7    HS384 = 'HS384'
8    HS512 = 'HS512'
9    RS256 = 'RS256'
10    RS384 = 'RS384'
11    RS512 = 'RS512'
12    ES256 = 'ES256'
13    ES384 = 'ES384'
14    ES512 = 'ES512'
15
16    HMAC = {HS256, HS384, HS512}
17    RSA = {RS256, RS384, RS512}
18    EC = {ES256, ES384, ES512}
19
20    SUPPORTED = HMAC.union(RSA).union(EC)
21
22    ALL = SUPPORTED.union([NONE])
23
24    HASHES = {
25        HS256: hashlib.sha256,
26        HS384: hashlib.sha384,
27        HS512: hashlib.sha512,
28        RS256: hashlib.sha256,
29        RS384: hashlib.sha384,
30        RS512: hashlib.sha512,
31        ES256: hashlib.sha256,
32        ES384: hashlib.sha384,
33        ES512: hashlib.sha512,
34    }
35
36    KEYS = {}
37
38
39ALGORITHMS = Algorithms()
40