00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "ModIntRange.h"
00019 #include "CODEX_Exceptions/BignumExceptions.h"
00020
00021 using namespace CODEX_VSS;
00022
00023 ModIntRange::ModIntRange( const BIGNUM * modulus )
00024 {
00025 m_min = BN_new();
00026 if ( 0 == m_min )
00027 {
00028 throw CODEX_Exceptions::BignumNullException( __FILE__ , __LINE__ );
00029 }
00030 if ( ! BN_zero( m_min ) )
00031 {
00032 throw CODEX_Exceptions::BignumSetWordException( __FILE__ , __LINE__ );
00033 }
00034
00035 m_max = BN_new();
00036 if ( 0 == m_max )
00037 {
00038 throw CODEX_Exceptions::BignumNullException( __FILE__ , __LINE__ );
00039 }
00040 if ( ! BN_sub( m_max, modulus, BN_value_one() ) )
00041 {
00042 throw CODEX_Exceptions::BignumSubException( __FILE__ , __LINE__ );
00043 }
00044 }
00045
00046 ModIntRange::~ModIntRange()
00047 {
00048 if ( 0 != m_min ) BN_free( m_min );
00049 if ( 0 != m_max ) BN_free( m_max );
00050 }