Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/cryptography/hazmat/bindings/openssl/_conditional.py: 56%

73 statements  

« prev     ^ index     » next       coverage.py v7.2.7, created at 2023-06-07 06:50 +0000

1# This file is dual licensed under the terms of the Apache License, Version 

2# 2.0, and the BSD License. See the LICENSE file in the root of this repository 

3# for complete details. 

4 

5from __future__ import annotations 

6 

7import typing 

8 

9 

10def cryptography_has_set_cert_cb() -> typing.List[str]: 

11 return [ 

12 "SSL_CTX_set_cert_cb", 

13 "SSL_set_cert_cb", 

14 ] 

15 

16 

17def cryptography_has_ssl_st() -> typing.List[str]: 

18 return [ 

19 "SSL_ST_BEFORE", 

20 "SSL_ST_OK", 

21 "SSL_ST_INIT", 

22 "SSL_ST_RENEGOTIATE", 

23 ] 

24 

25 

26def cryptography_has_tls_st() -> typing.List[str]: 

27 return [ 

28 "TLS_ST_BEFORE", 

29 "TLS_ST_OK", 

30 ] 

31 

32 

33def cryptography_has_evp_pkey_dhx() -> typing.List[str]: 

34 return [ 

35 "EVP_PKEY_DHX", 

36 ] 

37 

38 

39def cryptography_has_mem_functions() -> typing.List[str]: 

40 return [ 

41 "Cryptography_CRYPTO_set_mem_functions", 

42 ] 

43 

44 

45def cryptography_has_x509_store_ctx_get_issuer() -> typing.List[str]: 

46 return [ 

47 "X509_STORE_set_get_issuer", 

48 ] 

49 

50 

51def cryptography_has_ed448() -> typing.List[str]: 

52 return [ 

53 "EVP_PKEY_ED448", 

54 "NID_ED448", 

55 ] 

56 

57 

58def cryptography_has_ed25519() -> typing.List[str]: 

59 return [ 

60 "NID_ED25519", 

61 "EVP_PKEY_ED25519", 

62 ] 

63 

64 

65def cryptography_has_poly1305() -> typing.List[str]: 

66 return [ 

67 "NID_poly1305", 

68 "EVP_PKEY_POLY1305", 

69 ] 

70 

71 

72def cryptography_has_evp_digestfinal_xof() -> typing.List[str]: 

73 return [ 

74 "EVP_DigestFinalXOF", 

75 ] 

76 

77 

78def cryptography_has_fips() -> typing.List[str]: 

79 return [ 

80 "FIPS_mode_set", 

81 "FIPS_mode", 

82 ] 

83 

84 

85def cryptography_has_ssl_sigalgs() -> typing.List[str]: 

86 return [ 

87 "SSL_CTX_set1_sigalgs_list", 

88 ] 

89 

90 

91def cryptography_has_psk() -> typing.List[str]: 

92 return [ 

93 "SSL_CTX_use_psk_identity_hint", 

94 "SSL_CTX_set_psk_server_callback", 

95 "SSL_CTX_set_psk_client_callback", 

96 ] 

97 

98 

99def cryptography_has_psk_tlsv13() -> typing.List[str]: 

100 return [ 

101 "SSL_CTX_set_psk_find_session_callback", 

102 "SSL_CTX_set_psk_use_session_callback", 

103 "Cryptography_SSL_SESSION_new", 

104 "SSL_CIPHER_find", 

105 "SSL_SESSION_set1_master_key", 

106 "SSL_SESSION_set_cipher", 

107 "SSL_SESSION_set_protocol_version", 

108 ] 

109 

110 

111def cryptography_has_custom_ext() -> typing.List[str]: 

112 return [ 

113 "SSL_CTX_add_client_custom_ext", 

114 "SSL_CTX_add_server_custom_ext", 

115 "SSL_extension_supported", 

116 ] 

117 

118 

119def cryptography_has_tlsv13_functions() -> typing.List[str]: 

120 return [ 

121 "SSL_VERIFY_POST_HANDSHAKE", 

122 "SSL_CTX_set_ciphersuites", 

123 "SSL_verify_client_post_handshake", 

124 "SSL_CTX_set_post_handshake_auth", 

125 "SSL_set_post_handshake_auth", 

126 "SSL_SESSION_get_max_early_data", 

127 "SSL_write_early_data", 

128 "SSL_read_early_data", 

129 "SSL_CTX_set_max_early_data", 

130 ] 

131 

132 

133def cryptography_has_raw_key() -> typing.List[str]: 

