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

74 statements  

« prev     ^ index     » next       coverage.py v7.2.2, created at 2023-03-26 06:36 +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 

5import typing 

6 

7 

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

9 return [ 

10 "SSL_CTX_set_cert_cb", 

11 "SSL_set_cert_cb", 

12 ] 

13 

14 

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

16 return [ 

17 "SSL_ST_BEFORE", 

18 "SSL_ST_OK", 

19 "SSL_ST_INIT", 

20 "SSL_ST_RENEGOTIATE", 

21 ] 

22 

23 

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

25 return [ 

26 "TLS_ST_BEFORE", 

27 "TLS_ST_OK", 

28 ] 

29 

30 

31def cryptography_has_scrypt() -> typing.List[str]: 

32 return [ 

33 "EVP_PBE_scrypt", 

34 ] 

35 

36 

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

38 return [ 

39 "EVP_PKEY_DHX", 

40 "d2i_DHxparams_bio", 

41 "i2d_DHxparams_bio", 

42 ] 

43 

44 

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

46 return [ 

47 "Cryptography_CRYPTO_set_mem_functions", 

48 ] 

49 

50 

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

52 return [ 

53 "X509_STORE_set_get_issuer", 

54 ] 

55 

56 

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

58 return [ 

59 "EVP_PKEY_ED448", 

60 "NID_ED448", 

61 ] 

62 

63 

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

65 return [ 

66 "NID_ED25519", 

67 "EVP_PKEY_ED25519", 

68 ] 

69 

70 

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

72 return [ 

73 "NID_poly1305", 

74 "EVP_PKEY_POLY1305", 

75 ] 

76 

77 

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

79 return [ 

80 "EVP_DigestFinalXOF", 

81 ] 

82 

83 

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

85 return [ 

86 "FIPS_mode_set", 

87 "FIPS_mode", 

88 ] 

89 

90 

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

92 return [ 

93 "SSL_CTX_set1_sigalgs_list", 

94 ] 

95 

96 

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

98 return [ 

99 "SSL_CTX_use_psk_identity_hint", 

100 "SSL_CTX_set_psk_server_callback", 

101 "SSL_CTX_set_psk_client_callback", 

102 ] 

103 

104 

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

106 return [ 

107 "SSL_CTX_set_psk_find_session_callback", 

108 "SSL_CTX_set_psk_use_session_callback", 

109 "Cryptography_SSL_SESSION_new", 

110 "SSL_CIPHER_find", 

111 "SSL_SESSION_set1_master_key", 

112 "SSL_SESSION_set_cipher", 

113 "SSL_SESSION_set_protocol_version", 

114 ] 

115 

116 

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

118 return [ 

119 "SSL_CTX_add_client_custom_ext", 

120 "SSL_CTX_add_server_custom_ext", 

121 "SSL_extension_supported", 

122 ] 

123 

124 

125def cryptography_has_openssl_cleanup() -> typing.List[str]: 

126 return [ 

127 "OPENSSL_cleanup", 

128 ] 

129 

130 

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

132 return [ 

133 "SSL_VERIFY_POST_HANDSHAKE", 

134 "SSL_CTX_set_ciphersuites", 

135 "SSL_verify_client_post_handshake", 

136 "SSL_CTX_set_post_handshake_auth", 

137 "SSL_set_post_handshake_auth", 

138 "SSL_SESSION_get_max_early_data", 

139 "SSL_write_early_data", 

140 "SSL_read_early_data", 

141 "SSL_CTX_set_max_early_data", 

142 ] 

143 

144 

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

146 return [ 

147 "EVP_PKEY_new_raw_private_key", 

148 "EVP_PKEY_new_raw_public_key", 

149 "EVP_PKEY_get_raw_private_key", 

150 "EVP_PKEY_get_raw_public_key", 

151 ] 

152 

153 

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

155 return [ 

156 "ENGINE_by_id", 

157 "ENGINE_init", 

158 "ENGINE_finish", 

159 "ENGINE_get_default_RAND", 

160 "ENGINE_set_default_RAND", 

161 "ENGINE_unregister_RAND", 

162 "ENGINE_ctrl_cmd", 

163 "ENGINE_free", 

164 "ENGINE_get_name", 

165 "Cryptography_add_osrandom_engine", 

166 "ENGINE_ctrl_cmd_string", 

167 "ENGINE_load_builtin_engines", 

168 "ENGINE_load_private_key", 

169 "ENGINE_load_public_key", 

170 "SSL_CTX_set_client_cert_engine", 

171 ] 

172 

173 

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

175 return [ 

176 "SSL_get0_verified_chain", 

177 ] 

178 

179 

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

181 return [ 

182 "SSL_CTX_set_tlsext_use_srtp", 

183 "SSL_set_tlsext_use_srtp", 

184 "SSL_get_selected_srtp_profile", 

185 ] 

186 

187 

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

189 return [ 

190 "OSSL_PROVIDER_load", 

191 "OSSL_PROVIDER_unload", 

192 "ERR_LIB_PROV", 

193 "PROV_R_WRONG_FINAL_BLOCK_LENGTH", 

194 "PROV_R_BAD_DECRYPT", 

195 ] 

196 

197 

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

199 return [ 

200 "SSL_OP_NO_RENEGOTIATION", 

201 ] 

202 

203 

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

205 return [ 

206 "DTLS_get_data_mtu", 

207 ] 

208 

209 

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

211 return [ 

212 "EVP_default_properties_is_fips_enabled", 

213 "EVP_default_properties_enable_fips", 

214 ] 

