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 }