Logo Search packages:      
Sourcecode: libtomcrypt version File versions  Download package

int f9_memory_multi ( int  cipher,
const unsigned char *  key,
unsigned long  keylen,
unsigned char *  out,
unsigned long *  outlen,
const unsigned char *  in,
unsigned long  inlen,

f9 multiple blocks of memory

cipherThe index of the desired cipher
keyThe secret key
keylenThe length of the secret key (octets)
out[out] The destination of the authentication tag
outlen[in/out] The max size and resulting size of the authentication tag (octets)
inThe data to send through f9
inlenThe length of the data to send through f9 (octets)
...tuples of (data,len) pairs to f9, terminated with a (NULL,x) (x=don't care)
CRYPT_OK if successful

Definition at line 33 of file f9_memory_multi.c.

References f9_done(), f9_init(), f9_process(), and zeromem().

   int                  err;
   f9_state          *f9;
   va_list              args;
   const unsigned char *curptr;
   unsigned long        curlen;

   LTC_ARGCHK(key    != NULL);
   LTC_ARGCHK(in     != NULL);
   LTC_ARGCHK(out    != NULL);
   LTC_ARGCHK(outlen != NULL);

   /* allocate ram for f9 state */
   f9 = XMALLOC(sizeof(f9_state));
   if (f9 == NULL) {
      return CRYPT_MEM;

   /* f9 process the message */
   if ((err = f9_init(f9, cipher, key, keylen)) != CRYPT_OK) {
      goto LBL_ERR;
   va_start(args, inlen);
   curptr = in; 
   curlen = inlen;
   for (;;) {
      /* process buf */
      if ((err = f9_process(f9, curptr, curlen)) != CRYPT_OK) {
         goto LBL_ERR;
      /* step to next */
      curptr = va_arg(args, const unsigned char*);
      if (curptr == NULL) {
      curlen = va_arg(args, unsigned long);
   if ((err = f9_done(f9, out, outlen)) != CRYPT_OK) {
      goto LBL_ERR;
   zeromem(f9, sizeof(f9_state));
   return err;   

Here is the call graph for this function:

Generated by  Doxygen 1.6.0   Back to index