Merge pull request #124 from minad/two-complement
add mp_complement, mp_tc_div_2d, mp_tc_and, mp_tc_or, mp_tc_xor
This commit is contained in:
		
						commit
						cbe30703ef
					
				
							
								
								
									
										26
									
								
								bn_mp_complement.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								bn_mp_complement.c
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,26 @@
 | 
				
			|||||||
 | 
					#include "tommath_private.h"
 | 
				
			||||||
 | 
					#ifdef BN_MP_COMPLEMENT_C
 | 
				
			||||||
 | 
					/* LibTomMath, multiple-precision integer library -- Tom St Denis
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * LibTomMath is a library that provides multiple-precision
 | 
				
			||||||
 | 
					 * integer arithmetic as well as number theoretic functionality.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The library was designed directly after the MPI library by
 | 
				
			||||||
 | 
					 * Michael Fromberger but has been written from scratch with
 | 
				
			||||||
 | 
					 * additional optimizations in place.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The library is free for all purposes without any express
 | 
				
			||||||
 | 
					 * guarantee it works.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* b = ~a */
 | 
				
			||||||
 | 
					int mp_complement(const mp_int *a, mp_int *b)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					   int res = mp_neg(a, b);
 | 
				
			||||||
 | 
					   return res == MP_OKAY ? mp_sub_d(b, 1, b) : res;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* ref:         $Format:%D$ */
 | 
				
			||||||
 | 
					/* git commit:  $Format:%H$ */
 | 
				
			||||||
 | 
					/* commit time: $Format:%ai$ */
 | 
				
			||||||
							
								
								
									
										90
									
								
								bn_mp_tc_and.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										90
									
								
								bn_mp_tc_and.c
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,90 @@
 | 
				
			|||||||
 | 
					#include "tommath_private.h"
 | 
				
			||||||
 | 
					#ifdef BN_MP_TC_AND_C
 | 
				
			||||||
 | 
					/* LibTomMath, multiple-precision integer library -- Tom St Denis
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * LibTomMath is a library that provides multiple-precision
 | 
				
			||||||
 | 
					 * integer arithmetic as well as number theoretic functionality.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The library was designed directly after the MPI library by
 | 
				
			||||||
 | 
					 * Michael Fromberger but has been written from scratch with
 | 
				
			||||||
 | 
					 * additional optimizations in place.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The library is free for all purposes without any express
 | 
				
			||||||
 | 
					 * guarantee it works.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* two complement and */
 | 
				
			||||||
 | 
					int mp_tc_and(const mp_int *a, const mp_int *b, mp_int *c)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					   int res = MP_OKAY, bits;
 | 
				
			||||||
 | 
					   int as = mp_isneg(a), bs = mp_isneg(b), s = 0;
 | 
				
			||||||
 | 
					   mp_int *mx = 0, _mx, acpy, bcpy;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   if (as || bs) {
 | 
				
			||||||
 | 
					      bits = MAX(mp_count_bits(a), mp_count_bits(b));
 | 
				
			||||||
 | 
					      res = mp_init_set_int(&_mx, 1);
 | 
				
			||||||
 | 
					      if (res != MP_OKAY) {
 | 
				
			||||||
 | 
					         goto end;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      mx = &_mx;
 | 
				
			||||||
 | 
					      res = mp_mul_2d(mx, bits + 1, mx);
 | 
				
			||||||
 | 
					      if (res != MP_OKAY) {
 | 
				
			||||||
 | 
					         goto end;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if (as) {
 | 
				
			||||||
 | 
					         res = mp_init(&acpy);
 | 
				
			||||||
 | 
					         if (res != MP_OKAY) {
 | 
				
			||||||
 | 
					            goto end;
 | 
				
			||||||
 | 
					         }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         res = mp_add(mx, a, &acpy);
 | 
				
			||||||
 | 
					         if (res != MP_OKAY) {
 | 
				
			||||||
 | 
					            mp_clear(&acpy);
 | 
				
			||||||
 | 
					            goto end;
 | 
				
			||||||
 | 
					         }
 | 
				
			||||||
 | 
					         a = &acpy;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      if (bs) {
 | 
				
			||||||
 | 
					         res = mp_init(&bcpy);
 | 
				
			||||||
 | 
					         if (res != MP_OKAY) {
 | 
				
			||||||
 | 
					            goto end;
 | 
				
			||||||
 | 
					         }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         res = mp_add(mx, b, &bcpy);
 | 
				
			||||||
 | 
					         if (res != MP_OKAY) {
 | 
				
			||||||
 | 
					            mp_clear(&bcpy);
 | 
				
			||||||
 | 
					            goto end;
 | 
				
			||||||
 | 
					         }
 | 
				
			||||||
 | 
					         b = &bcpy;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   res = mp_and(a, b, c);
 | 
				
			||||||
 | 
					   s = as & bs;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   if (s && res == MP_OKAY) {
 | 
				
			||||||
 | 
					      res = mp_sub(c, mx, c);
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					end:
 | 
				
			||||||
 | 
					   if (a == &acpy) {
 | 
				
			||||||
 | 
					      mp_clear(&acpy);
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   if (b == &bcpy) {
 | 
				
			||||||
 | 
					      mp_clear(&bcpy);
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   if (mx == &_mx) {
 | 
				
			||||||
 | 
					      mp_clear(mx);
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   return res;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* ref:         $Format:%D$ */
 | 
				
			||||||
 | 
					/* git commit:  $Format:%H$ */
 | 
				
			||||||
 | 
					/* commit time: $Format:%ai$ */
 | 
				
			||||||
							
								
								
									
										36
									
								
								bn_mp_tc_div_2d.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								bn_mp_tc_div_2d.c
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,36 @@
 | 
				
			|||||||
 | 
					#include "tommath_private.h"
 | 
				
			||||||
 | 
					#ifdef BN_MP_TC_DIV_2D_C
 | 
				
			||||||
 | 
					/* LibTomMath, multiple-precision integer library -- Tom St Denis
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * LibTomMath is a library that provides multiple-precision
 | 
				
			||||||
 | 
					 * integer arithmetic as well as number theoretic functionality.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The library was designed directly after the MPI library by
 | 
				
			||||||
 | 
					 * Michael Fromberger but has been written from scratch with
 | 
				
			||||||
 | 
					 * additional optimizations in place.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The library is free for all purposes without any express
 | 
				
			||||||
 | 
					 * guarantee it works.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* two complement right shift */
 | 
				
			||||||
 | 
					int mp_tc_div_2d(const mp_int *a, int b, mp_int *c)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  int res;
 | 
				
			||||||
 | 
					  if (!mp_isneg(a)) {
 | 
				
			||||||
 | 
					    return mp_div_2d(a, b, c, 0);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  res = mp_add_d(a, 1, c);
 | 
				
			||||||
 | 
					  if (res != MP_OKAY) {
 | 
				
			||||||
 | 
					    return res;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  res = mp_div_2d(c, b, c, 0);
 | 
				
			||||||
 | 
					  return res == MP_OKAY ? mp_sub_d(c, 1, c) : res;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* ref:         $Format:%D$ */
 | 
				
			||||||
 | 
					/* git commit:  $Format:%H$ */
 | 
				
			||||||
 | 
					/* commit time: $Format:%ai$ */
 | 
				
			||||||
							
								
								
									
										90
									
								
								bn_mp_tc_or.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										90
									
								
								bn_mp_tc_or.c
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,90 @@
 | 
				
			|||||||
 | 
					#include "tommath_private.h"
 | 
				
			||||||
 | 
					#ifdef BN_MP_TC_OR_C
 | 
				
			||||||
 | 
					/* LibTomMath, multiple-precision integer library -- Tom St Denis
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * LibTomMath is a library that provides multiple-precision
 | 
				
			||||||
 | 
					 * integer arithmetic as well as number theoretic functionality.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The library was designed directly after the MPI library by
 | 
				
			||||||
 | 
					 * Michael Fromberger but has been written from scratch with
 | 
				
			||||||
 | 
					 * additional optimizations in place.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The library is free for all purposes without any express
 | 
				
			||||||
 | 
					 * guarantee it works.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* two complement or */
 | 
				
			||||||
 | 
					int mp_tc_or(const mp_int *a, const mp_int *b, mp_int *c)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					   int res = MP_OKAY, bits;
 | 
				
			||||||
 | 
					   int as = mp_isneg(a), bs = mp_isneg(b), s = 0;
 | 
				
			||||||
 | 
					   mp_int *mx = 0, _mx, acpy, bcpy;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   if (as || bs) {
 | 
				
			||||||
 | 
					      bits = MAX(mp_count_bits(a), mp_count_bits(b));
 | 
				
			||||||
 | 
					      res = mp_init_set_int(&_mx, 1);
 | 
				
			||||||
 | 
					      if (res != MP_OKAY) {
 | 
				
			||||||
 | 
					         goto end;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      mx = &_mx;
 | 
				
			||||||
 | 
					      res = mp_mul_2d(mx, bits + 1, mx);
 | 
				
			||||||
 | 
					      if (res != MP_OKAY) {
 | 
				
			||||||
 | 
					         goto end;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if (as) {
 | 
				
			||||||
 | 
					         res = mp_init(&acpy);
 | 
				
			||||||
 | 
					         if (res != MP_OKAY) {
 | 
				
			||||||
 | 
					            goto end;
 | 
				
			||||||
 | 
					         }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         res = mp_add(mx, a, &acpy);
 | 
				
			||||||
 | 
					         if (res != MP_OKAY) {
 | 
				
			||||||
 | 
					            mp_clear(&acpy);
 | 
				
			||||||
 | 
					            goto end;
 | 
				
			||||||
 | 
					         }
 | 
				
			||||||
 | 
					         a = &acpy;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      if (bs) {
 | 
				
			||||||
 | 
					         res = mp_init(&bcpy);
 | 
				
			||||||
 | 
					         if (res != MP_OKAY) {
 | 
				
			||||||
 | 
					            goto end;
 | 
				
			||||||
 | 
					         }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         res = mp_add(mx, b, &bcpy);
 | 
				
			||||||
 | 
					         if (res != MP_OKAY) {
 | 
				
			||||||
 | 
					            mp_clear(&bcpy);
 | 
				
			||||||
 | 
					            goto end;
 | 
				
			||||||
 | 
					         }
 | 
				
			||||||
 | 
					         b = &bcpy;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   res = mp_or(a, b, c);
 | 
				
			||||||
 | 
					   s = as | bs;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   if (s && res == MP_OKAY) {
 | 
				
			||||||
 | 
					      res = mp_sub(c, mx, c);
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					end:
 | 
				
			||||||
 | 
					   if (a == &acpy) {
 | 
				
			||||||
 | 
					      mp_clear(&acpy);
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   if (b == &bcpy) {
 | 
				
			||||||
 | 
					      mp_clear(&bcpy);
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   if (mx == &_mx) {
 | 
				
			||||||
 | 
					      mp_clear(mx);
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   return res;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* ref:         $Format:%D$ */
 | 
				
			||||||
 | 
					/* git commit:  $Format:%H$ */
 | 
				
			||||||
 | 
					/* commit time: $Format:%ai$ */
 | 
				
			||||||
							
								
								
									
										90
									
								
								bn_mp_tc_xor.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										90
									
								
								bn_mp_tc_xor.c
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,90 @@
 | 
				
			|||||||
 | 
					#include "tommath_private.h"
 | 
				
			||||||
 | 
					#ifdef BN_MP_TC_XOR_C
 | 
				
			||||||
 | 
					/* LibTomMath, multiple-precision integer library -- Tom St Denis
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * LibTomMath is a library that provides multiple-precision
 | 
				
			||||||
 | 
					 * integer arithmetic as well as number theoretic functionality.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The library was designed directly after the MPI library by
 | 
				
			||||||
 | 
					 * Michael Fromberger but has been written from scratch with
 | 
				
			||||||
 | 
					 * additional optimizations in place.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The library is free for all purposes without any express
 | 
				
			||||||
 | 
					 * guarantee it works.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* two complement xor */
 | 
				
			||||||
 | 
					int mp_tc_xor(const mp_int *a, const mp_int *b, mp_int *c)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					   int res = MP_OKAY, bits;
 | 
				
			||||||
 | 
					   int as = mp_isneg(a), bs = mp_isneg(b), s = 0;
 | 
				
			||||||
 | 
					   mp_int *mx = 0, _mx, acpy, bcpy;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   if (as || bs) {
 | 
				
			||||||
 | 
					      bits = MAX(mp_count_bits(a), mp_count_bits(b));
 | 
				
			||||||
 | 
					      res = mp_init_set_int(&_mx, 1);
 | 
				
			||||||
 | 
					      if (res != MP_OKAY) {
 | 
				
			||||||
 | 
					         goto end;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      mx = &_mx;
 | 
				
			||||||
 | 
					      res = mp_mul_2d(mx, bits + 1, mx);
 | 
				
			||||||
 | 
					      if (res != MP_OKAY) {
 | 
				
			||||||
 | 
					         goto end;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if (as) {
 | 
				
			||||||
 | 
					         res = mp_init(&acpy);
 | 
				
			||||||
 | 
					         if (res != MP_OKAY) {
 | 
				
			||||||
 | 
					            goto end;
 | 
				
			||||||
 | 
					         }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         res = mp_add(mx, a, &acpy);
 | 
				
			||||||
 | 
					         if (res != MP_OKAY) {
 | 
				
			||||||
 | 
					            mp_clear(&acpy);
 | 
				
			||||||
 | 
					            goto end;
 | 
				
			||||||
 | 
					         }
 | 
				
			||||||
 | 
					         a = &acpy;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      if (bs) {
 | 
				
			||||||
 | 
					         res = mp_init(&bcpy);
 | 
				
			||||||
 | 
					         if (res != MP_OKAY) {
 | 
				
			||||||
 | 
					            goto end;
 | 
				
			||||||
 | 
					         }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         res = mp_add(mx, b, &bcpy);
 | 
				
			||||||
 | 
					         if (res != MP_OKAY) {
 | 
				
			||||||
 | 
					            mp_clear(&bcpy);
 | 
				
			||||||
 | 
					            goto end;
 | 
				
			||||||
 | 
					         }
 | 
				
			||||||
 | 
					         b = &bcpy;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   res = mp_xor(a, b, c);
 | 
				
			||||||
 | 
					   s = as ^ bs;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   if (s && res == MP_OKAY) {
 | 
				
			||||||
 | 
					      res = mp_sub(c, mx, c);
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					end:
 | 
				
			||||||
 | 
					   if (a == &acpy) {
 | 
				
			||||||
 | 
					      mp_clear(&acpy);
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   if (b == &bcpy) {
 | 
				
			||||||
 | 
					      mp_clear(&bcpy);
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   if (mx == &_mx) {
 | 
				
			||||||
 | 
					      mp_clear(mx);
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   return res;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* ref:         $Format:%D$ */
 | 
				
			||||||
 | 
					/* git commit:  $Format:%H$ */
 | 
				
			||||||
 | 
					/* commit time: $Format:%ai$ */
 | 
				
			||||||
							
								
								
									
										177
									
								
								callgraph.txt
									
									
									
									
									
								
							
							
						
						
									
										177
									
								
								callgraph.txt
									
									
									
									
									
								
							@ -237,6 +237,17 @@ BN_MP_CMP_MAG_C
 | 
				
			|||||||
BN_MP_CNT_LSB_C
 | 
					BN_MP_CNT_LSB_C
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BN_MP_COMPLEMENT_C
 | 
				
			||||||
 | 
					+--->BN_MP_NEG_C
 | 
				
			||||||
 | 
					|   +--->BN_MP_COPY_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_GROW_C
 | 
				
			||||||
 | 
					+--->BN_MP_SUB_D_C
 | 
				
			||||||
 | 
					|   +--->BN_MP_GROW_C
 | 
				
			||||||
 | 
					|   +--->BN_MP_ADD_D_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_CLAMP_C
 | 
				
			||||||
 | 
					|   +--->BN_MP_CLAMP_C
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
BN_MP_COPY_C
 | 
					BN_MP_COPY_C
 | 
				
			||||||
+--->BN_MP_GROW_C
 | 
					+--->BN_MP_GROW_C
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -12382,6 +12393,172 @@ BN_MP_SUB_D_C
 | 
				
			|||||||
+--->BN_MP_CLAMP_C
 | 
					+--->BN_MP_CLAMP_C
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BN_MP_TC_AND_C
 | 
				
			||||||
 | 
					+--->BN_MP_COUNT_BITS_C
 | 
				
			||||||
 | 
					+--->BN_MP_INIT_SET_INT_C
 | 
				
			||||||
 | 
					|   +--->BN_MP_INIT_C
 | 
				
			||||||
 | 
					|   +--->BN_MP_SET_INT_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_ZERO_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_MUL_2D_C
 | 
				
			||||||
 | 
					|   |   |   +--->BN_MP_COPY_C
 | 
				
			||||||
 | 
					|   |   |   |   +--->BN_MP_GROW_C
 | 
				
			||||||
 | 
					|   |   |   +--->BN_MP_GROW_C
 | 
				
			||||||
 | 
					|   |   |   +--->BN_MP_LSHD_C
 | 
				
			||||||
 | 
					|   |   |   |   +--->BN_MP_RSHD_C
 | 
				
			||||||
 | 
					|   |   |   +--->BN_MP_CLAMP_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_CLAMP_C
 | 
				
			||||||
 | 
					+--->BN_MP_MUL_2D_C
 | 
				
			||||||
 | 
					|   +--->BN_MP_COPY_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_GROW_C
 | 
				
			||||||
 | 
					|   +--->BN_MP_GROW_C
 | 
				
			||||||
 | 
					|   +--->BN_MP_LSHD_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_RSHD_C
 | 
				
			||||||
 | 
					|   |   |   +--->BN_MP_ZERO_C
 | 
				
			||||||
 | 
					|   +--->BN_MP_CLAMP_C
 | 
				
			||||||
 | 
					+--->BN_MP_INIT_C
 | 
				
			||||||
 | 
					+--->BN_MP_ADD_C
 | 
				
			||||||
 | 
					|   +--->BN_S_MP_ADD_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_GROW_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_CLAMP_C
 | 
				
			||||||
 | 
					|   +--->BN_MP_CMP_MAG_C
 | 
				
			||||||
 | 
					|   +--->BN_S_MP_SUB_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_GROW_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_CLAMP_C
 | 
				
			||||||
 | 
					+--->BN_MP_CLEAR_C
 | 
				
			||||||
 | 
					+--->BN_MP_AND_C
 | 
				
			||||||
 | 
					|   +--->BN_MP_INIT_COPY_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_INIT_SIZE_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_COPY_C
 | 
				
			||||||
 | 
					|   |   |   +--->BN_MP_GROW_C
 | 
				
			||||||
 | 
					|   +--->BN_MP_CLAMP_C
 | 
				
			||||||
 | 
					|   +--->BN_MP_EXCH_C
 | 
				
			||||||
 | 
					+--->BN_MP_SUB_C
 | 
				
			||||||
 | 
					|   +--->BN_S_MP_ADD_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_GROW_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_CLAMP_C
 | 
				
			||||||
 | 
					|   +--->BN_MP_CMP_MAG_C
 | 
				
			||||||
 | 
					|   +--->BN_S_MP_SUB_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_GROW_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_CLAMP_C
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BN_MP_TC_DIV_2D_C
 | 
				
			||||||
 | 
					+--->BN_MP_DIV_2D_C
 | 
				
			||||||
 | 
					|   +--->BN_MP_COPY_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_GROW_C
 | 
				
			||||||
 | 
					|   +--->BN_MP_ZERO_C
 | 
				
			||||||
 | 
					|   +--->BN_MP_MOD_2D_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_CLAMP_C
 | 
				
			||||||
 | 
					|   +--->BN_MP_RSHD_C
 | 
				
			||||||
 | 
					|   +--->BN_MP_CLAMP_C
 | 
				
			||||||
 | 
					+--->BN_MP_ADD_D_C
 | 
				
			||||||
 | 
					|   +--->BN_MP_GROW_C
 | 
				
			||||||
 | 
					|   +--->BN_MP_SUB_D_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_CLAMP_C
 | 
				
			||||||
 | 
					|   +--->BN_MP_CLAMP_C
 | 
				
			||||||
 | 
					+--->BN_MP_SUB_D_C
 | 
				
			||||||
 | 
					|   +--->BN_MP_GROW_C
 | 
				
			||||||
 | 
					|   +--->BN_MP_CLAMP_C
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BN_MP_TC_OR_C
 | 
				
			||||||
 | 
					+--->BN_MP_COUNT_BITS_C
 | 
				
			||||||
 | 
					+--->BN_MP_INIT_SET_INT_C
 | 
				
			||||||
 | 
					|   +--->BN_MP_INIT_C
 | 
				
			||||||
 | 
					|   +--->BN_MP_SET_INT_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_ZERO_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_MUL_2D_C
 | 
				
			||||||
 | 
					|   |   |   +--->BN_MP_COPY_C
 | 
				
			||||||
 | 
					|   |   |   |   +--->BN_MP_GROW_C
 | 
				
			||||||
 | 
					|   |   |   +--->BN_MP_GROW_C
 | 
				
			||||||
 | 
					|   |   |   +--->BN_MP_LSHD_C
 | 
				
			||||||
 | 
					|   |   |   |   +--->BN_MP_RSHD_C
 | 
				
			||||||
 | 
					|   |   |   +--->BN_MP_CLAMP_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_CLAMP_C
 | 
				
			||||||
 | 
					+--->BN_MP_MUL_2D_C
 | 
				
			||||||
 | 
					|   +--->BN_MP_COPY_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_GROW_C
 | 
				
			||||||
 | 
					|   +--->BN_MP_GROW_C
 | 
				
			||||||
 | 
					|   +--->BN_MP_LSHD_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_RSHD_C
 | 
				
			||||||
 | 
					|   |   |   +--->BN_MP_ZERO_C
 | 
				
			||||||
 | 
					|   +--->BN_MP_CLAMP_C
 | 
				
			||||||
 | 
					+--->BN_MP_INIT_C
 | 
				
			||||||
 | 
					+--->BN_MP_ADD_C
 | 
				
			||||||
 | 
					|   +--->BN_S_MP_ADD_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_GROW_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_CLAMP_C
 | 
				
			||||||
 | 
					|   +--->BN_MP_CMP_MAG_C
 | 
				
			||||||
 | 
					|   +--->BN_S_MP_SUB_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_GROW_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_CLAMP_C
 | 
				
			||||||
 | 
					+--->BN_MP_CLEAR_C
 | 
				
			||||||
 | 
					+--->BN_MP_OR_C
 | 
				
			||||||
 | 
					|   +--->BN_MP_INIT_COPY_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_INIT_SIZE_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_COPY_C
 | 
				
			||||||
 | 
					|   |   |   +--->BN_MP_GROW_C
 | 
				
			||||||
 | 
					|   +--->BN_MP_CLAMP_C
 | 
				
			||||||
 | 
					|   +--->BN_MP_EXCH_C
 | 
				
			||||||
 | 
					+--->BN_MP_SUB_C
 | 
				
			||||||
 | 
					|   +--->BN_S_MP_ADD_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_GROW_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_CLAMP_C
 | 
				
			||||||
 | 
					|   +--->BN_MP_CMP_MAG_C
 | 
				
			||||||
 | 
					|   +--->BN_S_MP_SUB_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_GROW_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_CLAMP_C
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BN_MP_TC_XOR_C
 | 
				
			||||||
 | 
					+--->BN_MP_COUNT_BITS_C
 | 
				
			||||||
 | 
					+--->BN_MP_INIT_SET_INT_C
 | 
				
			||||||
 | 
					|   +--->BN_MP_INIT_C
 | 
				
			||||||
 | 
					|   +--->BN_MP_SET_INT_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_ZERO_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_MUL_2D_C
 | 
				
			||||||
 | 
					|   |   |   +--->BN_MP_COPY_C
 | 
				
			||||||
 | 
					|   |   |   |   +--->BN_MP_GROW_C
 | 
				
			||||||
 | 
					|   |   |   +--->BN_MP_GROW_C
 | 
				
			||||||
 | 
					|   |   |   +--->BN_MP_LSHD_C
 | 
				
			||||||
 | 
					|   |   |   |   +--->BN_MP_RSHD_C
 | 
				
			||||||
 | 
					|   |   |   +--->BN_MP_CLAMP_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_CLAMP_C
 | 
				
			||||||
 | 
					+--->BN_MP_MUL_2D_C
 | 
				
			||||||
 | 
					|   +--->BN_MP_COPY_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_GROW_C
 | 
				
			||||||
 | 
					|   +--->BN_MP_GROW_C
 | 
				
			||||||
 | 
					|   +--->BN_MP_LSHD_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_RSHD_C
 | 
				
			||||||
 | 
					|   |   |   +--->BN_MP_ZERO_C
 | 
				
			||||||
 | 
					|   +--->BN_MP_CLAMP_C
 | 
				
			||||||
 | 
					+--->BN_MP_INIT_C
 | 
				
			||||||
 | 
					+--->BN_MP_ADD_C
 | 
				
			||||||
 | 
					|   +--->BN_S_MP_ADD_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_GROW_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_CLAMP_C
 | 
				
			||||||
 | 
					|   +--->BN_MP_CMP_MAG_C
 | 
				
			||||||
 | 
					|   +--->BN_S_MP_SUB_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_GROW_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_CLAMP_C
 | 
				
			||||||
 | 
					+--->BN_MP_CLEAR_C
 | 
				
			||||||
 | 
					+--->BN_MP_XOR_C
 | 
				
			||||||
 | 
					|   +--->BN_MP_INIT_COPY_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_INIT_SIZE_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_COPY_C
 | 
				
			||||||
 | 
					|   |   |   +--->BN_MP_GROW_C
 | 
				
			||||||
 | 
					|   +--->BN_MP_CLAMP_C
 | 
				
			||||||
 | 
					|   +--->BN_MP_EXCH_C
 | 
				
			||||||
 | 
					+--->BN_MP_SUB_C
 | 
				
			||||||
 | 
					|   +--->BN_S_MP_ADD_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_GROW_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_CLAMP_C
 | 
				
			||||||
 | 
					|   +--->BN_MP_CMP_MAG_C
 | 
				
			||||||
 | 
					|   +--->BN_S_MP_SUB_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_GROW_C
 | 
				
			||||||
 | 
					|   |   +--->BN_MP_CLAMP_C
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
BN_MP_TOOM_MUL_C
 | 
					BN_MP_TOOM_MUL_C
 | 
				
			||||||
+--->BN_MP_INIT_MULTI_C
 | 
					+--->BN_MP_INIT_MULTI_C
 | 
				
			||||||
|   +--->BN_MP_INIT_C
 | 
					|   +--->BN_MP_INIT_C
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										121
									
								
								demo/demo.c
									
									
									
									
									
								
							
							
						
						
									
										121
									
								
								demo/demo.c
									
									
									
									
									
								
							@ -261,6 +261,127 @@ int main(void)
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   // test mp_complement
 | 
				
			||||||
 | 
					   printf("\n\nTesting: mp_complement");
 | 
				
			||||||
 | 
					   for (i = 0; i < 1000; ++i) {
 | 
				
			||||||
 | 
					      int l = (rand() * rand() + 1) * (rand() % 1 ? -1 : 1);
 | 
				
			||||||
 | 
					      mp_set_int(&a, labs(l));
 | 
				
			||||||
 | 
					      if (l < 0)
 | 
				
			||||||
 | 
					         mp_neg(&a, &a);
 | 
				
			||||||
 | 
					      mp_complement(&a, &b);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      l = ~l;
 | 
				
			||||||
 | 
					      mp_set_int(&c, labs(l));
 | 
				
			||||||
 | 
					      if (l < 0)
 | 
				
			||||||
 | 
					         mp_neg(&c, &c);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if (mp_cmp(&b, &c) != MP_EQ) {
 | 
				
			||||||
 | 
					         printf("\nmp_complement() bad result!");
 | 
				
			||||||
 | 
					         return EXIT_FAILURE;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   // test mp_tc_div_2d
 | 
				
			||||||
 | 
					   printf("\n\nTesting: mp_tc_div_2d");
 | 
				
			||||||
 | 
					   for (i = 0; i < 1000; ++i) {
 | 
				
			||||||
 | 
					      int l, m;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      l = (rand() * rand() + 1) * (rand() % 1 ? -1 : 1);
 | 
				
			||||||
 | 
					      mp_set_int(&a, labs(l));
 | 
				
			||||||
 | 
					      if (l < 0)
 | 
				
			||||||
 | 
					         mp_neg(&a, &a);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      m = rand() % 32;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      mp_set_int(&d, labs(l >> m));
 | 
				
			||||||
 | 
					      if ((l >> m) < 0)
 | 
				
			||||||
 | 
					         mp_neg(&d, &d);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      mp_tc_div_2d(&a, m, &b);
 | 
				
			||||||
 | 
					      if (mp_cmp(&b, &d) != MP_EQ) {
 | 
				
			||||||
 | 
					         printf("\nmp_tc_div_2d() bad result!");
 | 
				
			||||||
 | 
					         return EXIT_FAILURE;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   // test mp_tc_xor
 | 
				
			||||||
 | 
					   printf("\n\nTesting: mp_tc_or");
 | 
				
			||||||
 | 
					   for (i = 0; i < 1000; ++i) {
 | 
				
			||||||
 | 
					      int l, m;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      l = (rand() * rand() + 1) * (rand() % 1 ? -1 : 1);
 | 
				
			||||||
 | 
					      mp_set_int(&a, labs(l));
 | 
				
			||||||
 | 
					      if (l < 0)
 | 
				
			||||||
 | 
					         mp_neg(&a, &a);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      m = (rand() * rand() + 1) * (rand() % 1 ? -1 : 1);
 | 
				
			||||||
 | 
					      mp_set_int(&b, labs(m));
 | 
				
			||||||
 | 
					      if (m < 0)
 | 
				
			||||||
 | 
					         mp_neg(&b, &b);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      mp_set_int(&d, labs(l ^ m));
 | 
				
			||||||
 | 
					      if ((l ^ m) < 0)
 | 
				
			||||||
 | 
					         mp_neg(&d, &d);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      mp_tc_xor(&a, &b, &c);
 | 
				
			||||||
 | 
					      if (mp_cmp(&c, &d) != MP_EQ) {
 | 
				
			||||||
 | 
					         printf("\nmp_tc_xor() bad result!");
 | 
				
			||||||
 | 
					         return EXIT_FAILURE;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   // test mp_tc_or
 | 
				
			||||||
 | 
					   printf("\n\nTesting: mp_tc_or");
 | 
				
			||||||
 | 
					   for (i = 0; i < 1000; ++i) {
 | 
				
			||||||
 | 
					      int l, m;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      l = (rand() * rand() + 1) * (rand() % 1 ? -1 : 1);
 | 
				
			||||||
 | 
					      mp_set_int(&a, labs(l));
 | 
				
			||||||
 | 
					      if (l < 0)
 | 
				
			||||||
 | 
					         mp_neg(&a, &a);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      m = (rand() * rand() + 1) * (rand() % 1 ? -1 : 1);
 | 
				
			||||||
 | 
					      mp_set_int(&b, labs(m));
 | 
				
			||||||
 | 
					      if (m < 0)
 | 
				
			||||||
 | 
					         mp_neg(&b, &b);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      mp_set_int(&d, labs(l | m));
 | 
				
			||||||
 | 
					      if ((l | m) < 0)
 | 
				
			||||||
 | 
					         mp_neg(&d, &d);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      mp_tc_or(&a, &b, &c);
 | 
				
			||||||
 | 
					      if (mp_cmp(&c, &d) != MP_EQ) {
 | 
				
			||||||
 | 
					         printf("\nmp_tc_or() bad result!");
 | 
				
			||||||
 | 
					         return EXIT_FAILURE;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   // test mp_tc_and
 | 
				
			||||||
 | 
					   printf("\n\nTesting: mp_tc_and");
 | 
				
			||||||
 | 
					   for (i = 0; i < 1000; ++i) {
 | 
				
			||||||
 | 
					      int l, m;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      l = (rand() * rand() + 1) * (rand() % 1 ? -1 : 1);
 | 
				
			||||||
 | 
					      mp_set_int(&a, labs(l));
 | 
				
			||||||
 | 
					      if (l < 0)
 | 
				
			||||||
 | 
					         mp_neg(&a, &a);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      m = (rand() * rand() + 1) * (rand() % 1 ? -1 : 1);
 | 
				
			||||||
 | 
					      mp_set_int(&b, labs(m));
 | 
				
			||||||
 | 
					      if (m < 0)
 | 
				
			||||||
 | 
					         mp_neg(&b, &b);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      mp_set_int(&d, labs(l & m));
 | 
				
			||||||
 | 
					      if ((l & m) < 0)
 | 
				
			||||||
 | 
					         mp_neg(&d, &d);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      mp_tc_and(&a, &b, &c);
 | 
				
			||||||
 | 
					      if (mp_cmp(&c, &d) != MP_EQ) {
 | 
				
			||||||
 | 
					         printf("\nmp_tc_and() bad result!");
 | 
				
			||||||
 | 
					         return EXIT_FAILURE;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   // test mp_get_int
 | 
					   // test mp_get_int
 | 
				
			||||||
   printf("\n\nTesting: mp_get_int");
 | 
					   printf("\n\nTesting: mp_get_int");
 | 
				
			||||||
   for (i = 0; i < 1000; ++i) {
 | 
					   for (i = 0; i < 1000; ++i) {
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										32
									
								
								makefile
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								makefile
									
									
									
									
									
								
							@ -29,27 +29,27 @@ LCOV_ARGS=--directory .
 | 
				
			|||||||
OBJECTS=bncore.o bn_error.o bn_fast_mp_invmod.o bn_fast_mp_montgomery_reduce.o bn_fast_s_mp_mul_digs.o \
 | 
					OBJECTS=bncore.o bn_error.o bn_fast_mp_invmod.o bn_fast_mp_montgomery_reduce.o bn_fast_s_mp_mul_digs.o \
 | 
				
			||||||
bn_fast_s_mp_mul_high_digs.o bn_fast_s_mp_sqr.o bn_mp_2expt.o bn_mp_abs.o bn_mp_add.o bn_mp_add_d.o \
 | 
					bn_fast_s_mp_mul_high_digs.o bn_fast_s_mp_sqr.o bn_mp_2expt.o bn_mp_abs.o bn_mp_add.o bn_mp_add_d.o \
 | 
				
			||||||
bn_mp_addmod.o bn_mp_and.o bn_mp_clamp.o bn_mp_clear.o bn_mp_clear_multi.o bn_mp_cmp.o bn_mp_cmp_d.o \
 | 
					bn_mp_addmod.o bn_mp_and.o bn_mp_clamp.o bn_mp_clear.o bn_mp_clear_multi.o bn_mp_cmp.o bn_mp_cmp_d.o \
 | 
				
			||||||
bn_mp_cmp_mag.o bn_mp_cnt_lsb.o bn_mp_copy.o bn_mp_count_bits.o bn_mp_div_2.o bn_mp_div_2d.o bn_mp_div_3.o \
 | 
					bn_mp_cmp_mag.o bn_mp_cnt_lsb.o bn_mp_complement.o bn_mp_copy.o bn_mp_count_bits.o bn_mp_div_2.o \
 | 
				
			||||||
bn_mp_div.o bn_mp_div_d.o bn_mp_dr_is_modulus.o bn_mp_dr_reduce.o bn_mp_dr_setup.o bn_mp_exch.o \
 | 
					bn_mp_div_2d.o bn_mp_div_3.o bn_mp_div.o bn_mp_div_d.o bn_mp_dr_is_modulus.o bn_mp_dr_reduce.o \
 | 
				
			||||||
bn_mp_export.o bn_mp_expt_d.o bn_mp_expt_d_ex.o bn_mp_exptmod.o bn_mp_exptmod_fast.o bn_mp_exteuclid.o \
 | 
					bn_mp_dr_setup.o bn_mp_exch.o bn_mp_export.o bn_mp_expt_d.o bn_mp_expt_d_ex.o bn_mp_exptmod.o \
 | 
				
			||||||
bn_mp_fread.o bn_mp_fwrite.o bn_mp_gcd.o bn_mp_get_int.o bn_mp_get_long.o bn_mp_get_long_long.o \
 | 
					bn_mp_exptmod_fast.o bn_mp_exteuclid.o bn_mp_fread.o bn_mp_fwrite.o bn_mp_gcd.o bn_mp_get_int.o \
 | 
				
			||||||
bn_mp_grow.o bn_mp_import.o bn_mp_init.o bn_mp_init_copy.o bn_mp_init_multi.o bn_mp_init_set.o \
 | 
					bn_mp_get_long.o bn_mp_get_long_long.o bn_mp_grow.o bn_mp_import.o bn_mp_init.o bn_mp_init_copy.o \
 | 
				
			||||||
bn_mp_init_set_int.o bn_mp_init_size.o bn_mp_invmod.o bn_mp_invmod_slow.o bn_mp_is_square.o \
 | 
					bn_mp_init_multi.o bn_mp_init_set.o bn_mp_init_set_int.o bn_mp_init_size.o bn_mp_invmod.o \
 | 
				
			||||||
bn_mp_jacobi.o bn_mp_karatsuba_mul.o bn_mp_karatsuba_sqr.o bn_mp_lcm.o bn_mp_lshd.o bn_mp_mod_2d.o \
 | 
					bn_mp_invmod_slow.o bn_mp_is_square.o bn_mp_jacobi.o bn_mp_karatsuba_mul.o bn_mp_karatsuba_sqr.o \
 | 
				
			||||||
bn_mp_mod.o bn_mp_mod_d.o bn_mp_montgomery_calc_normalization.o bn_mp_montgomery_reduce.o \
 | 
					bn_mp_lcm.o bn_mp_lshd.o bn_mp_mod_2d.o bn_mp_mod.o bn_mp_mod_d.o bn_mp_montgomery_calc_normalization.o \
 | 
				
			||||||
bn_mp_montgomery_setup.o bn_mp_mul_2.o bn_mp_mul_2d.o bn_mp_mul.o bn_mp_mul_d.o bn_mp_mulmod.o bn_mp_neg.o \
 | 
					bn_mp_montgomery_reduce.o bn_mp_montgomery_setup.o bn_mp_mul_2.o bn_mp_mul_2d.o bn_mp_mul.o bn_mp_mul_d.o \
 | 
				
			||||||
bn_mp_n_root.o bn_mp_n_root_ex.o bn_mp_or.o bn_mp_prime_fermat.o bn_mp_prime_is_divisible.o \
 | 
					bn_mp_mulmod.o bn_mp_neg.o bn_mp_n_root.o bn_mp_n_root_ex.o bn_mp_or.o bn_mp_prime_fermat.o \
 | 
				
			||||||
bn_mp_prime_is_prime.o bn_mp_prime_miller_rabin.o bn_mp_prime_next_prime.o \
 | 
					bn_mp_prime_is_divisible.o bn_mp_prime_is_prime.o bn_mp_prime_miller_rabin.o bn_mp_prime_next_prime.o \
 | 
				
			||||||
bn_mp_prime_rabin_miller_trials.o bn_mp_prime_random_ex.o bn_mp_radix_size.o bn_mp_radix_smap.o \
 | 
					bn_mp_prime_rabin_miller_trials.o bn_mp_prime_random_ex.o bn_mp_radix_size.o bn_mp_radix_smap.o \
 | 
				
			||||||
bn_mp_rand.o bn_mp_read_radix.o bn_mp_read_signed_bin.o bn_mp_read_unsigned_bin.o bn_mp_reduce_2k.o \
 | 
					bn_mp_rand.o bn_mp_read_radix.o bn_mp_read_signed_bin.o bn_mp_read_unsigned_bin.o bn_mp_reduce_2k.o \
 | 
				
			||||||
bn_mp_reduce_2k_l.o bn_mp_reduce_2k_setup.o bn_mp_reduce_2k_setup_l.o bn_mp_reduce.o \
 | 
					bn_mp_reduce_2k_l.o bn_mp_reduce_2k_setup.o bn_mp_reduce_2k_setup_l.o bn_mp_reduce.o \
 | 
				
			||||||
bn_mp_reduce_is_2k.o bn_mp_reduce_is_2k_l.o bn_mp_reduce_setup.o bn_mp_rshd.o bn_mp_set.o bn_mp_set_int.o \
 | 
					bn_mp_reduce_is_2k.o bn_mp_reduce_is_2k_l.o bn_mp_reduce_setup.o bn_mp_rshd.o bn_mp_set.o bn_mp_set_int.o \
 | 
				
			||||||
bn_mp_set_long.o bn_mp_set_long_long.o bn_mp_shrink.o bn_mp_signed_bin_size.o bn_mp_sqr.o bn_mp_sqrmod.o \
 | 
					bn_mp_set_long.o bn_mp_set_long_long.o bn_mp_shrink.o bn_mp_signed_bin_size.o bn_mp_sqr.o bn_mp_sqrmod.o \
 | 
				
			||||||
bn_mp_sqrt.o bn_mp_sqrtmod_prime.o bn_mp_sub.o bn_mp_sub_d.o bn_mp_submod.o bn_mp_toom_mul.o \
 | 
					bn_mp_sqrt.o bn_mp_sqrtmod_prime.o bn_mp_sub.o bn_mp_sub_d.o bn_mp_submod.o bn_mp_tc_and.o \
 | 
				
			||||||
bn_mp_toom_sqr.o bn_mp_toradix.o bn_mp_toradix_n.o bn_mp_to_signed_bin.o bn_mp_to_signed_bin_n.o \
 | 
					bn_mp_tc_div_2d.o bn_mp_tc_or.o bn_mp_tc_xor.o bn_mp_toom_mul.o bn_mp_toom_sqr.o bn_mp_toradix.o \
 | 
				
			||||||
bn_mp_to_unsigned_bin.o bn_mp_to_unsigned_bin_n.o bn_mp_unsigned_bin_size.o bn_mp_xor.o bn_mp_zero.o \
 | 
					bn_mp_toradix_n.o bn_mp_to_signed_bin.o bn_mp_to_signed_bin_n.o bn_mp_to_unsigned_bin.o \
 | 
				
			||||||
bn_prime_tab.o bn_reverse.o bn_s_mp_add.o bn_s_mp_exptmod.o bn_s_mp_mul_digs.o bn_s_mp_mul_high_digs.o \
 | 
					bn_mp_to_unsigned_bin_n.o bn_mp_unsigned_bin_size.o bn_mp_xor.o bn_mp_zero.o bn_prime_tab.o bn_reverse.o \
 | 
				
			||||||
bn_s_mp_sqr.o bn_s_mp_sub.o
 | 
					bn_s_mp_add.o bn_s_mp_exptmod.o bn_s_mp_mul_digs.o bn_s_mp_mul_high_digs.o bn_s_mp_sqr.o bn_s_mp_sub.o
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#END_INS
 | 
					#END_INS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										32
									
								
								makefile.bcc
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								makefile.bcc
									
									
									
									
									
								
							@ -11,27 +11,27 @@ CFLAGS = -c -O2 -I.
 | 
				
			|||||||
OBJECTS=bncore.obj bn_error.obj bn_fast_mp_invmod.obj bn_fast_mp_montgomery_reduce.obj bn_fast_s_mp_mul_digs.obj \
 | 
					OBJECTS=bncore.obj bn_error.obj bn_fast_mp_invmod.obj bn_fast_mp_montgomery_reduce.obj bn_fast_s_mp_mul_digs.obj \
 | 
				
			||||||
bn_fast_s_mp_mul_high_digs.obj bn_fast_s_mp_sqr.obj bn_mp_2expt.obj bn_mp_abs.obj bn_mp_add.obj bn_mp_add_d.obj \
 | 
					bn_fast_s_mp_mul_high_digs.obj bn_fast_s_mp_sqr.obj bn_mp_2expt.obj bn_mp_abs.obj bn_mp_add.obj bn_mp_add_d.obj \
 | 
				
			||||||
bn_mp_addmod.obj bn_mp_and.obj bn_mp_clamp.obj bn_mp_clear.obj bn_mp_clear_multi.obj bn_mp_cmp.obj bn_mp_cmp_d.obj \
 | 
					bn_mp_addmod.obj bn_mp_and.obj bn_mp_clamp.obj bn_mp_clear.obj bn_mp_clear_multi.obj bn_mp_cmp.obj bn_mp_cmp_d.obj \
 | 
				
			||||||
bn_mp_cmp_mag.obj bn_mp_cnt_lsb.obj bn_mp_copy.obj bn_mp_count_bits.obj bn_mp_div_2.obj bn_mp_div_2d.obj bn_mp_div_3.obj \
 | 
					bn_mp_cmp_mag.obj bn_mp_cnt_lsb.obj bn_mp_complement.obj bn_mp_copy.obj bn_mp_count_bits.obj bn_mp_div_2.obj \
 | 
				
			||||||
bn_mp_div.obj bn_mp_div_d.obj bn_mp_dr_is_modulus.obj bn_mp_dr_reduce.obj bn_mp_dr_setup.obj bn_mp_exch.obj \
 | 
					bn_mp_div_2d.obj bn_mp_div_3.obj bn_mp_div.obj bn_mp_div_d.obj bn_mp_dr_is_modulus.obj bn_mp_dr_reduce.obj \
 | 
				
			||||||
bn_mp_export.obj bn_mp_expt_d.obj bn_mp_expt_d_ex.obj bn_mp_exptmod.obj bn_mp_exptmod_fast.obj bn_mp_exteuclid.obj \
 | 
					bn_mp_dr_setup.obj bn_mp_exch.obj bn_mp_export.obj bn_mp_expt_d.obj bn_mp_expt_d_ex.obj bn_mp_exptmod.obj \
 | 
				
			||||||
bn_mp_fread.obj bn_mp_fwrite.obj bn_mp_gcd.obj bn_mp_get_int.obj bn_mp_get_long.obj bn_mp_get_long_long.obj \
 | 
					bn_mp_exptmod_fast.obj bn_mp_exteuclid.obj bn_mp_fread.obj bn_mp_fwrite.obj bn_mp_gcd.obj bn_mp_get_int.obj \
 | 
				
			||||||
bn_mp_grow.obj bn_mp_import.obj bn_mp_init.obj bn_mp_init_copy.obj bn_mp_init_multi.obj bn_mp_init_set.obj \
 | 
					bn_mp_get_long.obj bn_mp_get_long_long.obj bn_mp_grow.obj bn_mp_import.obj bn_mp_init.obj bn_mp_init_copy.obj \
 | 
				
			||||||
bn_mp_init_set_int.obj bn_mp_init_size.obj bn_mp_invmod.obj bn_mp_invmod_slow.obj bn_mp_is_square.obj \
 | 
					bn_mp_init_multi.obj bn_mp_init_set.obj bn_mp_init_set_int.obj bn_mp_init_size.obj bn_mp_invmod.obj \
 | 
				
			||||||
bn_mp_jacobi.obj bn_mp_karatsuba_mul.obj bn_mp_karatsuba_sqr.obj bn_mp_lcm.obj bn_mp_lshd.obj bn_mp_mod_2d.obj \
 | 
					bn_mp_invmod_slow.obj bn_mp_is_square.obj bn_mp_jacobi.obj bn_mp_karatsuba_mul.obj bn_mp_karatsuba_sqr.obj \
 | 
				
			||||||
bn_mp_mod.obj bn_mp_mod_d.obj bn_mp_montgomery_calc_normalization.obj bn_mp_montgomery_reduce.obj \
 | 
					bn_mp_lcm.obj bn_mp_lshd.obj bn_mp_mod_2d.obj bn_mp_mod.obj bn_mp_mod_d.obj bn_mp_montgomery_calc_normalization.obj \
 | 
				
			||||||
bn_mp_montgomery_setup.obj bn_mp_mul_2.obj bn_mp_mul_2d.obj bn_mp_mul.obj bn_mp_mul_d.obj bn_mp_mulmod.obj bn_mp_neg.obj \
 | 
					bn_mp_montgomery_reduce.obj bn_mp_montgomery_setup.obj bn_mp_mul_2.obj bn_mp_mul_2d.obj bn_mp_mul.obj bn_mp_mul_d.obj \
 | 
				
			||||||
bn_mp_n_root.obj bn_mp_n_root_ex.obj bn_mp_or.obj bn_mp_prime_fermat.obj bn_mp_prime_is_divisible.obj \
 | 
					bn_mp_mulmod.obj bn_mp_neg.obj bn_mp_n_root.obj bn_mp_n_root_ex.obj bn_mp_or.obj bn_mp_prime_fermat.obj \
 | 
				
			||||||
bn_mp_prime_is_prime.obj bn_mp_prime_miller_rabin.obj bn_mp_prime_next_prime.obj \
 | 
					bn_mp_prime_is_divisible.obj bn_mp_prime_is_prime.obj bn_mp_prime_miller_rabin.obj bn_mp_prime_next_prime.obj \
 | 
				
			||||||
bn_mp_prime_rabin_miller_trials.obj bn_mp_prime_random_ex.obj bn_mp_radix_size.obj bn_mp_radix_smap.obj \
 | 
					bn_mp_prime_rabin_miller_trials.obj bn_mp_prime_random_ex.obj bn_mp_radix_size.obj bn_mp_radix_smap.obj \
 | 
				
			||||||
bn_mp_rand.obj bn_mp_read_radix.obj bn_mp_read_signed_bin.obj bn_mp_read_unsigned_bin.obj bn_mp_reduce_2k.obj \
 | 
					bn_mp_rand.obj bn_mp_read_radix.obj bn_mp_read_signed_bin.obj bn_mp_read_unsigned_bin.obj bn_mp_reduce_2k.obj \
 | 
				
			||||||
bn_mp_reduce_2k_l.obj bn_mp_reduce_2k_setup.obj bn_mp_reduce_2k_setup_l.obj bn_mp_reduce.obj \
 | 
					bn_mp_reduce_2k_l.obj bn_mp_reduce_2k_setup.obj bn_mp_reduce_2k_setup_l.obj bn_mp_reduce.obj \
 | 
				
			||||||
bn_mp_reduce_is_2k.obj bn_mp_reduce_is_2k_l.obj bn_mp_reduce_setup.obj bn_mp_rshd.obj bn_mp_set.obj bn_mp_set_int.obj \
 | 
					bn_mp_reduce_is_2k.obj bn_mp_reduce_is_2k_l.obj bn_mp_reduce_setup.obj bn_mp_rshd.obj bn_mp_set.obj bn_mp_set_int.obj \
 | 
				
			||||||
bn_mp_set_long.obj bn_mp_set_long_long.obj bn_mp_shrink.obj bn_mp_signed_bin_size.obj bn_mp_sqr.obj bn_mp_sqrmod.obj \
 | 
					bn_mp_set_long.obj bn_mp_set_long_long.obj bn_mp_shrink.obj bn_mp_signed_bin_size.obj bn_mp_sqr.obj bn_mp_sqrmod.obj \
 | 
				
			||||||
bn_mp_sqrt.obj bn_mp_sqrtmod_prime.obj bn_mp_sub.obj bn_mp_sub_d.obj bn_mp_submod.obj bn_mp_toom_mul.obj \
 | 
					bn_mp_sqrt.obj bn_mp_sqrtmod_prime.obj bn_mp_sub.obj bn_mp_sub_d.obj bn_mp_submod.obj bn_mp_tc_and.obj \
 | 
				
			||||||
bn_mp_toom_sqr.obj bn_mp_toradix.obj bn_mp_toradix_n.obj bn_mp_to_signed_bin.obj bn_mp_to_signed_bin_n.obj \
 | 
					bn_mp_tc_div_2d.obj bn_mp_tc_or.obj bn_mp_tc_xor.obj bn_mp_toom_mul.obj bn_mp_toom_sqr.obj bn_mp_toradix.obj \
 | 
				
			||||||
bn_mp_to_unsigned_bin.obj bn_mp_to_unsigned_bin_n.obj bn_mp_unsigned_bin_size.obj bn_mp_xor.obj bn_mp_zero.obj \
 | 
					bn_mp_toradix_n.obj bn_mp_to_signed_bin.obj bn_mp_to_signed_bin_n.obj bn_mp_to_unsigned_bin.obj \
 | 
				
			||||||
bn_prime_tab.obj bn_reverse.obj bn_s_mp_add.obj bn_s_mp_exptmod.obj bn_s_mp_mul_digs.obj bn_s_mp_mul_high_digs.obj \
 | 
					bn_mp_to_unsigned_bin_n.obj bn_mp_unsigned_bin_size.obj bn_mp_xor.obj bn_mp_zero.obj bn_prime_tab.obj bn_reverse.obj \
 | 
				
			||||||
bn_s_mp_sqr.obj bn_s_mp_sub.obj
 | 
					bn_s_mp_add.obj bn_s_mp_exptmod.obj bn_s_mp_mul_digs.obj bn_s_mp_mul_high_digs.obj bn_s_mp_sqr.obj bn_s_mp_sub.obj
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#END_INS
 | 
					#END_INS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -16,27 +16,27 @@ default: windll
 | 
				
			|||||||
OBJECTS=bncore.o bn_error.o bn_fast_mp_invmod.o bn_fast_mp_montgomery_reduce.o bn_fast_s_mp_mul_digs.o \
 | 
					OBJECTS=bncore.o bn_error.o bn_fast_mp_invmod.o bn_fast_mp_montgomery_reduce.o bn_fast_s_mp_mul_digs.o \
 | 
				
			||||||
bn_fast_s_mp_mul_high_digs.o bn_fast_s_mp_sqr.o bn_mp_2expt.o bn_mp_abs.o bn_mp_add.o bn_mp_add_d.o \
 | 
					bn_fast_s_mp_mul_high_digs.o bn_fast_s_mp_sqr.o bn_mp_2expt.o bn_mp_abs.o bn_mp_add.o bn_mp_add_d.o \
 | 
				
			||||||
bn_mp_addmod.o bn_mp_and.o bn_mp_clamp.o bn_mp_clear.o bn_mp_clear_multi.o bn_mp_cmp.o bn_mp_cmp_d.o \
 | 
					bn_mp_addmod.o bn_mp_and.o bn_mp_clamp.o bn_mp_clear.o bn_mp_clear_multi.o bn_mp_cmp.o bn_mp_cmp_d.o \
 | 
				
			||||||
bn_mp_cmp_mag.o bn_mp_cnt_lsb.o bn_mp_copy.o bn_mp_count_bits.o bn_mp_div_2.o bn_mp_div_2d.o bn_mp_div_3.o \
 | 
					bn_mp_cmp_mag.o bn_mp_cnt_lsb.o bn_mp_complement.o bn_mp_copy.o bn_mp_count_bits.o bn_mp_div_2.o \
 | 
				
			||||||
bn_mp_div.o bn_mp_div_d.o bn_mp_dr_is_modulus.o bn_mp_dr_reduce.o bn_mp_dr_setup.o bn_mp_exch.o \
 | 
					bn_mp_div_2d.o bn_mp_div_3.o bn_mp_div.o bn_mp_div_d.o bn_mp_dr_is_modulus.o bn_mp_dr_reduce.o \
 | 
				
			||||||
bn_mp_export.o bn_mp_expt_d.o bn_mp_expt_d_ex.o bn_mp_exptmod.o bn_mp_exptmod_fast.o bn_mp_exteuclid.o \
 | 
					bn_mp_dr_setup.o bn_mp_exch.o bn_mp_export.o bn_mp_expt_d.o bn_mp_expt_d_ex.o bn_mp_exptmod.o \
 | 
				
			||||||
bn_mp_fread.o bn_mp_fwrite.o bn_mp_gcd.o bn_mp_get_int.o bn_mp_get_long.o bn_mp_get_long_long.o \
 | 
					bn_mp_exptmod_fast.o bn_mp_exteuclid.o bn_mp_fread.o bn_mp_fwrite.o bn_mp_gcd.o bn_mp_get_int.o \
 | 
				
			||||||
bn_mp_grow.o bn_mp_import.o bn_mp_init.o bn_mp_init_copy.o bn_mp_init_multi.o bn_mp_init_set.o \
 | 
					bn_mp_get_long.o bn_mp_get_long_long.o bn_mp_grow.o bn_mp_import.o bn_mp_init.o bn_mp_init_copy.o \
 | 
				
			||||||
bn_mp_init_set_int.o bn_mp_init_size.o bn_mp_invmod.o bn_mp_invmod_slow.o bn_mp_is_square.o \
 | 
					bn_mp_init_multi.o bn_mp_init_set.o bn_mp_init_set_int.o bn_mp_init_size.o bn_mp_invmod.o \
 | 
				
			||||||
bn_mp_jacobi.o bn_mp_karatsuba_mul.o bn_mp_karatsuba_sqr.o bn_mp_lcm.o bn_mp_lshd.o bn_mp_mod_2d.o \
 | 
					bn_mp_invmod_slow.o bn_mp_is_square.o bn_mp_jacobi.o bn_mp_karatsuba_mul.o bn_mp_karatsuba_sqr.o \
 | 
				
			||||||
bn_mp_mod.o bn_mp_mod_d.o bn_mp_montgomery_calc_normalization.o bn_mp_montgomery_reduce.o \
 | 
					bn_mp_lcm.o bn_mp_lshd.o bn_mp_mod_2d.o bn_mp_mod.o bn_mp_mod_d.o bn_mp_montgomery_calc_normalization.o \
 | 
				
			||||||
bn_mp_montgomery_setup.o bn_mp_mul_2.o bn_mp_mul_2d.o bn_mp_mul.o bn_mp_mul_d.o bn_mp_mulmod.o bn_mp_neg.o \
 | 
					bn_mp_montgomery_reduce.o bn_mp_montgomery_setup.o bn_mp_mul_2.o bn_mp_mul_2d.o bn_mp_mul.o bn_mp_mul_d.o \
 | 
				
			||||||
bn_mp_n_root.o bn_mp_n_root_ex.o bn_mp_or.o bn_mp_prime_fermat.o bn_mp_prime_is_divisible.o \
 | 
					bn_mp_mulmod.o bn_mp_neg.o bn_mp_n_root.o bn_mp_n_root_ex.o bn_mp_or.o bn_mp_prime_fermat.o \
 | 
				
			||||||
bn_mp_prime_is_prime.o bn_mp_prime_miller_rabin.o bn_mp_prime_next_prime.o \
 | 
					bn_mp_prime_is_divisible.o bn_mp_prime_is_prime.o bn_mp_prime_miller_rabin.o bn_mp_prime_next_prime.o \
 | 
				
			||||||
bn_mp_prime_rabin_miller_trials.o bn_mp_prime_random_ex.o bn_mp_radix_size.o bn_mp_radix_smap.o \
 | 
					bn_mp_prime_rabin_miller_trials.o bn_mp_prime_random_ex.o bn_mp_radix_size.o bn_mp_radix_smap.o \
 | 
				
			||||||
bn_mp_rand.o bn_mp_read_radix.o bn_mp_read_signed_bin.o bn_mp_read_unsigned_bin.o bn_mp_reduce_2k.o \
 | 
					bn_mp_rand.o bn_mp_read_radix.o bn_mp_read_signed_bin.o bn_mp_read_unsigned_bin.o bn_mp_reduce_2k.o \
 | 
				
			||||||
bn_mp_reduce_2k_l.o bn_mp_reduce_2k_setup.o bn_mp_reduce_2k_setup_l.o bn_mp_reduce.o \
 | 
					bn_mp_reduce_2k_l.o bn_mp_reduce_2k_setup.o bn_mp_reduce_2k_setup_l.o bn_mp_reduce.o \
 | 
				
			||||||
bn_mp_reduce_is_2k.o bn_mp_reduce_is_2k_l.o bn_mp_reduce_setup.o bn_mp_rshd.o bn_mp_set.o bn_mp_set_int.o \
 | 
					bn_mp_reduce_is_2k.o bn_mp_reduce_is_2k_l.o bn_mp_reduce_setup.o bn_mp_rshd.o bn_mp_set.o bn_mp_set_int.o \
 | 
				
			||||||
bn_mp_set_long.o bn_mp_set_long_long.o bn_mp_shrink.o bn_mp_signed_bin_size.o bn_mp_sqr.o bn_mp_sqrmod.o \
 | 
					bn_mp_set_long.o bn_mp_set_long_long.o bn_mp_shrink.o bn_mp_signed_bin_size.o bn_mp_sqr.o bn_mp_sqrmod.o \
 | 
				
			||||||
bn_mp_sqrt.o bn_mp_sqrtmod_prime.o bn_mp_sub.o bn_mp_sub_d.o bn_mp_submod.o bn_mp_toom_mul.o \
 | 
					bn_mp_sqrt.o bn_mp_sqrtmod_prime.o bn_mp_sub.o bn_mp_sub_d.o bn_mp_submod.o bn_mp_tc_and.o \
 | 
				
			||||||
bn_mp_toom_sqr.o bn_mp_toradix.o bn_mp_toradix_n.o bn_mp_to_signed_bin.o bn_mp_to_signed_bin_n.o \
 | 
					bn_mp_tc_div_2d.o bn_mp_tc_or.o bn_mp_tc_xor.o bn_mp_toom_mul.o bn_mp_toom_sqr.o bn_mp_toradix.o \
 | 
				
			||||||
bn_mp_to_unsigned_bin.o bn_mp_to_unsigned_bin_n.o bn_mp_unsigned_bin_size.o bn_mp_xor.o bn_mp_zero.o \
 | 
					bn_mp_toradix_n.o bn_mp_to_signed_bin.o bn_mp_to_signed_bin_n.o bn_mp_to_unsigned_bin.o \
 | 
				
			||||||
bn_prime_tab.o bn_reverse.o bn_s_mp_add.o bn_s_mp_exptmod.o bn_s_mp_mul_digs.o bn_s_mp_mul_high_digs.o \
 | 
					bn_mp_to_unsigned_bin_n.o bn_mp_unsigned_bin_size.o bn_mp_xor.o bn_mp_zero.o bn_prime_tab.o bn_reverse.o \
 | 
				
			||||||
bn_s_mp_sqr.o bn_s_mp_sub.o
 | 
					bn_s_mp_add.o bn_s_mp_exptmod.o bn_s_mp_mul_digs.o bn_s_mp_mul_high_digs.o bn_s_mp_sqr.o bn_s_mp_sub.o
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#END_INS
 | 
					#END_INS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										32
									
								
								makefile.icc
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								makefile.icc
									
									
									
									
									
								
							@ -42,27 +42,27 @@ DATAPATH=/usr/share/doc/libtommath/pdf
 | 
				
			|||||||
OBJECTS=bncore.o bn_error.o bn_fast_mp_invmod.o bn_fast_mp_montgomery_reduce.o bn_fast_s_mp_mul_digs.o \
 | 
					OBJECTS=bncore.o bn_error.o bn_fast_mp_invmod.o bn_fast_mp_montgomery_reduce.o bn_fast_s_mp_mul_digs.o \
 | 
				
			||||||
bn_fast_s_mp_mul_high_digs.o bn_fast_s_mp_sqr.o bn_mp_2expt.o bn_mp_abs.o bn_mp_add.o bn_mp_add_d.o \
 | 
					bn_fast_s_mp_mul_high_digs.o bn_fast_s_mp_sqr.o bn_mp_2expt.o bn_mp_abs.o bn_mp_add.o bn_mp_add_d.o \
 | 
				
			||||||
bn_mp_addmod.o bn_mp_and.o bn_mp_clamp.o bn_mp_clear.o bn_mp_clear_multi.o bn_mp_cmp.o bn_mp_cmp_d.o \
 | 
					bn_mp_addmod.o bn_mp_and.o bn_mp_clamp.o bn_mp_clear.o bn_mp_clear_multi.o bn_mp_cmp.o bn_mp_cmp_d.o \
 | 
				
			||||||
bn_mp_cmp_mag.o bn_mp_cnt_lsb.o bn_mp_copy.o bn_mp_count_bits.o bn_mp_div_2.o bn_mp_div_2d.o bn_mp_div_3.o \
 | 
					bn_mp_cmp_mag.o bn_mp_cnt_lsb.o bn_mp_complement.o bn_mp_copy.o bn_mp_count_bits.o bn_mp_div_2.o \
 | 
				
			||||||
bn_mp_div.o bn_mp_div_d.o bn_mp_dr_is_modulus.o bn_mp_dr_reduce.o bn_mp_dr_setup.o bn_mp_exch.o \
 | 
					bn_mp_div_2d.o bn_mp_div_3.o bn_mp_div.o bn_mp_div_d.o bn_mp_dr_is_modulus.o bn_mp_dr_reduce.o \
 | 
				
			||||||
bn_mp_export.o bn_mp_expt_d.o bn_mp_expt_d_ex.o bn_mp_exptmod.o bn_mp_exptmod_fast.o bn_mp_exteuclid.o \
 | 
					bn_mp_dr_setup.o bn_mp_exch.o bn_mp_export.o bn_mp_expt_d.o bn_mp_expt_d_ex.o bn_mp_exptmod.o \
 | 
				
			||||||
bn_mp_fread.o bn_mp_fwrite.o bn_mp_gcd.o bn_mp_get_int.o bn_mp_get_long.o bn_mp_get_long_long.o \
 | 
					bn_mp_exptmod_fast.o bn_mp_exteuclid.o bn_mp_fread.o bn_mp_fwrite.o bn_mp_gcd.o bn_mp_get_int.o \
 | 
				
			||||||
bn_mp_grow.o bn_mp_import.o bn_mp_init.o bn_mp_init_copy.o bn_mp_init_multi.o bn_mp_init_set.o \
 | 
					bn_mp_get_long.o bn_mp_get_long_long.o bn_mp_grow.o bn_mp_import.o bn_mp_init.o bn_mp_init_copy.o \
 | 
				
			||||||
bn_mp_init_set_int.o bn_mp_init_size.o bn_mp_invmod.o bn_mp_invmod_slow.o bn_mp_is_square.o \
 | 
					bn_mp_init_multi.o bn_mp_init_set.o bn_mp_init_set_int.o bn_mp_init_size.o bn_mp_invmod.o \
 | 
				
			||||||
bn_mp_jacobi.o bn_mp_karatsuba_mul.o bn_mp_karatsuba_sqr.o bn_mp_lcm.o bn_mp_lshd.o bn_mp_mod_2d.o \
 | 
					bn_mp_invmod_slow.o bn_mp_is_square.o bn_mp_jacobi.o bn_mp_karatsuba_mul.o bn_mp_karatsuba_sqr.o \
 | 
				
			||||||
bn_mp_mod.o bn_mp_mod_d.o bn_mp_montgomery_calc_normalization.o bn_mp_montgomery_reduce.o \
 | 
					bn_mp_lcm.o bn_mp_lshd.o bn_mp_mod_2d.o bn_mp_mod.o bn_mp_mod_d.o bn_mp_montgomery_calc_normalization.o \
 | 
				
			||||||
bn_mp_montgomery_setup.o bn_mp_mul_2.o bn_mp_mul_2d.o bn_mp_mul.o bn_mp_mul_d.o bn_mp_mulmod.o bn_mp_neg.o \
 | 
					bn_mp_montgomery_reduce.o bn_mp_montgomery_setup.o bn_mp_mul_2.o bn_mp_mul_2d.o bn_mp_mul.o bn_mp_mul_d.o \
 | 
				
			||||||
bn_mp_n_root.o bn_mp_n_root_ex.o bn_mp_or.o bn_mp_prime_fermat.o bn_mp_prime_is_divisible.o \
 | 
					bn_mp_mulmod.o bn_mp_neg.o bn_mp_n_root.o bn_mp_n_root_ex.o bn_mp_or.o bn_mp_prime_fermat.o \
 | 
				
			||||||
bn_mp_prime_is_prime.o bn_mp_prime_miller_rabin.o bn_mp_prime_next_prime.o \
 | 
					bn_mp_prime_is_divisible.o bn_mp_prime_is_prime.o bn_mp_prime_miller_rabin.o bn_mp_prime_next_prime.o \
 | 
				
			||||||
bn_mp_prime_rabin_miller_trials.o bn_mp_prime_random_ex.o bn_mp_radix_size.o bn_mp_radix_smap.o \
 | 
					bn_mp_prime_rabin_miller_trials.o bn_mp_prime_random_ex.o bn_mp_radix_size.o bn_mp_radix_smap.o \
 | 
				
			||||||
bn_mp_rand.o bn_mp_read_radix.o bn_mp_read_signed_bin.o bn_mp_read_unsigned_bin.o bn_mp_reduce_2k.o \
 | 
					bn_mp_rand.o bn_mp_read_radix.o bn_mp_read_signed_bin.o bn_mp_read_unsigned_bin.o bn_mp_reduce_2k.o \
 | 
				
			||||||
bn_mp_reduce_2k_l.o bn_mp_reduce_2k_setup.o bn_mp_reduce_2k_setup_l.o bn_mp_reduce.o \
 | 
					bn_mp_reduce_2k_l.o bn_mp_reduce_2k_setup.o bn_mp_reduce_2k_setup_l.o bn_mp_reduce.o \
 | 
				
			||||||
bn_mp_reduce_is_2k.o bn_mp_reduce_is_2k_l.o bn_mp_reduce_setup.o bn_mp_rshd.o bn_mp_set.o bn_mp_set_int.o \
 | 
					bn_mp_reduce_is_2k.o bn_mp_reduce_is_2k_l.o bn_mp_reduce_setup.o bn_mp_rshd.o bn_mp_set.o bn_mp_set_int.o \
 | 
				
			||||||
bn_mp_set_long.o bn_mp_set_long_long.o bn_mp_shrink.o bn_mp_signed_bin_size.o bn_mp_sqr.o bn_mp_sqrmod.o \
 | 
					bn_mp_set_long.o bn_mp_set_long_long.o bn_mp_shrink.o bn_mp_signed_bin_size.o bn_mp_sqr.o bn_mp_sqrmod.o \
 | 
				
			||||||
bn_mp_sqrt.o bn_mp_sqrtmod_prime.o bn_mp_sub.o bn_mp_sub_d.o bn_mp_submod.o bn_mp_toom_mul.o \
 | 
					bn_mp_sqrt.o bn_mp_sqrtmod_prime.o bn_mp_sub.o bn_mp_sub_d.o bn_mp_submod.o bn_mp_tc_and.o \
 | 
				
			||||||
bn_mp_toom_sqr.o bn_mp_toradix.o bn_mp_toradix_n.o bn_mp_to_signed_bin.o bn_mp_to_signed_bin_n.o \
 | 
					bn_mp_tc_div_2d.o bn_mp_tc_or.o bn_mp_tc_xor.o bn_mp_toom_mul.o bn_mp_toom_sqr.o bn_mp_toradix.o \
 | 
				
			||||||
bn_mp_to_unsigned_bin.o bn_mp_to_unsigned_bin_n.o bn_mp_unsigned_bin_size.o bn_mp_xor.o bn_mp_zero.o \
 | 
					bn_mp_toradix_n.o bn_mp_to_signed_bin.o bn_mp_to_signed_bin_n.o bn_mp_to_unsigned_bin.o \
 | 
				
			||||||
bn_prime_tab.o bn_reverse.o bn_s_mp_add.o bn_s_mp_exptmod.o bn_s_mp_mul_digs.o bn_s_mp_mul_high_digs.o \
 | 
					bn_mp_to_unsigned_bin_n.o bn_mp_unsigned_bin_size.o bn_mp_xor.o bn_mp_zero.o bn_prime_tab.o bn_reverse.o \
 | 
				
			||||||
bn_s_mp_sqr.o bn_s_mp_sub.o
 | 
					bn_s_mp_add.o bn_s_mp_exptmod.o bn_s_mp_mul_digs.o bn_s_mp_mul_high_digs.o bn_s_mp_sqr.o bn_s_mp_sub.o
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#END_INS
 | 
					#END_INS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -10,27 +10,27 @@ default: library
 | 
				
			|||||||
OBJECTS=bncore.obj bn_error.obj bn_fast_mp_invmod.obj bn_fast_mp_montgomery_reduce.obj bn_fast_s_mp_mul_digs.obj \
 | 
					OBJECTS=bncore.obj bn_error.obj bn_fast_mp_invmod.obj bn_fast_mp_montgomery_reduce.obj bn_fast_s_mp_mul_digs.obj \
 | 
				
			||||||
bn_fast_s_mp_mul_high_digs.obj bn_fast_s_mp_sqr.obj bn_mp_2expt.obj bn_mp_abs.obj bn_mp_add.obj bn_mp_add_d.obj \
 | 
					bn_fast_s_mp_mul_high_digs.obj bn_fast_s_mp_sqr.obj bn_mp_2expt.obj bn_mp_abs.obj bn_mp_add.obj bn_mp_add_d.obj \
 | 
				
			||||||
bn_mp_addmod.obj bn_mp_and.obj bn_mp_clamp.obj bn_mp_clear.obj bn_mp_clear_multi.obj bn_mp_cmp.obj bn_mp_cmp_d.obj \
 | 
					bn_mp_addmod.obj bn_mp_and.obj bn_mp_clamp.obj bn_mp_clear.obj bn_mp_clear_multi.obj bn_mp_cmp.obj bn_mp_cmp_d.obj \
 | 
				
			||||||
bn_mp_cmp_mag.obj bn_mp_cnt_lsb.obj bn_mp_copy.obj bn_mp_count_bits.obj bn_mp_div_2.obj bn_mp_div_2d.obj bn_mp_div_3.obj \
 | 
					bn_mp_cmp_mag.obj bn_mp_cnt_lsb.obj bn_mp_complement.obj bn_mp_copy.obj bn_mp_count_bits.obj bn_mp_div_2.obj \
 | 
				
			||||||
bn_mp_div.obj bn_mp_div_d.obj bn_mp_dr_is_modulus.obj bn_mp_dr_reduce.obj bn_mp_dr_setup.obj bn_mp_exch.obj \
 | 
					bn_mp_div_2d.obj bn_mp_div_3.obj bn_mp_div.obj bn_mp_div_d.obj bn_mp_dr_is_modulus.obj bn_mp_dr_reduce.obj \
 | 
				
			||||||
bn_mp_export.obj bn_mp_expt_d.obj bn_mp_expt_d_ex.obj bn_mp_exptmod.obj bn_mp_exptmod_fast.obj bn_mp_exteuclid.obj \
 | 
					bn_mp_dr_setup.obj bn_mp_exch.obj bn_mp_export.obj bn_mp_expt_d.obj bn_mp_expt_d_ex.obj bn_mp_exptmod.obj \
 | 
				
			||||||
bn_mp_fread.obj bn_mp_fwrite.obj bn_mp_gcd.obj bn_mp_get_int.obj bn_mp_get_long.obj bn_mp_get_long_long.obj \
 | 
					bn_mp_exptmod_fast.obj bn_mp_exteuclid.obj bn_mp_fread.obj bn_mp_fwrite.obj bn_mp_gcd.obj bn_mp_get_int.obj \
 | 
				
			||||||
bn_mp_grow.obj bn_mp_import.obj bn_mp_init.obj bn_mp_init_copy.obj bn_mp_init_multi.obj bn_mp_init_set.obj \
 | 
					bn_mp_get_long.obj bn_mp_get_long_long.obj bn_mp_grow.obj bn_mp_import.obj bn_mp_init.obj bn_mp_init_copy.obj \
 | 
				
			||||||
bn_mp_init_set_int.obj bn_mp_init_size.obj bn_mp_invmod.obj bn_mp_invmod_slow.obj bn_mp_is_square.obj \
 | 
					bn_mp_init_multi.obj bn_mp_init_set.obj bn_mp_init_set_int.obj bn_mp_init_size.obj bn_mp_invmod.obj \
 | 
				
			||||||
bn_mp_jacobi.obj bn_mp_karatsuba_mul.obj bn_mp_karatsuba_sqr.obj bn_mp_lcm.obj bn_mp_lshd.obj bn_mp_mod_2d.obj \
 | 
					bn_mp_invmod_slow.obj bn_mp_is_square.obj bn_mp_jacobi.obj bn_mp_karatsuba_mul.obj bn_mp_karatsuba_sqr.obj \
 | 
				
			||||||
bn_mp_mod.obj bn_mp_mod_d.obj bn_mp_montgomery_calc_normalization.obj bn_mp_montgomery_reduce.obj \
 | 
					bn_mp_lcm.obj bn_mp_lshd.obj bn_mp_mod_2d.obj bn_mp_mod.obj bn_mp_mod_d.obj bn_mp_montgomery_calc_normalization.obj \
 | 
				
			||||||
bn_mp_montgomery_setup.obj bn_mp_mul_2.obj bn_mp_mul_2d.obj bn_mp_mul.obj bn_mp_mul_d.obj bn_mp_mulmod.obj bn_mp_neg.obj \
 | 
					bn_mp_montgomery_reduce.obj bn_mp_montgomery_setup.obj bn_mp_mul_2.obj bn_mp_mul_2d.obj bn_mp_mul.obj bn_mp_mul_d.obj \
 | 
				
			||||||
bn_mp_n_root.obj bn_mp_n_root_ex.obj bn_mp_or.obj bn_mp_prime_fermat.obj bn_mp_prime_is_divisible.obj \
 | 
					bn_mp_mulmod.obj bn_mp_neg.obj bn_mp_n_root.obj bn_mp_n_root_ex.obj bn_mp_or.obj bn_mp_prime_fermat.obj \
 | 
				
			||||||
bn_mp_prime_is_prime.obj bn_mp_prime_miller_rabin.obj bn_mp_prime_next_prime.obj \
 | 
					bn_mp_prime_is_divisible.obj bn_mp_prime_is_prime.obj bn_mp_prime_miller_rabin.obj bn_mp_prime_next_prime.obj \
 | 
				
			||||||
bn_mp_prime_rabin_miller_trials.obj bn_mp_prime_random_ex.obj bn_mp_radix_size.obj bn_mp_radix_smap.obj \
 | 
					bn_mp_prime_rabin_miller_trials.obj bn_mp_prime_random_ex.obj bn_mp_radix_size.obj bn_mp_radix_smap.obj \
 | 
				
			||||||
bn_mp_rand.obj bn_mp_read_radix.obj bn_mp_read_signed_bin.obj bn_mp_read_unsigned_bin.obj bn_mp_reduce_2k.obj \
 | 
					bn_mp_rand.obj bn_mp_read_radix.obj bn_mp_read_signed_bin.obj bn_mp_read_unsigned_bin.obj bn_mp_reduce_2k.obj \
 | 
				
			||||||
bn_mp_reduce_2k_l.obj bn_mp_reduce_2k_setup.obj bn_mp_reduce_2k_setup_l.obj bn_mp_reduce.obj \
 | 
					bn_mp_reduce_2k_l.obj bn_mp_reduce_2k_setup.obj bn_mp_reduce_2k_setup_l.obj bn_mp_reduce.obj \
 | 
				
			||||||
bn_mp_reduce_is_2k.obj bn_mp_reduce_is_2k_l.obj bn_mp_reduce_setup.obj bn_mp_rshd.obj bn_mp_set.obj bn_mp_set_int.obj \
 | 
					bn_mp_reduce_is_2k.obj bn_mp_reduce_is_2k_l.obj bn_mp_reduce_setup.obj bn_mp_rshd.obj bn_mp_set.obj bn_mp_set_int.obj \
 | 
				
			||||||
bn_mp_set_long.obj bn_mp_set_long_long.obj bn_mp_shrink.obj bn_mp_signed_bin_size.obj bn_mp_sqr.obj bn_mp_sqrmod.obj \
 | 
					bn_mp_set_long.obj bn_mp_set_long_long.obj bn_mp_shrink.obj bn_mp_signed_bin_size.obj bn_mp_sqr.obj bn_mp_sqrmod.obj \
 | 
				
			||||||
bn_mp_sqrt.obj bn_mp_sqrtmod_prime.obj bn_mp_sub.obj bn_mp_sub_d.obj bn_mp_submod.obj bn_mp_toom_mul.obj \
 | 
					bn_mp_sqrt.obj bn_mp_sqrtmod_prime.obj bn_mp_sub.obj bn_mp_sub_d.obj bn_mp_submod.obj bn_mp_tc_and.obj \
 | 
				
			||||||
bn_mp_toom_sqr.obj bn_mp_toradix.obj bn_mp_toradix_n.obj bn_mp_to_signed_bin.obj bn_mp_to_signed_bin_n.obj \
 | 
					bn_mp_tc_div_2d.obj bn_mp_tc_or.obj bn_mp_tc_xor.obj bn_mp_toom_mul.obj bn_mp_toom_sqr.obj bn_mp_toradix.obj \
 | 
				
			||||||
bn_mp_to_unsigned_bin.obj bn_mp_to_unsigned_bin_n.obj bn_mp_unsigned_bin_size.obj bn_mp_xor.obj bn_mp_zero.obj \
 | 
					bn_mp_toradix_n.obj bn_mp_to_signed_bin.obj bn_mp_to_signed_bin_n.obj bn_mp_to_unsigned_bin.obj \
 | 
				
			||||||
bn_prime_tab.obj bn_reverse.obj bn_s_mp_add.obj bn_s_mp_exptmod.obj bn_s_mp_mul_digs.obj bn_s_mp_mul_high_digs.obj \
 | 
					bn_mp_to_unsigned_bin_n.obj bn_mp_unsigned_bin_size.obj bn_mp_xor.obj bn_mp_zero.obj bn_prime_tab.obj bn_reverse.obj \
 | 
				
			||||||
bn_s_mp_sqr.obj bn_s_mp_sub.obj
 | 
					bn_s_mp_add.obj bn_s_mp_exptmod.obj bn_s_mp_mul_digs.obj bn_s_mp_mul_high_digs.obj bn_s_mp_sqr.obj bn_s_mp_sub.obj
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#END_INS
 | 
					#END_INS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -25,27 +25,27 @@ LCOV_ARGS=--directory .libs --directory .
 | 
				
			|||||||
OBJECTS=bncore.o bn_error.o bn_fast_mp_invmod.o bn_fast_mp_montgomery_reduce.o bn_fast_s_mp_mul_digs.o \
 | 
					OBJECTS=bncore.o bn_error.o bn_fast_mp_invmod.o bn_fast_mp_montgomery_reduce.o bn_fast_s_mp_mul_digs.o \
 | 
				
			||||||
bn_fast_s_mp_mul_high_digs.o bn_fast_s_mp_sqr.o bn_mp_2expt.o bn_mp_abs.o bn_mp_add.o bn_mp_add_d.o \
 | 
					bn_fast_s_mp_mul_high_digs.o bn_fast_s_mp_sqr.o bn_mp_2expt.o bn_mp_abs.o bn_mp_add.o bn_mp_add_d.o \
 | 
				
			||||||
bn_mp_addmod.o bn_mp_and.o bn_mp_clamp.o bn_mp_clear.o bn_mp_clear_multi.o bn_mp_cmp.o bn_mp_cmp_d.o \
 | 
					bn_mp_addmod.o bn_mp_and.o bn_mp_clamp.o bn_mp_clear.o bn_mp_clear_multi.o bn_mp_cmp.o bn_mp_cmp_d.o \
 | 
				
			||||||
bn_mp_cmp_mag.o bn_mp_cnt_lsb.o bn_mp_copy.o bn_mp_count_bits.o bn_mp_div_2.o bn_mp_div_2d.o bn_mp_div_3.o \
 | 
					bn_mp_cmp_mag.o bn_mp_cnt_lsb.o bn_mp_complement.o bn_mp_copy.o bn_mp_count_bits.o bn_mp_div_2.o \
 | 
				
			||||||
bn_mp_div.o bn_mp_div_d.o bn_mp_dr_is_modulus.o bn_mp_dr_reduce.o bn_mp_dr_setup.o bn_mp_exch.o \
 | 
					bn_mp_div_2d.o bn_mp_div_3.o bn_mp_div.o bn_mp_div_d.o bn_mp_dr_is_modulus.o bn_mp_dr_reduce.o \
 | 
				
			||||||
bn_mp_export.o bn_mp_expt_d.o bn_mp_expt_d_ex.o bn_mp_exptmod.o bn_mp_exptmod_fast.o bn_mp_exteuclid.o \
 | 
					bn_mp_dr_setup.o bn_mp_exch.o bn_mp_export.o bn_mp_expt_d.o bn_mp_expt_d_ex.o bn_mp_exptmod.o \
 | 
				
			||||||
bn_mp_fread.o bn_mp_fwrite.o bn_mp_gcd.o bn_mp_get_int.o bn_mp_get_long.o bn_mp_get_long_long.o \
 | 
					bn_mp_exptmod_fast.o bn_mp_exteuclid.o bn_mp_fread.o bn_mp_fwrite.o bn_mp_gcd.o bn_mp_get_int.o \
 | 
				
			||||||
bn_mp_grow.o bn_mp_import.o bn_mp_init.o bn_mp_init_copy.o bn_mp_init_multi.o bn_mp_init_set.o \
 | 
					bn_mp_get_long.o bn_mp_get_long_long.o bn_mp_grow.o bn_mp_import.o bn_mp_init.o bn_mp_init_copy.o \
 | 
				
			||||||
bn_mp_init_set_int.o bn_mp_init_size.o bn_mp_invmod.o bn_mp_invmod_slow.o bn_mp_is_square.o \
 | 
					bn_mp_init_multi.o bn_mp_init_set.o bn_mp_init_set_int.o bn_mp_init_size.o bn_mp_invmod.o \
 | 
				
			||||||
bn_mp_jacobi.o bn_mp_karatsuba_mul.o bn_mp_karatsuba_sqr.o bn_mp_lcm.o bn_mp_lshd.o bn_mp_mod_2d.o \
 | 
					bn_mp_invmod_slow.o bn_mp_is_square.o bn_mp_jacobi.o bn_mp_karatsuba_mul.o bn_mp_karatsuba_sqr.o \
 | 
				
			||||||
bn_mp_mod.o bn_mp_mod_d.o bn_mp_montgomery_calc_normalization.o bn_mp_montgomery_reduce.o \
 | 
					bn_mp_lcm.o bn_mp_lshd.o bn_mp_mod_2d.o bn_mp_mod.o bn_mp_mod_d.o bn_mp_montgomery_calc_normalization.o \
 | 
				
			||||||
bn_mp_montgomery_setup.o bn_mp_mul_2.o bn_mp_mul_2d.o bn_mp_mul.o bn_mp_mul_d.o bn_mp_mulmod.o bn_mp_neg.o \
 | 
					bn_mp_montgomery_reduce.o bn_mp_montgomery_setup.o bn_mp_mul_2.o bn_mp_mul_2d.o bn_mp_mul.o bn_mp_mul_d.o \
 | 
				
			||||||
bn_mp_n_root.o bn_mp_n_root_ex.o bn_mp_or.o bn_mp_prime_fermat.o bn_mp_prime_is_divisible.o \
 | 
					bn_mp_mulmod.o bn_mp_neg.o bn_mp_n_root.o bn_mp_n_root_ex.o bn_mp_or.o bn_mp_prime_fermat.o \
 | 
				
			||||||
bn_mp_prime_is_prime.o bn_mp_prime_miller_rabin.o bn_mp_prime_next_prime.o \
 | 
					bn_mp_prime_is_divisible.o bn_mp_prime_is_prime.o bn_mp_prime_miller_rabin.o bn_mp_prime_next_prime.o \
 | 
				
			||||||
bn_mp_prime_rabin_miller_trials.o bn_mp_prime_random_ex.o bn_mp_radix_size.o bn_mp_radix_smap.o \
 | 
					bn_mp_prime_rabin_miller_trials.o bn_mp_prime_random_ex.o bn_mp_radix_size.o bn_mp_radix_smap.o \
 | 
				
			||||||
bn_mp_rand.o bn_mp_read_radix.o bn_mp_read_signed_bin.o bn_mp_read_unsigned_bin.o bn_mp_reduce_2k.o \
 | 
					bn_mp_rand.o bn_mp_read_radix.o bn_mp_read_signed_bin.o bn_mp_read_unsigned_bin.o bn_mp_reduce_2k.o \
 | 
				
			||||||
bn_mp_reduce_2k_l.o bn_mp_reduce_2k_setup.o bn_mp_reduce_2k_setup_l.o bn_mp_reduce.o \
 | 
					bn_mp_reduce_2k_l.o bn_mp_reduce_2k_setup.o bn_mp_reduce_2k_setup_l.o bn_mp_reduce.o \
 | 
				
			||||||
bn_mp_reduce_is_2k.o bn_mp_reduce_is_2k_l.o bn_mp_reduce_setup.o bn_mp_rshd.o bn_mp_set.o bn_mp_set_int.o \
 | 
					bn_mp_reduce_is_2k.o bn_mp_reduce_is_2k_l.o bn_mp_reduce_setup.o bn_mp_rshd.o bn_mp_set.o bn_mp_set_int.o \
 | 
				
			||||||
bn_mp_set_long.o bn_mp_set_long_long.o bn_mp_shrink.o bn_mp_signed_bin_size.o bn_mp_sqr.o bn_mp_sqrmod.o \
 | 
					bn_mp_set_long.o bn_mp_set_long_long.o bn_mp_shrink.o bn_mp_signed_bin_size.o bn_mp_sqr.o bn_mp_sqrmod.o \
 | 
				
			||||||
bn_mp_sqrt.o bn_mp_sqrtmod_prime.o bn_mp_sub.o bn_mp_sub_d.o bn_mp_submod.o bn_mp_toom_mul.o \
 | 
					bn_mp_sqrt.o bn_mp_sqrtmod_prime.o bn_mp_sub.o bn_mp_sub_d.o bn_mp_submod.o bn_mp_tc_and.o \
 | 
				
			||||||
bn_mp_toom_sqr.o bn_mp_toradix.o bn_mp_toradix_n.o bn_mp_to_signed_bin.o bn_mp_to_signed_bin_n.o \
 | 
					bn_mp_tc_div_2d.o bn_mp_tc_or.o bn_mp_tc_xor.o bn_mp_toom_mul.o bn_mp_toom_sqr.o bn_mp_toradix.o \
 | 
				
			||||||
bn_mp_to_unsigned_bin.o bn_mp_to_unsigned_bin_n.o bn_mp_unsigned_bin_size.o bn_mp_xor.o bn_mp_zero.o \
 | 
					bn_mp_toradix_n.o bn_mp_to_signed_bin.o bn_mp_to_signed_bin_n.o bn_mp_to_unsigned_bin.o \
 | 
				
			||||||
bn_prime_tab.o bn_reverse.o bn_s_mp_add.o bn_s_mp_exptmod.o bn_s_mp_mul_digs.o bn_s_mp_mul_high_digs.o \
 | 
					bn_mp_to_unsigned_bin_n.o bn_mp_unsigned_bin_size.o bn_mp_xor.o bn_mp_zero.o bn_prime_tab.o bn_reverse.o \
 | 
				
			||||||
bn_s_mp_sqr.o bn_s_mp_sub.o
 | 
					bn_s_mp_add.o bn_s_mp_exptmod.o bn_s_mp_mul_digs.o bn_s_mp_mul_high_digs.o bn_s_mp_sqr.o bn_s_mp_sub.o
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#END_INS
 | 
					#END_INS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										15
									
								
								tommath.h
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								tommath.h
									
									
									
									
									
								
							@ -292,8 +292,23 @@ int mp_or(const mp_int *a, const mp_int *b, mp_int *c);
 | 
				
			|||||||
/* c = a AND b */
 | 
					/* c = a AND b */
 | 
				
			||||||
int mp_and(const mp_int *a, const mp_int *b, mp_int *c);
 | 
					int mp_and(const mp_int *a, const mp_int *b, mp_int *c);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* c = a XOR b (two complement) */
 | 
				
			||||||
 | 
					int mp_tc_xor(const mp_int *a, const mp_int *b, mp_int *c);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* c = a OR b (two complement) */
 | 
				
			||||||
 | 
					int mp_tc_or(const mp_int *a, const mp_int *b, mp_int *c);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* c = a AND b (two complement) */
 | 
				
			||||||
 | 
					int mp_tc_and(const mp_int *a, const mp_int *b, mp_int *c);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* right shift (two complement) */
 | 
				
			||||||
 | 
					int mp_tc_div_2d(const mp_int *a, int b, mp_int *c);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* ---> Basic arithmetic <--- */
 | 
					/* ---> Basic arithmetic <--- */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* b = ~a */
 | 
				
			||||||
 | 
					int mp_complement(const mp_int *a, mp_int *b);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* b = -a */
 | 
					/* b = -a */
 | 
				
			||||||
int mp_neg(const mp_int *a, mp_int *b);
 | 
					int mp_neg(const mp_int *a, mp_int *b);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -27,6 +27,7 @@
 | 
				
			|||||||
#   define BN_MP_CMP_D_C
 | 
					#   define BN_MP_CMP_D_C
 | 
				
			||||||
#   define BN_MP_CMP_MAG_C
 | 
					#   define BN_MP_CMP_MAG_C
 | 
				
			||||||
#   define BN_MP_CNT_LSB_C
 | 
					#   define BN_MP_CNT_LSB_C
 | 
				
			||||||
 | 
					#   define BN_MP_COMPLEMENT_C
 | 
				
			||||||
#   define BN_MP_COPY_C
 | 
					#   define BN_MP_COPY_C
 | 
				
			||||||
#   define BN_MP_COUNT_BITS_C
 | 
					#   define BN_MP_COUNT_BITS_C
 | 
				
			||||||
#   define BN_MP_DIV_C
 | 
					#   define BN_MP_DIV_C
 | 
				
			||||||
@ -116,6 +117,10 @@
 | 
				
			|||||||
#   define BN_MP_SUB_C
 | 
					#   define BN_MP_SUB_C
 | 
				
			||||||
#   define BN_MP_SUB_D_C
 | 
					#   define BN_MP_SUB_D_C
 | 
				
			||||||
#   define BN_MP_SUBMOD_C
 | 
					#   define BN_MP_SUBMOD_C
 | 
				
			||||||
 | 
					#   define BN_MP_TC_AND_C
 | 
				
			||||||
 | 
					#   define BN_MP_TC_DIV_2D_C
 | 
				
			||||||
 | 
					#   define BN_MP_TC_OR_C
 | 
				
			||||||
 | 
					#   define BN_MP_TC_XOR_C
 | 
				
			||||||
#   define BN_MP_TO_SIGNED_BIN_C
 | 
					#   define BN_MP_TO_SIGNED_BIN_C
 | 
				
			||||||
#   define BN_MP_TO_SIGNED_BIN_N_C
 | 
					#   define BN_MP_TO_SIGNED_BIN_N_C
 | 
				
			||||||
#   define BN_MP_TO_UNSIGNED_BIN_C
 | 
					#   define BN_MP_TO_UNSIGNED_BIN_C
 | 
				
			||||||
@ -147,12 +152,12 @@
 | 
				
			|||||||
#   define BN_MP_INIT_MULTI_C
 | 
					#   define BN_MP_INIT_MULTI_C
 | 
				
			||||||
#   define BN_MP_COPY_C
 | 
					#   define BN_MP_COPY_C
 | 
				
			||||||
#   define BN_MP_MOD_C
 | 
					#   define BN_MP_MOD_C
 | 
				
			||||||
 | 
					#   define BN_MP_ISZERO_C
 | 
				
			||||||
#   define BN_MP_SET_C
 | 
					#   define BN_MP_SET_C
 | 
				
			||||||
#   define BN_MP_DIV_2_C
 | 
					#   define BN_MP_DIV_2_C
 | 
				
			||||||
#   define BN_MP_ISODD_C
 | 
					#   define BN_MP_ISODD_C
 | 
				
			||||||
#   define BN_MP_SUB_C
 | 
					#   define BN_MP_SUB_C
 | 
				
			||||||
#   define BN_MP_CMP_C
 | 
					#   define BN_MP_CMP_C
 | 
				
			||||||
#   define BN_MP_ISZERO_C
 | 
					 | 
				
			||||||
#   define BN_MP_CMP_D_C
 | 
					#   define BN_MP_CMP_D_C
 | 
				
			||||||
#   define BN_MP_ADD_C
 | 
					#   define BN_MP_ADD_C
 | 
				
			||||||
#   define BN_MP_EXCH_C
 | 
					#   define BN_MP_EXCH_C
 | 
				
			||||||
@ -241,6 +246,11 @@
 | 
				
			|||||||
#   define BN_MP_ISZERO_C
 | 
					#   define BN_MP_ISZERO_C
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(BN_MP_COMPLEMENT_C)
 | 
				
			||||||
 | 
					#   define BN_MP_NEG_C
 | 
				
			||||||
 | 
					#   define BN_MP_SUB_D_C
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(BN_MP_COPY_C)
 | 
					#if defined(BN_MP_COPY_C)
 | 
				
			||||||
#   define BN_MP_GROW_C
 | 
					#   define BN_MP_GROW_C
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@ -390,7 +400,8 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#if defined(BN_MP_FREAD_C)
 | 
					#if defined(BN_MP_FREAD_C)
 | 
				
			||||||
#   define BN_MP_ZERO_C
 | 
					#   define BN_MP_ZERO_C
 | 
				
			||||||
#   define BN_MP_S_RMAP_C
 | 
					#   define BN_MP_S_RMAP_REVERSE_SZ_C
 | 
				
			||||||
 | 
					#   define BN_MP_S_RMAP_REVERSE_C
 | 
				
			||||||
#   define BN_MP_MUL_D_C
 | 
					#   define BN_MP_MUL_D_C
 | 
				
			||||||
#   define BN_MP_ADD_D_C
 | 
					#   define BN_MP_ADD_D_C
 | 
				
			||||||
#   define BN_MP_CMP_D_C
 | 
					#   define BN_MP_CMP_D_C
 | 
				
			||||||
@ -462,9 +473,8 @@
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(BN_MP_INVMOD_C)
 | 
					#if defined(BN_MP_INVMOD_C)
 | 
				
			||||||
#   define BN_MP_ISZERO_C
 | 
					 | 
				
			||||||
#   define BN_MP_ISODD_C
 | 
					 | 
				
			||||||
#   define BN_MP_CMP_D_C
 | 
					#   define BN_MP_CMP_D_C
 | 
				
			||||||
 | 
					#   define BN_MP_ISODD_C
 | 
				
			||||||
#   define BN_FAST_MP_INVMOD_C
 | 
					#   define BN_FAST_MP_INVMOD_C
 | 
				
			||||||
#   define BN_MP_INVMOD_SLOW_C
 | 
					#   define BN_MP_INVMOD_SLOW_C
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@ -541,6 +551,7 @@
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(BN_MP_LSHD_C)
 | 
					#if defined(BN_MP_LSHD_C)
 | 
				
			||||||
 | 
					#   define BN_MP_ISZERO_C
 | 
				
			||||||
#   define BN_MP_GROW_C
 | 
					#   define BN_MP_GROW_C
 | 
				
			||||||
#   define BN_MP_RSHD_C
 | 
					#   define BN_MP_RSHD_C
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@ -714,6 +725,8 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#if defined(BN_MP_RADIX_SMAP_C)
 | 
					#if defined(BN_MP_RADIX_SMAP_C)
 | 
				
			||||||
#   define BN_MP_S_RMAP_C
 | 
					#   define BN_MP_S_RMAP_C
 | 
				
			||||||
 | 
					#   define BN_MP_S_RMAP_REVERSE_C
 | 
				
			||||||
 | 
					#   define BN_MP_S_RMAP_REVERSE_SZ_C
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(BN_MP_RAND_C)
 | 
					#if defined(BN_MP_RAND_C)
 | 
				
			||||||
@ -724,7 +737,8 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#if defined(BN_MP_READ_RADIX_C)
 | 
					#if defined(BN_MP_READ_RADIX_C)
 | 
				
			||||||
#   define BN_MP_ZERO_C
 | 
					#   define BN_MP_ZERO_C
 | 
				
			||||||
#   define BN_MP_S_RMAP_C
 | 
					#   define BN_MP_S_RMAP_REVERSE_SZ_C
 | 
				
			||||||
 | 
					#   define BN_MP_S_RMAP_REVERSE_C
 | 
				
			||||||
#   define BN_MP_MUL_D_C
 | 
					#   define BN_MP_MUL_D_C
 | 
				
			||||||
#   define BN_MP_ADD_D_C
 | 
					#   define BN_MP_ADD_D_C
 | 
				
			||||||
#   define BN_MP_ISZERO_C
 | 
					#   define BN_MP_ISZERO_C
 | 
				
			||||||
@ -904,6 +918,49 @@
 | 
				
			|||||||
#   define BN_MP_MOD_C
 | 
					#   define BN_MP_MOD_C
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(BN_MP_TC_AND_C)
 | 
				
			||||||
 | 
					#   define BN_MP_ISNEG_C
 | 
				
			||||||
 | 
					#   define BN_MP_COUNT_BITS_C
 | 
				
			||||||
 | 
					#   define BN_MP_INIT_SET_INT_C
 | 
				
			||||||
 | 
					#   define BN_MP_MUL_2D_C
 | 
				
			||||||
 | 
					#   define BN_MP_INIT_C
 | 
				
			||||||
 | 
					#   define BN_MP_ADD_C
 | 
				
			||||||
 | 
					#   define BN_MP_CLEAR_C
 | 
				
			||||||
 | 
					#   define BN_MP_AND_C
 | 
				
			||||||
 | 
					#   define BN_MP_SUB_C
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(BN_MP_TC_DIV_2D_C)
 | 
				
			||||||
 | 
					#   define BN_MP_ISNEG_C
 | 
				
			||||||
 | 
					#   define BN_MP_DIV_2D_C
 | 
				
			||||||
 | 
					#   define BN_MP_ADD_D_C
 | 
				
			||||||
 | 
					#   define BN_MP_SUB_D_C
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(BN_MP_TC_OR_C)
 | 
				
			||||||
 | 
					#   define BN_MP_ISNEG_C
 | 
				
			||||||
 | 
					#   define BN_MP_COUNT_BITS_C
 | 
				
			||||||
 | 
					#   define BN_MP_INIT_SET_INT_C
 | 
				
			||||||
 | 
					#   define BN_MP_MUL_2D_C
 | 
				
			||||||
 | 
					#   define BN_MP_INIT_C
 | 
				
			||||||
 | 
					#   define BN_MP_ADD_C
 | 
				
			||||||
 | 
					#   define BN_MP_CLEAR_C
 | 
				
			||||||
 | 
					#   define BN_MP_OR_C
 | 
				
			||||||
 | 
					#   define BN_MP_SUB_C
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(BN_MP_TC_XOR_C)
 | 
				
			||||||
 | 
					#   define BN_MP_ISNEG_C
 | 
				
			||||||
 | 
					#   define BN_MP_COUNT_BITS_C
 | 
				
			||||||
 | 
					#   define BN_MP_INIT_SET_INT_C
 | 
				
			||||||
 | 
					#   define BN_MP_MUL_2D_C
 | 
				
			||||||
 | 
					#   define BN_MP_INIT_C
 | 
				
			||||||
 | 
					#   define BN_MP_ADD_C
 | 
				
			||||||
 | 
					#   define BN_MP_CLEAR_C
 | 
				
			||||||
 | 
					#   define BN_MP_XOR_C
 | 
				
			||||||
 | 
					#   define BN_MP_SUB_C
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(BN_MP_TO_SIGNED_BIN_C)
 | 
					#if defined(BN_MP_TO_SIGNED_BIN_C)
 | 
				
			||||||
#   define BN_MP_TO_UNSIGNED_BIN_C
 | 
					#   define BN_MP_TO_UNSIGNED_BIN_C
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user