134 return [ 

135 "EVP_PKEY_new_raw_private_key", 

136 "EVP_PKEY_new_raw_public_key", 

137 "EVP_PKEY_get_raw_private_key", 

138 "EVP_PKEY_get_raw_public_key", 

139 ] 

140 

141 

142def cryptography_has_engine() -> typing.List[str]: 

143 return [ 

144 "ENGINE_by_id", 

145 "ENGINE_init", 

146 "ENGINE_finish", 

147 "ENGINE_get_default_RAND", 

148 "ENGINE_set_default_RAND", 

149 "ENGINE_unregister_RAND", 

150 "ENGINE_ctrl_cmd", 

151 "ENGINE_free", 

152 "ENGINE_get_name", 

153 "ENGINE_ctrl_cmd_string", 

154 "ENGINE_load_builtin_engines", 

155 "ENGINE_load_private_key", 

156 "ENGINE_load_public_key", 

157 "SSL_CTX_set_client_cert_engine", 

158 ] 

159 

160 

161def cryptography_has_verified_chain() -> typing.List[str]: 

162 return [ 

163 "SSL_get0_verified_chain", 

164 ] 

165 

166 

167def cryptography_has_srtp() -> typing.List[str]: 

168 return [ 

169 "SSL_CTX_set_tlsext_use_srtp", 

170 "SSL_set_tlsext_use_srtp", 

171 "SSL_get_selected_srtp_profile", 

172 ] 

173 

174 

175def cryptography_has_providers() -> typing.List[str]: 

176 return [ 

177 "OSSL_PROVIDER_load", 

178 "OSSL_PROVIDER_unload", 

179 "ERR_LIB_PROV", 

180 "PROV_R_WRONG_FINAL_BLOCK_LENGTH", 

181 "PROV_R_BAD_DECRYPT", 

182 ] 

183 

184 

185def cryptography_has_op_no_renegotiation() -> typing.List[str]: 

186 return [ 

187 "SSL_OP_NO_RENEGOTIATION", 

188 ] 

189 

190 

191def cryptography_has_dtls_get_data_mtu() -> typing.List[str]: 

192 return [ 

193 "DTLS_get_data_mtu", 

194 ] 

195 

196 

197def cryptography_has_300_fips() -> typing.List[str]: 

198 return [ 

199 "EVP_default_properties_is_fips_enabled", 

200 "EVP_default_properties_enable_fips", 

201 ] 

202 

203 

204def cryptography_has_ssl_cookie() -> typing.List[str]: 

205 return [ 

206 "SSL_OP_COOKIE_EXCHANGE", 

207 "DTLSv1_listen", 

208 "SSL_CTX_set_cookie_generate_cb", 

209 "SSL_CTX_set_cookie_verify_cb", 

210 ] 

211 

212 

213def cryptography_has_pkcs7_funcs() -> typing.List[str]: 

214 return [ 

215 "SMIME_write_PKCS7", 

216 "PEM_write_bio_PKCS7_stream", 

217 "PKCS7_sign_add_signer", 

218 "PKCS7_final", 

219 "PKCS7_verify", 

220 "SMIME_read_PKCS7", 

221 "PKCS7_get0_signers", 

222 ] 

223 

224 

225def cryptography_has_bn_flags() -> typing.List[str]: 

226 return [ 

227 "BN_FLG_CONSTTIME", 

228 "BN_set_flags", 

229 "BN_prime_checks_for_size", 

230 ] 

231 

232 

233def cryptography_has_evp_pkey_dh() -> typing.List[str]: 

234 return [ 

235 "EVP_PKEY_set1_DH", 

236 ] 

237 

238 

239def cryptography_has_300_evp_cipher() -> typing.List[str]: 

240 return ["EVP_CIPHER_fetch", "EVP_CIPHER_free"] 

241 

242 

243def cryptography_has_unexpected_eof_while_reading() -> typing.List[str]: 

244 return ["SSL_R_UNEXPECTED_EOF_WHILE_READING"] 

245 

246 

247def cryptography_has_pkcs12_set_mac() -> typing.List[str]: 

248 return ["PKCS12_set_mac"] 

249 

250 

251def cryptography_has_ssl_op_ignore_unexpected_eof() -> typing.List[str]: 

252 return [ 

253 "SSL_OP_IGNORE_UNEXPECTED_EOF", 

254 ] 

255 

256 

257def cryptography_has_get_extms_support() -> typing.List[str]: 

258 return ["SSL_get_extms_support"] 

259 

260 

261def cryptography_has_evp_pkey_set_peer_ex() -> typing.List[str]: 

262 return ["EVP_PKEY_derive_set_peer_ex"] 

263 

