summaryrefslogtreecommitdiffstats
path: root/src/crypto/mac/ghash/pclmulqdq/ghash_pclmulqdq.h
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2013-11-28 04:31:25 +0100
committerMatthias Schiffer <mschiffer@universe-factory.net>2013-11-28 04:31:25 +0100
commitac55a91fe94b78bde373169264e6b7a180c39f04 (patch)
tree33f9a38de1e7056d02ca61c82a41e604dabdf232 /src/crypto/mac/ghash/pclmulqdq/ghash_pclmulqdq.h
parentca49096f5d02e351b928b2fd584bd7ca0d5fcf1f (diff)
downloadfastd-ac55a91fe94b78bde373169264e6b7a180c39f04.tar
fastd-ac55a91fe94b78bde373169264e6b7a180c39f04.zip
Add a pclmulqdq ghash implementation
Diffstat (limited to 'src/crypto/mac/ghash/pclmulqdq/ghash_pclmulqdq.h')
-rw-r--r--src/crypto/mac/ghash/pclmulqdq/ghash_pclmulqdq.h45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/crypto/mac/ghash/pclmulqdq/ghash_pclmulqdq.h b/src/crypto/mac/ghash/pclmulqdq/ghash_pclmulqdq.h
new file mode 100644
index 0000000..f2bc916
--- /dev/null
+++ b/src/crypto/mac/ghash/pclmulqdq/ghash_pclmulqdq.h
@@ -0,0 +1,45 @@
+/*
+ Copyright (c) 2012-2013, Matthias Schiffer <mschiffer@universe-factory.net>
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+
+#include "../../../../crypto.h"
+
+
+typedef union _v2di {
+ uint64_t v __attribute__((vector_size(16)));
+ char v16 __attribute__((vector_size(16)));
+ long long int vll __attribute__((vector_size(16)));
+ uint64_t e[2];
+ fastd_block128_t block;
+} v2di;
+
+
+struct fastd_mac_state {
+ v2di H;
+};
+
+
+fastd_mac_state_t* fastd_ghash_pclmulqdq_init_state(fastd_context_t *ctx, const fastd_mac_context_t *mctx, const uint8_t *key);
+bool fastd_ghash_pclmulqdq_hash(fastd_context_t *ctx, const fastd_mac_state_t *state, fastd_block128_t *out, const fastd_block128_t *in, size_t n_blocks);