Skip to content

Commit

Permalink
Library API header file
Browse files Browse the repository at this point in the history
  • Loading branch information
gregorseiler committed Jun 18, 2020
1 parent 871613e commit fd1cf1a
Show file tree
Hide file tree
Showing 7 changed files with 338 additions and 91 deletions.
2 changes: 2 additions & 0 deletions .travis.yml
Expand Up @@ -14,8 +14,10 @@ script: ./runtests.sh
jobs:
include:
- os: osx
osx_image: xcode11.6
compiler: clang
env:
- CFLAGS="-I/usr/local/opt/openssl@1.1/include/"
- NISTFLAGS="-I/usr/local/opt/openssl@1.1/include/"
- LDFLAGS="-L/usr/local/opt/openssl@1.1/lib/"

Expand Down
1 change: 0 additions & 1 deletion avx2/api.h

This file was deleted.

149 changes: 149 additions & 0 deletions avx2/api.h
@@ -0,0 +1,149 @@
#ifndef API_H
#define API_H

#include <stddef.h>
#include <stdint.h>

#define libpqcrystals_dilithium2_avx2_PUBLICKEYBYTES 1184
#define libpqcrystals_dilithium2_avx2_SECRETKEYBYTES 2800
#define libpqcrystals_dilithium2_avx2_BYTES 2044

int libpqcrystals_dilithium2_avx2_keypair(uint8_t *pk, uint8_t *sk);

int libpqcrystals_dilithium2_avx2_signature(uint8_t *sig, size_t *siglen,
const uint8_t *m, size_t mlen,
const uint8_t *sk);

int libpqcrystals_dilithium2_avx2(uint8_t *sm, size_t *smlen,
const uint8_t *m, size_t mlen,
const uint8_t *sk);

int libpqcrystals_dilithium2_avx2_verify(const uint8_t *sig, size_t siglen,
const uint8_t *m, size_t mlen,
const uint8_t *pk);

int libpqcrystals_dilithium2_avx2_open(uint8_t *m, size_t *mlen,
const uint8_t *sm, size_t smlen,
const uint8_t *pk);

#define libpqcrystals_dilithium2aes_avx2_PUBLICKEYBYTES \
libpqcrystals_dilithium2_avx2_PUBLICKEYBYTES
#define libpqcrystals_dilithium2aes_avx2_SECRETKEYBYTES \
libpqcrystals_dilithium2_avx2_SECRETKEYBYTES
#define libpqcrystals_dilithium2aes_avx2_BYTES \
libpqcrystals_dilithium2_avx2_BYTES

int libpqcrystals_dilithium2aes_avx2_keypair(uint8_t *pk, uint8_t *sk);

int libpqcrystals_dilithium2aes_avx2_signature(uint8_t *sig, size_t *siglen,
const uint8_t *m, size_t mlen,
const uint8_t *sk);

int libpqcrystals_dilithium2aes_avx2(uint8_t *sm, size_t *smlen,
const uint8_t *m, size_t mlen,
const uint8_t *sk);

int libpqcrystals_dilithium2aes_avx2_verify(const uint8_t *sig, size_t siglen,
const uint8_t *m, size_t mlen,
const uint8_t *pk);

int libpqcrystals_dilithium2aes_avx2_open(uint8_t *m, size_t *mlen,
const uint8_t *sm, size_t smlen,
const uint8_t *pk);

#define libpqcrystals_dilithium3_avx2_PUBLICKEYBYTES 1472
#define libpqcrystals_dilithium3_avx2_SECRETKEYBYTES 3504
#define libpqcrystals_dilithium3_avx2_BYTES 2701

int libpqcrystals_dilithium3_avx2_keypair(uint8_t *pk, uint8_t *sk);

int libpqcrystals_dilithium3_avx2_signature(uint8_t *sig, size_t *siglen,
const uint8_t *m, size_t mlen,
const uint8_t *sk);

int libpqcrystals_dilithium3_avx2(uint8_t *sm, size_t *smlen,
const uint8_t *m, size_t mlen,
const uint8_t *sk);

int libpqcrystals_dilithium3_avx2_verify(const uint8_t *sig, size_t siglen,
const uint8_t *m, size_t mlen,
const uint8_t *pk);

int libpqcrystals_dilithium3_avx2_open(uint8_t *m, size_t *mlen,
const uint8_t *sm, size_t smlen,
const uint8_t *pk);

#define libpqcrystals_dilithium3aes_avx2_PUBLICKEYBYTES \
libpqcrystals_dilithium3_avx2_PUBLICKEYBYTES
#define libpqcrystals_dilithium3aes_avx2_SECRETKEYBYTES \
libpqcrystals_dilithium3_avx2_SECRETKEYBYTES
#define libpqcrystals_dilithium3aes_avx2_BYTES \
libpqcrystals_dilithium3_avx2_BYTES

int libpqcrystals_dilithium3aes_avx2_keypair(uint8_t *pk, uint8_t *sk);

