add mp_get_long_long() and mp_set_long_long()
This commit is contained in:
		
							parent
							
								
									f88e6a042a
								
							
						
					
					
						commit
						0e3d3ad29d
					
				
							
								
								
									
										41
									
								
								bn_mp_get_long_long.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								bn_mp_get_long_long.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,41 @@ | ||||
| #include <tommath.h> | ||||
| #ifdef BN_MP_GET_LONG_LONG_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. | ||||
|  * | ||||
|  * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
 | ||||
|  */ | ||||
| 
 | ||||
| /* get the lower unsigned long long of an mp_int, platform dependent */ | ||||
| unsigned long long mp_get_long_long (mp_int * a) | ||||
| { | ||||
|   int i; | ||||
|   unsigned long long res; | ||||
| 
 | ||||
|   if (a->used == 0) { | ||||
|      return 0; | ||||
|   } | ||||
| 
 | ||||
|   /* get number of digits of the lsb we have to read */ | ||||
|   i = MIN(a->used,(int)((sizeof(unsigned long long)*CHAR_BIT+DIGIT_BIT-1)/DIGIT_BIT))-1; | ||||
| 
 | ||||
|   /* get most significant digit of result */ | ||||
|   res = DIGIT(a,i); | ||||
| 
 | ||||
| #if DIGIT_BIT < 64 | ||||
|   while (--i >= 0) { | ||||
|     res = (res << DIGIT_BIT) | DIGIT(a,i); | ||||
|   } | ||||
| #endif | ||||
|   return res; | ||||
| } | ||||
| #endif | ||||
							
								
								
									
										24
									
								
								bn_mp_set_long_long.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								bn_mp_set_long_long.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,24 @@ | ||||
| #include <tommath.h> | ||||
| #ifdef BN_MP_SET_LONG_LONG_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. | ||||
|  * | ||||
|  * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
 | ||||
|  */ | ||||
| 
 | ||||
| /* set a platform dependent unsigned long long int */ | ||||
| MP_SET_XLONG(mp_set_long_long, unsigned long long) | ||||
| #endif | ||||
| 
 | ||||
| /* $Source$ */ | ||||
| /* $Revision$ */ | ||||
| /* $Date$ */ | ||||
| @ -245,12 +245,18 @@ int mp_set_int(mp_int *a, unsigned long b); | ||||
| /* set a platform dependent unsigned long value */ | ||||
| int mp_set_long(mp_int *a, unsigned long b); | ||||
| 
 | ||||
| /* set a platform dependent unsigned long long value */ | ||||
| int mp_set_long_long(mp_int *a, unsigned long long b); | ||||
| 
 | ||||
| /* get a 32-bit value */ | ||||
| unsigned long mp_get_int(mp_int * a); | ||||
| 
 | ||||
| /* get a platform dependent unsigned long value */ | ||||
| unsigned long mp_get_long(mp_int * a); | ||||
| 
 | ||||
| /* get a platform dependent unsigned long long value */ | ||||
| unsigned long long mp_get_long_long(mp_int * a); | ||||
| 
 | ||||
| /* initialize and set a digit */ | ||||
| int mp_init_set (mp_int * a, mp_digit b); | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user