#ifndef PQCLEAN_MLDSA87_AARCH64_PACKING_H #define PQCLEAN_MLDSA87_AARCH64_PACKING_H /* * This file is dual licensed * under Apache 2.0 (https://www.apache.org/licenses/LICENSE-2.0.html) * or public domain at https://github.com/pq-crystals/dilithium */ #include "params.h" #include "polyvec.h" #include #define pack_pk DILITHIUM_NAMESPACE(pack_pk) void pack_pk(uint8_t pk[DILITHIUM_CRYPTO_PUBLICKEYBYTES], const uint8_t rho[SEEDBYTES], const polyveck *t1); #define pack_sk DILITHIUM_NAMESPACE(pack_sk) void pack_sk(uint8_t sk[DILITHIUM_CRYPTO_SECRETKEYBYTES], const uint8_t rho[SEEDBYTES], const uint8_t tr[TRBYTES], const uint8_t key[SEEDBYTES], const polyveck *t0, const polyvecl *s1, const polyveck *s2); #define pack_sig DILITHIUM_NAMESPACE(pack_sig) void pack_sig(uint8_t sig[DILITHIUM_CRYPTO_BYTES], const uint8_t c[CTILDEBYTES], const polyvecl *z, const polyveck *h); #define unpack_pk DILITHIUM_NAMESPACE(unpack_pk) void unpack_pk(uint8_t rho[SEEDBYTES], polyveck *t1, const uint8_t pk[DILITHIUM_CRYPTO_PUBLICKEYBYTES]); #define unpack_sk DILITHIUM_NAMESPACE(unpack_sk) void unpack_sk(uint8_t rho[SEEDBYTES], uint8_t tr[TRBYTES], uint8_t key[SEEDBYTES], polyveck *t0, polyvecl *s1, polyveck *s2, const uint8_t sk[DILITHIUM_CRYPTO_SECRETKEYBYTES]); #define unpack_sig DILITHIUM_NAMESPACE(unpack_sig) int unpack_sig(uint8_t c[CTILDEBYTES], polyvecl *z, polyveck *h, const uint8_t sig[DILITHIUM_CRYPTO_BYTES]); #endif