github.com/deroproject/derosuite@v2.1.6-1.0.20200307070847-0f2e589c7a2b+incompatible/cryptonight/cryptonight_test.go (about)

     1  // Copyright 2017-2018 DERO Project. All rights reserved.
     2  // Use of this source code in any form is governed by RESEARCH license.
     3  // license can be found in the LICENSE file.
     4  // GPG: 0F39 E425 8C65 3947 702A  8234 08B2 0360 A03A 9DE8
     5  //
     6  //
     7  // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
     8  // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
     9  // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
    10  // THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
    11  // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
    12  // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    13  // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
    14  // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
    15  // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    16  
    17  package cryptonight
    18  
    19  import "testing"
    20  import "encoding/hex"
    21  
    22  func Test_Cryptonight_Hash(t *testing.T) {
    23  
    24  	// there are 4 sub algorithms, basically blake , groestl , jh , skein
    25  	// other things are common, these tect vectors have been manually pulled from c codes
    26  
    27  	blake_hash := cryptonight([]byte("This is a testi" + "\x01"))
    28  
    29  	if hex.EncodeToString(blake_hash) != "7958d1afe0c46670642c0341f92e89bf6de6a2573ef89742237162e66ea4a121" {
    30  		t.Error("Cryptonight blake_hash testing Failed\n")
    31  		return
    32  
    33  	}
    34  
    35  	// this is from cryptonote whitepaper
    36  	groestl_hash := cryptonight([]byte("This is a test" + "\x01"))
    37  
    38  	if hex.EncodeToString(groestl_hash) != "a084f01d1437a09c6985401b60d43554ae105802c5f5d8a9b3253649c0be6605" {
    39  		t.Error("Cryptonight testing Failed\n")
    40  		return
    41  
    42  	}
    43  
    44  	jh_hash := cryptonight([]byte("This is a test2" + "\x01"))
    45  
    46  	if hex.EncodeToString(jh_hash) != "6f93b51852d1a47277c62e720bf0e10bf90e92123847be246f67e3fd2639f4b4" {
    47  		t.Error("Cryptonight testing Failed\n")
    48  		return
    49  
    50  	}
    51  
    52  	skein_hash := cryptonight([]byte("This is a testw" + "\x01"))
    53  
    54  	if hex.EncodeToString(skein_hash) != "3174ef437b24fd30e81d307d9b7d02ba21eb6f627cafc9d8134ea63adc4985b0" {
    55  		t.Error("Cryptonight testing Failed\n")
    56  		return
    57  
    58  	}
    59  
    60  }
    61  
    62  // from fib_test.go
    63  func BenchmarkCryptonight(b *testing.B) {
    64  	// run the Fib function b.N times
    65  	for n := 0; n < b.N; n++ {
    66  		cryptonight([]byte("This is a testi" + "\x01"))
    67  	}
    68  }