264 

265def cryptography_has_evp_aead() -> typing.List[str]: 

266 return [ 

267 "EVP_aead_chacha20_poly1305", 

268 "EVP_AEAD_CTX_free", 

269 "EVP_AEAD_CTX_seal", 

270 "EVP_AEAD_CTX_open", 

271 "EVP_AEAD_max_overhead", 

272 "Cryptography_EVP_AEAD_CTX_new", 

273 ] 

274 

275 

276# This is a mapping of 

277# {condition: function-returning-names-dependent-on-that-condition} so we can 

278# loop over them and delete unsupported names at runtime. It will be removed 

279# when cffi supports #if in cdef. We use functions instead of just a dict of 

280# lists so we can use coverage to measure which are used. 

281CONDITIONAL_NAMES = { 

282 "Cryptography_HAS_SET_CERT_CB": cryptography_has_set_cert_cb, 

283 "Cryptography_HAS_SSL_ST": cryptography_has_ssl_st, 

284 "Cryptography_HAS_TLS_ST": cryptography_has_tls_st, 

285 "Cryptography_HAS_EVP_PKEY_DHX": cryptography_has_evp_pkey_dhx, 

286 "Cryptography_HAS_MEM_FUNCTIONS": cryptography_has_mem_functions, 

287 "Cryptography_HAS_X509_STORE_CTX_GET_ISSUER": ( 

288 cryptography_has_x509_store_ctx_get_issuer 

289 ), 

290 "Cryptography_HAS_ED448": cryptography_has_ed448, 

291 "Cryptography_HAS_ED25519": cryptography_has_ed25519, 

292 "Cryptography_HAS_POLY1305": cryptography_has_poly1305, 

293 "Cryptography_HAS_FIPS": cryptography_has_fips, 

294 "Cryptography_HAS_SIGALGS": cryptography_has_ssl_sigalgs, 

295 "Cryptography_HAS_PSK": cryptography_has_psk, 

296 "Cryptography_HAS_PSK_TLSv1_3": cryptography_has_psk_tlsv13, 

297 "Cryptography_HAS_CUSTOM_EXT": cryptography_has_custom_ext, 

298 "Cryptography_HAS_TLSv1_3_FUNCTIONS": cryptography_has_tlsv13_functions, 

299 "Cryptography_HAS_RAW_KEY": cryptography_has_raw_key, 

300 "Cryptography_HAS_EVP_DIGESTFINAL_XOF": ( 

301 cryptography_has_evp_digestfinal_xof 

302 ), 

303 "Cryptography_HAS_ENGINE": cryptography_has_engine, 

304 "Cryptography_HAS_VERIFIED_CHAIN": cryptography_has_verified_chain, 

305 "Cryptography_HAS_SRTP": cryptography_has_srtp, 

306 "Cryptography_HAS_PROVIDERS": cryptography_has_providers, 

307 "Cryptography_HAS_OP_NO_RENEGOTIATION": ( 

308 cryptography_has_op_no_renegotiation 

309 ), 

310 "Cryptography_HAS_DTLS_GET_DATA_MTU": cryptography_has_dtls_get_data_mtu, 

311 "Cryptography_HAS_300_FIPS": cryptography_has_300_fips, 

312 "Cryptography_HAS_SSL_COOKIE": cryptography_has_ssl_cookie, 

313 "Cryptography_HAS_PKCS7_FUNCS": cryptography_has_pkcs7_funcs, 

314 "Cryptography_HAS_BN_FLAGS": cryptography_has_bn_flags, 

315 "Cryptography_HAS_EVP_PKEY_DH": cryptography_has_evp_pkey_dh, 

316 "Cryptography_HAS_300_EVP_CIPHER": cryptography_has_300_evp_cipher, 

317 "Cryptography_HAS_UNEXPECTED_EOF_WHILE_READING": ( 

318 cryptography_has_unexpected_eof_while_reading 

319 ), 

320 "Cryptography_HAS_PKCS12_SET_MAC": cryptography_has_pkcs12_set_mac, 

321 "Cryptography_HAS_SSL_OP_IGNORE_UNEXPECTED_EOF": ( 

322 cryptography_has_ssl_op_ignore_unexpected_eof 

323 ), 

324 "Cryptography_HAS_GET_EXTMS_SUPPORT": cryptography_has_get_extms_support, 

325 "Cryptography_HAS_EVP_PKEY_SET_PEER_EX": ( 

326 cryptography_has_evp_pkey_set_peer_ex 

327 ), 

328 "Cryptography_HAS_EVP_AEAD": (cryptography_has_evp_aead), 

329}