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; |