|
123 | 123 | "Session",
|
124 | 124 | "Context",
|
125 | 125 | "Connection",
|
| 126 | + "X509VerificationCodes", |
126 | 127 | ]
|
127 | 128 |
|
128 | 129 |
|
|
250 | 251 | SSL_CB_HANDSHAKE_START = _lib.SSL_CB_HANDSHAKE_START
|
251 | 252 | SSL_CB_HANDSHAKE_DONE = _lib.SSL_CB_HANDSHAKE_DONE
|
252 | 253 |
|
| 254 | + |
| 255 | +class X509VerificationCodes: |
| 256 | + """ |
| 257 | + Success and error codes for X509 verification, as returned by the |
| 258 | + underlying ``X509_STORE_CTX_get_error()`` function and passed by pyOpenSSL |
| 259 | + to verification callback functions. |
| 260 | +
|
| 261 | + See `OpenSSL Verification Errors |
| 262 | + <https://www.openssl.org/docs/manmaster/man3/X509_verify_cert_error_string.html#ERROR-CODES>`_ |
| 263 | + for details. |
| 264 | + """ |
| 265 | + |
| 266 | + OK = _lib.X509_V_OK |
| 267 | + ERR_UNABLE_TO_GET_ISSUER_CERT = _lib.X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT |
| 268 | + ERR_UNABLE_TO_GET_CRL = _lib.X509_V_ERR_UNABLE_TO_GET_CRL |
| 269 | + ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE = ( |
| 270 | + _lib.X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE |
| 271 | + ) |
| 272 | + ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE = ( |
| 273 | + _lib.X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE |
| 274 | + ) |
| 275 | + ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY = ( |
| 276 | + _lib.X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY |
| 277 | + ) |
| 278 | + ERR_CERT_SIGNATURE_FAILURE = _lib.X509_V_ERR_CERT_SIGNATURE_FAILURE |
| 279 | + ERR_CRL_SIGNATURE_FAILURE = _lib.X509_V_ERR_CRL_SIGNATURE_FAILURE |
| 280 | + ERR_CERT_NOT_YET_VALID = _lib.X509_V_ERR_CERT_NOT_YET_VALID |
| 281 | + ERR_CERT_HAS_EXPIRED = _lib.X509_V_ERR_CERT_HAS_EXPIRED |
| 282 | + ERR_CRL_NOT_YET_VALID = _lib.X509_V_ERR_CRL_NOT_YET_VALID |
| 283 | + ERR_CRL_HAS_EXPIRED = _lib.X509_V_ERR_CRL_HAS_EXPIRED |
| 284 | + ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD = ( |
| 285 | + _lib.X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD |
| 286 | + ) |
| 287 | + ERR_ERROR_IN_CERT_NOT_AFTER_FIELD = ( |
| 288 | + _lib.X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD |
| 289 | + ) |
| 290 | + ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD = ( |
| 291 | + _lib.X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD |
| 292 | + ) |
| 293 | + ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD = ( |
| 294 | + _lib.X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD |
| 295 | + ) |
| 296 | + ERR_OUT_OF_MEM = _lib.X509_V_ERR_OUT_OF_MEM |
| 297 | + ERR_DEPTH_ZERO_SELF_SIGNED_CERT = ( |
| 298 | + _lib.X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT |
| 299 | + ) |
| 300 | + ERR_SELF_SIGNED_CERT_IN_CHAIN = _lib.X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN |
| 301 | + ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY = ( |
| 302 | + _lib.X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY |
| 303 | + ) |
| 304 | + ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE = ( |
| 305 | + _lib.X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE |
| 306 | + ) |
| 307 | + ERR_CERT_CHAIN_TOO_LONG = _lib.X509_V_ERR_CERT_CHAIN_TOO_LONG |
| 308 | + ERR_CERT_REVOKED = _lib.X509_V_ERR_CERT_REVOKED |
| 309 | + ERR_INVALID_CA = _lib.X509_V_ERR_INVALID_CA |
| 310 | + ERR_PATH_LENGTH_EXCEEDED = _lib.X509_V_ERR_PATH_LENGTH_EXCEEDED |
| 311 | + ERR_INVALID_PURPOSE = _lib.X509_V_ERR_INVALID_PURPOSE |
| 312 | + ERR_CERT_UNTRUSTED = _lib.X509_V_ERR_CERT_UNTRUSTED |
| 313 | + ERR_CERT_REJECTED = _lib.X509_V_ERR_CERT_REJECTED |
| 314 | + ERR_SUBJECT_ISSUER_MISMATCH = _lib.X509_V_ERR_SUBJECT_ISSUER_MISMATCH |
| 315 | + ERR_AKID_SKID_MISMATCH = _lib.X509_V_ERR_AKID_SKID_MISMATCH |
| 316 | + ERR_AKID_ISSUER_SERIAL_MISMATCH = ( |
| 317 | + _lib.X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH |
| 318 | + ) |
| 319 | + ERR_KEYUSAGE_NO_CERTSIGN = _lib.X509_V_ERR_KEYUSAGE_NO_CERTSIGN |
| 320 | + ERR_UNABLE_TO_GET_CRL_ISSUER = _lib.X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER |
| 321 | + ERR_UNHANDLED_CRITICAL_EXTENSION = ( |
| 322 | + _lib.X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION |
| 323 | + ) |
| 324 | + ERR_KEYUSAGE_NO_CRL_SIGN = _lib.X509_V_ERR_KEYUSAGE_NO_CRL_SIGN |
| 325 | + ERR_UNHANDLED_CRITICAL_CRL_EXTENSION = ( |
| 326 | + _lib.X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION |
| 327 | + ) |
| 328 | + ERR_INVALID_NON_CA = _lib.X509_V_ERR_INVALID_NON_CA |
| 329 | + ERR_PROXY_PATH_LENGTH_EXCEEDED = _lib.X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED |
| 330 | + ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE = ( |
| 331 | + _lib.X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE |
| 332 | + ) |
| 333 | + ERR_PROXY_CERTIFICATES_NOT_ALLOWED = ( |
| 334 | + _lib.X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED |
| 335 | + ) |
| 336 | + ERR_INVALID_EXTENSION = _lib.X509_V_ERR_INVALID_EXTENSION |
| 337 | + ERR_INVALID_POLICY_EXTENSION = _lib.X509_V_ERR_INVALID_POLICY_EXTENSION |
| 338 | + ERR_NO_EXPLICIT_POLICY = _lib.X509_V_ERR_NO_EXPLICIT_POLICY |
| 339 | + ERR_DIFFERENT_CRL_SCOPE = _lib.X509_V_ERR_DIFFERENT_CRL_SCOPE |
| 340 | + ERR_UNSUPPORTED_EXTENSION_FEATURE = ( |
| 341 | + _lib.X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE |
| 342 | + ) |
| 343 | + ERR_UNNESTED_RESOURCE = _lib.X509_V_ERR_UNNESTED_RESOURCE |
| 344 | + ERR_PERMITTED_VIOLATION = _lib.X509_V_ERR_PERMITTED_VIOLATION |
| 345 | + ERR_EXCLUDED_VIOLATION = _lib.X509_V_ERR_EXCLUDED_VIOLATION |
| 346 | + ERR_SUBTREE_MINMAX = _lib.X509_V_ERR_SUBTREE_MINMAX |
| 347 | + ERR_UNSUPPORTED_CONSTRAINT_TYPE = ( |
| 348 | + _lib.X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE |
| 349 | + ) |
| 350 | + ERR_UNSUPPORTED_CONSTRAINT_SYNTAX = ( |
| 351 | + _lib.X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX |
| 352 | + ) |
| 353 | + ERR_UNSUPPORTED_NAME_SYNTAX = _lib.X509_V_ERR_UNSUPPORTED_NAME_SYNTAX |
| 354 | + ERR_CRL_PATH_VALIDATION_ERROR = _lib.X509_V_ERR_CRL_PATH_VALIDATION_ERROR |
| 355 | + ERR_HOSTNAME_MISMATCH = _lib.X509_V_ERR_HOSTNAME_MISMATCH |
| 356 | + ERR_EMAIL_MISMATCH = _lib.X509_V_ERR_EMAIL_MISMATCH |
| 357 | + ERR_IP_ADDRESS_MISMATCH = _lib.X509_V_ERR_IP_ADDRESS_MISMATCH |
| 358 | + ERR_APPLICATION_VERIFICATION = _lib.X509_V_ERR_APPLICATION_VERIFICATION |
| 359 | + |
| 360 | + |
253 | 361 | # Taken from https://golang.org/src/crypto/x509/root_linux.go
|
254 | 362 | _CERTIFICATE_FILE_LOCATIONS = [
|
255 | 363 | "/etc/ssl/certs/ca-certificates.crt", # Debian/Ubuntu/Gentoo etc.
|
|
0 commit comments