func (t *HashTest) SumDoesntAffectState() { // Grab a test case. cases := aes_testing.CmacCases() AssertGt(len(cases), 10) c := cases[10] // Create a hash and feed it some of the test case's data. h, err := cmac.New(c.Key) AssertEq(nil, err) AssertGt(len(c.Msg), 5) _, err = h.Write(c.Msg[0:5]) AssertEq(nil, err) // Call Sum. AssertEq(16, len(h.Sum([]byte{}))) // Feed the rest of the data and call Sum again. We should get the correct // result. _, err = h.Write(c.Msg[5:]) AssertEq(nil, err) ExpectThat(h.Sum([]byte{}), DeepEquals(c.Mac)) // Calling repeatedly should also work. ExpectThat(h.Sum([]byte{}), DeepEquals(c.Mac)) ExpectThat(h.Sum([]byte{}), DeepEquals(c.Mac)) ExpectThat(h.Sum([]byte{}), DeepEquals(c.Mac)) }
func (t *HashTest) GeneratedTestCases() { cases := aes_testing.CmacCases() AssertGe(len(cases), 100) for i, c := range cases { mac := runCmac(c.Key, c.Msg) ExpectThat(mac, DeepEquals(c.Mac), "Test case %d: %v", i, c) } }
func (t *HashTest) SumAppendsToSlice() { // Grab a test case. cases := aes_testing.CmacCases() AssertGt(len(cases), 10) c := cases[10] // Create a hash and feed it the test case's data. h, err := cmac.New(c.Key) AssertEq(nil, err) _, err = h.Write(c.Msg) AssertEq(nil, err) // Ask it to append to a non-empty slice. prefix := []byte{0xde, 0xad, 0xbe, 0xef} mac := h.Sum(prefix) AssertEq(20, len(mac)) ExpectThat(mac[0:4], DeepEquals(prefix)) ExpectThat(mac[4:], DeepEquals(c.Mac)) }
func (t *HashTest) Reset() { // Grab a test case. cases := aes_testing.CmacCases() AssertGt(len(cases), 10) c := cases[10] // Create a hash and feed it some data, then reset it. h, err := cmac.New(c.Key) AssertEq(nil, err) _, err = h.Write([]byte{0xde, 0xad}) AssertEq(nil, err) h.Reset() // Feed the hash the test case's data and make sure the result is correct. _, err = h.Write(c.Msg) AssertEq(nil, err) ExpectThat(h.Sum([]byte{}), DeepEquals(c.Mac)) }