summaryrefslogtreecommitdiff
path: root/src/OpenSSL/crypto.py
Commit message (Collapse)AuthorAgeFilesLines
* Use autodoc for OpenSSL.cryptoAlex Chan2018-02-131-12/+28
|
* fix a memory leak and a potential UAF and also #722 (#723)Paul Kehrer2017-11-301-4/+3
| | | | | | | | * fix a memory leak and a potential UAF and also #722 * sanity check * bump cryptography minimum version, add changelog
* define __all__ to make wildcard import work (#719)Nicolas Karolak2017-11-261-0/+39
|
* Don't use things after they're freed...duh (#709)Alex Gaynor2017-11-201-9/+36
| | | | | | | | * Don't use things after they're freed...duh * changelog * more details
* Avoid a double call to X509_STORE_CTX_init as it leaks memory (#691)Jeremy Cline2017-09-141-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This fixes an issue where each instance of ``X509StoreContext`` would leak a small amount of memory, but only if ``verify_certificate`` was called. The reason for this is that ``X509_STORE_CTX_init`` is called in ``X509StoreContext.__init__`` and at the start of ``X509StoreContext.verify_certificate``. According to the man page for ``X509_STORE_CTX_init``: "X509_STORE_CTX_init() sets up ctx for a subsequent verification operation. It must be called before each call to X509_verify_cert(), i.e. a ctx is only good for one call to X509_verify_cert(); if you want to verify a second certificate with the same ctx then you must call X509_STORE_CTX_cleanup() and then X509_STORE_CTX_init() again before the second call to X509_verify_cert()." Prior to this commit, the following script would cause a memory leak: ``` from OpenSSL.crypto import ( X509Store, X509StoreContext, load_certificate, FILETYPE_PEM) certificate = """ -----BEGIN CERTIFICATE----- MIIESTCCA7KgAwIBAgIBAzANBgkqhkiG9w0BAQUFADCBoDELMAkGA1UEBhMCVVMx CzAJBgNVBAgTAk5DMRAwDgYDVQQHEwdSYWxlaWdoMRcwFQYDVQQKEw5GZWRvcmEg UHJvamVjdDEPMA0GA1UECxMGZmVkbXNnMQ8wDQYDVQQDEwZmZWRtc2cxDzANBgNV BCkTBmZlZG1zZzEmMCQGCSqGSIb3DQEJARYXYWRtaW5AZmVkb3JhcHJvamVjdC5v cmcwHhcNMTIwNzE1MjExODUyWhcNMjIwNzEzMjExODUyWjCB2DELMAkGA1UEBhMC VVMxCzAJBgNVBAgTAk5DMRAwDgYDVQQHEwdSYWxlaWdoMRcwFQYDVQQKEw5GZWRv cmEgUHJvamVjdDEPMA0GA1UECxMGZmVkbXNnMSswKQYDVQQDEyJzaGVsbC1hcHAw MS5waHgyLmZlZG9yYXByb2plY3Qub3JnMSswKQYDVQQpEyJzaGVsbC1hcHAwMS5w aHgyLmZlZG9yYXByb2plY3Qub3JnMSYwJAYJKoZIhvcNAQkBFhdhZG1pbkBmZWRv cmFwcm9qZWN0Lm9yZzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAyV0ydvno pITmFs0kfploKj6nW0/COzp0rDwwvuWZF2KDdl1AeRWzfspOQOWIK5V+o2qxYA6t aiK4bPfylYL1IGIwlVP9ma5zwkRvWketWjGORp5B7g7oECQOBo3gnQt0Uf5TWAQ1 6Wn0bCrIQSqOWVKScK9vUk/oomUlAZbksEcCAwEAAaOCAVcwggFTMAkGA1UdEwQC MAAwLQYJYIZIAYb4QgENBCAWHkVhc3ktUlNBIEdlbmVyYXRlZCBDZXJ0aWZpY2F0 ZTAdBgNVHQ4EFgQUd3FXBbD2JW3qcmq+5VP7GcuxHF4wgdUGA1UdIwSBzTCByoAU AJil1efEVQ6Eo2f+ZkoW4AQV3SGhgaakgaMwgaAxCzAJBgNVBAYTAlVTMQswCQYD VQQIEwJOQzEQMA4GA1UEBxMHUmFsZWlnaDEXMBUGA1UEChMORmVkb3JhIFByb2pl Y3QxDzANBgNVBAsTBmZlZG1zZzEPMA0GA1UEAxMGZmVkbXNnMQ8wDQYDVQQpEwZm ZWRtc2cxJjAkBgkqhkiG9w0BCQEWF2FkbWluQGZlZG9yYXByb2plY3Qub3JnggkA juso2KkTnXwwEwYDVR0lBAwwCgYIKwYBBQUHAwIwCwYDVR0PBAQDAgeAMA0GCSqG SIb3DQEBBQUAA4GBABG1zG/lzYyz/phhROq6nzk3QUVeNGyxFdxxoB57j4xDi60y zy2yAYe9swqlL1Gk94/Zf/lLPFxOM+NinTOh/o6z0bEBBCufwFKiS+ug/pjsI o69vC03F21S0pquM8bQjcdoA5q5pdiY/Bq5HULmosyA+ENu69ovQGZZUiJb/ -----END CERTIFICATE----- """ ca_certificate = """ -----BEGIN CERTIFICATE----- MIIDyzCCAzSgAwIBAgIJAI7rKNipE518MA0GCSqGSIb3DQEBBQUAMIGgMQswCQYD VQQGEwJVUzELMAkGA1UECBMCTkMxEDAOBgNVBAcTB1JhbGVpZ2gxFzAVBgNVBAoT DkZlZG9yYSBQcm9qZWN0MQ8wDQYDVQQLEwZmZWRtc2cxDzANBgNVBAMTBmZlZG1z ZzEPMA0GA1UEKRMGZmVkbXNnMSYwJAYJKoZIhvcNAQkBFhdhZG1pbkBmZWRvcmFw cm9qZWN0Lm9yZzAeFw0xMjA3MTUyMTE4NTFaFw0yMjA3MTMyMTE4NTFaMIGgMQsw CQYDVQQGEwJVUzELMAkGA1UECBMCTkMxEDAOBgNVBAcTB1JhbGVpZ2gxFzAVBgNV BAoTDkZlZG9yYSBQcm9qZWN0MQ8wDQYDVQQLEwZmZWRtc2cxDzANBgNVBAMTBmZl ZG1zZzEPMA0GA1UEKRMGZmVkbXNnMSYwJAYJKoZIhvcNAQkBFhdhZG1pbkBmZWRv cmFwcm9qZWN0Lm9yZzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA9J6RmGr1 LzSJ5Fau2wdkVUiS5WXBcd0bNPyUJ9/G7t9SrycnLnEK4GQh2B525p4SCqvsHZtM 8rqii/Y2PPF5PbpgVjJLYsJk4SSv84aH+VPYcaEtYlPClXgHb3J9jgAxgHBHkJMQ 7mvxiIau7frKFqmJGZkxO2M+Sv8eLCKLJP8CAwEAAaOCAQkwggEFMB0GA1UdDgQW BBQAmKXV58RVDoSjZ/5mShbgBBXdITCB1QYDVR0jBIHNMIHKgBQAmKXV58RVDoSj Z/5mShbgBBXdIaGBpqSBozCBoDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAk5DMRAw DgYDVQQHEwdSYWxlaWdoMRcwFQYDVQQKEw5GZWRvcmEgUHJvamVjdDEPMA0GA1UE CxMGZmVkbXNnMQ8wDQYDVQQDEwZmZWRtc2cxDzANBgNVBCkTBmZlZG1zZzEmMCQG CSqGSIb3DQEJARYXYWRtaW5AZmVkb3JhcHJvamVjdC5vcmeCCQCO6yjYqROdfDAM BgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4GBAN5r+1rbeTyGDdlelbqWOXBu uS0a9BfusO0uwf3tHK9zeB5CDKFgxdfSZ+Fxg1w2HFRHhCOYoZ2ASPfbyANTzxUF fVAId1uhBD1SlhXpTb3Ndo4uXfalf3W8MrQzFiVHbevvfsyd+RwoVT/PDokE3i4A fftCd0uwvSqVgyE28SFt -----END CERTIFICATE----- """ ca_cert = load_certificate(FILETYPE_PEM, ca_certificate) cert = load_certificate(FILETYPE_PEM, certificate) cert_store = X509Store() cert_store.add_cert(ca_cert) while True: cert_store_context = X509StoreContext(cert_store, cert) cert_store_context.verify_certificate() ``` Moving the creation of ``X509StoreContext`` outside the loop stops the memory leak. Signed-off-by: Jeremy Cline <jeremy@jcline.org>
* Provide a destructor for the CRL object (#690)Jeremy Cline2017-09-071-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | This frees the memory allocated for the CRL object. Prior to this commit, the following script would leak memory: ``` from OpenSSL.crypto import load_crl, FILETYPE_PEM crl = """ -----BEGIN X509 CRL----- MIIBfDCB5jANBgkqhkiG9w0BAQsFADCBoDELMAkGA1UEBhMCVVMxCzAJBgNVBAgT Ak5DMRAwDgYDVQQHEwdSYWxlaWdoMRcwFQYDVQQKEw5GZWRvcmEgUHJvamVjdDEP MA0GA1UECxMGZmVkbXNnMQ8wDQYDVQQDEwZmZWRtc2cxDzANBgNVBCkTBmZlZG1z ZzEmMCQGCSqGSIb3DQEJARYXYWRtaW5AZmVkb3JhcHJvamVjdC5vcmcXDTE3MDYx NTIxMDMwOFoXDTM3MDYxMDIxMDMwOFowFDASAgECFw0xMjA3MTUyMTE4NTJaMA0G CSqGSIb3DQEBCwUAA4GBAGOBuDxmRFNcYP71LBsCOfFzKij00qpxM01d5/G6+0kM WJT8oTajMQoY6oISvQDq6TkwEoKc1yl6Ld1/XTtCNOhbybzRBAVf/Lxi/nRPP1JO qOdZs5jMLLQq1mRJz+MgKHHTDlnvpbjHMuyTss1RblFDr4iZPHMcBNKPGIj3pmpA -----END X509 CRL----- """ for _ in range(0, 1000000): load_crl(FILETYPE_PEM, crl) ``` Signed-off-by: Jeremy Cline <jeremy@jcline.org>
* (EC)DSA signature fix (#670)Paul Kehrer2017-07-201-3/+4
| | | | | | | | | | | | | * Write a test - signatures with EC keys (#609) * Ask for signature length before allocating a buffer. This fixes a potential heap buffer overflow that may happen when a signature is longer than the private key, as with X9.62 ECDSA (#609). * change approach to EVP_PKEY_size and add changelog * add a small assert
* Removed the deprecated md5 default on CRL.export() (#652)Alex Gaynor2017-06-301-8/+1
| | | | | | | | | | | | | | * Removed the deprecated md5 default on CRL.export() * Doh * unused import * fixed tests * last one * py3k!!!!!
* Kill some commented out code and other cleanups (#649)Alex Gaynor2017-06-301-17/+3
|
* dump_privatekey with FILETYPE_TEXT only supports RSA keys (#646)Paul Kehrer2017-06-291-0/+6
| | | | | | | | * dump_privatekey with FILETYPE_TEXT only supports RSA keys FILETYPE_TEXT is terrible but everyone hold their nose * also verify it's a pkey
* add to_cryptography/from_cryptography on CRL and X509Req (#645)Paul Kehrer2017-06-291-0/+66
| | | | | | * add to_cryptography/from_cryptography on CRL and X509Req * add changelog entry
* Fixed #486 -- deprecate the backwards compat names (#643)Alex Gaynor2017-06-291-10/+51
| | | | | | | | * Fixed #486 -- deprecate the backwards compat names * remove the docs for these, pretend they don't exist * CHANGELOG
* Added an API for converting X509 to/from cryptography (#640)Alex Gaynor2017-06-251-0/+32
| | | | | | * Added an API for converting X509 to/from cryptography * changelog
* update docs and and changelog for #612 (#639)Paul Kehrer2017-06-211-20/+8
| | | | | | | | * update docs and and changelog for #612 * update changelog * more detail
* Fix invalid cast from ASN1_TIME to ASN1_GENERALIZEDTIME (#612)Moriyoshi Koizumi2017-06-211-11/+3
| | | | | | * Fix invalid cast from ASN1_TIME to ASN1_GENERALIZEDTIME, which ends up with an error with LibreSSL. * Require cryptography >= 1.9
* Use the normal OpenSSL function instead of the crypto wrapper (#629)Alex Gaynor2017-05-311-1/+1
| | | We don’t support 0.9.8 anymore.
* Remove code for checking if EC support is present (#616)Alex Chan2017-04-201-11/+9
|
* Prepare for 17.0.0 (#615)Hynek Schlawack2017-04-201-1/+1
| | | | | | | | * Prepare for 17.0.0 Fix a bunch URLs and account for the non-existance of 16.3. * Fix codecov link
* Fix broken links in the documentation (#611)Alex Chan2017-03-211-2/+2
| | | | | | * Fix broken link described in #610 * Fix two other broken links
* Prevent _PassphraseHelper.raise_if_problem() from eating exceptions (#581)Greg Bowser2017-01-251-6/+8
| | | | | | | | | | | | | | | | | | | | | | | * Modify tests to detect empty crypto.Errors from load_privatekey This reproduces #119 and #456. * Prevent _PassphraseHelper.raise_if_problem() from eating exceptions. This resolves #119, resolves #456. `_PassphraseHelper.raise_if_problem()` always flushes the OpenSSL exception queue, but does not always raise an exception. In some cases, other code attempts to raise an error from OpenSSL after `raise_if_problem()` has flushed the queue, thus causing an empty exception to be raised (i.e. `raise Error([])`). This commit modifies `_PassphraseHelper.raise_if_problem` to flush the OpenSSL error queue only if it has en exception to raise. Subsequent code that detects an error should now be able to raise an non-empty exception. * Add CHANGELOG entry for #581.
* Activate intersphinx (#583)Hynek Schlawack2016-12-111-14/+20
| | | | | | | | | | | * Activate intersphinx That adds links to CPython docs and cryptography. Also let the copyright at 2001 which seems to be just fine and gives us reproducible builds. * Appease docs builder
* Add the ability to set a custom verification time on X509Store (#567)Thomas Sileo2016-11-221-0/+22
|
* Clarify error message (#573)Hynek Schlawack2016-11-181-2/+6
|
* Convert X509ExtTests to use pytest-style tests (#564)Alex Chan2016-11-181-0/+3
|
* Prepare 16.2.0 (#555)16.2.0Hynek Schlawack2016-10-151-1/+1
| | | | | | | | * Add empty line to CHANGELOG so extraction works * Fix a bunch of links * Prepare 16.2.0
* move our cryptography backend import (#552)Paul Kehrer2016-10-061-1/+13
| | | sad trombone
* Test on OpenSSL 1.1.0 with travis. Fixes #524 (#526)Alex Gaynor2016-09-241-0/+2
|
* fix cffi warnings for proper buffer types (#545)Paul Kehrer2016-09-201-1/+1
|
* Nudge people towards better hashes in a few places (#538)Alex Gaynor2016-09-111-2/+2
|
* Simplify conditions and delete an unused function (#512)Alex Gaynor2016-07-311-12/+4
|
* Add guard for allocations failure of X509 objects (#507)Hynek Schlawack2016-07-311-2/+1
|
* Convert between pyOpenSSL and cryptography objects (#439)Paul Kehrer2016-07-291-0/+42
| | | | | | | | | | * convert pkey to cryptography keys and vice versa * pep8 and such * Add documentation and changelog * add a type check and verify that it rejects ECDSA keys from cryptography
* Write a few more tests (#503)Alex Gaynor2016-07-041-3/+1
| | | | | | * Write a few more tests * pytestify this whole jam
* Write a few more tests for coverage (#501)Alex Gaynor2016-07-041-2/+1
|
* Simplify a few more branches to improve coverage (#500)Alex Gaynor2016-07-031-16/+4
|
* Replace several untested paths with _openssl_assert (#498)Alex Gaynor2016-07-031-56/+18
| | | | | | | | | | | | | | * Replace several untested paths with _openssl_assert * fix, these require a bool * oop, fixed * finish porting crypto.py * typo * yessssssss
* Fix memory leak in OpenSSL.crypto.dump_privatekey (#496)Hynek Schlawack2016-07-031-13/+15
| | | | | | | | * Fix memory leak in OpenSSL.crypto.dump_privatekey * Add PR# * Address feedback
* Added more openssl asserst. (#491)Alex Gaynor2016-06-041-27/+9
| | | Refs #478
* Removed more untested error handling. (#488)Alex Gaynor2016-06-041-25/+8
| | | Refs #478
* Enable use of CRL (and more) in verify context. (#483)Dan Sully2016-06-041-109/+234
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Enable use of CRL (and more) in verify context. * flake8 fixes. * Comments from Hynek & Paul. * More updates from Paul & Hynek. * Fix closing backtick. * Remove commented out constants. * More doc updates. Changelog update. * Getting closer? * Sphinx fix. * Indent docstring. * More Sphinx updates. * Type updates for docstrings. * Remove Enum subclassing. * Docstring update. * Docstrings updates. * Round and round it goes. Where it ends, nobody knows. * Remove TODO comment. Need @sholsapp to follow up. * Time for lots of alcohol.
* fix a small bug with load_publickey (#481)Paul Kehrer2016-06-031-0/+1
| | | | | | | | * fix a small bug with load_publickey * update docstring, rename test method * make hynek happy
* whitespaceAlex Gaynor2016-06-021-0/+1
|
* Merge branch 'master' into opaque-the-sigalgAlex Gaynor2016-06-021-2/+2
|\
| * lolAlex Gaynor2016-06-021-2/+2
| |
| * fixAlex Gaynor2016-06-021-1/+1
| |
| * Make most things opaqueAlex Gaynor2016-06-021-16/+17
| |
* | stuff passes!Alex Gaynor2016-06-021-18/+18
| |
* | X509 sigalg is now opaqueAlex Gaynor2016-06-021-2/+2
|/
* Fixed a misleading typo in teh docsAlex Gaynor2016-04-221-1/+1
|
* Fix some links and markupHynek Schlawack2016-03-191-2/+4
|