@ -8,6 +8,7 @@
# include "uint256.h"
# include "uint256.h"
# include "arith_uint256.h"
# include "arith_uint256.h"
# include "version.h"
# include "version.h"
# include "random.h"
# include <vector>
# include <vector>
@ -21,8 +22,8 @@ class CPartialMerkleTreeTester : public CPartialMerkleTree
public :
public :
// flip one bit in one of the hashes - this should break the authentication
// flip one bit in one of the hashes - this should break the authentication
void Damage ( ) {
void Damage ( ) {
unsigned int n = rand ( ) % vHash . size ( ) ;
unsigned int n = insecure_ rand( ) % vHash . size ( ) ;
int bit = rand ( ) % 256 ;
int bit = insecure_ rand( ) % 256 ;
* ( vHash [ n ] . begin ( ) + ( bit > > 3 ) ) ^ = 1 < < ( bit & 7 ) ;
* ( vHash [ n ] . begin ( ) + ( bit > > 3 ) ) ^ = 1 < < ( bit & 7 ) ;
}
}
} ;
} ;
@ -31,6 +32,7 @@ BOOST_AUTO_TEST_SUITE(pmt_tests)
BOOST_AUTO_TEST_CASE ( pmt_test1 )
BOOST_AUTO_TEST_CASE ( pmt_test1 )
{
{
seed_insecure_rand ( false ) ;
static const unsigned int nTxCounts [ ] = { 1 , 4 , 7 , 17 , 56 , 100 , 127 , 256 , 312 , 513 , 1000 , 4095 } ;
static const unsigned int nTxCounts [ ] = { 1 , 4 , 7 , 17 , 56 , 100 , 127 , 256 , 312 , 513 , 1000 , 4095 } ;
for ( int n = 0 ; n < 12 ; n + + ) {
for ( int n = 0 ; n < 12 ; n + + ) {
@ -40,7 +42,7 @@ BOOST_AUTO_TEST_CASE(pmt_test1)
CBlock block ;
CBlock block ;
for ( unsigned int j = 0 ; j < nTx ; j + + ) {
for ( unsigned int j = 0 ; j < nTx ; j + + ) {
CMutableTransaction tx ;
CMutableTransaction tx ;
tx . nLockTime = rand ( ) ; // actual transaction data doesn't matter; just make the nLockTime's unique
tx . nLockTime = j ; // actual transaction data doesn't matter; just make the nLockTime's unique
block . vtx . push_back ( CTransaction ( tx ) ) ;
block . vtx . push_back ( CTransaction ( tx ) ) ;
}
}
@ -61,7 +63,7 @@ BOOST_AUTO_TEST_CASE(pmt_test1)
std : : vector < bool > vMatch ( nTx , false ) ;
std : : vector < bool > vMatch ( nTx , false ) ;
std : : vector < uint256 > vMatchTxid1 ;
std : : vector < uint256 > vMatchTxid1 ;
for ( unsigned int j = 0 ; j < nTx ; j + + ) {
for ( unsigned int j = 0 ; j < nTx ; j + + ) {
bool fInclude = ( rand ( ) & ( ( 1 < < ( att / 2 ) ) - 1 ) ) = = 0 ;
bool fInclude = ( insecure_ rand( ) & ( ( 1 < < ( att / 2 ) ) - 1 ) ) = = 0 ;
vMatch [ j ] = fInclude ;
vMatch [ j ] = fInclude ;
if ( fInclude )
if ( fInclude )
vMatchTxid1 . push_back ( vTxid [ j ] ) ;
vMatchTxid1 . push_back ( vTxid [ j ] ) ;