diff options
| author | Denys Vlasenko <vda.linux@googlemail.com> | 2019-01-01 15:40:43 +0100 |
|---|---|---|
| committer | Denys Vlasenko <vda.linux@googlemail.com> | 2019-01-01 15:40:43 +0100 |
| commit | 37bdd8f8cb19b674485be1dec6e8ac96d930c87f (patch) | |
| tree | fe87b58c5a4c0e5600a14f7ede335c747344f85d | |
| parent | 51b510a480b99d480bcf6919b8bae16eb1c61718 (diff) | |
| download | busybox-w32-37bdd8f8cb19b674485be1dec6e8ac96d930c87f.tar.gz busybox-w32-37bdd8f8cb19b674485be1dec6e8ac96d930c87f.tar.bz2 busybox-w32-37bdd8f8cb19b674485be1dec6e8ac96d930c87f.zip | |
tls: pstm code shrink
Optimize ABI calling convention and "dead code" cases where return value
is known to be always "success".
function old new delta
pstm_mod 113 1227 +1114
pstm_exptmod 1463 1532 +69
pstm_montgomery_reduce 381 393 +12
pstm_sqr_comba 478 487 +9
pstm_mul_comba 447 452 +5
der_binary_to_pstm 42 45 +3
pstm_count_bits 48 46 -2
pstm_clear 72 70 -2
pstm_clamp 57 55 -2
pstm_zero 38 34 -4
pstm_init_size 46 42 -4
pstm_init_for_read_unsigned_bin 24 20 -4
pstm_grow 72 68 -4
pstm_unsigned_bin_size 37 32 -5
pstm_cmp_mag 78 72 -6
pstm_copy 92 84 -8
pstm_mul_d 224 215 -9
pstm_rshd 104 94 -10
pstm_mul_2 156 146 -10
tls_handshake 2085 2072 -13
psRsaEncryptPub 421 408 -13
pstm_lshd 109 95 -14
pstm_cmp 54 39 -15
s_pstm_sub 228 212 -16
pstm_init_copy 72 52 -20
pstm_read_unsigned_bin 109 88 -21
pstm_mulmod 120 99 -21
s_pstm_add 337 314 -23
pstm_add 108 84 -24
pstm_mul_2d 186 161 -25
pstm_sub 102 74 -28
pstm_to_unsigned_bin 151 120 -31
pstm_set 34 - -34
pstm_div_2d 409 373 -36
pstm_init 42 - -42
pstm_exch 50 - -50
pstm_montgomery_setup 89 - -89
pstm_2expt 96 - -96
pstm_montgomery_calc_normalization 140 - -140
pstm_div 1522 - -1522
------------------------------------------------------------------------------
(add/remove: 0/7 grow/shrink: 6/27 up/down: 1212/-2343) Total: -1131 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| -rw-r--r-- | networking/tls_pstm.c | 109 | ||||
| -rw-r--r-- | networking/tls_pstm.h | 86 | ||||
| -rw-r--r-- | networking/tls_pstm_montgomery_reduce.c | 2 | ||||
| -rw-r--r-- | networking/tls_pstm_mul_comba.c | 2 | ||||
| -rw-r--r-- | networking/tls_pstm_sqr_comba.c | 2 | ||||
| -rw-r--r-- | networking/tls_rsa.c | 4 |
6 files changed, 126 insertions, 79 deletions
diff --git a/networking/tls_pstm.c b/networking/tls_pstm.c index e12e6c9d4..e5544ab11 100644 --- a/networking/tls_pstm.c +++ b/networking/tls_pstm.c | |||
| @@ -47,13 +47,18 @@ | |||
| 47 | //#include "../cryptoApi.h" | 47 | //#include "../cryptoApi.h" |
| 48 | #ifndef DISABLE_PSTM | 48 | #ifndef DISABLE_PSTM |
| 49 | 49 | ||
| 50 | #undef pstm_mul_2d | ||
| 50 | static int32 pstm_mul_2d(pstm_int *a, int b, pstm_int *c); //bbox: was int16 b | 51 | static int32 pstm_mul_2d(pstm_int *a, int b, pstm_int *c); //bbox: was int16 b |
| 52 | #define pstm_mul_2d(a, b, c) (pstm_mul_2d(a, b, c), PSTM_OKAY) | ||
| 51 | 53 | ||
| 52 | /******************************************************************************/ | 54 | /******************************************************************************/ |
| 53 | /* | 55 | /* |
| 54 | init an pstm_int for a given size | 56 | init an pstm_int for a given size |
| 55 | */ | 57 | */ |
| 56 | int32 pstm_init_size(psPool_t *pool, pstm_int * a, uint32 size) | 58 | #undef pstm_init_size |
| 59 | #define pstm_init_size(pool, a, size) \ | ||
| 60 | pstm_init_size( a, size) | ||
| 61 | int32 FAST_FUNC pstm_init_size(psPool_t *pool, pstm_int * a, uint32 size) | ||
| 57 | { | 62 | { |
| 58 | //bbox | 63 | //bbox |
| 59 | // uint16 x; | 64 | // uint16 x; |
| @@ -75,12 +80,17 @@ int32 pstm_init_size(psPool_t *pool, pstm_int * a, uint32 size) | |||
| 75 | // } | 80 | // } |
| 76 | return PSTM_OKAY; | 81 | return PSTM_OKAY; |
| 77 | } | 82 | } |
| 83 | #undef pstm_init_size | ||
| 84 | #define pstm_init_size(pool, a, size) (pstm_init_size(a, size), PSTM_OKAY) | ||
| 78 | 85 | ||
| 79 | /******************************************************************************/ | 86 | /******************************************************************************/ |
| 80 | /* | 87 | /* |
| 81 | Init a new pstm_int. | 88 | Init a new pstm_int. |
| 82 | */ | 89 | */ |
| 83 | int32 pstm_init(psPool_t *pool, pstm_int * a) | 90 | #undef pstm_init |
| 91 | #define pstm_init(pool, a) \ | ||
| 92 | pstm_init( a) | ||
| 93 | static int32 pstm_init(psPool_t *pool, pstm_int * a) | ||
| 84 | { | 94 | { |
| 85 | //bbox | 95 | //bbox |
| 86 | // int32 i; | 96 | // int32 i; |
| @@ -106,12 +116,15 @@ int32 pstm_init(psPool_t *pool, pstm_int * a) | |||
| 106 | 116 | ||
| 107 | return PSTM_OKAY; | 117 | return PSTM_OKAY; |
| 108 | } | 118 | } |
| 119 | #undef pstm_init | ||
| 120 | #define pstm_init(pool, a) (pstm_init(a), PSTM_OKAY) | ||
| 109 | 121 | ||
| 110 | /******************************************************************************/ | 122 | /******************************************************************************/ |
| 111 | /* | 123 | /* |
| 112 | Grow as required | 124 | Grow as required |
| 113 | */ | 125 | */ |
| 114 | int32 pstm_grow(pstm_int * a, int size) | 126 | #undef pstm_grow |
| 127 | int32 FAST_FUNC pstm_grow(pstm_int * a, int size) | ||
| 115 | { | 128 | { |
| 116 | int i; //bbox: was int16 | 129 | int i; //bbox: was int16 |
| 117 | pstm_digit *tmp; | 130 | pstm_digit *tmp; |
| @@ -142,11 +155,13 @@ int32 pstm_grow(pstm_int * a, int size) | |||
| 142 | } | 155 | } |
| 143 | return PSTM_OKAY; | 156 | return PSTM_OKAY; |
| 144 | } | 157 | } |
| 158 | #define pstm_grow(a, size) (pstm_grow(a, size), PSTM_OKAY) | ||
| 145 | 159 | ||
| 146 | /******************************************************************************/ | 160 | /******************************************************************************/ |
| 147 | /* | 161 | /* |
| 148 | copy, b = a (b must be pre-allocated) | 162 | copy, b = a (b must be pre-allocated) |
| 149 | */ | 163 | */ |
| 164 | #undef pstm_copy | ||
| 150 | int32 pstm_copy(pstm_int * a, pstm_int * b) | 165 | int32 pstm_copy(pstm_int * a, pstm_int * b) |
| 151 | { | 166 | { |
| 152 | int32 res, n; | 167 | int32 res, n; |
| @@ -195,6 +210,7 @@ int32 pstm_copy(pstm_int * a, pstm_int * b) | |||
| 195 | b->sign = a->sign; | 210 | b->sign = a->sign; |
| 196 | return PSTM_OKAY; | 211 | return PSTM_OKAY; |
| 197 | } | 212 | } |
| 213 | #define pstm_copy(a, b) (pstm_copy(a, b), PSTM_OKAY) | ||
| 198 | 214 | ||
| 199 | /******************************************************************************/ | 215 | /******************************************************************************/ |
| 200 | /* | 216 | /* |
| @@ -204,7 +220,7 @@ int32 pstm_copy(pstm_int * a, pstm_int * b) | |||
| 204 | leading "used" digit will be non-zero. Typically very fast. Also fixes | 220 | leading "used" digit will be non-zero. Typically very fast. Also fixes |
| 205 | the sign if there are no more leading digits | 221 | the sign if there are no more leading digits |
| 206 | */ | 222 | */ |
| 207 | void pstm_clamp(pstm_int * a) | 223 | void FAST_FUNC pstm_clamp(pstm_int * a) |
| 208 | { | 224 | { |
| 209 | /* decrease used while the most significant digit is zero. */ | 225 | /* decrease used while the most significant digit is zero. */ |
| 210 | while (a->used > 0 && a->dp[a->used - 1] == 0) { | 226 | while (a->used > 0 && a->dp[a->used - 1] == 0) { |
| @@ -220,7 +236,7 @@ void pstm_clamp(pstm_int * a) | |||
| 220 | /* | 236 | /* |
| 221 | clear one (frees). | 237 | clear one (frees). |
| 222 | */ | 238 | */ |
| 223 | void pstm_clear(pstm_int * a) | 239 | void FAST_FUNC pstm_clear(pstm_int * a) |
| 224 | { | 240 | { |
| 225 | int32 i; | 241 | int32 i; |
| 226 | /* | 242 | /* |
| @@ -248,6 +264,7 @@ void pstm_clear(pstm_int * a) | |||
| 248 | /* | 264 | /* |
| 249 | clear many (frees). | 265 | clear many (frees). |
| 250 | */ | 266 | */ |
| 267 | #if 0 //UNUSED | ||
| 251 | void pstm_clear_multi(pstm_int *mp0, pstm_int *mp1, pstm_int *mp2, | 268 | void pstm_clear_multi(pstm_int *mp0, pstm_int *mp1, pstm_int *mp2, |
| 252 | pstm_int *mp3, pstm_int *mp4, pstm_int *mp5, | 269 | pstm_int *mp3, pstm_int *mp4, pstm_int *mp5, |
| 253 | pstm_int *mp6, pstm_int *mp7) | 270 | pstm_int *mp6, pstm_int *mp7) |
| @@ -272,12 +289,13 @@ void pstm_clear_multi(pstm_int *mp0, pstm_int *mp1, pstm_int *mp2, | |||
| 272 | } | 289 | } |
| 273 | } | 290 | } |
| 274 | } | 291 | } |
| 292 | #endif | ||
| 275 | 293 | ||
| 276 | /******************************************************************************/ | 294 | /******************************************************************************/ |
| 277 | /* | 295 | /* |
| 278 | Set to zero. | 296 | Set to zero. |
| 279 | */ | 297 | */ |
| 280 | void pstm_zero(pstm_int * a) | 298 | static void pstm_zero(pstm_int * a) |
| 281 | { | 299 | { |
| 282 | int32 n; | 300 | int32 n; |
| 283 | pstm_digit *tmp; | 301 | pstm_digit *tmp; |
| @@ -296,7 +314,7 @@ void pstm_zero(pstm_int * a) | |||
| 296 | /* | 314 | /* |
| 297 | Compare maginitude of two ints (unsigned). | 315 | Compare maginitude of two ints (unsigned). |
| 298 | */ | 316 | */ |
| 299 | int32 pstm_cmp_mag(pstm_int * a, pstm_int * b) | 317 | int32 FAST_FUNC pstm_cmp_mag(pstm_int * a, pstm_int * b) |
| 300 | { | 318 | { |
| 301 | int n; //bbox: was int16 | 319 | int n; //bbox: was int16 |
| 302 | pstm_digit *tmpa, *tmpb; | 320 | pstm_digit *tmpa, *tmpb; |
| @@ -336,7 +354,7 @@ int32 pstm_cmp_mag(pstm_int * a, pstm_int * b) | |||
| 336 | /* | 354 | /* |
| 337 | Compare two ints (signed) | 355 | Compare two ints (signed) |
| 338 | */ | 356 | */ |
| 339 | int32 pstm_cmp(pstm_int * a, pstm_int * b) | 357 | int32 FAST_FUNC pstm_cmp(pstm_int * a, pstm_int * b) |
| 340 | { | 358 | { |
| 341 | /* | 359 | /* |
| 342 | compare based on sign | 360 | compare based on sign |
| @@ -364,7 +382,7 @@ int32 pstm_cmp(pstm_int * a, pstm_int * b) | |||
| 364 | pstm_ints can be initialized more precisely when they will populated | 382 | pstm_ints can be initialized more precisely when they will populated |
| 365 | using pstm_read_unsigned_bin since the length of the byte stream is known | 383 | using pstm_read_unsigned_bin since the length of the byte stream is known |
| 366 | */ | 384 | */ |
| 367 | int32 pstm_init_for_read_unsigned_bin(psPool_t *pool, pstm_int *a, uint32 len) | 385 | int32 FAST_FUNC pstm_init_for_read_unsigned_bin(psPool_t *pool, pstm_int *a, uint32 len) |
| 368 | { | 386 | { |
| 369 | int32 size; | 387 | int32 size; |
| 370 | /* | 388 | /* |
| @@ -385,7 +403,7 @@ int32 pstm_init_for_read_unsigned_bin(psPool_t *pool, pstm_int *a, uint32 len) | |||
| 385 | called pstm_init_for_read_unsigned_bin first. There is some grow logic | 403 | called pstm_init_for_read_unsigned_bin first. There is some grow logic |
| 386 | here if the default pstm_init was used but we don't really want to hit it. | 404 | here if the default pstm_init was used but we don't really want to hit it. |
| 387 | */ | 405 | */ |
| 388 | int32 pstm_read_unsigned_bin(pstm_int *a, unsigned char *b, int32 c) | 406 | int32 FAST_FUNC pstm_read_unsigned_bin(pstm_int *a, unsigned char *b, int32 c) |
| 389 | { | 407 | { |
| 390 | /* zero the int */ | 408 | /* zero the int */ |
| 391 | pstm_zero (a); | 409 | pstm_zero (a); |
| @@ -460,7 +478,7 @@ int32 pstm_read_unsigned_bin(pstm_int *a, unsigned char *b, int32 c) | |||
| 460 | /******************************************************************************/ | 478 | /******************************************************************************/ |
| 461 | /* | 479 | /* |
| 462 | */ | 480 | */ |
| 463 | int pstm_count_bits (pstm_int * a) | 481 | static int pstm_count_bits(pstm_int * a) |
| 464 | { | 482 | { |
| 465 | int r; //bbox: was int16 | 483 | int r; //bbox: was int16 |
| 466 | pstm_digit q; | 484 | pstm_digit q; |
| @@ -482,14 +500,14 @@ int pstm_count_bits (pstm_int * a) | |||
| 482 | } | 500 | } |
| 483 | 501 | ||
| 484 | /******************************************************************************/ | 502 | /******************************************************************************/ |
| 485 | int32 pstm_unsigned_bin_size(pstm_int *a) | 503 | int32 FAST_FUNC pstm_unsigned_bin_size(pstm_int *a) |
| 486 | { | 504 | { |
| 487 | int32 size = pstm_count_bits (a); | 505 | int32 size = pstm_count_bits (a); |
| 488 | return (size / 8 + ((size & 7) != 0 ? 1 : 0)); | 506 | return (size / 8 + ((size & 7) != 0 ? 1 : 0)); |
| 489 | } | 507 | } |
| 490 | 508 | ||
| 491 | /******************************************************************************/ | 509 | /******************************************************************************/ |
| 492 | void pstm_set(pstm_int *a, pstm_digit b) | 510 | static void pstm_set(pstm_int *a, pstm_digit b) |
| 493 | { | 511 | { |
| 494 | pstm_zero(a); | 512 | pstm_zero(a); |
| 495 | a->dp[0] = b; | 513 | a->dp[0] = b; |
| @@ -500,7 +518,7 @@ void pstm_set(pstm_int *a, pstm_digit b) | |||
| 500 | /* | 518 | /* |
| 501 | Right shift | 519 | Right shift |
| 502 | */ | 520 | */ |
| 503 | void pstm_rshd(pstm_int *a, int x) | 521 | static void pstm_rshd(pstm_int *a, int x) |
| 504 | { | 522 | { |
| 505 | int y; //bbox: was int16 | 523 | int y; //bbox: was int16 |
| 506 | 524 | ||
| @@ -529,7 +547,8 @@ void pstm_rshd(pstm_int *a, int x) | |||
| 529 | /* | 547 | /* |
| 530 | Shift left a certain amount of digits. | 548 | Shift left a certain amount of digits. |
| 531 | */ | 549 | */ |
| 532 | int32 pstm_lshd(pstm_int * a, int b) | 550 | #undef pstm_lshd |
| 551 | static int32 pstm_lshd(pstm_int * a, int b) | ||
| 533 | { | 552 | { |
| 534 | int x; //bbox: was int16 | 553 | int x; //bbox: was int16 |
| 535 | int32 res; | 554 | int32 res; |
| @@ -577,12 +596,13 @@ int32 pstm_lshd(pstm_int * a, int b) | |||
| 577 | } | 596 | } |
| 578 | return PSTM_OKAY; | 597 | return PSTM_OKAY; |
| 579 | } | 598 | } |
| 599 | #define pstm_lshd(a, b) (pstm_lshd(a, b), PSTM_OKAY) | ||
| 580 | 600 | ||
| 581 | /******************************************************************************/ | 601 | /******************************************************************************/ |
| 582 | /* | 602 | /* |
| 583 | computes a = 2**b | 603 | computes a = 2**b |
| 584 | */ | 604 | */ |
| 585 | int32 pstm_2expt(pstm_int *a, int b) | 605 | static int32 pstm_2expt(pstm_int *a, int b) |
| 586 | { | 606 | { |
| 587 | int z; //bbox: was int16 | 607 | int z; //bbox: was int16 |
| 588 | 608 | ||
| @@ -616,7 +636,7 @@ int32 pstm_2expt(pstm_int *a, int b) | |||
| 616 | /* | 636 | /* |
| 617 | 637 | ||
| 618 | */ | 638 | */ |
| 619 | int32 pstm_mul_2(pstm_int * a, pstm_int * b) | 639 | int32 FAST_FUNC pstm_mul_2(pstm_int * a, pstm_int * b) |
| 620 | { | 640 | { |
| 621 | int32 res; | 641 | int32 res; |
| 622 | int x, oldused; //bbox: was int16 | 642 | int x, oldused; //bbox: was int16 |
| @@ -682,7 +702,7 @@ int32 pstm_mul_2(pstm_int * a, pstm_int * b) | |||
| 682 | /* | 702 | /* |
| 683 | unsigned subtraction ||a|| >= ||b|| ALWAYS! | 703 | unsigned subtraction ||a|| >= ||b|| ALWAYS! |
| 684 | */ | 704 | */ |
| 685 | int32 s_pstm_sub(pstm_int *a, pstm_int *b, pstm_int *c) | 705 | int32 FAST_FUNC s_pstm_sub(pstm_int *a, pstm_int *b, pstm_int *c) |
| 686 | { | 706 | { |
| 687 | int oldbused, oldused; //bbox: was int16 | 707 | int oldbused, oldused; //bbox: was int16 |
| 688 | int32 x; | 708 | int32 x; |
| @@ -779,7 +799,7 @@ static int32 s_pstm_add(pstm_int *a, pstm_int *b, pstm_int *c) | |||
| 779 | /* | 799 | /* |
| 780 | 800 | ||
| 781 | */ | 801 | */ |
| 782 | int32 pstm_sub(pstm_int *a, pstm_int *b, pstm_int *c) | 802 | int32 FAST_FUNC pstm_sub(pstm_int *a, pstm_int *b, pstm_int *c) |
| 783 | { | 803 | { |
| 784 | int32 res; | 804 | int32 res; |
| 785 | int sa, sb; //bbox: was int16 | 805 | int sa, sb; //bbox: was int16 |
| @@ -824,6 +844,7 @@ int32 pstm_sub(pstm_int *a, pstm_int *b, pstm_int *c) | |||
| 824 | /* | 844 | /* |
| 825 | c = a - b | 845 | c = a - b |
| 826 | */ | 846 | */ |
| 847 | #if 0 //UNUSED | ||
| 827 | int32 pstm_sub_d(psPool_t *pool, pstm_int *a, pstm_digit b, pstm_int *c) | 848 | int32 pstm_sub_d(psPool_t *pool, pstm_int *a, pstm_digit b, pstm_int *c) |
| 828 | { | 849 | { |
| 829 | pstm_int tmp; | 850 | pstm_int tmp; |
| @@ -837,12 +858,13 @@ int32 pstm_sub_d(psPool_t *pool, pstm_int *a, pstm_digit b, pstm_int *c) | |||
| 837 | pstm_clear(&tmp); | 858 | pstm_clear(&tmp); |
| 838 | return res; | 859 | return res; |
| 839 | } | 860 | } |
| 861 | #endif | ||
| 840 | 862 | ||
| 841 | /******************************************************************************/ | 863 | /******************************************************************************/ |
| 842 | /* | 864 | /* |
| 843 | setups the montgomery reduction | 865 | setups the montgomery reduction |
| 844 | */ | 866 | */ |
| 845 | int32 pstm_montgomery_setup(pstm_int *a, pstm_digit *rho) | 867 | static int32 pstm_montgomery_setup(pstm_int *a, pstm_digit *rho) |
| 846 | { | 868 | { |
| 847 | pstm_digit x, b; | 869 | pstm_digit x, b; |
| 848 | 870 | ||
| @@ -878,7 +900,7 @@ int32 pstm_montgomery_setup(pstm_int *a, pstm_digit *rho) | |||
| 878 | * computes a = B**n mod b without division or multiplication useful for | 900 | * computes a = B**n mod b without division or multiplication useful for |
| 879 | * normalizing numbers in a Montgomery system. | 901 | * normalizing numbers in a Montgomery system. |
| 880 | */ | 902 | */ |
| 881 | int32 pstm_montgomery_calc_normalization(pstm_int *a, pstm_int *b) | 903 | static int32 pstm_montgomery_calc_normalization(pstm_int *a, pstm_int *b) |
| 882 | { | 904 | { |
| 883 | int32 x; | 905 | int32 x; |
| 884 | int bits; //bbox: was int16 | 906 | int bits; //bbox: was int16 |
| @@ -916,6 +938,7 @@ int32 pstm_montgomery_calc_normalization(pstm_int *a, pstm_int *b) | |||
| 916 | /* | 938 | /* |
| 917 | c = a * 2**d | 939 | c = a * 2**d |
| 918 | */ | 940 | */ |
| 941 | #undef pstm_mul_2d | ||
| 919 | static int32 pstm_mul_2d(pstm_int *a, int b, pstm_int *c) | 942 | static int32 pstm_mul_2d(pstm_int *a, int b, pstm_int *c) |
| 920 | { | 943 | { |
| 921 | pstm_digit carry, carrytmp, shift; | 944 | pstm_digit carry, carrytmp, shift; |
| @@ -956,11 +979,13 @@ static int32 pstm_mul_2d(pstm_int *a, int b, pstm_int *c) | |||
| 956 | pstm_clamp(c); | 979 | pstm_clamp(c); |
| 957 | return PSTM_OKAY; | 980 | return PSTM_OKAY; |
| 958 | } | 981 | } |
| 982 | #define pstm_mul_2d(a, b, c) (pstm_mul_2d(a, b, c), PSTM_OKAY) | ||
| 959 | 983 | ||
| 960 | /******************************************************************************/ | 984 | /******************************************************************************/ |
| 961 | /* | 985 | /* |
| 962 | c = a mod 2**d | 986 | c = a mod 2**d |
| 963 | */ | 987 | */ |
| 988 | #undef pstm_mod_2d | ||
| 964 | static int32 pstm_mod_2d(pstm_int *a, int b, pstm_int *c) //bbox: was int16 b | 989 | static int32 pstm_mod_2d(pstm_int *a, int b, pstm_int *c) //bbox: was int16 b |
| 965 | { | 990 | { |
| 966 | int x; //bbox: was int16 | 991 | int x; //bbox: was int16 |
| @@ -991,13 +1016,15 @@ static int32 pstm_mod_2d(pstm_int *a, int b, pstm_int *c) //bbox: was int16 b | |||
| 991 | pstm_clamp (c); | 1016 | pstm_clamp (c); |
| 992 | return PSTM_OKAY; | 1017 | return PSTM_OKAY; |
| 993 | } | 1018 | } |
| 1019 | #define pstm_mod_2d(a, b, c) (pstm_mod_2d(a, b, c), PSTM_OKAY) | ||
| 994 | 1020 | ||
| 995 | 1021 | ||
| 996 | /******************************************************************************/ | 1022 | /******************************************************************************/ |
| 997 | /* | 1023 | /* |
| 998 | c = a * b | 1024 | c = a * b |
| 999 | */ | 1025 | */ |
| 1000 | int32 pstm_mul_d(pstm_int *a, pstm_digit b, pstm_int *c) | 1026 | #undef pstm_mul_d |
| 1027 | static int32 pstm_mul_d(pstm_int *a, pstm_digit b, pstm_int *c) | ||
| 1001 | { | 1028 | { |
| 1002 | pstm_word w; | 1029 | pstm_word w; |
| 1003 | int32 res; | 1030 | int32 res; |
| @@ -1027,12 +1054,16 @@ int32 pstm_mul_d(pstm_int *a, pstm_digit b, pstm_int *c) | |||
| 1027 | pstm_clamp(c); | 1054 | pstm_clamp(c); |
| 1028 | return PSTM_OKAY; | 1055 | return PSTM_OKAY; |
| 1029 | } | 1056 | } |
| 1057 | #define pstm_mul_d(a, b, c) (pstm_mul_d(a, b, c), PSTM_OKAY) | ||
| 1030 | 1058 | ||
| 1031 | /******************************************************************************/ | 1059 | /******************************************************************************/ |
| 1032 | /* | 1060 | /* |
| 1033 | c = a / 2**b | 1061 | c = a / 2**b |
| 1034 | */ | 1062 | */ |
| 1035 | int32 pstm_div_2d(psPool_t *pool, pstm_int *a, int b, pstm_int *c, | 1063 | #undef pstm_div_2d |
| 1064 | #define pstm_div_2d(pool, a, b, c, d) \ | ||
| 1065 | pstm_div_2d( a, b, c, d) | ||
| 1066 | static int32 pstm_div_2d(psPool_t *pool, pstm_int *a, int b, pstm_int *c, | ||
| 1036 | pstm_int *d) | 1067 | pstm_int *d) |
| 1037 | { | 1068 | { |
| 1038 | pstm_digit D, r, rr; | 1069 | pstm_digit D, r, rr; |
| @@ -1113,11 +1144,14 @@ LBL_DONE: | |||
| 1113 | } | 1144 | } |
| 1114 | return res; | 1145 | return res; |
| 1115 | } | 1146 | } |
| 1147 | #undef pstm_div_2d | ||
| 1148 | #define pstm_div_2d(pool, a, b, c, d) (pstm_div_2d(a, b, c, d), PSTM_OKAY) | ||
| 1116 | 1149 | ||
| 1117 | /******************************************************************************/ | 1150 | /******************************************************************************/ |
| 1118 | /* | 1151 | /* |
| 1119 | b = a/2 | 1152 | b = a/2 |
| 1120 | */ | 1153 | */ |
| 1154 | #if 0 //UNUSED | ||
| 1121 | int32 pstm_div_2(pstm_int * a, pstm_int * b) | 1155 | int32 pstm_div_2(pstm_int * a, pstm_int * b) |
| 1122 | { | 1156 | { |
| 1123 | int x, oldused; //bbox: was int16 | 1157 | int x, oldused; //bbox: was int16 |
| @@ -1161,12 +1195,16 @@ int32 pstm_div_2(pstm_int * a, pstm_int * b) | |||
| 1161 | pstm_clamp (b); | 1195 | pstm_clamp (b); |
| 1162 | return PSTM_OKAY; | 1196 | return PSTM_OKAY; |
| 1163 | } | 1197 | } |
| 1198 | #endif | ||
| 1164 | 1199 | ||
| 1165 | /******************************************************************************/ | 1200 | /******************************************************************************/ |
| 1166 | /* | 1201 | /* |
| 1167 | Creates "a" then copies b into it | 1202 | Creates "a" then copies b into it |
| 1168 | */ | 1203 | */ |
| 1169 | int32 pstm_init_copy(psPool_t *pool, pstm_int * a, pstm_int * b, int toSqr) | 1204 | #undef pstm_init_copy |
| 1205 | #define pstm_init_copy(pool, a, b, toSqr) \ | ||
| 1206 | pstm_init_copy( a, b, toSqr) | ||
| 1207 | static int32 pstm_init_copy(psPool_t *pool, pstm_int * a, pstm_int * b, int toSqr) | ||
| 1170 | { | 1208 | { |
| 1171 | int x; //bbox: was int16 | 1209 | int x; //bbox: was int16 |
| 1172 | int32 res; | 1210 | int32 res; |
| @@ -1191,6 +1229,8 @@ int32 pstm_init_copy(psPool_t *pool, pstm_int * a, pstm_int * b, int toSqr) | |||
| 1191 | } | 1229 | } |
| 1192 | return pstm_copy(b, a); | 1230 | return pstm_copy(b, a); |
| 1193 | } | 1231 | } |
| 1232 | #undef pstm_init_copy | ||
| 1233 | #define pstm_init_copy(pool, a, b, toSqr) (pstm_init_copy(a, b, toSqr), PSTM_OKAY) | ||
| 1194 | 1234 | ||
| 1195 | /******************************************************************************/ | 1235 | /******************************************************************************/ |
| 1196 | /* | 1236 | /* |
| @@ -1274,7 +1314,7 @@ static uint64 psDiv128(uint128 *numerator, uint64 denominator) | |||
| 1274 | /* | 1314 | /* |
| 1275 | a/b => cb + d == a | 1315 | a/b => cb + d == a |
| 1276 | */ | 1316 | */ |
| 1277 | int32 pstm_div(psPool_t *pool, pstm_int *a, pstm_int *b, pstm_int *c, | 1317 | static int32 pstm_div(psPool_t *pool, pstm_int *a, pstm_int *b, pstm_int *c, |
| 1278 | pstm_int *d) | 1318 | pstm_int *d) |
| 1279 | { | 1319 | { |
| 1280 | pstm_int q, x, y, t1, t2; | 1320 | pstm_int q, x, y, t1, t2; |
| @@ -1487,7 +1527,7 @@ LBL_T1:pstm_clear (&t1); | |||
| 1487 | Swap the elements of two integers, for cases where you can't simply swap | 1527 | Swap the elements of two integers, for cases where you can't simply swap |
| 1488 | the pstm_int pointers around | 1528 | the pstm_int pointers around |
| 1489 | */ | 1529 | */ |
| 1490 | void pstm_exch(pstm_int * a, pstm_int * b) | 1530 | static void pstm_exch(pstm_int * a, pstm_int * b) |
| 1491 | { | 1531 | { |
| 1492 | pstm_int t; | 1532 | pstm_int t; |
| 1493 | 1533 | ||
| @@ -1500,7 +1540,7 @@ void pstm_exch(pstm_int * a, pstm_int * b) | |||
| 1500 | /* | 1540 | /* |
| 1501 | c = a mod b, 0 <= c < b | 1541 | c = a mod b, 0 <= c < b |
| 1502 | */ | 1542 | */ |
| 1503 | int32 pstm_mod(psPool_t *pool, pstm_int *a, pstm_int *b, pstm_int *c) | 1543 | static int32 pstm_mod(psPool_t *pool, pstm_int *a, pstm_int *b, pstm_int *c) |
| 1504 | { | 1544 | { |
| 1505 | pstm_int t; | 1545 | pstm_int t; |
| 1506 | int32 err; | 1546 | int32 err; |
| @@ -1527,7 +1567,7 @@ int32 pstm_mod(psPool_t *pool, pstm_int *a, pstm_int *b, pstm_int *c) | |||
| 1527 | /* | 1567 | /* |
| 1528 | d = a * b (mod c) | 1568 | d = a * b (mod c) |
| 1529 | */ | 1569 | */ |
| 1530 | int32 pstm_mulmod(psPool_t *pool, pstm_int *a, pstm_int *b, pstm_int *c, | 1570 | int32 FAST_FUNC pstm_mulmod(psPool_t *pool, pstm_int *a, pstm_int *b, pstm_int *c, |
| 1531 | pstm_int *d) | 1571 | pstm_int *d) |
| 1532 | { | 1572 | { |
| 1533 | int32 res; | 1573 | int32 res; |
| @@ -1560,7 +1600,7 @@ int32 pstm_mulmod(psPool_t *pool, pstm_int *a, pstm_int *b, pstm_int *c, | |||
| 1560 | * y = g**x (mod b) | 1600 | * y = g**x (mod b) |
| 1561 | * Some restrictions... x must be positive and < b | 1601 | * Some restrictions... x must be positive and < b |
| 1562 | */ | 1602 | */ |
| 1563 | int32 pstm_exptmod(psPool_t *pool, pstm_int *G, pstm_int *X, pstm_int *P, | 1603 | int32 FAST_FUNC pstm_exptmod(psPool_t *pool, pstm_int *G, pstm_int *X, pstm_int *P, |
| 1564 | pstm_int *Y) | 1604 | pstm_int *Y) |
| 1565 | { | 1605 | { |
| 1566 | pstm_int M[32], res; /* Keep this winsize based: (1 << max_winsize) */ | 1606 | pstm_int M[32], res; /* Keep this winsize based: (1 << max_winsize) */ |
| @@ -1801,7 +1841,7 @@ LBL_RES:pstm_clear(&res); | |||
| 1801 | /* | 1841 | /* |
| 1802 | 1842 | ||
| 1803 | */ | 1843 | */ |
| 1804 | int32 pstm_add(pstm_int *a, pstm_int *b, pstm_int *c) | 1844 | int32 FAST_FUNC pstm_add(pstm_int *a, pstm_int *b, pstm_int *c) |
| 1805 | { | 1845 | { |
| 1806 | int32 res; | 1846 | int32 res; |
| 1807 | int sa, sb; //bbox: was int16 | 1847 | int sa, sb; //bbox: was int16 |
| @@ -1862,6 +1902,7 @@ static void pstm_reverse (unsigned char *s, int len) //bbox: was int16 len | |||
| 1862 | No reverse. Useful in some of the EIP-154 PKA stuff where special byte | 1902 | No reverse. Useful in some of the EIP-154 PKA stuff where special byte |
| 1863 | order seems to come into play more often | 1903 | order seems to come into play more often |
| 1864 | */ | 1904 | */ |
| 1905 | #if 0 //UNUSED | ||
| 1865 | int32 pstm_to_unsigned_bin_nr(psPool_t *pool, pstm_int *a, unsigned char *b) | 1906 | int32 pstm_to_unsigned_bin_nr(psPool_t *pool, pstm_int *a, unsigned char *b) |
| 1866 | { | 1907 | { |
| 1867 | int32 res; | 1908 | int32 res; |
| @@ -1883,11 +1924,12 @@ int32 pstm_to_unsigned_bin_nr(psPool_t *pool, pstm_int *a, unsigned char *b) | |||
| 1883 | pstm_clear(&t); | 1924 | pstm_clear(&t); |
| 1884 | return PS_SUCCESS; | 1925 | return PS_SUCCESS; |
| 1885 | } | 1926 | } |
| 1927 | #endif | ||
| 1886 | /******************************************************************************/ | 1928 | /******************************************************************************/ |
| 1887 | /* | 1929 | /* |
| 1888 | 1930 | ||
| 1889 | */ | 1931 | */ |
| 1890 | int32 pstm_to_unsigned_bin(psPool_t *pool, pstm_int *a, unsigned char *b) | 1932 | int32 FAST_FUNC pstm_to_unsigned_bin(psPool_t *pool, pstm_int *a, unsigned char *b) |
| 1891 | { | 1933 | { |
| 1892 | int32 res; | 1934 | int32 res; |
| 1893 | int x; //bbox: was int16 | 1935 | int x; //bbox: was int16 |
| @@ -1910,11 +1952,12 @@ int32 pstm_to_unsigned_bin(psPool_t *pool, pstm_int *a, unsigned char *b) | |||
| 1910 | return PS_SUCCESS; | 1952 | return PS_SUCCESS; |
| 1911 | } | 1953 | } |
| 1912 | 1954 | ||
| 1955 | #if 0 //UNUSED | ||
| 1913 | /******************************************************************************/ | 1956 | /******************************************************************************/ |
| 1914 | /* | 1957 | /* |
| 1915 | compare against a single digit | 1958 | compare against a single digit |
| 1916 | */ | 1959 | */ |
| 1917 | int32 pstm_cmp_d(pstm_int *a, pstm_digit b) | 1960 | static int32 pstm_cmp_d(pstm_int *a, pstm_digit b) |
| 1918 | { | 1961 | { |
| 1919 | /* compare based on sign */ | 1962 | /* compare based on sign */ |
| 1920 | if ((b && a->used == 0) || a->sign == PSTM_NEG) { | 1963 | if ((b && a->used == 0) || a->sign == PSTM_NEG) { |
| @@ -2259,5 +2302,7 @@ LBL_Y: pstm_clear(&y); | |||
| 2259 | LBL_X: pstm_clear(&x); | 2302 | LBL_X: pstm_clear(&x); |
| 2260 | return res; | 2303 | return res; |
| 2261 | } | 2304 | } |
| 2305 | #endif //UNUSED | ||
| 2306 | |||
| 2262 | #endif /* !DISABLE_PSTM */ | 2307 | #endif /* !DISABLE_PSTM */ |
| 2263 | /******************************************************************************/ | 2308 | /******************************************************************************/ |
diff --git a/networking/tls_pstm.h b/networking/tls_pstm.h index df705adce..bc7a0119a 100644 --- a/networking/tls_pstm.h +++ b/networking/tls_pstm.h | |||
| @@ -136,148 +136,148 @@ typedef struct { | |||
| 136 | #define pstm_isodd(a) (((a)->used > 0 && (((a)->dp[0] & 1) == 1)) ? PS_TRUE : PS_FALSE) | 136 | #define pstm_isodd(a) (((a)->used > 0 && (((a)->dp[0] & 1) == 1)) ? PS_TRUE : PS_FALSE) |
| 137 | #define pstm_abs(a, b) { pstm_copy(a, b); (b)->sign = 0; } | 137 | #define pstm_abs(a, b) { pstm_copy(a, b); (b)->sign = 0; } |
| 138 | 138 | ||
| 139 | extern void pstm_set(pstm_int *a, pstm_digit b); | 139 | //made static:extern void pstm_set(pstm_int *a, pstm_digit b); |
| 140 | 140 | ||
| 141 | extern void pstm_zero(pstm_int * a); | 141 | //made static:extern void pstm_zero(pstm_int * a); |
| 142 | 142 | ||
| 143 | //bbox: pool unused | 143 | //bbox: pool unused |
| 144 | #define pstm_init(pool, a) \ | 144 | #define pstm_init(pool, a) \ |
| 145 | pstm_init( a) | 145 | pstm_init( a) |
| 146 | extern int32 pstm_init(psPool_t *pool, pstm_int * a); | 146 | //made static:extern int32 pstm_init(psPool_t *pool, pstm_int * a); |
| 147 | 147 | ||
| 148 | //bbox: pool unused | 148 | //bbox: pool unused |
| 149 | #define pstm_init_size(pool, a, size) \ | 149 | #define pstm_init_size(pool, a, size) \ |
| 150 | pstm_init_size( a, size) | 150 | pstm_init_size( a, size) |
| 151 | extern int32 pstm_init_size(psPool_t *pool, pstm_int * a, uint32 size); | 151 | extern int32 pstm_init_size(psPool_t *pool, pstm_int * a, uint32 size) FAST_FUNC; |
| 152 | 152 | ||
| 153 | //bbox: pool unused | 153 | //bbox: pool unused |
| 154 | #define pstm_init_copy(pool, a, b, toSqr) \ | 154 | #define pstm_init_copy(pool, a, b, toSqr) \ |
| 155 | pstm_init_copy( a, b, toSqr) | 155 | pstm_init_copy( a, b, toSqr) |
| 156 | extern int32 pstm_init_copy(psPool_t *pool, pstm_int * a, pstm_int * b, | 156 | //made static:extern int32 pstm_init_copy(psPool_t *pool, pstm_int * a, pstm_int * b, |
| 157 | int toSqr); //bbox: was int16 toSqr | 157 | //made static: int toSqr); //bbox: was int16 toSqr |
| 158 | 158 | ||
| 159 | extern int pstm_count_bits (pstm_int * a); //bbox: was returning int16 | 159 | //made static:extern int pstm_count_bits (pstm_int * a) FAST_FUNC; //bbox: was returning int16 |
| 160 | 160 | ||
| 161 | //bbox: pool unused | 161 | //bbox: pool unused |
| 162 | #define pstm_init_for_read_unsigned_bin(pool, a, len) \ | 162 | #define pstm_init_for_read_unsigned_bin(pool, a, len) \ |
| 163 | pstm_init_for_read_unsigned_bin( a, len) | 163 | pstm_init_for_read_unsigned_bin( a, len) |
| 164 | extern int32 pstm_init_for_read_unsigned_bin(psPool_t *pool, pstm_int *a, | 164 | extern int32 pstm_init_for_read_unsigned_bin(psPool_t *pool, pstm_int *a, |
| 165 | uint32 len); | 165 | uint32 len) FAST_FUNC; |
| 166 | 166 | ||
| 167 | extern int32 pstm_read_unsigned_bin(pstm_int *a, unsigned char *b, int32 c); | 167 | extern int32 pstm_read_unsigned_bin(pstm_int *a, unsigned char *b, int32 c) FAST_FUNC; |
| 168 | 168 | ||
| 169 | extern int32 pstm_unsigned_bin_size(pstm_int *a); | 169 | extern int32 pstm_unsigned_bin_size(pstm_int *a) FAST_FUNC; |
| 170 | 170 | ||
| 171 | extern int32 pstm_copy(pstm_int * a, pstm_int * b); | 171 | extern int32 pstm_copy(pstm_int * a, pstm_int * b); |
| 172 | 172 | ||
| 173 | extern void pstm_exch(pstm_int * a, pstm_int * b); | 173 | //made static:extern void pstm_exch(pstm_int * a, pstm_int * b); |
| 174 | 174 | ||
| 175 | extern void pstm_clear(pstm_int * a); | 175 | extern void pstm_clear(pstm_int * a) FAST_FUNC; |
| 176 | 176 | ||
| 177 | extern void pstm_clear_multi(pstm_int *mp0, pstm_int *mp1, pstm_int *mp2, | 177 | extern void pstm_clear_multi(pstm_int *mp0, pstm_int *mp1, pstm_int *mp2, |
| 178 | pstm_int *mp3, pstm_int *mp4, pstm_int *mp5, pstm_int *mp6, | 178 | pstm_int *mp3, pstm_int *mp4, pstm_int *mp5, pstm_int *mp6, |
| 179 | pstm_int *mp7); | 179 | pstm_int *mp7) FAST_FUNC; |
| 180 | 180 | ||
| 181 | extern int32 pstm_grow(pstm_int * a, int size); //bbox: was int16 size | 181 | extern int32 pstm_grow(pstm_int * a, int size) FAST_FUNC; //bbox: was int16 size |
| 182 | 182 | ||
| 183 | extern void pstm_clamp(pstm_int * a); | 183 | extern void pstm_clamp(pstm_int * a) FAST_FUNC; |
| 184 | 184 | ||
| 185 | extern int32 pstm_cmp(pstm_int * a, pstm_int * b); | 185 | extern int32 pstm_cmp(pstm_int * a, pstm_int * b) FAST_FUNC; |
| 186 | 186 | ||
| 187 | extern int32 pstm_cmp_mag(pstm_int * a, pstm_int * b); | 187 | extern int32 pstm_cmp_mag(pstm_int * a, pstm_int * b) FAST_FUNC; |
| 188 | 188 | ||
| 189 | extern void pstm_rshd(pstm_int *a, int x); //bbox: was int16 x | 189 | //made static:extern void pstm_rshd(pstm_int *a, int x); //bbox: was int16 x |
| 190 | 190 | ||
| 191 | extern int32 pstm_lshd(pstm_int * a, int b); //bbox: was int16 b | 191 | //made static:extern int32 pstm_lshd(pstm_int * a, int b); //bbox: was int16 b |
| 192 | 192 | ||
| 193 | //bbox: pool unused | 193 | //bbox: pool unused |
| 194 | #define pstm_div(pool, a, b, c, d) \ | 194 | #define pstm_div(pool, a, b, c, d) \ |
| 195 | pstm_div( a, b, c, d) | 195 | pstm_div( a, b, c, d) |
| 196 | extern int32 pstm_div(psPool_t *pool, pstm_int *a, pstm_int *b, pstm_int *c, | 196 | //made static:extern int32 pstm_div(psPool_t *pool, pstm_int *a, pstm_int *b, pstm_int *c, |
| 197 | pstm_int *d); | 197 | //made static: pstm_int *d); |
| 198 | 198 | ||
| 199 | //bbox: pool unused | 199 | //bbox: pool unused |
| 200 | #define pstm_div_2d(pool, a, b, c, d) \ | 200 | #define pstm_div_2d(pool, a, b, c, d) \ |
| 201 | pstm_div_2d( a, b, c, d) | 201 | pstm_div_2d( a, b, c, d) |
| 202 | extern int32 pstm_div_2d(psPool_t *pool, pstm_int *a, int b, pstm_int *c, | 202 | //made static:extern int32 pstm_div_2d(psPool_t *pool, pstm_int *a, int b, pstm_int *c, |
| 203 | pstm_int *d); //bbox: was int16 b | 203 | //made static: pstm_int *d); //bbox: was int16 b |
| 204 | 204 | ||
| 205 | extern int32 pstm_div_2(pstm_int * a, pstm_int * b); | 205 | extern int32 pstm_div_2(pstm_int * a, pstm_int * b) FAST_FUNC; |
| 206 | 206 | ||
| 207 | extern int32 s_pstm_sub(pstm_int *a, pstm_int *b, pstm_int *c); | 207 | extern int32 s_pstm_sub(pstm_int *a, pstm_int *b, pstm_int *c) FAST_FUNC; |
| 208 | 208 | ||
| 209 | extern int32 pstm_sub(pstm_int *a, pstm_int *b, pstm_int *c); | 209 | extern int32 pstm_sub(pstm_int *a, pstm_int *b, pstm_int *c) FAST_FUNC; |
| 210 | 210 | ||
| 211 | //bbox: pool unused | 211 | //bbox: pool unused |
| 212 | #define pstm_sub_d(pool, a, b, c) \ | 212 | #define pstm_sub_d(pool, a, b, c) \ |
| 213 | pstm_sub_d( a, b, c) | 213 | pstm_sub_d( a, b, c) |
| 214 | extern int32 pstm_sub_d(psPool_t *pool, pstm_int *a, pstm_digit b, pstm_int *c); | 214 | extern int32 pstm_sub_d(psPool_t *pool, pstm_int *a, pstm_digit b, pstm_int *c) FAST_FUNC; |
| 215 | 215 | ||
| 216 | extern int32 pstm_mul_2(pstm_int * a, pstm_int * b); | 216 | extern int32 pstm_mul_2(pstm_int * a, pstm_int * b) FAST_FUNC; |
| 217 | 217 | ||
| 218 | //bbox: pool unused | 218 | //bbox: pool unused |
| 219 | #define pstm_mod(pool, a, b, c) \ | 219 | #define pstm_mod(pool, a, b, c) \ |
| 220 | pstm_mod( a, b, c) | 220 | pstm_mod( a, b, c) |
| 221 | extern int32 pstm_mod(psPool_t *pool, pstm_int *a, pstm_int *b, pstm_int *c); | 221 | //made static:extern int32 pstm_mod(psPool_t *pool, pstm_int *a, pstm_int *b, pstm_int *c); |
| 222 | 222 | ||
| 223 | //bbox: pool unused | 223 | //bbox: pool unused |
| 224 | #define pstm_mulmod(pool, a, b, c, d) \ | 224 | #define pstm_mulmod(pool, a, b, c, d) \ |
| 225 | pstm_mulmod( a, b, c, d) | 225 | pstm_mulmod( a, b, c, d) |
| 226 | extern int32 pstm_mulmod(psPool_t *pool, pstm_int *a, pstm_int *b, pstm_int *c, | 226 | extern int32 pstm_mulmod(psPool_t *pool, pstm_int *a, pstm_int *b, pstm_int *c, |
| 227 | pstm_int *d); | 227 | pstm_int *d) FAST_FUNC; |
| 228 | 228 | ||
| 229 | //bbox: pool unused | 229 | //bbox: pool unused |
| 230 | #define pstm_exptmod(pool, G, X, P, Y) \ | 230 | #define pstm_exptmod(pool, G, X, P, Y) \ |
| 231 | pstm_exptmod( G, X, P, Y) | 231 | pstm_exptmod( G, X, P, Y) |
| 232 | extern int32 pstm_exptmod(psPool_t *pool, pstm_int *G, pstm_int *X, pstm_int *P, | 232 | extern int32 pstm_exptmod(psPool_t *pool, pstm_int *G, pstm_int *X, pstm_int *P, |
| 233 | pstm_int *Y); | 233 | pstm_int *Y) FAST_FUNC; |
| 234 | 234 | ||
| 235 | extern int32 pstm_2expt(pstm_int *a, int b); //bbox: was int16 b | 235 | //made static:extern int32 pstm_2expt(pstm_int *a, int b); //bbox: was int16 b |
| 236 | 236 | ||
| 237 | extern int32 pstm_add(pstm_int *a, pstm_int *b, pstm_int *c); | 237 | extern int32 pstm_add(pstm_int *a, pstm_int *b, pstm_int *c) FAST_FUNC; |
| 238 | 238 | ||
| 239 | //bbox: pool unused | 239 | //bbox: pool unused |
| 240 | #define pstm_to_unsigned_bin(pool, a, b) \ | 240 | #define pstm_to_unsigned_bin(pool, a, b) \ |
| 241 | pstm_to_unsigned_bin( a, b) | 241 | pstm_to_unsigned_bin( a, b) |
| 242 | extern int32 pstm_to_unsigned_bin(psPool_t *pool, pstm_int *a, | 242 | extern int32 pstm_to_unsigned_bin(psPool_t *pool, pstm_int *a, |
| 243 | unsigned char *b); | 243 | unsigned char *b) FAST_FUNC; |
| 244 | 244 | ||
| 245 | //bbox: pool unused | 245 | //bbox: pool unused |
| 246 | #define pstm_to_unsigned_bin_nr(pool, a, b) \ | 246 | #define pstm_to_unsigned_bin_nr(pool, a, b) \ |
| 247 | pstm_to_unsigned_bin_nr( a, b) | 247 | pstm_to_unsigned_bin_nr( a, b) |
| 248 | extern int32 pstm_to_unsigned_bin_nr(psPool_t *pool, pstm_int *a, | 248 | extern int32 pstm_to_unsigned_bin_nr(psPool_t *pool, pstm_int *a, |
| 249 | unsigned char *b); | 249 | unsigned char *b) FAST_FUNC; |
| 250 | 250 | ||
| 251 | extern int32 pstm_montgomery_setup(pstm_int *a, pstm_digit *rho); | 251 | //made static:extern int32 pstm_montgomery_setup(pstm_int *a, pstm_digit *rho); |
| 252 | 252 | ||
| 253 | //bbox: pool unused | 253 | //bbox: pool unused |
| 254 | #define pstm_montgomery_reduce(pool, a, m, mp, paD, paDlen) \ | 254 | #define pstm_montgomery_reduce(pool, a, m, mp, paD, paDlen) \ |
| 255 | pstm_montgomery_reduce( a, m, mp, paD, paDlen) | 255 | pstm_montgomery_reduce( a, m, mp, paD, paDlen) |
| 256 | extern int32 pstm_montgomery_reduce(psPool_t *pool, pstm_int *a, pstm_int *m, | 256 | extern int32 pstm_montgomery_reduce(psPool_t *pool, pstm_int *a, pstm_int *m, |
| 257 | pstm_digit mp, pstm_digit *paD, uint32 paDlen); | 257 | pstm_digit mp, pstm_digit *paD, uint32 paDlen) FAST_FUNC; |
| 258 | 258 | ||
| 259 | #define pstm_mul_comba(pool, A, B, C, paD, paDlen) \ | 259 | #define pstm_mul_comba(pool, A, B, C, paD, paDlen) \ |
| 260 | pstm_mul_comba( A, B, C, paD, paDlen) | 260 | pstm_mul_comba( A, B, C, paD, paDlen) |
| 261 | extern int32 pstm_mul_comba(psPool_t *pool, pstm_int *A, pstm_int *B, | 261 | extern int32 pstm_mul_comba(psPool_t *pool, pstm_int *A, pstm_int *B, |
| 262 | pstm_int *C, pstm_digit *paD, uint32 paDlen); | 262 | pstm_int *C, pstm_digit *paD, uint32 paDlen) FAST_FUNC; |
| 263 | 263 | ||
| 264 | //bbox: pool unused | 264 | //bbox: pool unused |
| 265 | #define pstm_sqr_comba(pool, A, B, paD, paDlen) \ | 265 | #define pstm_sqr_comba(pool, A, B, paD, paDlen) \ |
| 266 | pstm_sqr_comba( A, B, paD, paDlen) | 266 | pstm_sqr_comba( A, B, paD, paDlen) |
| 267 | extern int32 pstm_sqr_comba(psPool_t *pool, pstm_int *A, pstm_int *B, | 267 | extern int32 pstm_sqr_comba(psPool_t *pool, pstm_int *A, pstm_int *B, |
| 268 | pstm_digit *paD, uint32 paDlen); | 268 | pstm_digit *paD, uint32 paDlen) FAST_FUNC; |
| 269 | 269 | ||
| 270 | extern int32 pstm_cmp_d(pstm_int *a, pstm_digit b); | 270 | //made static:extern int32 pstm_cmp_d(pstm_int *a, pstm_digit b); |
| 271 | 271 | ||
| 272 | extern int32 pstm_montgomery_calc_normalization(pstm_int *a, pstm_int *b); | 272 | //made static:extern int32 pstm_montgomery_calc_normalization(pstm_int *a, pstm_int *b); |
| 273 | 273 | ||
| 274 | extern int32 pstm_mul_d(pstm_int *a, pstm_digit b, pstm_int *c); | 274 | //made static:extern int32 pstm_mul_d(pstm_int *a, pstm_digit b, pstm_int *c); |
| 275 | 275 | ||
| 276 | //bbox: pool unused | 276 | //bbox: pool unused |
| 277 | #define pstm_invmod(pool, a, b, c) \ | 277 | #define pstm_invmod(pool, a, b, c) \ |
| 278 | pstm_invmod( a, b, c) | 278 | pstm_invmod( a, b, c) |
| 279 | extern int32 pstm_invmod(psPool_t *pool, pstm_int * a, pstm_int * b, | 279 | extern int32 pstm_invmod(psPool_t *pool, pstm_int * a, pstm_int * b, |
| 280 | pstm_int * c); | 280 | pstm_int * c) FAST_FUNC; |
| 281 | 281 | ||
| 282 | #else /* DISABLE_PSTM */ | 282 | #else /* DISABLE_PSTM */ |
| 283 | typedef int32 pstm_int; | 283 | typedef int32 pstm_int; |
diff --git a/networking/tls_pstm_montgomery_reduce.c b/networking/tls_pstm_montgomery_reduce.c index 3391755e1..d46e2aa2b 100644 --- a/networking/tls_pstm_montgomery_reduce.c +++ b/networking/tls_pstm_montgomery_reduce.c | |||
| @@ -340,7 +340,7 @@ asm( \ | |||
| 340 | #define LO 0 | 340 | #define LO 0 |
| 341 | 341 | ||
| 342 | /* computes x/R == x (mod N) via Montgomery Reduction */ | 342 | /* computes x/R == x (mod N) via Montgomery Reduction */ |
| 343 | int32 pstm_montgomery_reduce(psPool_t *pool, pstm_int *a, pstm_int *m, | 343 | int32 FAST_FUNC pstm_montgomery_reduce(psPool_t *pool, pstm_int *a, pstm_int *m, |
| 344 | pstm_digit mp, pstm_digit *paD, uint32 paDlen) | 344 | pstm_digit mp, pstm_digit *paD, uint32 paDlen) |
| 345 | { | 345 | { |
| 346 | pstm_digit *c, *_c, *tmpm, mu; | 346 | pstm_digit *c, *_c, *tmpm, mu; |
diff --git a/networking/tls_pstm_mul_comba.c b/networking/tls_pstm_mul_comba.c index 6ba152bc1..ac4fcc3ef 100644 --- a/networking/tls_pstm_mul_comba.c +++ b/networking/tls_pstm_mul_comba.c | |||
| @@ -754,7 +754,7 @@ static int32 pstm_mul_comba32(pstm_int *A, pstm_int *B, pstm_int *C) | |||
| 754 | 754 | ||
| 755 | /******************************************************************************/ | 755 | /******************************************************************************/ |
| 756 | 756 | ||
| 757 | int32 pstm_mul_comba(psPool_t *pool, pstm_int *A, pstm_int *B, pstm_int *C, | 757 | int32 FAST_FUNC pstm_mul_comba(psPool_t *pool, pstm_int *A, pstm_int *B, pstm_int *C, |
| 758 | pstm_digit *paD, uint32 paDlen) | 758 | pstm_digit *paD, uint32 paDlen) |
| 759 | { | 759 | { |
| 760 | #ifdef USE_1024_KEY_SPEED_OPTIMIZATIONS | 760 | #ifdef USE_1024_KEY_SPEED_OPTIMIZATIONS |
diff --git a/networking/tls_pstm_sqr_comba.c b/networking/tls_pstm_sqr_comba.c index d5c74d2f0..8604132d6 100644 --- a/networking/tls_pstm_sqr_comba.c +++ b/networking/tls_pstm_sqr_comba.c | |||
| @@ -1085,7 +1085,7 @@ static int32 pstm_sqr_comba32(pstm_int *A, pstm_int *B) | |||
| 1085 | /******************************************************************************/ | 1085 | /******************************************************************************/ |
| 1086 | /* | 1086 | /* |
| 1087 | */ | 1087 | */ |
| 1088 | int32 pstm_sqr_comba(psPool_t *pool, pstm_int *A, pstm_int *B, pstm_digit *paD, | 1088 | int32 FAST_FUNC pstm_sqr_comba(psPool_t *pool, pstm_int *A, pstm_int *B, pstm_digit *paD, |
| 1089 | uint32 paDlen) | 1089 | uint32 paDlen) |
| 1090 | { | 1090 | { |
| 1091 | #ifdef USE_1024_KEY_SPEED_OPTIMIZATIONS | 1091 | #ifdef USE_1024_KEY_SPEED_OPTIMIZATIONS |
diff --git a/networking/tls_rsa.c b/networking/tls_rsa.c index 631397e4d..5fda1cb49 100644 --- a/networking/tls_rsa.c +++ b/networking/tls_rsa.c | |||
| @@ -173,7 +173,9 @@ error: | |||
| 173 | res = PS_FAILURE; | 173 | res = PS_FAILURE; |
| 174 | done: | 174 | done: |
| 175 | if (type == PRIVKEY_TYPE && key->optimized) { | 175 | if (type == PRIVKEY_TYPE && key->optimized) { |
| 176 | pstm_clear_multi(&tmpa, &tmpb, NULL, NULL, NULL, NULL, NULL, NULL); | 176 | //pstm_clear_multi(&tmpa, &tmpb, NULL, NULL, NULL, NULL, NULL, NULL); |
| 177 | pstm_clear(&tmpa); | ||
| 178 | pstm_clear(&tmpb); | ||
| 177 | } | 179 | } |
| 178 | pstm_clear(&tmp); | 180 | pstm_clear(&tmp); |
| 179 | return res; | 181 | return res; |
