mirror of https://github.com/ipxe/ipxe.git
[crypto] Add bigint_copy() as a convenient wrapper macro
Big integers may be efficiently copied using bigint_shrink() (which will always copy only the size of the destination integer), but this is potentially confusing to a reader of the code. Provide bigint_copy() as an alias for bigint_shrink() so that the intention of the calling code may be more obvious. Signed-off-by: Michael Brown <mcb30@ipxe.org>pull/1128/head
parent
26d3ef062b
commit
13e390d54e
|
@ -8,6 +8,8 @@
|
|||
|
||||
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
/**
|
||||
* Define a big-integer type
|
||||
*
|
||||
|
@ -176,6 +178,17 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
|
|||
(dest)->element, dest_size ); \
|
||||
} while ( 0 )
|
||||
|
||||
/**
|
||||
* Copy big integer
|
||||
*
|
||||
* @v source Source big integer
|
||||
* @v dest Destination big integer
|
||||
*/
|
||||
#define bigint_copy( source, dest ) do { \
|
||||
build_assert ( sizeof ( *(source) ) == sizeof ( *(dest) ) ); \
|
||||
bigint_shrink ( (source), (dest) ); \
|
||||
} while ( 0 )
|
||||
|
||||
/**
|
||||
* Multiply big integers
|
||||
*
|
||||
|
|
|
@ -149,6 +149,16 @@ void bigint_shrink_sample ( const bigint_element_t *source0,
|
|||
bigint_shrink ( source, dest );
|
||||
}
|
||||
|
||||
void bigint_copy_sample ( const bigint_element_t *source0,
|
||||
bigint_element_t *dest0, unsigned int size ) {
|
||||
const bigint_t ( size ) *source __attribute__ (( may_alias ))
|
||||
= ( ( const void * ) source0 );
|
||||
bigint_t ( size ) *dest __attribute__ (( may_alias ))
|
||||
= ( ( void * ) dest0 );
|
||||
|
||||
bigint_copy ( source, dest );
|
||||
}
|
||||
|
||||
void bigint_multiply_sample ( const bigint_element_t *multiplicand0,
|
||||
unsigned int multiplicand_size,
|
||||
const bigint_element_t *multiplier0,
|
||||
|
|
Loading…
Reference in New Issue