int libpqcrystals_dilithium3aes_avx2_signature(uint8_t *sig, size_t *siglen,
const uint8_t *m, size_t mlen,
const uint8_t *sk);

int libpqcrystals_dilithium3aes_avx2(uint8_t *sm, size_t *smlen,
const uint8_t *m, size_t mlen,
const uint8_t *sk);

int libpqcrystals_dilithium3aes_avx2_verify(const uint8_t *sig, size_t siglen,
const uint8_t *m, size_t mlen,
const uint8_t *pk);

int libpqcrystals_dilithium3aes_avx2_open(uint8_t *m, size_t *mlen,
const uint8_t *sm, size_t smlen,
const uint8_t *pk);

#define libpqcrystals_dilithium4_avx2_PUBLICKEYBYTES 1760
#define libpqcrystals_dilithium4_avx2_SECRETKEYBYTES 3856
#define libpqcrystals_dilithium4_avx2_BYTES 3366

int libpqcrystals_dilithium4_avx2_keypair(uint8_t *pk, uint8_t *sk);

int libpqcrystals_dilithium4_avx2_signature(uint8_t *sig, size_t *siglen,
const uint8_t *m, size_t mlen,
const uint8_t *sk);

int libpqcrystals_dilithium4_avx2(uint8_t *sm, size_t *smlen,
const uint8_t *m, size_t mlen,
const uint8_t *sk);

int libpqcrystals_dilithium4_avx2_verify(const uint8_t *sig, size_t siglen,
const uint8_t *m, size_t mlen,
const uint8_t *pk);

int libpqcrystals_dilithium4_avx2_open(uint8_t *m, size_t *mlen,
const uint8_t *sm, size_t smlen,
const uint8_t *pk);

#define libpqcrystals_dilithium4aes_avx2_PUBLICKEYBYTES \
libpqcrystals_dilithium4_avx2_PUBLICKEYBYTES
#define libpqcrystals_dilithium4aes_avx2_SECRETKEYBYTES \
libpqcrystals_dilithium4_avx2_SECRETKEYBYTES
#define libpqcrystals_dilithium4aes_avx2_BYTES \
libpqcrystals_dilithium4_avx2_BYTES

int libpqcrystals_dilithium4aes_avx2_keypair(uint8_t *pk, uint8_t *sk);

int libpqcrystals_dilithium4aes_avx2_signature(uint8_t *sig, size_t *siglen,
const uint8_t *m, size_t mlen,
const uint8_t *sk);

int libpqcrystals_dilithium4aes_avx2(uint8_t *sm, size_t *smlen,
const uint8_t *m, size_t mlen,
const uint8_t *sk);

int libpqcrystals_dilithium4aes_avx2_verify(const uint8_t *sig, size_t siglen,
const uint8_t *m, size_t mlen,
const uint8_t *pk);

int libpqcrystals_dilithium4aes_avx2_open(uint8_t *m, size_t *mlen,
const uint8_t *sm, size_t smlen,
const uint8_t *pk);


#endif
8 changes: 8 additions & 0 deletions avx2/config.h
Expand Up @@ -13,22 +13,30 @@

#ifdef DILITHIUM_USE_AES
#if DILITHIUM_MODE == 1
#define CRYPTO_ALGNAME "Dilithium1-AES"
#define DILITHIUM_NAMESPACE(s) pqcrystals_dilithium1aes_avx2##s
#elif DILITHIUM_MODE == 2
#define CRYPTO_ALGNAME "Dilithium2-AES"
#define DILITHIUM_NAMESPACE(s) pqcrystals_dilithium2aes_avx2##s
#elif DILITHIUM_MODE == 3
#define CRYPTO_ALGNAME "Dilithium3-AES"
#define DILITHIUM_NAMESPACE(s) pqcrystals_dilithium3aes_avx2##s
#elif DILITHIUM_MODE == 4
#define CRYPTO_ALGNAME "Dilithium4-AES"
#define DILITHIUM_NAMESPACE(s) pqcrystals_dilithium4aes_avx2##s
#endif
#else
#if DILITHIUM_MODE == 1
#define CRYPTO_ALGNAME "Dilithium1"
#define DILITHIUM_NAMESPACE(s) pqcrystals_dilithium1_avx2##s
#elif DILITHIUM_MODE == 2
#define CRYPTO_ALGNAME "Dilithium2"
#define DILITHIUM_NAMESPACE(s) pqcrystals_dilithium2_avx2##s
#elif DILITHIUM_MODE == 3
#define CRYPTO_ALGNAME "Dilithium3"
#define DILITHIUM_NAMESPACE(s) pqcrystals_dilithium3_avx2##s
#elif DILITHIUM_MODE == 4
#define CRYPTO_ALGNAME "Dilithium4"
#define DILITHIUM_NAMESPACE(s) pqcrystals_dilithium4_avx2##s
#endif
#endif
Expand Down

0 comments on commit fd1cf1a

Please sign in to comment.