Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
ruanhaishen
Tiny AES C
Commits
405f6e5e
Commit
405f6e5e
authored
Jun 06, 2017
by
Matteo Brichese
Browse files
Encrypt CBC works
parent
20894622
Changes
2
Show whitespace changes
Inline
Side-by-side
aes.c
View file @
405f6e5e
...
...
@@ -503,9 +503,9 @@ static void XorWithIv(uint8_t* buf)
void
AES_CBC_encrypt_buffer
(
uint8_t
*
output
,
uint8_t
*
input
,
uint32_t
length
,
const
uint8_t
*
key
,
const
uint8_t
*
iv
)
{
uintptr_t
i
;
uint8_t
remainders
=
length
%
KEYLEN
;
/* Remaining bytes in the last non-full block */
uint8_t
extra
=
length
%
16
;
/* Remaining bytes in the last non-full block */
memcpy
(
output
,
input
,
KEYLEN
);
memcpy
(
output
,
input
,
16
);
state
=
(
state_t
*
)
output
;
// Skip the key expansion if key is passed as 0
...
...
@@ -520,21 +520,22 @@ void AES_CBC_encrypt_buffer(uint8_t* output, uint8_t* input, uint32_t length, co
Iv
=
(
uint8_t
*
)
iv
;
}
for
(
i
=
0
;
i
<
length
-
remainders
;
i
+=
KEYLEN
)
for
(
i
=
0
;
i
<
length
;
i
+=
16
)
{
XorWithIv
(
input
);
memcpy
(
output
,
input
,
KEYLEN
);
memcpy
(
output
,
input
,
16
);
state
=
(
state_t
*
)
output
;
Cipher
();
Iv
=
output
;
input
+=
KEYLEN
;
output
+=
KEYLEN
;
input
+=
16
;
output
+=
16
;
//printf("Step %d - %d", i/16, i);
}
if
(
remainders
)
if
(
extra
)
{
memcpy
(
output
,
input
,
remainders
);
//
mem
set
(output
+ remainders, 0, KEYLEN - remainders); /* add 0-padding */
printf
(
"NONO
\n
"
);
mem
cpy
(
output
,
input
,
extra
);
state
=
(
state_t
*
)
output
;
Cipher
();
}
...
...
@@ -543,9 +544,9 @@ void AES_CBC_encrypt_buffer(uint8_t* output, uint8_t* input, uint32_t length, co
void
AES_CBC_decrypt_buffer
(
uint8_t
*
output
,
uint8_t
*
input
,
uint32_t
length
,
const
uint8_t
*
key
,
const
uint8_t
*
iv
)
{
uintptr_t
i
;
uint8_t
remainders
=
length
%
KEYLEN
;
/* Remaining bytes in the last non-full block */
uint8_t
extra
=
length
%
16
;
/* Remaining bytes in the last non-full block */
memcpy
(
output
,
input
,
KEYLEN
);
memcpy
(
output
,
input
,
16
);
state
=
(
state_t
*
)
output
;
// Skip the key expansion if key is passed as 0
...
...
@@ -561,21 +562,20 @@ void AES_CBC_decrypt_buffer(uint8_t* output, uint8_t* input, uint32_t length, co
Iv
=
(
uint8_t
*
)
iv
;
}
for
(
i
=
0
;
i
<
length
;
i
+=
KEYLEN
)
for
(
i
=
0
;
i
<
length
;
i
+=
16
)
{
memcpy
(
output
,
input
,
KEYLEN
);
memcpy
(
output
,
input
,
16
);
state
=
(
state_t
*
)
output
;
InvCipher
();
XorWithIv
(
output
);
Iv
=
input
;
input
+=
KEYLEN
;
output
+=
KEYLEN
;
input
+=
16
;
output
+=
16
;
}
if
(
remainders
)
if
(
extra
)
{
memcpy
(
output
,
input
,
KEYLEN
);
memset
(
output
+
remainders
,
0
,
KEYLEN
-
remainders
);
/* add 0-padding */
memcpy
(
output
,
input
,
extra
);
state
=
(
state_t
*
)
output
;
InvCipher
();
}
...
...
aes.h
View file @
405f6e5e
...
...
@@ -18,7 +18,7 @@
#define ECB 1
#endif
#define AES
256
#define AES
128
#if defined(ECB) && ECB
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment