_gcry_cipher_ccm_set_nonce (gcry_cipher_hd_t c, const unsigned char *nonce,
size_t noncelen)
{
+ unsigned int marks_key;
size_t L = 15 - noncelen;
size_t L_;
return GPG_ERR_INV_LENGTH;
/* Reset state */
+ marks_key = c->marks.key;
memset (&c->u_mode, 0, sizeof(c->u_mode));
memset (&c->marks, 0, sizeof(c->marks));
memset (&c->u_iv, 0, sizeof(c->u_iv));
memset (&c->u_ctr, 0, sizeof(c->u_ctr));
memset (c->lastiv, 0, sizeof(c->lastiv));
c->unused = 0;
+ c->marks.key = marks_key;
/* Setup CTR */
c->u_ctr.ctr[0] = L_;
{
gcry_err_code_t rc;
+ if (c->mode != GCRY_CIPHER_MODE_NONE && !c->marks.key)
+ {
+ log_error ("cipher_encrypt: key not set\n");
+ return GPG_ERR_MISSING_KEY;
+ }
+
switch (c->mode)
{
case GCRY_CIPHER_MODE_ECB:
{
gcry_err_code_t rc;
+ if (c->mode != GCRY_CIPHER_MODE_NONE && !c->marks.key)
+ {
+ log_error ("cipher_decrypt: key not set\n");
+ return GPG_ERR_MISSING_KEY;
+ }
+
switch (c->mode)
{
case GCRY_CIPHER_MODE_ECB: