A super trimmed down TLS stack, GPL licensed

Dependents:   MiniTLS-HTTPS-Example

MiniTLS - A super trimmed down TLS/SSL Library for embedded devices Author: Donatien Garnier Copyright (C) 2013-2014 AppNearMe Ltd

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.

Committer:
MiniTLS
Date:
Fri Jun 06 10:49:02 2014 +0000
Revision:
0:35aa5be3b78d
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MiniTLS 0:35aa5be3b78d 1 #define TFM_DEFINES
MiniTLS 0:35aa5be3b78d 2 #include "fp_mul_comba.c"
MiniTLS 0:35aa5be3b78d 3
MiniTLS 0:35aa5be3b78d 4 #ifdef TFM_MUL17
MiniTLS 0:35aa5be3b78d 5 void fp_mul_comba17(fp_int *A, fp_int *B, fp_int *C)
MiniTLS 0:35aa5be3b78d 6 {
MiniTLS 0:35aa5be3b78d 7 fp_digit c0, c1, c2, at[34];
MiniTLS 0:35aa5be3b78d 8
MiniTLS 0:35aa5be3b78d 9 memcpy(at, A->dp, 17 * sizeof(fp_digit));
MiniTLS 0:35aa5be3b78d 10 memcpy(at+17, B->dp, 17 * sizeof(fp_digit));
MiniTLS 0:35aa5be3b78d 11 COMBA_START;
MiniTLS 0:35aa5be3b78d 12
MiniTLS 0:35aa5be3b78d 13 COMBA_CLEAR;
MiniTLS 0:35aa5be3b78d 14 /* 0 */
MiniTLS 0:35aa5be3b78d 15 MULADD(at[0], at[17]);
MiniTLS 0:35aa5be3b78d 16 COMBA_STORE(C->dp[0]);
MiniTLS 0:35aa5be3b78d 17 /* 1 */
MiniTLS 0:35aa5be3b78d 18 COMBA_FORWARD;
MiniTLS 0:35aa5be3b78d 19 MULADD(at[0], at[18]); MULADD(at[1], at[17]);
MiniTLS 0:35aa5be3b78d 20 COMBA_STORE(C->dp[1]);
MiniTLS 0:35aa5be3b78d 21 /* 2 */
MiniTLS 0:35aa5be3b78d 22 COMBA_FORWARD;
MiniTLS 0:35aa5be3b78d 23 MULADD(at[0], at[19]); MULADD(at[1], at[18]); MULADD(at[2], at[17]);
MiniTLS 0:35aa5be3b78d 24 COMBA_STORE(C->dp[2]);
MiniTLS 0:35aa5be3b78d 25 /* 3 */
MiniTLS 0:35aa5be3b78d 26 COMBA_FORWARD;
MiniTLS 0:35aa5be3b78d 27 MULADD(at[0], at[20]); MULADD(at[1], at[19]); MULADD(at[2], at[18]); MULADD(at[3], at[17]);
MiniTLS 0:35aa5be3b78d 28 COMBA_STORE(C->dp[3]);
MiniTLS 0:35aa5be3b78d 29 /* 4 */
MiniTLS 0:35aa5be3b78d 30 COMBA_FORWARD;
MiniTLS 0:35aa5be3b78d 31 MULADD(at[0], at[21]); MULADD(at[1], at[20]); MULADD(at[2], at[19]); MULADD(at[3], at[18]); MULADD(at[4], at[17]);
MiniTLS 0:35aa5be3b78d 32 COMBA_STORE(C->dp[4]);
MiniTLS 0:35aa5be3b78d 33 /* 5 */
MiniTLS 0:35aa5be3b78d 34 COMBA_FORWARD;
MiniTLS 0:35aa5be3b78d 35 MULADD(at[0], at[22]); MULADD(at[1], at[21]); MULADD(at[2], at[20]); MULADD(at[3], at[19]); MULADD(at[4], at[18]); MULADD(at[5], at[17]);
MiniTLS 0:35aa5be3b78d 36 COMBA_STORE(C->dp[5]);
MiniTLS 0:35aa5be3b78d 37 /* 6 */
MiniTLS 0:35aa5be3b78d 38 COMBA_FORWARD;
MiniTLS 0:35aa5be3b78d 39 MULADD(at[0], at[23]); MULADD(at[1], at[22]); MULADD(at[2], at[21]); MULADD(at[3], at[20]); MULADD(at[4], at[19]); MULADD(at[5], at[18]); MULADD(at[6], at[17]);
MiniTLS 0:35aa5be3b78d 40 COMBA_STORE(C->dp[6]);
MiniTLS 0:35aa5be3b78d 41 /* 7 */
MiniTLS 0:35aa5be3b78d 42 COMBA_FORWARD;
MiniTLS 0:35aa5be3b78d 43 MULADD(at[0], at[24]); MULADD(at[1], at[23]); MULADD(at[2], at[22]); MULADD(at[3], at[21]); MULADD(at[4], at[20]); MULADD(at[5], at[19]); MULADD(at[6], at[18]); MULADD(at[7], at[17]);
MiniTLS 0:35aa5be3b78d 44 COMBA_STORE(C->dp[7]);
MiniTLS 0:35aa5be3b78d 45 /* 8 */
MiniTLS 0:35aa5be3b78d 46 COMBA_FORWARD;
MiniTLS 0:35aa5be3b78d 47 MULADD(at[0], at[25]); MULADD(at[1], at[24]); MULADD(at[2], at[23]); MULADD(at[3], at[22]); MULADD(at[4], at[21]); MULADD(at[5], at[20]); MULADD(at[6], at[19]); MULADD(at[7], at[18]); MULADD(at[8], at[17]);
MiniTLS 0:35aa5be3b78d 48 COMBA_STORE(C->dp[8]);
MiniTLS 0:35aa5be3b78d 49 /* 9 */
MiniTLS 0:35aa5be3b78d 50 COMBA_FORWARD;
MiniTLS 0:35aa5be3b78d 51 MULADD(at[0], at[26]); MULADD(at[1], at[25]); MULADD(at[2], at[24]); MULADD(at[3], at[23]); MULADD(at[4], at[22]); MULADD(at[5], at[21]); MULADD(at[6], at[20]); MULADD(at[7], at[19]); MULADD(at[8], at[18]); MULADD(at[9], at[17]);
MiniTLS 0:35aa5be3b78d 52 COMBA_STORE(C->dp[9]);
MiniTLS 0:35aa5be3b78d 53 /* 10 */
MiniTLS 0:35aa5be3b78d 54 COMBA_FORWARD;
MiniTLS 0:35aa5be3b78d 55 MULADD(at[0], at[27]); MULADD(at[1], at[26]); MULADD(at[2], at[25]); MULADD(at[3], at[24]); MULADD(at[4], at[23]); MULADD(at[5], at[22]); MULADD(at[6], at[21]); MULADD(at[7], at[20]); MULADD(at[8], at[19]); MULADD(at[9], at[18]); MULADD(at[10], at[17]);
MiniTLS 0:35aa5be3b78d 56 COMBA_STORE(C->dp[10]);
MiniTLS 0:35aa5be3b78d 57 /* 11 */
MiniTLS 0:35aa5be3b78d 58 COMBA_FORWARD;
MiniTLS 0:35aa5be3b78d 59 MULADD(at[0], at[28]); MULADD(at[1], at[27]); MULADD(at[2], at[26]); MULADD(at[3], at[25]); MULADD(at[4], at[24]); MULADD(at[5], at[23]); MULADD(at[6], at[22]); MULADD(at[7], at[21]); MULADD(at[8], at[20]); MULADD(at[9], at[19]); MULADD(at[10], at[18]); MULADD(at[11], at[17]);
MiniTLS 0:35aa5be3b78d 60 COMBA_STORE(C->dp[11]);
MiniTLS 0:35aa5be3b78d 61 /* 12 */
MiniTLS 0:35aa5be3b78d 62 COMBA_FORWARD;
MiniTLS 0:35aa5be3b78d 63 MULADD(at[0], at[29]); MULADD(at[1], at[28]); MULADD(at[2], at[27]); MULADD(at[3], at[26]); MULADD(at[4], at[25]); MULADD(at[5], at[24]); MULADD(at[6], at[23]); MULADD(at[7], at[22]); MULADD(at[8], at[21]); MULADD(at[9], at[20]); MULADD(at[10], at[19]); MULADD(at[11], at[18]); MULADD(at[12], at[17]);
MiniTLS 0:35aa5be3b78d 64 COMBA_STORE(C->dp[12]);
MiniTLS 0:35aa5be3b78d 65 /* 13 */
MiniTLS 0:35aa5be3b78d 66 COMBA_FORWARD;
MiniTLS 0:35aa5be3b78d 67 MULADD(at[0], at[30]); MULADD(at[1], at[29]); MULADD(at[2], at[28]); MULADD(at[3], at[27]); MULADD(at[4], at[26]); MULADD(at[5], at[25]); MULADD(at[6], at[24]); MULADD(at[7], at[23]); MULADD(at[8], at[22]); MULADD(at[9], at[21]); MULADD(at[10], at[20]); MULADD(at[11], at[19]); MULADD(at[12], at[18]); MULADD(at[13], at[17]);
MiniTLS 0:35aa5be3b78d 68 COMBA_STORE(C->dp[13]);
MiniTLS 0:35aa5be3b78d 69 /* 14 */
MiniTLS 0:35aa5be3b78d 70 COMBA_FORWARD;
MiniTLS 0:35aa5be3b78d 71 MULADD(at[0], at[31]); MULADD(at[1], at[30]); MULADD(at[2], at[29]); MULADD(at[3], at[28]); MULADD(at[4], at[27]); MULADD(at[5], at[26]); MULADD(at[6], at[25]); MULADD(at[7], at[24]); MULADD(at[8], at[23]); MULADD(at[9], at[22]); MULADD(at[10], at[21]); MULADD(at[11], at[20]); MULADD(at[12], at[19]); MULADD(at[13], at[18]); MULADD(at[14], at[17]);
MiniTLS 0:35aa5be3b78d 72 COMBA_STORE(C->dp[14]);
MiniTLS 0:35aa5be3b78d 73 /* 15 */
MiniTLS 0:35aa5be3b78d 74 COMBA_FORWARD;
MiniTLS 0:35aa5be3b78d 75 MULADD(at[0], at[32]); MULADD(at[1], at[31]); MULADD(at[2], at[30]); MULADD(at[3], at[29]); MULADD(at[4], at[28]); MULADD(at[5], at[27]); MULADD(at[6], at[26]); MULADD(at[7], at[25]); MULADD(at[8], at[24]); MULADD(at[9], at[23]); MULADD(at[10], at[22]); MULADD(at[11], at[21]); MULADD(at[12], at[20]); MULADD(at[13], at[19]); MULADD(at[14], at[18]); MULADD(at[15], at[17]);
MiniTLS 0:35aa5be3b78d 76 COMBA_STORE(C->dp[15]);
MiniTLS 0:35aa5be3b78d 77 /* 16 */
MiniTLS 0:35aa5be3b78d 78 COMBA_FORWARD;
MiniTLS 0:35aa5be3b78d 79 MULADD(at[0], at[33]); MULADD(at[1], at[32]); MULADD(at[2], at[31]); MULADD(at[3], at[30]); MULADD(at[4], at[29]); MULADD(at[5], at[28]); MULADD(at[6], at[27]); MULADD(at[7], at[26]); MULADD(at[8], at[25]); MULADD(at[9], at[24]); MULADD(at[10], at[23]); MULADD(at[11], at[22]); MULADD(at[12], at[21]); MULADD(at[13], at[20]); MULADD(at[14], at[19]); MULADD(at[15], at[18]); MULADD(at[16], at[17]);
MiniTLS 0:35aa5be3b78d 80 COMBA_STORE(C->dp[16]);
MiniTLS 0:35aa5be3b78d 81 /* 17 */
MiniTLS 0:35aa5be3b78d 82 COMBA_FORWARD;
MiniTLS 0:35aa5be3b78d 83 MULADD(at[1], at[33]); MULADD(at[2], at[32]); MULADD(at[3], at[31]); MULADD(at[4], at[30]); MULADD(at[5], at[29]); MULADD(at[6], at[28]); MULADD(at[7], at[27]); MULADD(at[8], at[26]); MULADD(at[9], at[25]); MULADD(at[10], at[24]); MULADD(at[11], at[23]); MULADD(at[12], at[22]); MULADD(at[13], at[21]); MULADD(at[14], at[20]); MULADD(at[15], at[19]); MULADD(at[16], at[18]);
MiniTLS 0:35aa5be3b78d 84 COMBA_STORE(C->dp[17]);
MiniTLS 0:35aa5be3b78d 85 /* 18 */
MiniTLS 0:35aa5be3b78d 86 COMBA_FORWARD;
MiniTLS 0:35aa5be3b78d 87 MULADD(at[2], at[33]); MULADD(at[3], at[32]); MULADD(at[4], at[31]); MULADD(at[5], at[30]); MULADD(at[6], at[29]); MULADD(at[7], at[28]); MULADD(at[8], at[27]); MULADD(at[9], at[26]); MULADD(at[10], at[25]); MULADD(at[11], at[24]); MULADD(at[12], at[23]); MULADD(at[13], at[22]); MULADD(at[14], at[21]); MULADD(at[15], at[20]); MULADD(at[16], at[19]);
MiniTLS 0:35aa5be3b78d 88 COMBA_STORE(C->dp[18]);
MiniTLS 0:35aa5be3b78d 89 /* 19 */
MiniTLS 0:35aa5be3b78d 90 COMBA_FORWARD;
MiniTLS 0:35aa5be3b78d 91 MULADD(at[3], at[33]); MULADD(at[4], at[32]); MULADD(at[5], at[31]); MULADD(at[6], at[30]); MULADD(at[7], at[29]); MULADD(at[8], at[28]); MULADD(at[9], at[27]); MULADD(at[10], at[26]); MULADD(at[11], at[25]); MULADD(at[12], at[24]); MULADD(at[13], at[23]); MULADD(at[14], at[22]); MULADD(at[15], at[21]); MULADD(at[16], at[20]);
MiniTLS 0:35aa5be3b78d 92 COMBA_STORE(C->dp[19]);
MiniTLS 0:35aa5be3b78d 93 /* 20 */
MiniTLS 0:35aa5be3b78d 94 COMBA_FORWARD;
MiniTLS 0:35aa5be3b78d 95 MULADD(at[4], at[33]); MULADD(at[5], at[32]); MULADD(at[6], at[31]); MULADD(at[7], at[30]); MULADD(at[8], at[29]); MULADD(at[9], at[28]); MULADD(at[10], at[27]); MULADD(at[11], at[26]); MULADD(at[12], at[25]); MULADD(at[13], at[24]); MULADD(at[14], at[23]); MULADD(at[15], at[22]); MULADD(at[16], at[21]);
MiniTLS 0:35aa5be3b78d 96 COMBA_STORE(C->dp[20]);
MiniTLS 0:35aa5be3b78d 97 /* 21 */
MiniTLS 0:35aa5be3b78d 98 COMBA_FORWARD;
MiniTLS 0:35aa5be3b78d 99 MULADD(at[5], at[33]); MULADD(at[6], at[32]); MULADD(at[7], at[31]); MULADD(at[8], at[30]); MULADD(at[9], at[29]); MULADD(at[10], at[28]); MULADD(at[11], at[27]); MULADD(at[12], at[26]); MULADD(at[13], at[25]); MULADD(at[14], at[24]); MULADD(at[15], at[23]); MULADD(at[16], at[22]);
MiniTLS 0:35aa5be3b78d 100 COMBA_STORE(C->dp[21]);
MiniTLS 0:35aa5be3b78d 101 /* 22 */
MiniTLS 0:35aa5be3b78d 102 COMBA_FORWARD;
MiniTLS 0:35aa5be3b78d 103 MULADD(at[6], at[33]); MULADD(at[7], at[32]); MULADD(at[8], at[31]); MULADD(at[9], at[30]); MULADD(at[10], at[29]); MULADD(at[11], at[28]); MULADD(at[12], at[27]); MULADD(at[13], at[26]); MULADD(at[14], at[25]); MULADD(at[15], at[24]); MULADD(at[16], at[23]);
MiniTLS 0:35aa5be3b78d 104 COMBA_STORE(C->dp[22]);
MiniTLS 0:35aa5be3b78d 105 /* 23 */
MiniTLS 0:35aa5be3b78d 106 COMBA_FORWARD;
MiniTLS 0:35aa5be3b78d 107 MULADD(at[7], at[33]); MULADD(at[8], at[32]); MULADD(at[9], at[31]); MULADD(at[10], at[30]); MULADD(at[11], at[29]); MULADD(at[12], at[28]); MULADD(at[13], at[27]); MULADD(at[14], at[26]); MULADD(at[15], at[25]); MULADD(at[16], at[24]);
MiniTLS 0:35aa5be3b78d 108 COMBA_STORE(C->dp[23]);
MiniTLS 0:35aa5be3b78d 109 /* 24 */
MiniTLS 0:35aa5be3b78d 110 COMBA_FORWARD;
MiniTLS 0:35aa5be3b78d 111 MULADD(at[8], at[33]); MULADD(at[9], at[32]); MULADD(at[10], at[31]); MULADD(at[11], at[30]); MULADD(at[12], at[29]); MULADD(at[13], at[28]); MULADD(at[14], at[27]); MULADD(at[15], at[26]); MULADD(at[16], at[25]);
MiniTLS 0:35aa5be3b78d 112 COMBA_STORE(C->dp[24]);
MiniTLS 0:35aa5be3b78d 113 /* 25 */
MiniTLS 0:35aa5be3b78d 114 COMBA_FORWARD;
MiniTLS 0:35aa5be3b78d 115 MULADD(at[9], at[33]); MULADD(at[10], at[32]); MULADD(at[11], at[31]); MULADD(at[12], at[30]); MULADD(at[13], at[29]); MULADD(at[14], at[28]); MULADD(at[15], at[27]); MULADD(at[16], at[26]);
MiniTLS 0:35aa5be3b78d 116 COMBA_STORE(C->dp[25]);
MiniTLS 0:35aa5be3b78d 117 /* 26 */
MiniTLS 0:35aa5be3b78d 118 COMBA_FORWARD;
MiniTLS 0:35aa5be3b78d 119 MULADD(at[10], at[33]); MULADD(at[11], at[32]); MULADD(at[12], at[31]); MULADD(at[13], at[30]); MULADD(at[14], at[29]); MULADD(at[15], at[28]); MULADD(at[16], at[27]);
MiniTLS 0:35aa5be3b78d 120 COMBA_STORE(C->dp[26]);
MiniTLS 0:35aa5be3b78d 121 /* 27 */
MiniTLS 0:35aa5be3b78d 122 COMBA_FORWARD;
MiniTLS 0:35aa5be3b78d 123 MULADD(at[11], at[33]); MULADD(at[12], at[32]); MULADD(at[13], at[31]); MULADD(at[14], at[30]); MULADD(at[15], at[29]); MULADD(at[16], at[28]);
MiniTLS 0:35aa5be3b78d 124 COMBA_STORE(C->dp[27]);
MiniTLS 0:35aa5be3b78d 125 /* 28 */
MiniTLS 0:35aa5be3b78d 126 COMBA_FORWARD;
MiniTLS 0:35aa5be3b78d 127 MULADD(at[12], at[33]); MULADD(at[13], at[32]); MULADD(at[14], at[31]); MULADD(at[15], at[30]); MULADD(at[16], at[29]);
MiniTLS 0:35aa5be3b78d 128 COMBA_STORE(C->dp[28]);
MiniTLS 0:35aa5be3b78d 129 /* 29 */
MiniTLS 0:35aa5be3b78d 130 COMBA_FORWARD;
MiniTLS 0:35aa5be3b78d 131 MULADD(at[13], at[33]); MULADD(at[14], at[32]); MULADD(at[15], at[31]); MULADD(at[16], at[30]);
MiniTLS 0:35aa5be3b78d 132 COMBA_STORE(C->dp[29]);
MiniTLS 0:35aa5be3b78d 133 /* 30 */
MiniTLS 0:35aa5be3b78d 134 COMBA_FORWARD;
MiniTLS 0:35aa5be3b78d 135 MULADD(at[14], at[33]); MULADD(at[15], at[32]); MULADD(at[16], at[31]);
MiniTLS 0:35aa5be3b78d 136 COMBA_STORE(C->dp[30]);
MiniTLS 0:35aa5be3b78d 137 /* 31 */
MiniTLS 0:35aa5be3b78d 138 COMBA_FORWARD;
MiniTLS 0:35aa5be3b78d 139 MULADD(at[15], at[33]); MULADD(at[16], at[32]);
MiniTLS 0:35aa5be3b78d 140 COMBA_STORE(C->dp[31]);
MiniTLS 0:35aa5be3b78d 141 /* 32 */
MiniTLS 0:35aa5be3b78d 142 COMBA_FORWARD;
MiniTLS 0:35aa5be3b78d 143 MULADD(at[16], at[33]);
MiniTLS 0:35aa5be3b78d 144 COMBA_STORE(C->dp[32]);
MiniTLS 0:35aa5be3b78d 145 COMBA_STORE2(C->dp[33]);
MiniTLS 0:35aa5be3b78d 146 C->used = 34;
MiniTLS 0:35aa5be3b78d 147 C->sign = A->sign ^ B->sign;
MiniTLS 0:35aa5be3b78d 148 fp_clamp(C);
MiniTLS 0:35aa5be3b78d 149 COMBA_FINI;
MiniTLS 0:35aa5be3b78d 150 }
MiniTLS 0:35aa5be3b78d 151 #endif