URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libgo/] [go/] [crypto/] [subtle/] [constant_time_test.go] - Rev 747
Compare with Previous | Blame | View Log
// Copyright 2009 The Go Authors. All rights reserved.// Use of this source code is governed by a BSD-style// license that can be found in the LICENSE file.package subtleimport ("testing""testing/quick")type TestConstantTimeCompareStruct struct {a, b []byteout int}var testConstantTimeCompareData = []TestConstantTimeCompareStruct{{[]byte{}, []byte{}, 1},{[]byte{0x11}, []byte{0x11}, 1},{[]byte{0x12}, []byte{0x11}, 0},}func TestConstantTimeCompare(t *testing.T) {for i, test := range testConstantTimeCompareData {if r := ConstantTimeCompare(test.a, test.b); r != test.out {t.Errorf("#%d bad result (got %x, want %x)", i, r, test.out)}}}type TestConstantTimeByteEqStruct struct {a, b uint8out int}var testConstandTimeByteEqData = []TestConstantTimeByteEqStruct{{0, 0, 1},{0, 1, 0},{1, 0, 0},{0xff, 0xff, 1},{0xff, 0xfe, 0},}func byteEq(a, b uint8) int {if a == b {return 1}return 0}func TestConstantTimeByteEq(t *testing.T) {for i, test := range testConstandTimeByteEqData {if r := ConstantTimeByteEq(test.a, test.b); r != test.out {t.Errorf("#%d bad result (got %x, want %x)", i, r, test.out)}}err := quick.CheckEqual(ConstantTimeByteEq, byteEq, nil)if err != nil {t.Error(err)}}func eq(a, b int32) int {if a == b {return 1}return 0}func TestConstantTimeEq(t *testing.T) {err := quick.CheckEqual(ConstantTimeEq, eq, nil)if err != nil {t.Error(err)}}func makeCopy(v int, x, y []byte) []byte {if len(x) > len(y) {x = x[0:len(y)]} else {y = y[0:len(x)]}if v == 1 {copy(x, y)}return x}func constantTimeCopyWrapper(v int, x, y []byte) []byte {if len(x) > len(y) {x = x[0:len(y)]} else {y = y[0:len(x)]}v &= 1ConstantTimeCopy(v, x, y)return x}func TestConstantTimeCopy(t *testing.T) {err := quick.CheckEqual(constantTimeCopyWrapper, makeCopy, nil)if err != nil {t.Error(err)}}
