mirror of https://github.com/kokke/tiny-AES-c
use size_t for buffer size and its indexes
- this allows using CBC/CTR with buffers larger than 4GB on 64bit systems; Closes: #172 Signed-off-by: Ihor Dutchak <ihor.youw@gmail.com>
This commit is contained in:
parent
3f69a5899e
commit
2ca3e81f3c
12
aes.c
12
aes.c
|
@ -495,9 +495,9 @@ static void XorWithIv(uint8_t* buf, const uint8_t* Iv)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void AES_CBC_encrypt_buffer(struct AES_ctx *ctx, uint8_t* buf, uint32_t length)
|
void AES_CBC_encrypt_buffer(struct AES_ctx *ctx, uint8_t* buf, size_t length)
|
||||||
{
|
{
|
||||||
uintptr_t i;
|
size_t i;
|
||||||
uint8_t *Iv = ctx->Iv;
|
uint8_t *Iv = ctx->Iv;
|
||||||
for (i = 0; i < length; i += AES_BLOCKLEN)
|
for (i = 0; i < length; i += AES_BLOCKLEN)
|
||||||
{
|
{
|
||||||
|
@ -510,9 +510,9 @@ void AES_CBC_encrypt_buffer(struct AES_ctx *ctx, uint8_t* buf, uint32_t length)
|
||||||
memcpy(ctx->Iv, Iv, AES_BLOCKLEN);
|
memcpy(ctx->Iv, Iv, AES_BLOCKLEN);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AES_CBC_decrypt_buffer(struct AES_ctx* ctx, uint8_t* buf, uint32_t length)
|
void AES_CBC_decrypt_buffer(struct AES_ctx* ctx, uint8_t* buf, size_t length)
|
||||||
{
|
{
|
||||||
uintptr_t i;
|
size_t i;
|
||||||
uint8_t storeNextIv[AES_BLOCKLEN];
|
uint8_t storeNextIv[AES_BLOCKLEN];
|
||||||
for (i = 0; i < length; i += AES_BLOCKLEN)
|
for (i = 0; i < length; i += AES_BLOCKLEN)
|
||||||
{
|
{
|
||||||
|
@ -532,11 +532,11 @@ void AES_CBC_decrypt_buffer(struct AES_ctx* ctx, uint8_t* buf, uint32_t length)
|
||||||
#if defined(CTR) && (CTR == 1)
|
#if defined(CTR) && (CTR == 1)
|
||||||
|
|
||||||
/* Symmetrical operation: same function for encrypting as for decrypting. Note any IV/nonce should never be reused with the same key */
|
/* Symmetrical operation: same function for encrypting as for decrypting. Note any IV/nonce should never be reused with the same key */
|
||||||
void AES_CTR_xcrypt_buffer(struct AES_ctx* ctx, uint8_t* buf, uint32_t length)
|
void AES_CTR_xcrypt_buffer(struct AES_ctx* ctx, uint8_t* buf, size_t length)
|
||||||
{
|
{
|
||||||
uint8_t buffer[AES_BLOCKLEN];
|
uint8_t buffer[AES_BLOCKLEN];
|
||||||
|
|
||||||
unsigned i;
|
size_t i;
|
||||||
int bi;
|
int bi;
|
||||||
for (i = 0, bi = AES_BLOCKLEN; i < length; ++i, ++bi)
|
for (i = 0, bi = AES_BLOCKLEN; i < length; ++i, ++bi)
|
||||||
{
|
{
|
||||||
|
|
6
aes.h
6
aes.h
|
@ -69,8 +69,8 @@ void AES_ECB_decrypt(const struct AES_ctx* ctx, uint8_t* buf);
|
||||||
// Suggest https://en.wikipedia.org/wiki/Padding_(cryptography)#PKCS7 for padding scheme
|
// Suggest https://en.wikipedia.org/wiki/Padding_(cryptography)#PKCS7 for padding scheme
|
||||||
// NOTES: you need to set IV in ctx via AES_init_ctx_iv() or AES_ctx_set_iv()
|
// NOTES: you need to set IV in ctx via AES_init_ctx_iv() or AES_ctx_set_iv()
|
||||||
// no IV should ever be reused with the same key
|
// no IV should ever be reused with the same key
|
||||||
void AES_CBC_encrypt_buffer(struct AES_ctx* ctx, uint8_t* buf, uint32_t length);
|
void AES_CBC_encrypt_buffer(struct AES_ctx* ctx, uint8_t* buf, size_t length);
|
||||||
void AES_CBC_decrypt_buffer(struct AES_ctx* ctx, uint8_t* buf, uint32_t length);
|
void AES_CBC_decrypt_buffer(struct AES_ctx* ctx, uint8_t* buf, size_t length);
|
||||||
|
|
||||||
#endif // #if defined(CBC) && (CBC == 1)
|
#endif // #if defined(CBC) && (CBC == 1)
|
||||||
|
|
||||||
|
@ -82,7 +82,7 @@ void AES_CBC_decrypt_buffer(struct AES_ctx* ctx, uint8_t* buf, uint32_t length);
|
||||||
// Suggesting https://en.wikipedia.org/wiki/Padding_(cryptography)#PKCS7 for padding scheme
|
// Suggesting https://en.wikipedia.org/wiki/Padding_(cryptography)#PKCS7 for padding scheme
|
||||||
// NOTES: you need to set IV in ctx with AES_init_ctx_iv() or AES_ctx_set_iv()
|
// NOTES: you need to set IV in ctx with AES_init_ctx_iv() or AES_ctx_set_iv()
|
||||||
// no IV should ever be reused with the same key
|
// no IV should ever be reused with the same key
|
||||||
void AES_CTR_xcrypt_buffer(struct AES_ctx* ctx, uint8_t* buf, uint32_t length);
|
void AES_CTR_xcrypt_buffer(struct AES_ctx* ctx, uint8_t* buf, size_t length);
|
||||||
|
|
||||||
#endif // #if defined(CTR) && (CTR == 1)
|
#endif // #if defined(CTR) && (CTR == 1)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue