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

86 statements  

« prev     ^ index     » next       coverage.py v7.0.1, created at 2022-12-25 06:11 +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_ec2m() -> typing.List[str]: 

9 return [ 

10 "EC_POINT_get_affine_coordinates_GF2m", 

11 ] 

12 

13 

14def cryptography_has_ssl3_method() -> typing.List[str]: 

15 return [ 

16 "SSLv3_method", 

17 "SSLv3_client_method", 

18 "SSLv3_server_method", 

19 ] 

20 

21 

22def cryptography_has_110_verification_params() -> typing.List[str]: 

23 return ["X509_CHECK_FLAG_NEVER_CHECK_SUBJECT"] 

24 

25 

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

27 return [ 

28 "SSL_CTX_set_cert_cb", 

29 "SSL_set_cert_cb", 

30 ] 

31 

32 

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

34 return [ 

35 "SSL_ST_BEFORE", 

36 "SSL_ST_OK", 

37 "SSL_ST_INIT", 

38 "SSL_ST_RENEGOTIATE", 

39 ] 

40 

41 

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

43 return [ 

44 "TLS_ST_BEFORE", 

45 "TLS_ST_OK", 

46 ] 

47 

48 

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

50 return [ 

51 "EVP_PBE_scrypt", 

52 ] 

53 

54 

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

56 return [ 

57 "EVP_PKEY_DHX", 

58 ] 

59 

60 

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

62 return [ 

63 "Cryptography_CRYPTO_set_mem_functions", 

64 ] 

65 

66 

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

68 return [ 

69 "X509_STORE_get_get_issuer", 

70 "X509_STORE_set_get_issuer", 

71 ] 

72 

73 

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

75 return [ 

76 "EVP_PKEY_ED448", 

77 "NID_ED448", 

78 ] 

79 

80 

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

82 return [ 

83 "NID_ED25519", 

84 "EVP_PKEY_ED25519", 

85 ] 

86 

87 

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

89 return [ 

90 "NID_poly1305", 

91 "EVP_PKEY_POLY1305", 

92 ] 

93 

94 

95def cryptography_has_oneshot_evp_digest_sign_verify() -> typing.List[str]: 

96 return [ 

97 "EVP_DigestSign", 

98 "EVP_DigestVerify", 

99 ] 

100 

101 

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

103 return [ 

104 "EVP_DigestFinalXOF", 

105 ] 

106 

107 

108def cryptography_has_evp_pkey_get_set_tls_encodedpoint() -> typing.List[str]: 

109 return [ 

110 "EVP_PKEY_get1_tls_encodedpoint", 

111 "EVP_PKEY_set1_tls_encodedpoint", 

112 ] 

113 

114 

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

116 return [ 

117 "FIPS_mode_set", 

118 "FIPS_mode", 

119 ] 

120 

121 

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

123 return [ 

124 "SSL_CTX_set1_sigalgs_list", 

125 ] 

126 

127 

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

129 return [ 

130 "SSL_CTX_use_psk_identity_hint", 

131 "SSL_CTX_set_psk_server_callback", 

132 "SSL_CTX_set_psk_client_callback", 

133 ] 

134 

135 

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

137 return [ 

138 "SSL_CTX_set_psk_find_session_callback", 

139 "SSL_CTX_set_psk_use_session_callback", 

140 "Cryptography_SSL_SESSION_new", 

141 "SSL_CIPHER_find", 

142 "SSL_SESSION_set1_master_key", 

143 "SSL_SESSION_set_cipher", 

144 "SSL_SESSION_set_protocol_version", 

145 ] 

146 

147 

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

149 return [ 

150 "SSL_CTX_add_client_custom_ext", 

151 "SSL_CTX_add_server_custom_ext", 

152 "SSL_extension_supported", 

153 ] 

154 

155 

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

157 return [ 

158 "OPENSSL_cleanup", 

159 ] 

160 

161 

162def cryptography_has_tlsv13() -> typing.List[str]: 

163 return [ 

164 "TLS1_3_VERSION", 

165 "SSL_OP_NO_TLSv1_3", 

166 ] 

167 

168 

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

170 return [ 

171 "SSL_VERIFY_POST_HANDSHAKE", 

172 "SSL_CTX_set_ciphersuites", 

173 "SSL_verify_client_post_handshake", 

174 "SSL_CTX_set_post_handshake_auth", 

175 "SSL_set_post_handshake_auth", 

176 "SSL_SESSION_get_max_early_data", 

177 "SSL_write_early_data", 

178 "SSL_read_early_data", 

179 "SSL_CTX_set_max_early_data", 

180 ] 

