2003-03-30 Simon Josefsson <jas@extundo.com>
authorMoritz Schulte <mo@g10code.com>
Mon, 31 Mar 2003 00:21:35 +0000 (00:21 +0000)
committerMoritz Schulte <mo@g10code.com>
Mon, 31 Mar 2003 00:21:35 +0000 (00:21 +0000)
* gcrypt.h (enum gcry_control_cmds): Add GCRY_SET_CTR.
(enum gcry_cipher_modes): Add GCRY_CIPHER_MODE_CTR.
(gcry_cipher_setctr): New macro to set counter.

src/ChangeLog
src/gcrypt.h

index 2144e91..702bc5d 100644 (file)
@@ -1,3 +1,9 @@
+2003-03-30  Simon Josefsson  <jas@extundo.com>
+
+       * gcrypt.h (enum gcry_control_cmds): Add GCRY_SET_CTR.
+       (enum gcry_cipher_modes): Add GCRY_CIPHER_MODE_CTR.
+       (gcry_cipher_setctr): New macro to set counter.
+
 2003-03-19  Moritz Schulte  <moritz@g10code.com>
 
        * cipher.h (PUBKEY_FLAG_NO_BLINDING): New symbol.
index 7519cb7..f75fac9 100644 (file)
@@ -175,6 +175,7 @@ enum gcry_control_cmds
     GCRYCTL_FINALIZE,
     GCRYCTL_START_DUMP,
     GCRYCTL_STOP_DUMP,
+    GCRYCTL_SET_CTR
   };
 
 /* Codes for use with gcry_cipher_info and gcry_md_info.  */
@@ -538,7 +539,8 @@ enum gcry_cipher_modes
     GCRY_CIPHER_MODE_CFB    = 2,  /* Cipher feedback. */
     GCRY_CIPHER_MODE_CBC    = 3,  /* Cipher block chaining. */
     GCRY_CIPHER_MODE_STREAM = 4,  /* Used with stream ciphers. */
-    GCRY_CIPHER_MODE_OFB    = 5   /* Outer feedback. */
+    GCRY_CIPHER_MODE_OFB    = 5,  /* Outer feedback. */
+    GCRY_CIPHER_MODE_CTR    = 6   /* Counter. */
   };
 
 /* Flags used with the open function. */ 
@@ -616,6 +618,11 @@ int gcry_cipher_decrypt (GcryCipherHd h,
 #define gcry_cipher_cts(h,on)  gcry_cipher_ctl( (h), GCRYCTL_SET_CBC_CTS, \
                                                                   NULL, on )
 
+/* Set counter for CTR mode.  (K,L) must denote a buffer of block size
+   length, or (NULL,0) to set the CTR to the all-zero block. */
+#define gcry_cipher_setctr(h,k,l)  gcry_cipher_ctl( (h), GCRYCTL_SET_CTR, \
+                                                   (char*)(k), (l) )
+
 /* Retrieved the key length used with algorithm A. */
 #define gcry_cipher_get_algo_keylen(a) \
            gcry_cipher_algo_info( (a), GCRYCTL_GET_KEYLEN, NULL, NULL )