Diff for /libaitio/src/crypt.c between versions 1.6 and 1.7

version 1.6, 2012/05/14 12:49:21 version 1.7, 2012/07/03 08:51:05
Line 51  SUCH DAMAGE. Line 51  SUCH DAMAGE.
  *   *
  * @pInput = input buffer   * @pInput = input buffer
  * @inLen = input buffer len   * @inLen = input buffer len
 * @ppOutput = output allocated buffe, must be free after use * @ppOutput = output allocated buffe, must be io_free after use
  * @Cipher = cipher engine, like EVP_bf_cbc() or etc...   * @Cipher = cipher engine, like EVP_bf_cbc() or etc...
  * @pKey = key   * @pKey = key
  * @pIV = IV, salt (8 bytes)   * @pIV = IV, salt (8 bytes)
Line 68  ioCipher(u_char *pInput, int inLen, u_char **ppOutput, Line 68  ioCipher(u_char *pInput, int inLen, u_char **ppOutput,
   
         if (!pInput || !inLen || !ppOutput || nMode & 0xFFFFFFFE)          if (!pInput || !inLen || !ppOutput || nMode & 0xFFFFFFFE)
                 return 0;                  return 0;
        buf = malloc(inLen + EVP_MAX_BLOCK_LENGTH);        buf = io_malloc(inLen + EVP_MAX_BLOCK_LENGTH);
         if (!buf) {          if (!buf) {
                 LOGERR;                  LOGERR;
                 goto end;                  goto end;
Line 84  ioCipher(u_char *pInput, int inLen, u_char **ppOutput, Line 84  ioCipher(u_char *pInput, int inLen, u_char **ppOutput,
                 if (!EVP_CipherUpdate(&ctx, buf + outlen, &buflen, pos, chunk)) {                  if (!EVP_CipherUpdate(&ctx, buf + outlen, &buflen, pos, chunk)) {
                         EVP_CIPHER_CTX_cleanup(&ctx);                          EVP_CIPHER_CTX_cleanup(&ctx);
                         outlen = 0;                          outlen = 0;
                        free(buf);                        io_free(buf);
                         buf = NULL;                          buf = NULL;
                         goto end;                          goto end;
                 } else {                  } else {
Line 97  ioCipher(u_char *pInput, int inLen, u_char **ppOutput, Line 97  ioCipher(u_char *pInput, int inLen, u_char **ppOutput,
         }          }
         if (!EVP_CipherFinal_ex(&ctx, buf + outlen, &buflen)) {          if (!EVP_CipherFinal_ex(&ctx, buf + outlen, &buflen)) {
                 outlen = 0;                  outlen = 0;
                free(buf);                io_free(buf);
                 buf = NULL;                  buf = NULL;
         } else          } else
                 outlen += buflen;                  outlen += buflen;
Line 113  end: Line 113  end:
  *   *
  * @pInput = input buffer   * @pInput = input buffer
  * @inLen = input buffer len   * @inLen = input buffer len
 * @ppOutput = output allocated buffe, must be free after use * @ppOutput = output allocated buffe, must be io_free after use
  * @pKey = key   * @pKey = key
  * @pIV = IV, salt (8 bytes)   * @pIV = IV, salt (8 bytes)
  * @nMode = Mode 0 - decrypting or 1 - encrypting   * @nMode = Mode 0 - decrypting or 1 - encrypting
Line 135  io_Blowfish(u_char *pInput, int inLen, u_char **ppOutp Line 135  io_Blowfish(u_char *pInput, int inLen, u_char **ppOutp
                 str = strdup((char*) pInput);                  str = strdup((char*) pInput);
         } else {          } else {
                 len = strlen((char*) pInput) / 2;                  len = strlen((char*) pInput) / 2;
                str = malloc(len + 1);                str = io_malloc(len + 1);
                 if (!str) {                  if (!str) {
                         LOGERR;                          LOGERR;
                         return 0;                          return 0;
Line 149  io_Blowfish(u_char *pInput, int inLen, u_char **ppOutp Line 149  io_Blowfish(u_char *pInput, int inLen, u_char **ppOutp
         }          }
   
         ret = len = ioCipher((u_char*) str, len, &buf, EVP_bf_cbc(), pKey, pIV, nMode);          ret = len = ioCipher((u_char*) str, len, &buf, EVP_bf_cbc(), pKey, pIV, nMode);
        free(str);        io_free(str);
   
         if (nMode) {          if (nMode) {
                 ret *= 2;                  ret *= 2;
                *ppOutput = malloc(ret + 1);                *ppOutput = io_malloc(ret + 1);
                 if (!*ppOutput) {                  if (!*ppOutput) {
                         LOGERR;                          LOGERR;
                         return 0;                          return 0;
Line 177  io_Blowfish(u_char *pInput, int inLen, u_char **ppOutp Line 177  io_Blowfish(u_char *pInput, int inLen, u_char **ppOutp
  *   *
  * @pInput = Input buffer with ASCII   * @pInput = Input buffer with ASCII
  * @inLen = Input buffer data length   * @inLen = Input buffer data length
 * @ppOutput = Output buffer with cipher data, must be free after use * @ppOutput = Output buffer with cipher data, must be io_free after use
  * @pKey = Key   * @pKey = Key
  * @IV = IVector/Nonce/Counter, Warning: IV must be variable, because we write there!!!   * @IV = IVector/Nonce/Counter, Warning: IV must be variable, because we write there!!!
  * return: -1 error or >-1 how many cipher blocks proceeded   * return: -1 error or >-1 how many cipher blocks proceeded
Line 193  io_ctr_AES(u_char *pInput, int inLen, u_char **ppOutpu Line 193  io_ctr_AES(u_char *pInput, int inLen, u_char **ppOutpu
         if (!pInput || !inLen || !ppOutput)          if (!pInput || !inLen || !ppOutput)
                 return -1;                  return -1;
   
        *ppOutput = malloc(inLen);        *ppOutput = io_malloc(inLen);
         if (!*ppOutput) {          if (!*ppOutput) {
                 LOGERR;                  LOGERR;
                 return -1;                  return -1;
Line 209  io_ctr_AES(u_char *pInput, int inLen, u_char **ppOutpu Line 209  io_ctr_AES(u_char *pInput, int inLen, u_char **ppOutpu
                                 (inLen / (AES_BLOCK_SIZE - 1)) ? (AES_BLOCK_SIZE - 1) : inLen,                                   (inLen / (AES_BLOCK_SIZE - 1)) ? (AES_BLOCK_SIZE - 1) : inLen, 
                                 &key, IV, ecount_buf, &num);                                  &key, IV, ecount_buf, &num);
                 if (num < 1) {                  if (num < 1) {
                        free(*ppOutput);                        io_free(*ppOutput);
                         *ppOutput = NULL;                          *ppOutput = NULL;
                         total = -1;                          total = -1;
                         break;                          break;

Removed from v.1.6  
changed lines
  Added in v.1.7


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>