181 

182 

183def cryptography_has_keylog() -> typing.List[str]: 

184 return [ 

185 "SSL_CTX_set_keylog_callback", 

186 "SSL_CTX_get_keylog_callback", 

187 ] 

188 

189 

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

191 return [ 

192 "EVP_PKEY_new_raw_private_key", 

193 "EVP_PKEY_new_raw_public_key", 

194 "EVP_PKEY_get_raw_private_key", 

195 "EVP_PKEY_get_raw_public_key", 

196 ] 

197 

198 

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

200 return [ 

201 "ENGINE_by_id", 

202 "ENGINE_init", 

203 "ENGINE_finish", 

204 "ENGINE_get_default_RAND", 

205 "ENGINE_set_default_RAND", 

206 "ENGINE_unregister_RAND", 

207 "ENGINE_ctrl_cmd", 

208 "ENGINE_free", 

209 "ENGINE_get_name", 

210 "Cryptography_add_osrandom_engine", 

211 "ENGINE_ctrl_cmd_string", 

212 "ENGINE_load_builtin_engines", 

213 "ENGINE_load_private_key", 

214 "ENGINE_load_public_key", 

215 "SSL_CTX_set_client_cert_engine", 

216 ] 

217 

218 

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

220 return [ 

221 "SSL_get0_verified_chain", 

222 ] 

223 

224 

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

226 return [ 

227 "SSL_CTX_set_tlsext_use_srtp", 

228 "SSL_set_tlsext_use_srtp", 

229 "SSL_get_selected_srtp_profile", 

230 ] 

231 

232 

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

234 return [ 

235 "SSL_CTX_get_min_proto_version", 

236 "SSL_CTX_get_max_proto_version", 

237 "SSL_get_min_proto_version", 

238 "SSL_get_max_proto_version", 

239 ] 

240 

241 

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

243 return [ 

244 "OSSL_PROVIDER_load", 

245 "OSSL_PROVIDER_unload", 

246 "ERR_LIB_PROV", 

247 "PROV_R_WRONG_FINAL_BLOCK_LENGTH", 

248 "PROV_R_BAD_DECRYPT", 

249 ] 

250 

251 

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

253 return [ 

254 "SSL_OP_NO_RENEGOTIATION", 

255 ] 

256 

257 

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

259 return [ 

260 "DTLS_get_data_mtu", 

261 ] 

262 

263 

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

265 return [ 

266 "EVP_default_properties_is_fips_enabled", 

267 "EVP_default_properties_enable_fips", 

268 ] 

269 

270 

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

272 return [ 

273 "SSL_OP_COOKIE_EXCHANGE", 

274 "DTLSv1_listen", 

275 "SSL_CTX_set_cookie_generate_cb", 

276 "SSL_CTX_set_cookie_verify_cb", 

277 ] 

278 

279 

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

281 return [ 

282 "SMIME_write_PKCS7", 

283 "PEM_write_bio_PKCS7_stream", 

284 "PKCS7_sign_add_signer", 

285 "PKCS7_final", 

286 "PKCS7_verify", 

287 "SMIME_read_PKCS7", 

288 "PKCS7_get0_signers", 

289 ] 

290 

291 

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

293 return [ 

294 "BN_FLG_CONSTTIME", 

295 "BN_set_flags", 

296 "BN_prime_checks_for_size", 

297 ] 

298 

299 

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

301 return [ 

302 "EVP_PKEY_set1_DH", 

303 ] 

304 

305 

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

307 return ["EVP_CIPHER_fetch", "EVP_CIPHER_free"] 

308 

309 

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

311 return ["SSL_R_UNEXPECTED_EOF_WHILE_READING"] 

312 

313 

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

315 return ["PKCS12_set_mac"] 

316 

317 

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

319 return [ 

320 "SSL_OP_IGNORE_UNEXPECTED_EOF", 

321 ] 

322 

323 

324# This is a mapping of 

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

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

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

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

