mirror of https://github.com/ginuerzh/gost
8 changed files with 111 additions and 24 deletions
@ -0,0 +1,71 @@ |
|||
// +build ignore
|
|||
|
|||
package crypto |
|||
|
|||
import ( |
|||
"crypto/rand" |
|||
|
|||
. "github.com/onsi/ginkgo" |
|||
. "github.com/onsi/gomega" |
|||
) |
|||
|
|||
var _ = Describe("Chacha20poly1305", func() { |
|||
var ( |
|||
alice, bob AEAD |
|||
keyAlice, keyBob, ivAlice, ivBob []byte |
|||
) |
|||
|
|||
BeforeEach(func() { |
|||
keyAlice = make([]byte, 32) |
|||
keyBob = make([]byte, 32) |
|||
ivAlice = make([]byte, 4) |
|||
ivBob = make([]byte, 4) |
|||
rand.Reader.Read(keyAlice) |
|||
rand.Reader.Read(keyBob) |
|||
rand.Reader.Read(ivAlice) |
|||
rand.Reader.Read(ivBob) |
|||
var err error |
|||
alice, err = NewAEADChacha20Poly1305(keyBob, keyAlice, ivBob, ivAlice) |
|||
Expect(err).ToNot(HaveOccurred()) |
|||
bob, err = NewAEADChacha20Poly1305(keyAlice, keyBob, ivAlice, ivBob) |
|||
Expect(err).ToNot(HaveOccurred()) |
|||
}) |
|||
|
|||
It("seals and opens", func() { |
|||
b := alice.Seal(nil, []byte("foobar"), 42, []byte("aad")) |
|||
text, err := bob.Open(nil, b, 42, []byte("aad")) |
|||
Expect(err).ToNot(HaveOccurred()) |
|||
Expect(text).To(Equal([]byte("foobar"))) |
|||
}) |
|||
|
|||
It("seals and opens reverse", func() { |
|||
b := bob.Seal(nil, []byte("foobar"), 42, []byte("aad")) |
|||
text, err := alice.Open(nil, b, 42, []byte("aad")) |
|||
Expect(err).ToNot(HaveOccurred()) |
|||
Expect(text).To(Equal([]byte("foobar"))) |
|||
}) |
|||
|
|||
It("has the proper length", func() { |
|||
b := bob.Seal(nil, []byte("foobar"), 42, []byte("aad")) |
|||
Expect(b).To(HaveLen(6 + 12)) |
|||
}) |
|||
|
|||
It("fails with wrong aad", func() { |
|||
b := alice.Seal(nil, []byte("foobar"), 42, []byte("aad")) |
|||
_, err := bob.Open(nil, b, 42, []byte("aad2")) |
|||
Expect(err).To(HaveOccurred()) |
|||
}) |
|||
|
|||
It("rejects wrong key and iv sizes", func() { |
|||
var err error |
|||
e := "chacha20poly1305: expected 32-byte keys and 4-byte IVs" |
|||
_, err = NewAEADChacha20Poly1305(keyBob[1:], keyAlice, ivBob, ivAlice) |
|||
Expect(err).To(MatchError(e)) |
|||
_, err = NewAEADChacha20Poly1305(keyBob, keyAlice[1:], ivBob, ivAlice) |
|||
Expect(err).To(MatchError(e)) |
|||
_, err = NewAEADChacha20Poly1305(keyBob, keyAlice, ivBob[1:], ivAlice) |
|||
Expect(err).To(MatchError(e)) |
|||
_, err = NewAEADChacha20Poly1305(keyBob, keyAlice, ivBob, ivAlice[1:]) |
|||
Expect(err).To(MatchError(e)) |
|||
}) |
|||
}) |
|||
@ -0,0 +1,8 @@ |
|||
// Copyright 2012 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.
|
|||
|
|||
// This code was translated into a form compatible with 6a from the public
|
|||
// domain sources in SUPERCOP: http://bench.cr.yp.to/supercop.html
|
|||
|
|||
#define REDMASK51 0x0007FFFFFFFFFFFF |
|||
Loading…
Reference in new issue