215 

216 

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

218 return [ 

219 "SSL_OP_COOKIE_EXCHANGE", 

220 "DTLSv1_listen", 

221 "SSL_CTX_set_cookie_generate_cb", 

222 "SSL_CTX_set_cookie_verify_cb", 

223 ] 

224 

225 

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

227 return [ 

228 "SMIME_write_PKCS7", 

229 "PEM_write_bio_PKCS7_stream", 

230 "PKCS7_sign_add_signer", 

231 "PKCS7_final", 

232 "PKCS7_verify", 

233 "SMIME_read_PKCS7", 

234 "PKCS7_get0_signers", 

235 ] 

236 

237 

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

239 return [ 

240 "BN_FLG_CONSTTIME", 

241 "BN_set_flags", 

242 "BN_prime_checks_for_size", 

243 ] 

244 

245 

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

247 return [ 

248 "EVP_PKEY_set1_DH", 

249 ] 

250 

251 

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

253 return ["EVP_CIPHER_fetch", "EVP_CIPHER_free"] 

254 

255 

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

257 return ["SSL_R_UNEXPECTED_EOF_WHILE_READING"] 

258 

259 

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

261 return ["PKCS12_set_mac"] 

262 

263 

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

265 return [ 

266 "SSL_OP_IGNORE_UNEXPECTED_EOF", 

267 ] 

268 

269 

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

271 return ["SSL_get_extms_support"] 

272 

273 

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

275 return ["EVP_PKEY_derive_set_peer_ex"] 

276 

277 

278# This is a mapping of 

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

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

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

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

283CONDITIONAL_NAMES = { 

284 "Cryptography_HAS_SET_CERT_CB": cryptography_has_set_cert_cb, 

285 "Cryptography_HAS_SSL_ST": cryptography_has_ssl_st, 

286 "Cryptography_HAS_TLS_ST": cryptography_has_tls_st, 

287 "Cryptography_HAS_SCRYPT": cryptography_has_scrypt, 

288 "Cryptography_HAS_EVP_PKEY_DHX": cryptography_has_evp_pkey_dhx, 

289 "Cryptography_HAS_MEM_FUNCTIONS": cryptography_has_mem_functions, 

290 "Cryptography_HAS_X509_STORE_CTX_GET_ISSUER": ( 

291 cryptography_has_x509_store_ctx_get_issuer 

292 ), 

293 "Cryptography_HAS_ED448": cryptography_has_ed448, 

294 "Cryptography_HAS_ED25519": cryptography_has_ed25519, 

295 "Cryptography_HAS_POLY1305": cryptography_has_poly1305, 

296 "Cryptography_HAS_FIPS": cryptography_has_fips, 

297 "Cryptography_HAS_SIGALGS": cryptography_has_ssl_sigalgs, 

298 "Cryptography_HAS_PSK": cryptography_has_psk, 

299 "Cryptography_HAS_PSK_TLSv1_3": cryptography_has_psk_tlsv13, 

300 "Cryptography_HAS_CUSTOM_EXT": cryptography_has_custom_ext, 

301 "Cryptography_HAS_OPENSSL_CLEANUP": cryptography_has_openssl_cleanup, 

302 "Cryptography_HAS_TLSv1_3_FUNCTIONS": cryptography_has_tlsv13_functions, 

303 "Cryptography_HAS_RAW_KEY": cryptography_has_raw_key, 

304 "Cryptography_HAS_EVP_DIGESTFINAL_XOF": ( 

305 cryptography_has_evp_digestfinal_xof 

306 ), 

307 "Cryptography_HAS_ENGINE": cryptography_has_engine, 

308 "Cryptography_HAS_VERIFIED_CHAIN": cryptography_has_verified_chain, 

309 "Cryptography_HAS_SRTP": cryptography_has_srtp, 

310 "Cryptography_HAS_PROVIDERS": cryptography_has_providers, 

311 "Cryptography_HAS_OP_NO_RENEGOTIATION": ( 

312 cryptography_has_op_no_renegotiation 

313 ), 

314 "Cryptography_HAS_DTLS_GET_DATA_MTU": cryptography_has_dtls_get_data_mtu, 

315 "Cryptography_HAS_300_FIPS": cryptography_has_300_fips, 

316 "Cryptography_HAS_SSL_COOKIE": cryptography_has_ssl_cookie, 

317 "Cryptography_HAS_PKCS7_FUNCS": cryptography_has_pkcs7_funcs, 

318 "Cryptography_HAS_BN_FLAGS": cryptography_has_bn_flags, 

319 "Cryptography_HAS_EVP_PKEY_DH": cryptography_has_evp_pkey_dh, 

320 "Cryptography_HAS_300_EVP_CIPHER": cryptography_has_300_evp_cipher, 

321 "Cryptography_HAS_UNEXPECTED_EOF_WHILE_READING": ( 

322 cryptography_has_unexpected_eof_while_reading 

323 ), 

324 "Cryptography_HAS_PKCS12_SET_MAC": cryptography_has_pkcs12_set_mac, 

325 "Cryptography_HAS_SSL_OP_IGNORE_UNEXPECTED_EOF": ( 

326 cryptography_has_ssl_op_ignore_unexpected_eof 

327 ), 

328 "Cryptography_HAS_GET_EXTMS_SUPPORT": cryptography_has_get_extms_support, 

329 "Cryptography_HAS_EVP_PKEY_SET_PEER_EX": ( 

330 cryptography_has_evp_pkey_set_peer_ex 

331 ), 

332}