1f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project/* LibTomCrypt, modular cryptographic library -- Tom St Denis
2f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project *
3f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project * LibTomCrypt is a library that provides various cryptographic
4f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project * algorithms in a highly modular and flexible manner.
5f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project *
6f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project * The library is free for all purposes without any express
7f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project * guarantee it works.
8f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project *
9f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project * Tom St Denis, tomstdenis@gmail.com, http://libtomcrypt.com
10f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project */
11f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#include "tomcrypt.h"
12f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project
13f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project/**
14f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project   @file ofb_getiv.c
15f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project   OFB implementation, get IV, Tom St Denis
16f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project*/
17f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project
18f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#ifdef LTC_OFB_MODE
19f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project
20f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project/**
21f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project   Get the current initial vector
22f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project   @param IV   [out] The destination of the initial vector
23f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project   @param len  [in/out]  The max size and resulting size of the initial vector
24f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project   @param ofb  The OFB state
25f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project   @return CRYPT_OK if successful
26f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project*/
27f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectint ofb_getiv(unsigned char *IV, unsigned long *len, symmetric_OFB *ofb)
28f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project{
29f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project   LTC_ARGCHK(IV  != NULL);
30f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project   LTC_ARGCHK(len != NULL);
31f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project   LTC_ARGCHK(ofb != NULL);
32f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project   if ((unsigned long)ofb->blocklen > *len) {
33f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project      *len = ofb->blocklen;
34f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project      return CRYPT_BUFFER_OVERFLOW;
35f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project   }
36f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project   XMEMCPY(IV, ofb->IV, ofb->blocklen);
37f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project   *len = ofb->blocklen;
38f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project
39f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project   return CRYPT_OK;
40f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project}
41f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project
42f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#endif
43f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project
44f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project/* $Source: /cvs/libtom/libtomcrypt/src/modes/ofb/ofb_getiv.c,v $ */
45f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project/* $Revision: 1.6 $ */
46f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project/* $Date: 2006/06/29 01:51:34 $ */
47