change some parameters in the library to meet the needs of the website httpbin.org
Fork of MiniTLS-GPL by
crypto/ltc/ltc.h@5:95f70ebfe61f, 2015-02-06 (annotated)
- Committer:
- shiyilei
- Date:
- Fri Feb 06 06:17:33 2015 +0000
- Revision:
- 5:95f70ebfe61f
- Parent:
- 2:527a66d0a1a9
change some parameters in the library to meet the needs of httpbin.org
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
MiniTLS | 2:527a66d0a1a9 | 1 | /* |
MiniTLS | 2:527a66d0a1a9 | 2 | MiniTLS - A super trimmed down TLS/SSL Library for embedded devices |
MiniTLS | 2:527a66d0a1a9 | 3 | Author: Donatien Garnier |
MiniTLS | 2:527a66d0a1a9 | 4 | Copyright (C) 2013-2014 AppNearMe Ltd |
MiniTLS | 2:527a66d0a1a9 | 5 | |
MiniTLS | 2:527a66d0a1a9 | 6 | This program is free software; you can redistribute it and/or |
MiniTLS | 2:527a66d0a1a9 | 7 | modify it under the terms of the GNU General Public License |
MiniTLS | 2:527a66d0a1a9 | 8 | as published by the Free Software Foundation; either version 2 |
MiniTLS | 2:527a66d0a1a9 | 9 | of the License, or (at your option) any later version. |
MiniTLS | 2:527a66d0a1a9 | 10 | |
MiniTLS | 2:527a66d0a1a9 | 11 | This program is distributed in the hope that it will be useful, |
MiniTLS | 2:527a66d0a1a9 | 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
MiniTLS | 2:527a66d0a1a9 | 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
MiniTLS | 2:527a66d0a1a9 | 14 | GNU General Public License for more details. |
MiniTLS | 2:527a66d0a1a9 | 15 | |
MiniTLS | 2:527a66d0a1a9 | 16 | You should have received a copy of the GNU General Public License |
MiniTLS | 2:527a66d0a1a9 | 17 | along with this program; if not, write to the Free Software |
MiniTLS | 2:527a66d0a1a9 | 18 | Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
MiniTLS | 2:527a66d0a1a9 | 19 | *//** |
MiniTLS | 2:527a66d0a1a9 | 20 | * \file ltc.h |
MiniTLS | 2:527a66d0a1a9 | 21 | * \copyright Copyright (c) AppNearMe Ltd 2013 |
MiniTLS | 2:527a66d0a1a9 | 22 | * \author Donatien Garnier |
MiniTLS | 2:527a66d0a1a9 | 23 | */ |
MiniTLS | 2:527a66d0a1a9 | 24 | |
MiniTLS | 2:527a66d0a1a9 | 25 | #ifndef LTC_H_ |
MiniTLS | 2:527a66d0a1a9 | 26 | #define LTC_H_ |
MiniTLS | 2:527a66d0a1a9 | 27 | |
MiniTLS | 2:527a66d0a1a9 | 28 | #ifdef __cplusplus |
MiniTLS | 2:527a66d0a1a9 | 29 | extern "C" { |
MiniTLS | 2:527a66d0a1a9 | 30 | #endif |
MiniTLS | 2:527a66d0a1a9 | 31 | |
MiniTLS | 2:527a66d0a1a9 | 32 | #include "core/fwk.h" |
MiniTLS | 2:527a66d0a1a9 | 33 | #include "crypto/crypto_ecc.h" |
MiniTLS | 2:527a66d0a1a9 | 34 | #include "crypto/crypto_math.h" |
MiniTLS | 2:527a66d0a1a9 | 35 | |
MiniTLS | 2:527a66d0a1a9 | 36 | |
MiniTLS | 2:527a66d0a1a9 | 37 | /* |
MiniTLS | 2:527a66d0a1a9 | 38 | Config |
MiniTLS | 2:527a66d0a1a9 | 39 | * */ |
MiniTLS | 2:527a66d0a1a9 | 40 | /* ECC */ |
MiniTLS | 2:527a66d0a1a9 | 41 | #define LTC_MECC |
MiniTLS | 2:527a66d0a1a9 | 42 | #define MPI |
MiniTLS | 2:527a66d0a1a9 | 43 | |
MiniTLS | 2:527a66d0a1a9 | 44 | #define ECC_BUF_SIZE 256 //FIXME should it be *that* big? |
MiniTLS | 2:527a66d0a1a9 | 45 | |
MiniTLS | 2:527a66d0a1a9 | 46 | /* use Shamir's trick for point mul (speeds up signature verification) */ |
MiniTLS | 2:527a66d0a1a9 | 47 | //#define LTC_ECC_SHAMIR -- nope, consumes too much memory |
MiniTLS | 2:527a66d0a1a9 | 48 | |
MiniTLS | 2:527a66d0a1a9 | 49 | #define LTC_ECC_TIMING_RESISTANT |
MiniTLS | 2:527a66d0a1a9 | 50 | |
MiniTLS | 2:527a66d0a1a9 | 51 | #define zeromem(buf,size) memset((buf), 0, (size)) |
MiniTLS | 2:527a66d0a1a9 | 52 | |
MiniTLS | 2:527a66d0a1a9 | 53 | typedef crypto_ecc_point_t ecc_point; |
MiniTLS | 2:527a66d0a1a9 | 54 | |
MiniTLS | 2:527a66d0a1a9 | 55 | /* low level functions */ |
MiniTLS | 2:527a66d0a1a9 | 56 | int ltc_init_multi(void *a, ...); |
MiniTLS | 2:527a66d0a1a9 | 57 | void ltc_deinit_multi(void *a, ...); |
MiniTLS | 2:527a66d0a1a9 | 58 | #if 0 |
MiniTLS | 2:527a66d0a1a9 | 59 | ecc_point *ltc_ecc_new_point(void); |
MiniTLS | 2:527a66d0a1a9 | 60 | void ltc_ecc_del_point(ecc_point *p); |
MiniTLS | 2:527a66d0a1a9 | 61 | #endif |
MiniTLS | 2:527a66d0a1a9 | 62 | int ltc_ecc_is_valid_idx(int n); |
MiniTLS | 2:527a66d0a1a9 | 63 | |
MiniTLS | 2:527a66d0a1a9 | 64 | /* point ops (mp == montgomery digit) */ |
MiniTLS | 2:527a66d0a1a9 | 65 | /* R = 2P */ |
MiniTLS | 2:527a66d0a1a9 | 66 | int ltc_ecc_projective_dbl_point(ecc_point *P, ecc_point *R, void *modulus, void *mp); |
MiniTLS | 2:527a66d0a1a9 | 67 | |
MiniTLS | 2:527a66d0a1a9 | 68 | /* R = P + Q */ |
MiniTLS | 2:527a66d0a1a9 | 69 | int ltc_ecc_projective_add_point(ecc_point *P, ecc_point *Q, ecc_point *R, void *modulus, void *mp); |
MiniTLS | 2:527a66d0a1a9 | 70 | |
MiniTLS | 2:527a66d0a1a9 | 71 | |
MiniTLS | 2:527a66d0a1a9 | 72 | /* R = kG */ |
MiniTLS | 2:527a66d0a1a9 | 73 | int ltc_ecc_mulmod(void *k, ecc_point *G, ecc_point *R, void *modulus, int map); |
MiniTLS | 2:527a66d0a1a9 | 74 | |
MiniTLS | 2:527a66d0a1a9 | 75 | #ifdef LTC_ECC_SHAMIR |
MiniTLS | 2:527a66d0a1a9 | 76 | /* kA*A + kB*B = C */ |
MiniTLS | 2:527a66d0a1a9 | 77 | int ltc_ecc_mul2add(ecc_point *A, void *kA, |
MiniTLS | 2:527a66d0a1a9 | 78 | ecc_point *B, void *kB, |
MiniTLS | 2:527a66d0a1a9 | 79 | ecc_point *C, |
MiniTLS | 2:527a66d0a1a9 | 80 | void *modulus); |
MiniTLS | 2:527a66d0a1a9 | 81 | #endif |
MiniTLS | 2:527a66d0a1a9 | 82 | |
MiniTLS | 2:527a66d0a1a9 | 83 | |
MiniTLS | 2:527a66d0a1a9 | 84 | /* map P to affine from projective */ |
MiniTLS | 2:527a66d0a1a9 | 85 | int ltc_ecc_map(ecc_point *P, void *modulus, void *mp); |
MiniTLS | 2:527a66d0a1a9 | 86 | |
MiniTLS | 2:527a66d0a1a9 | 87 | #define LTC_ARGCHK(x) |
MiniTLS | 2:527a66d0a1a9 | 88 | |
MiniTLS | 2:527a66d0a1a9 | 89 | |
MiniTLS | 2:527a66d0a1a9 | 90 | #ifdef __cplusplus |
MiniTLS | 2:527a66d0a1a9 | 91 | } |
MiniTLS | 2:527a66d0a1a9 | 92 | #endif |
MiniTLS | 2:527a66d0a1a9 | 93 | |
MiniTLS | 2:527a66d0a1a9 | 94 | #endif /* LTC_H_ */ |