329CONDITIONAL_NAMES = { 

330 "Cryptography_HAS_EC2M": cryptography_has_ec2m, 

331 "Cryptography_HAS_SSL3_METHOD": cryptography_has_ssl3_method, 

332 "Cryptography_HAS_110_VERIFICATION_PARAMS": ( 

333 cryptography_has_110_verification_params 

334 ), 

335 "Cryptography_HAS_SET_CERT_CB": cryptography_has_set_cert_cb, 

336 "Cryptography_HAS_SSL_ST": cryptography_has_ssl_st, 

337 "Cryptography_HAS_TLS_ST": cryptography_has_tls_st, 

338 "Cryptography_HAS_SCRYPT": cryptography_has_scrypt, 

339 "Cryptography_HAS_EVP_PKEY_DHX": cryptography_has_evp_pkey_dhx, 

340 "Cryptography_HAS_MEM_FUNCTIONS": cryptography_has_mem_functions, 

341 "Cryptography_HAS_X509_STORE_CTX_GET_ISSUER": ( 

342 cryptography_has_x509_store_ctx_get_issuer 

343 ), 

344 "Cryptography_HAS_ED448": cryptography_has_ed448, 

345 "Cryptography_HAS_ED25519": cryptography_has_ed25519, 

346 "Cryptography_HAS_POLY1305": cryptography_has_poly1305, 

347 "Cryptography_HAS_ONESHOT_EVP_DIGEST_SIGN_VERIFY": ( 

348 cryptography_has_oneshot_evp_digest_sign_verify 

349 ), 

350 "Cryptography_HAS_EVP_PKEY_get_set_tls_encodedpoint": ( 

351 cryptography_has_evp_pkey_get_set_tls_encodedpoint 

352 ), 

353 "Cryptography_HAS_FIPS": cryptography_has_fips, 

354 "Cryptography_HAS_SIGALGS": cryptography_has_ssl_sigalgs, 

355 "Cryptography_HAS_PSK": cryptography_has_psk, 

356 "Cryptography_HAS_PSK_TLSv1_3": cryptography_has_psk_tlsv13, 

357 "Cryptography_HAS_CUSTOM_EXT": cryptography_has_custom_ext, 

358 "Cryptography_HAS_OPENSSL_CLEANUP": cryptography_has_openssl_cleanup, 

359 "Cryptography_HAS_TLSv1_3": cryptography_has_tlsv13, 

360 "Cryptography_HAS_TLSv1_3_FUNCTIONS": cryptography_has_tlsv13_functions, 

361 "Cryptography_HAS_KEYLOG": cryptography_has_keylog, 

362 "Cryptography_HAS_RAW_KEY": cryptography_has_raw_key, 

363 "Cryptography_HAS_EVP_DIGESTFINAL_XOF": ( 

364 cryptography_has_evp_digestfinal_xof 

365 ), 

366 "Cryptography_HAS_ENGINE": cryptography_has_engine, 

367 "Cryptography_HAS_VERIFIED_CHAIN": cryptography_has_verified_chain, 

368 "Cryptography_HAS_SRTP": cryptography_has_srtp, 

369 "Cryptography_HAS_GET_PROTO_VERSION": cryptography_has_get_proto_version, 

370 "Cryptography_HAS_PROVIDERS": cryptography_has_providers, 

371 "Cryptography_HAS_OP_NO_RENEGOTIATION": ( 

372 cryptography_has_op_no_renegotiation 

373 ), 

374 "Cryptography_HAS_DTLS_GET_DATA_MTU": cryptography_has_dtls_get_data_mtu, 

375 "Cryptography_HAS_300_FIPS": cryptography_has_300_fips, 

376 "Cryptography_HAS_SSL_COOKIE": cryptography_has_ssl_cookie, 

377 "Cryptography_HAS_PKCS7_FUNCS": cryptography_has_pkcs7_funcs, 

378 "Cryptography_HAS_BN_FLAGS": cryptography_has_bn_flags, 

379 "Cryptography_HAS_EVP_PKEY_DH": cryptography_has_evp_pkey_dh, 

380 "Cryptography_HAS_300_EVP_CIPHER": cryptography_has_300_evp_cipher, 

381 "Cryptography_HAS_UNEXPECTED_EOF_WHILE_READING": ( 

382 cryptography_has_unexpected_eof_while_reading 

383 ), 

384 "Cryptography_HAS_PKCS12_SET_MAC": cryptography_has_pkcs12_set_mac, 

385 "Cryptography_HAS_SSL_OP_IGNORE_UNEXPECTED_EOF": ( 

386 cryptography_has_ssl_op_ignore_unexpected_eof 

387 ), 

388}