#ifndef SPX_CONTEXT_H
#define SPX_CONTEXT_H

#include <Library/UefiLib.h>
#include <Library/BaseLib.h>
#include <Library/UefiBootServicesTableLib.h>
#include <Library/BaseMemoryLib.h>
#include <Uefi.h>

#include "params.h"

typedef struct {
    UINT8 pub_seed[SPX_N];
    UINT8 sk_seed[SPX_N];

#ifdef SPX_SHA2
    // sha256 state that absorbed pub_seed
    UINT8 state_seeded[40];

# if SPX_SHA512
    // sha512 state that absorbed pub_seed
    UINT8 state_seeded_512[72];
# endif
#endif

#ifdef SPX_HARAKA
    UINT64 tweaked512_rc64[10][8];
    UINT32 tweaked256_rc32[10][8];
#endif
} spx_ctx;

#endif
