diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/DES.c | 4 | ||||
-rw-r--r-- | src/block_template.c | 11 |
2 files changed, 15 insertions, 0 deletions
@@ -50,7 +50,11 @@ static void ltcseterr(int rc) break; case CRYPT_INVALID_KEYSIZE: +#ifdef PCT_DES3_MODULE PyErr_SetString(PyExc_ValueError, "Invalid key size (must be either 16 or 24 bytes long)"); +#else + PyErr_SetString(PyExc_ValueError, "Invalid key size (must be 8 bytes long)"); +#endif break; case CRYPT_INVALID_ROUNDS: diff --git a/src/block_template.c b/src/block_template.c index eec03d3..99aee43 100644 --- a/src/block_template.c +++ b/src/block_template.c @@ -159,6 +159,17 @@ ALGnew(PyObject *self, PyObject *args, PyObject *kwdict) "Key cannot be the null string"); return NULL; } + if (IVlen != 0 && mode == MODE_ECB) + { + PyErr_Format(PyExc_ValueError, "ECB mode does not use IV"); + return NULL; + } + if (IVlen != 0 && mode == MODE_CTR) + { + PyErr_Format(PyExc_ValueError, + "CTR mode needs counter parameter, not IV"); + return NULL; + } if (IVlen != BLOCK_SIZE && mode != MODE_ECB && mode != MODE_CTR) { PyErr_Format(PyExc_ValueError, |