/* This file is part of libbrandt. * Copyright (C) 2016 GNUnet e.V. * * libbrandt is free software: you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free Software * Foundation, either version 3 of the License, or (at your option) any later * version. * * libbrandt is distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR * A PARTICULAR PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along with * libbrandt. If not, see . */ /** * @file crypto.h * @brief Interface of the crypto primitives. */ #ifndef _BRANDT_CRYPTO_H #define _BRANDT_CRYPTO_H #include #include /* --- RANDOM --- */ void brandt_rand_poll (); /* --- HASHING --- */ struct brandt_hash_code { uint32_t bits[512 / 8 / sizeof (uint32_t)]; /* = 16 */ }; void brandt_hash (const void *block, size_t size, struct brandt_hash_code *ret); /* --- MPI --- */ void brandt_mpi_print_unsigned (void *buf, size_t size, gcry_mpi_t val); void brandt_mpi_scan_unsigned (gcry_mpi_t *result, const void *data, size_t size); /* --- ECDHE --- */ struct brandt_dhe_skey { unsigned char d[256 / 8]; }; struct brandt_dhe_pkey { unsigned char q_y[256 / 8]; }; void brandt_ecdhe_key_create (struct brandt_dhe_skey *priv); void brandt_ecdhe_key_get_public (const struct brandt_dhe_skey *priv, struct brandt_dhe_pkey *pub); int brandt_ecdhe (const struct brandt_dhe_skey *priv, const struct brandt_dhe_pkey *pub, struct brandt_hash_code *key_material); void brandt_ecdhe_key_clear (struct brandt_dhe_skey *priv); #endif /* ifndef _BRANDT_CRYPTO_H */