summaryrefslogtreecommitdiffstats
path: root/src/crypto.h
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2013-11-30 05:34:49 +0100
committerMatthias Schiffer <mschiffer@universe-factory.net>2013-11-30 05:35:18 +0100
commitaa1d894e102e23d162b8e2bccd4b3bf1700de2f2 (patch)
tree3027bc84e829650a798071ad9e13f4391260328b /src/crypto.h
parent5f7258ade2dd8bad076d17d3a85fb04d9bf71bda (diff)
downloadfastd-aa1d894e102e23d162b8e2bccd4b3bf1700de2f2.tar
fastd-aa1d894e102e23d162b8e2bccd4b3bf1700de2f2.zip
Make the crypto implementations independent of fastd.h (and fix more minor bugs)
Diffstat (limited to 'src/crypto.h')
-rw-r--r--src/crypto.h36
1 files changed, 29 insertions, 7 deletions
diff --git a/src/crypto.h b/src/crypto.h
index c52fd42..124d06d 100644
--- a/src/crypto.h
+++ b/src/crypto.h
@@ -27,7 +27,10 @@
#ifndef _FASTD_CRYPTO_H_
#define _FASTD_CRYPTO_H_
-#include "fastd.h"
+#include "types.h"
+
+#include <stdlib.h>
+#include <string.h>
struct fastd_cipher_info {
@@ -38,9 +41,9 @@ struct fastd_cipher_info {
struct fastd_cipher {
bool (*available)(void);
- fastd_cipher_state_t* (*init)(fastd_context_t *ctx, const uint8_t *key);
- bool (*crypt)(fastd_context_t *ctx, const fastd_cipher_state_t *state, fastd_block128_t *out, const fastd_block128_t *in, size_t len, const uint8_t *iv);
- void (*free)(fastd_context_t *ctx, fastd_cipher_state_t *state);
+ fastd_cipher_state_t* (*init)(const uint8_t *key);
+ bool (*crypt)(const fastd_cipher_state_t *state, fastd_block128_t *out, const fastd_block128_t *in, size_t len, const uint8_t *iv);
+ void (*free)(fastd_cipher_state_t *state);
};
@@ -51,9 +54,9 @@ struct fastd_mac_info {
struct fastd_mac {
bool (*available)(void);
- fastd_mac_state_t* (*init)(fastd_context_t *ctx, const uint8_t *key);
- bool (*hash)(fastd_context_t *ctx, const fastd_mac_state_t *state, fastd_block128_t *out, const fastd_block128_t *in, size_t n_blocks);
- void (*free)(fastd_context_t *ctx, fastd_mac_state_t *state);
+ fastd_mac_state_t* (*init)(const uint8_t *key);
+ bool (*hash)(const fastd_mac_state_t *state, fastd_block128_t *out, const fastd_block128_t *in, size_t n_blocks);
+ void (*free)(fastd_mac_state_t *state);
};
@@ -71,4 +74,23 @@ bool fastd_mac_config(const fastd_mac_t **mac_conf, const char *name, const char
const fastd_mac_info_t* fastd_mac_info_get_by_name(const char *name);
const fastd_mac_t* fastd_mac_get(fastd_context_t *ctx, const fastd_mac_info_t *info);
+
+static inline void secure_memzero(void *s, size_t n) {
+ memset(s, 0, n);
+ __asm__ volatile("" : : "m"(s));
+}
+
+static inline void xor(fastd_block128_t *x, fastd_block128_t a, fastd_block128_t b) {
+ x->qw[0] = a.qw[0] ^ b.qw[0];
+ x->qw[1] = a.qw[1] ^ b.qw[1];
+}
+
+static inline void xor_a(fastd_block128_t *x, fastd_block128_t a) {
+ xor(x, *x, a);
+}
+
+static inline bool fastd_true(void) {
+ return true;
+}
+
#endif /* _FASTD_CRYPTO_H_ */