packages feed

KpqC-0.1.0: cbits/third_party/SMAUG-T/include/key.h

// SPDX-License-Identifier: MIT

#ifndef SMAUGT_KEY_H
#define SMAUGT_KEY_H

#include "poly.h"

#include <stdint.h>

typedef polyvec secret_key;

typedef struct PublicKey {
    uint8_t seed[SMAUGT_PKSEED_BYTES];
    polyvec A[SMAUGT_K];
    polyvec b;
} public_key;

#define expand_A SMAUGT_NAMESPACE(expand_A)
#define expand_b SMAUGT_NAMESPACE(expand_b)
#define expand_s SMAUGT_NAMESPACE(expand_s)
#define gen_pub_key SMAUGT_NAMESPACE(gen_pub_key)

void expand_A(polyvec A[SMAUGT_K],
              const unsigned char seed[SMAUGT_PKSEED_BYTES]);

void expand_b(polyvec *b, const polyvec A[SMAUGT_K], const polyvec *s,
              const uint8_t e_seed[SMAUGT_CRYPTO_BYTES]);

void expand_s(secret_key *sk, const uint8_t seed[SMAUGT_CRYPTO_BYTES]);

void gen_pub_key(public_key *pk, const secret_key *sk,
                 const uint8_t err_seed[SMAUGT_CRYPTO_BYTES]);

#endif /* !SMAUGT_KEY_H */