diff --git a/include/polarssl/config.h b/include/polarssl/config.h index 2493233b9..3b682d362 100644 --- a/include/polarssl/config.h +++ b/include/polarssl/config.h @@ -836,11 +836,24 @@ * Enable the elliptic curve over GF(p) library. * * Module: library/ecp.c - * Caller: + * Caller: library/ecdh.c * * Requires: POLARSSL_BIGNUM_C */ #define POLARSSL_ECP_C + +/** + * \def POLARSSL_ECDH_C + * + * Enable the elliptic curve Diffie-Hellman library + * + * Module: library/ecdh.c + * Caller: + * + * Requires: POLARSSL_ECP_C + */ +#define POLARSSL_ECDH_C + /* \} name */ #endif /* config.h */ diff --git a/include/polarssl/ecdh.h b/include/polarssl/ecdh.h new file mode 100644 index 000000000..5c9be4595 --- /dev/null +++ b/include/polarssl/ecdh.h @@ -0,0 +1,47 @@ +/** + * \file ecdh.h + * + * \brief Elliptic curve Diffie-Hellman + * + * Copyright (C) 2006-2013, Brainspark B.V. + * + * This file is part of PolarSSL (http://www.polarssl.org) + * Lead Maintainer: Paul Bakker + * + * All rights reserved. + * + * This program 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 2 of the License, 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, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ +#ifndef POLARSSL_ECDH_H +#define POLARSSL_ECDH_H + +#include "polarssl/ecp.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif + +/** + * \brief Checkup routine + * + * \return 0 if successful, or 1 if the test failed + */ +int ecdh_self_test( int verbose ); + +#endif diff --git a/include/polarssl/ecp.h b/include/polarssl/ecp.h index 6c52f9622..e1b099540 100644 --- a/include/polarssl/ecp.h +++ b/include/polarssl/ecp.h @@ -27,7 +27,7 @@ #ifndef POLARSSL_ECP_H #define POLARSSL_ECP_H -#include "bignum.h" +#include "polarssl/bignum.h" /* * ECP error codes diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt index 704a4b08f..28bbedc72 100644 --- a/library/CMakeLists.txt +++ b/library/CMakeLists.txt @@ -17,6 +17,7 @@ set(src des.c dhm.c ecp.c + ecdh.c entropy.c entropy_poll.c error.c diff --git a/library/ecdh.c b/library/ecdh.c new file mode 100644 index 000000000..a706b2e29 --- /dev/null +++ b/library/ecdh.c @@ -0,0 +1,51 @@ +/* + * Elliptic curve Diffie-Hellman + * + * Copyright (C) 2006-2013, Brainspark B.V. + * + * This file is part of PolarSSL (http://www.polarssl.org) + * Lead Maintainer: Paul Bakker + * + * All rights reserved. + * + * This program 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 2 of the License, 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, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +/* + * References: + * + * SEC1 http://www.secg.org/index.php?action=secg,docs_secg + */ + +#include "polarssl/config.h" + +#if defined(POLARSSL_ECP_C) + +#include "polarssl/ecdh.h" + + +#if defined(POLARSSL_SELF_TEST) + +/* + * Checkup routine + */ +int ecdh_self_test( int verbose ) +{ + return( verbose++ ); +} + +#endif + +#endif /* defined(POLARSSL_ECP_C) */