diff options
| author | Mattias Andrée <maandree@kth.se> | 2024-09-15 02:15:08 +0200 |
|---|---|---|
| committer | Mattias Andrée <maandree@kth.se> | 2024-09-15 02:15:08 +0200 |
| commit | d4ce8327ff902b5ecd42d057063c03793e6d91c2 (patch) | |
| tree | 7ec1db1573f12225d6f6c324865b1b49a5a9580d /libkeccak_state_unmarshal.c | |
| parent | m (diff) | |
| download | libkeccak-d4ce8327ff902b5ecd42d057063c03793e6d91c2.tar.gz libkeccak-d4ce8327ff902b5ecd42d057063c03793e6d91c2.tar.bz2 libkeccak-d4ce8327ff902b5ecd42d057063c03793e6d91c2.tar.xz | |
Organise files
Signed-off-by: Mattias Andrée <maandree@kth.se>
Diffstat (limited to 'libkeccak_state_unmarshal.c')
| -rw-r--r-- | libkeccak_state_unmarshal.c | 66 |
1 files changed, 0 insertions, 66 deletions
diff --git a/libkeccak_state_unmarshal.c b/libkeccak_state_unmarshal.c deleted file mode 100644 index f9604a2..0000000 --- a/libkeccak_state_unmarshal.c +++ /dev/null @@ -1,66 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include "common.h" - - -#if defined(__clang__) -# pragma clang diagnostic ignored "-Wcast-align" -#endif - - -/** - * Unmarshal a `struct libkeccak_state` from a buffer - * - * @param state The slot for the unmarshalled state, must not be - * initialised (memory leak otherwise), can be `NULL` - * @param data_ The input buffer - * @return The number of bytes read from `data`, 0 on error - */ -size_t -libkeccak_state_unmarshal(struct libkeccak_state *restrict state, const void *restrict data_) -{ -#define get(VAR) \ - do {\ - __builtin_memcpy(&state->VAR, data, sizeof(state->VAR));\ - data += sizeof(state->VAR);\ - } while (0) - - const unsigned char *restrict start = data_; - const unsigned char *restrict data = start; - size_t mptr; - - if (!state) { - data += 7U * sizeof(long int); - data += 1U * sizeof(int64_t); - data += sizeof(state->S); - mptr = *(const size_t *)data; - data += 2U * sizeof(size_t); - data += mptr; - return (size_t)(data - start); - } - - get(r); - get(c); - get(n); - get(b); - get(w); - get(wmod); - get(l); - get(nr); - memcpy(state->S, data, sizeof(state->S)); - data += sizeof(state->S); - get(mptr); - get(mlen); - if (state->mptr) { - state->M = malloc(state->mptr * sizeof(char)); - if (!state->M) - return 0; - memcpy(state->M, data, state->mptr * sizeof(char)); - data += state->mptr; - } else { - state->M = NULL; - } - - return (size_t)(data - start); - -#undef get -} |
