summaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Upgrade libtomcrypt 1.16 -> 1.17 (LP#1264130)Dwayne Litzenberger2014-06-2212-311/+375
|\ | | | | | | | | | | | | | | This should fix a FreeBSD build issue: https://bugs.launchpad.net/pycrypto/+bug/1264130 Thanks to Richard Mitchell <richard.j.mitchell@gmail.com> for suggesting how to fix this.
| * PyCrypto customizations: Declare things static so that we don't leak symbolsDwayne Litzenberger2014-06-222-28/+28
| |
| * Pristine files from libtomcrypt-1.17Dwayne Litzenberger2014-06-2214-0/+6010
| | | | | | | | | | | | | | | | | | Original tarball downloaded from: http://libtom.org/files/crypt-1.17.tar.bz2 http://libtom.org/files/crypt-1.17.tar.bz2.sig SHA256 sums: e33b47d77a495091c8703175a25c8228aff043140b2554c08a3c3cd71f79d116 *crypt-1.17.tar.bz2 8f52ddfb17656f7a2e510d92a26c8b33e0c1f431af7febd9cf1298a77b5fd932 *crypt-1.17.tar.bz2.sig libtomcrypt-1.17/LICENSE says: LibTomCrypt is public domain. As should all quality software be. Tom St Denis
* DES3: Move "Two-key 3DES" support into DES.c instead of customizing ↵Dwayne Litzenberger2014-06-222-14/+20
| | | | tomcrypt_des.c
* Workaround missing bit_AES definesSebastian Ramacher2014-06-221-0/+13
| | | | | | | clang provides the same constant as bit_AESNI in some versions, and doesn't provide it at all in others. Signed-off-by: Sebastian Ramacher <sebastian+dev@ramacher.at>
* Fix compilation with clang-3.3Sebastian Ramacher2014-06-221-8/+9
| | | | | | clang-3.3 is stricter regarding the second argument of _mm_shuffle_epi32. Signed-off-by: Sebastian Ramacher <sebastian+dev@ramacher.at>
* Merge branch 'fix-aesni-aligned-malloc'Dwayne Litzenberger2014-02-221-1/+5
|\
| * AESNI: Fix order of alignment & size args in _aligned_mallocDwayne Litzenberger2014-02-221-1/+5
| |
* | Regenerate autoconf filesDwayne Litzenberger2014-02-221-0/+9
|/
* Clean up AESNI aligned malloc() wrappersDwayne Litzenberger2014-02-221-33/+22
| | | | | | | - Set errno properly when using posix_memalign - Rename to aligned_malloc_wrapper / aligned_free_wrapper - Use a single set of #if blocks, to avoid the possibility of mismatching them.
* Merge pull request #62 (Fixes AESNI alignment bug)Dwayne Litzenberger2014-02-227-17/+103
|\
| * Prefer C11's aligned_alloc if it is availableSebastian Ramacher2014-02-221-4/+4
| | | | | | | | Signed-off-by: Sebastian Ramacher <sebastian+dev@ramacher.at>
| * Check return value of posix_memalignSebastian Ramacher2014-02-221-1/+3
| | | | | | | | Signed-off-by: Sebastian Ramacher <sebastian+dev@ramacher.at>
| * Add wrapper for freeSebastian Ramacher2014-02-221-6/+19
| | | | | | | | | | | | | | For _aligned_malloc calling free is illegal. We need to use_aligned_free instead. Signed-off-by: Sebastian Ramacher <sebastian+dev@ramacher.at>
| * Add a wrapper for posix_memalign and friendsSebastian Ramacher2013-10-281-17/+22
| | | | | | | | | | | | This also fixes the order of arguments passed to _aligned_malloc. Signed-off-by: Sebastian Ramacher <sebastian+dev@ramacher.at>
| * Make sure that ek and dk are aligned at 16 byte boundariesSebastian Ramacher2013-10-281-4/+44
| | | | | | | | | | | | | | | | ek and dk are used as operands in instructions that require 16 byte alignment. Thanks to Greg Price for finding this issue. Signed-off-by: Sebastian Ramacher <sebastian+dev@ramacher.at>
| * Add block_finalize to clean up block_state from ALGdeallocSebastian Ramacher2013-10-287-0/+26
| | | | | | | | | | | | This is the counterpart to block_init which is called from ALGnew. Signed-off-by: Sebastian Ramacher <sebastian+dev@ramacher.at>
| * Be more consistent with spaces and tabsSebastian Ramacher2013-10-281-13/+13
| | | | | | | | Signed-off-by: Sebastian Ramacher <sebastian+dev@ramacher.at>
* | Fix typo in error stringDwayne Litzenberger2014-02-221-1/+1
| |
* | Fix exception string for incorrect key length (DES)Legrandin2014-02-211-0/+4
| |
* | Throw exception when IV is used with ECB or CTRLegrandin2014-02-211-0/+11
|/ | | | | | | | | | | | The IV parameter is currently ignored when initializing a cipher in ECB or CTR mode. For CTR mode, it is confusing: it takes some time to see that a different parameter is needed (the counter). For ECB mode, it is outright dangerous. This patch forces an exception to be raised.
* block_template: Fix compiler warning (%i -> %zi)Dwayne Litzenberger2013-10-201-1/+1
| | | | | | | | | | | This fixes this warning: In file included from src/CAST.c:453:0: src/block_template.c: In function ‘ALG_Encrypt’: src/block_template.c:426:12: warning: format ‘%i’ expects argument of type ‘int’, but argument 3 has type ‘Py_ssize_t’ [-Wformat=] ctr->buf_size, BLOCK_SIZE); ^
* GCM mode: Optimize key setup for GCM mode.Legrandin2013-10-201-16/+79
| | | | | | | | | | | | | GCM mode requires GHASH for 2 different operations: one for the data (AD + ciphertext) and one for the IV. Construction of tables to speed-up GHASH is very expensive and it is worth doing only for the data, not for the IV. This patch ensures that the GHASH for the IV does not use tables, with a ~40% faster key setup. [dlitz@dlitz.net: Whitespace fixed with "git rebase --whitespace=fix"]
* GCM mode: Optimize GCM speed with pre-computed tables.Legrandin2013-10-201-55/+184
| | | | | | | | | | | | | | | | | | | Tables take 64KByte per each key. Encryption performance is more than doubled (29 MBps vs 8MBps for AES128). As a drawback, key setup is much slower (1300 key/s on the same machine). [dlitz@dlitz.net: Replaced MacMismatchError with ValueError] [dlitz@dlitz.net: Replaced ApiUsageError with TypeError] [dlitz@dlitz.net: Included changes from the following commits from the author's pull request:] - [9c13f9c] Rename 'IV' parameter to 'nonce' for AEAD modes. - [ca460a7] Made blockalgo.py more PEP-8 compliant; The second parameter of the _GHASH constructor is now the length of the block (block_size) and not the full module. [dlitz@dlitz.net: Whitespace fixed with "git rebase --whitespace=fix"]
* Add support for GCM mode (AES only).Legrandin2013-10-201-0/+234
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | The main change done by this commit is adding support for MODE_GCM (NIST SP 800 38D). Test vectors are included. The mode uses a C extension (Crypto.Util.galois._ghash) to compute the GHASH step. The C implementation is the most basic one and it is still significantly (5x times) slower than CTR. Optimizations can be introduced using tables (CPU/memory trade-off) or even AES NI instructions on newer x86 CPUs. This patch also simplifies Crypto.Cipher.blockalgo.py by: * removing duplicated code previously shared by digest() and verify(). * removing duplicated code previously shared by Crypto.Hash.CMAC and Crypto.Cipher.block_algo (management of internal buffers for MACs that can only operate on block aligned data, like CMAC, CBCMAC, and now also GHASH). [dlitz@dlitz.net: Included changes from the following commits from the author's pull request:] - [9c13f9c] Rename 'IV' parameter to 'nonce' for AEAD modes. - [ca460a7] Made blockalgo.py more PEP-8 compliant; The second parameter of the _GHASH constructor is now the length of the block (block_size) and not the full module. [dlitz@dlitz.net: Replaced MacMismatchError with ValueError] [dlitz@dlitz.net: Replaced ApiUsageError with TypeError] [dlitz@dlitz.net: Replaced renamed variable `ht` with original `h`] [dlitz@dlitz.net: Whitespace fixed with "git rebase --whitespace=fix"]
* Clarify message about incorrect length in the counter block.Legrandin2013-10-201-2/+2
| | | | | | When the counter function returns an incorrect counter block to the cipher in CTR mode, the error message includes both the required and the provided amount of data (in bytes).
* FIX #1096857. Update reference to FIPS 180-4.Legrandin2013-07-144-4/+4
| | | | Closes: https://bugs.launchpad.net/pycrypto/+bug/1096857
* Fixed MODE_OFB requiring paddingdev-jjc2013-07-141-20/+42
| | | | | | Closes: https://bugs.launchpad.net/pycrypto/+bug/996193 Closes: https://github.com/dlitz/pycrypto/pull/26 [dlitz: Squashed and fixed whitespace.]
* Improve C extension autodocsDwayne Litzenberger2013-07-1410-20/+162
| | | | | | | | - Add __all__ to C cipher & hash modules - Update hash module docstrings to document the block_size and digest_size variables. Closes: https://bugs.launchpad.net/pycrypto/+bug/1179255
* Py3k cleanup: bytes/string -> bytestring in error messagesDwayne Litzenberger2013-07-141-15/+3
|
* Py3k cleanup: Module initializationDwayne Litzenberger2013-07-147-101/+188
|
* Py3k cleanup: Remove PyModule_GetDictDwayne Litzenberger2013-07-141-10/+8
| | | | Also rename _fastmath_module -> m for consistency
* Py3k cleanup: PyBytesObjectDwayne Litzenberger2013-07-141-4/+0
|
* Py3k cleanup: Always use tp_getattroDwayne Litzenberger2013-07-147-231/+102
|
* Py3k cleanup: PyMODINIT_FUNCDwayne Litzenberger2013-07-145-18/+4
|
* Py3k cleanup: OB_SIZEDwayne Litzenberger2013-07-141-18/+10
|
* Py3k cleanup: PyVarObject_HEAD_INITDwayne Litzenberger2013-07-147-40/+1
|
* Py3k cleanup: PyType_ReadyDwayne Litzenberger2013-07-147-15/+21
|
* Py3k cleanup: PyInt_CheckExact & PyInt_AS_LONGDwayne Litzenberger2013-07-142-11/+3
|
* Py3k cleanup: staticforward and Py_TYPEDwayne Litzenberger2013-07-145-17/+4
|
* Py3k cleanup: METH_ODwayne Litzenberger2013-07-143-10/+3
|
* Py3k cleanup: PyModule_AddIntConstantDwayne Litzenberger2013-07-145-24/+12
|
* Py3k cleanup: Remove unused is_ALGobject macroDwayne Litzenberger2013-07-143-6/+0
|
* Py3k cleanup: Define PyLong_SHIFT and PyLong_MASK in Python 2.5 and belowDwayne Litzenberger2013-07-142-14/+3
|
* Py3k cleanup: Define PyInt_FromLong for Python 3.x and use itDwayne Litzenberger2013-07-146-19/+12
| | | | | | This is the first of a series of changes that aims to reduce code duplication between the Python 3 and Python 2 versions of the C extensions.
* whitespaceDwayne Litzenberger2013-07-141-12/+12
|
* Remove pointless 'error' attribute from stream ciphersDwayne Litzenberger2013-07-141-6/+1
| | | | | Many years ago, this was removed from block_template, but not from stream_template.
* Add ABI check when importing _counter from block_templateDwayne Litzenberger2013-07-143-0/+26
|
* Counter: Deprecate disable_shortcut; Remove __PCT_CTR_SHORTCUT__ entirelyDwayne Litzenberger2013-07-143-22/+4
| | | | | | | | | | | | The `disable_shortcut` option served as a workaround in case `__PCT_CTR_SHORTCUT__` leaked through a wrapper object, but I don't think anyone actually used it, and it was a bad idea to expose it as part of the public API. Now that we do strong type checking inside block_template.c, there shoujld be no need to ever use this option. It's now a no-op, retained for backward compatibility only. It will be removed in some future version of PyCrypto.
* Fix MODE_CTR memory leak under Python 3Dwayne Litzenberger2013-07-142-18/+34
| | | | | | | | | The leak arose from the string creation in this line: PyObject_HasAttr(counter, PyUnicode_FromString("__PCT_CTR_SHORTCUT__")) This commit replaces the __PCT_CTR_SHORTCUT__ hack with code that imports the _counter module and checks the appropriate types.