aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/include/aesni
diff options
context:
space:
mode:
Diffstat (limited to 'include/aesni')
-rw-r--r--include/aesni/api.h48
1 files changed, 48 insertions, 0 deletions
diff --git a/include/aesni/api.h b/include/aesni/api.h
index 6e30b65..6d275a5 100644
--- a/include/aesni/api.h
+++ b/include/aesni/api.h
@@ -71,6 +71,22 @@ static __inline AesBlock128 __fastcall aes128cfb_decrypt(
return _mm_xor_si128(raw_aes128ecb_encrypt(init_vector, key_schedule), cypher);
}
+static __inline AesBlock128 __fastcall aes128ofb_encrypt(
+ AesBlock128 plain,
+ Aes128KeySchedule* key_schedule,
+ AesBlock128 init_vector)
+{
+ return _mm_xor_si128(raw_aes128ecb_encrypt(init_vector, key_schedule), plain);
+}
+
+static __inline AesBlock128 __fastcall aes128ofb_decrypt(
+ AesBlock128 cypher,
+ Aes128KeySchedule* key_schedule,
+ AesBlock128 init_vector)
+{
+ return _mm_xor_si128(raw_aes128ecb_encrypt(init_vector, key_schedule), cypher);
+}
+
static __inline void __fastcall aes192_expand_key_schedule(
AesBlock192* key,
Aes192KeySchedule* key_schedule)
@@ -131,6 +147,22 @@ static __inline AesBlock128 __fastcall aes192cfb_decrypt(
return _mm_xor_si128(raw_aes192ecb_encrypt(init_vector, key_schedule), cypher);
}
+static __inline AesBlock128 __fastcall aes192ofb_encrypt(
+ AesBlock128 plain,
+ Aes192KeySchedule* key_schedule,
+ AesBlock128 init_vector)
+{
+ return _mm_xor_si128(raw_aes192ecb_encrypt(init_vector, key_schedule), plain);
+}
+
+static __inline AesBlock128 __fastcall aes192ofb_decrypt(
+ AesBlock128 cypher,
+ Aes192KeySchedule* key_schedule,
+ AesBlock128 init_vector)
+{
+ return _mm_xor_si128(raw_aes192ecb_encrypt(init_vector, key_schedule), cypher);
+}
+
static __inline void __fastcall aes256_expand_key_schedule(
AesBlock256* key,
Aes256KeySchedule* key_schedule)
@@ -190,3 +222,19 @@ static __inline AesBlock128 __fastcall aes256cfb_decrypt(
{
return _mm_xor_si128(raw_aes256ecb_encrypt(init_vector, key_schedule), cypher);
}
+
+static __inline AesBlock128 __fastcall aes256ofb_encrypt(
+ AesBlock128 plain,
+ Aes256KeySchedule* key_schedule,
+ AesBlock128 init_vector)
+{
+ return _mm_xor_si128(raw_aes256ecb_encrypt(init_vector, key_schedule), plain);
+}
+
+static __inline AesBlock128 __fastcall aes256ofb_decrypt(
+ AesBlock128 cypher,
+ Aes256KeySchedule* key_schedule,
+ AesBlock128 init_vector)
+{
+ return _mm_xor_si128(raw_aes256ecb_encrypt(init_vector, key_schedule), cypher);
+}