X-Git-Url: https://git.distorted.org.uk/~mdw/secnet/blobdiff_plain/137d3b36ce3d121855364d3a28383ab86fbb9d7b..ae8cd973b817f81c075ab20e84d3239125146f24:/x25519.h diff --git a/x25519.h b/x25519.h deleted file mode 100644 index b7b03e6..0000000 --- a/x25519.h +++ /dev/null @@ -1,125 +0,0 @@ -/* - * x25519.h: Bernstein's X25519 key-exchange function - */ -/* - * This file is Free Software. It has been modified to as part of its - * incorporation into secnet. - * - * Copyright 2017 Mark Wooding - * - * You may redistribute this file and/or modify it under the terms of - * the permissive licence shown below. - * - * You may redistribute secnet as a whole and/or modify it under the - * terms of the GNU General Public License as published by the Free - * Software Foundation; either version 3, or (at your option) any - * later version. - * - * This program 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 this program; if not, see - * https://www.gnu.org/licenses/gpl.html. - */ -/* - * Imported from Catacomb, and modified for Secnet (2017-04-30): - * - * * Use `fake-mLib-bits.h' in place of the real . - * - * * Strip out the key-management definitions. - * - * The file's original comment headers are preserved below. - */ -/* -*-c-*- - * - * The X25519 key-agreement algorithm - * - * (c) 2017 Straylight/Edgeware - */ - -/*----- Licensing notice --------------------------------------------------* - * - * This file is part of Catacomb. - * - * Catacomb is free software; you can redistribute it and/or modify - * it under the terms of the GNU Library General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or (at your option) any later version. - * - * Catacomb 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 Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with Catacomb; if not, write to the Free - * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, - * MA 02111-1307, USA. - */ - -#ifndef CATACOMB_X25519_H -#define CATACOMB_X25519_H - -#ifdef __cplusplus - extern "C" { -#endif - -/*----- Notes on the X25519 key-agreement algorithm -----------------------* - * - * This is X25519, as described in Daniel J. Bernstein, `Curve25519: new - * Diffie--Hellman speed records', PKC 2006, - * https://cr.yp.to/ecdh/curve25519-20060209.pdf - * - * Since then, the name `Curve25519' has shifted somewhat, to refer to the - * specific elliptic curve used, and the x-coordinate Diffie--Hellman - * operation is now named `X25519'. - */ - -/*----- Header files ------------------------------------------------------*/ - -#include "fake-mLib-bits.h" - -/*----- Important constants -----------------------------------------------*/ - -#define X25519_KEYSZ 32u -#define X25519_PUBSZ 32u -#define X25519_OUTSZ 32u - -extern const octet x25519_base[32]; - -/*----- Functions provided ------------------------------------------------*/ - -/* --- @x25519@ --- * - * - * Arguments: @octet zz[X25519_OUTSZ]@ = where to put the result - * @const octet k[X25519_KEYSZ]@ = pointer to private key - * @const octet qx[X25519_PUBSZ]@ = pointer to public value - * - * Returns: --- - * - * Use: Calculates X25519 of @k@ and @qx@. - * - * Note that there is disagreement over whether the most - * significant bit of @qx@ (i.e., the value @qx[31]&0x80@) - * should be ignored or counted towards the represented value. - * Historically implementations respected the bit; later - * convention seems to be to ignore it. This implementation - * honours the bit: a caller who wants to ignore the bit can - * easily clear it, while caller who wants to respect it has a - * difficult job if this function ignores it. - */ - -extern void x25519(octet /*zz*/[X25519_OUTSZ], - const octet /*k*/[X25519_KEYSZ], - const octet /*qx*/[X25519_PUBSZ]); - -/*----- That's all, folks -------------------------------------------------*/ - -#ifdef __cplusplus - } -#endif - -#endif