|
59 | 59 | #define _Py_HASHLIB_UNSUPPORTED_ALGORITHM "unsupported hash algorithm %S" |
60 | 60 | #define _Py_HASHLIB_UNSUPPORTED_STR_ALGORITHM "unsupported hash algorithm %s" |
61 | 61 |
|
62 | | -#define _Py_HASHLIB_MD_OID(ID) _Py_hashlib_MD_OID_ ## ID |
63 | | - |
64 | | -typedef enum { |
65 | | - /* MD-family */ |
66 | | - _Py_HASHLIB_MD_OID(md5) = 0, |
67 | | - /* SHA-1 family */ |
68 | | - _Py_HASHLIB_MD_OID(sha1), |
69 | | - /* SHA-2 family */ |
70 | | - _Py_HASHLIB_MD_OID(sha224), |
71 | | - _Py_HASHLIB_MD_OID(sha256), |
72 | | - _Py_HASHLIB_MD_OID(sha384), |
73 | | - _Py_HASHLIB_MD_OID(sha512), |
74 | | - /* Truncated SHA-2 family */ |
75 | | - _Py_HASHLIB_MD_OID(sha512_224), |
76 | | - _Py_HASHLIB_MD_OID(sha512_256), |
77 | | - /* SHA-3 family */ |
78 | | - _Py_HASHLIB_MD_OID(sha3_224), |
79 | | - _Py_HASHLIB_MD_OID(sha3_256), |
80 | | - _Py_HASHLIB_MD_OID(sha3_384), |
81 | | - _Py_HASHLIB_MD_OID(sha3_512), |
82 | | - /* SHA-3 XOF SHAKE family */ |
83 | | - _Py_HASHLIB_MD_OID(shake_128), |
84 | | - _Py_HASHLIB_MD_OID(shake_256), |
85 | | - /* BLAKE-2 family */ |
86 | | - _Py_HASHLIB_MD_OID(blake2b), |
87 | | - _Py_HASHLIB_MD_OID(blake2s), |
88 | | -} _Py_hashlib_MD_OID; |
89 | | - |
90 | | -static const char *_Py_HASHLIB_MD_NAMES[] = { |
91 | | -#define DECL_MESSAGE_DIGEST_NAME(ID) [_Py_HASHLIB_MD_OID(ID)] = #ID |
92 | | - /* MD-family */ |
93 | | - DECL_MESSAGE_DIGEST_NAME(md5), |
94 | | - /* SHA-1 family */ |
95 | | - DECL_MESSAGE_DIGEST_NAME(sha1), |
96 | | - /* SHA-2 family */ |
97 | | - DECL_MESSAGE_DIGEST_NAME(sha224), |
98 | | - DECL_MESSAGE_DIGEST_NAME(sha256), |
99 | | - DECL_MESSAGE_DIGEST_NAME(sha384), |
100 | | - DECL_MESSAGE_DIGEST_NAME(sha512), |
101 | | - /* Truncated SHA-2 family */ |
102 | | - DECL_MESSAGE_DIGEST_NAME(sha512_224), |
103 | | - DECL_MESSAGE_DIGEST_NAME(sha512_256), |
104 | | - /* SHA-3 family */ |
105 | | - DECL_MESSAGE_DIGEST_NAME(sha3_224), |
106 | | - DECL_MESSAGE_DIGEST_NAME(sha3_256), |
107 | | - DECL_MESSAGE_DIGEST_NAME(sha3_384), |
108 | | - DECL_MESSAGE_DIGEST_NAME(sha3_512), |
109 | | - /* SHA-3 XOF SHAKE family */ |
110 | | - DECL_MESSAGE_DIGEST_NAME(shake_128), |
111 | | - DECL_MESSAGE_DIGEST_NAME(shake_256), |
112 | | - /* BLAKE-2 family */ |
113 | | - DECL_MESSAGE_DIGEST_NAME(blake2b), |
114 | | - DECL_MESSAGE_DIGEST_NAME(blake2s), |
115 | | -#undef DECL_MESSAGE_DIGEST_NAME |
116 | | - NULL /* sentinel */ |
117 | | -}; |
118 | | - |
119 | | -static inline const char * |
120 | | -_Py_hashlib_md_name(_Py_hashlib_MD_OID id) |
121 | | -{ |
122 | | - assert(id >= 0); |
123 | | - assert(id < Py_ARRAY_LENGTH(_Py_HASHLIB_MD_NAMES)); |
124 | | - return _Py_HASHLIB_MD_NAMES[id]; |
125 | | -} |
126 | | - |
127 | 62 | #endif // !_HASHLIB_HASHLIB_FETCH_H |
0 commit comments