diff --git a/cmd/gost/vendor/github.com/lucas-clemente/quic-go/crypto/chacha20poly1305_aead_test.go b/cmd/gost/vendor/github.com/lucas-clemente/quic-go/crypto/chacha20poly1305_aead_test.go new file mode 100644 index 0000000..9d5197b --- /dev/null +++ b/cmd/gost/vendor/github.com/lucas-clemente/quic-go/crypto/chacha20poly1305_aead_test.go @@ -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)) + }) +}) diff --git a/cmd/gost/vendor/golang.org/x/crypto/curve25519/const_amd64.h b/cmd/gost/vendor/golang.org/x/crypto/curve25519/const_amd64.h new file mode 100644 index 0000000..80ad222 --- /dev/null +++ b/cmd/gost/vendor/golang.org/x/crypto/curve25519/const_amd64.h @@ -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 diff --git a/cmd/gost/vendor/golang.org/x/crypto/curve25519/const_amd64.s b/cmd/gost/vendor/golang.org/x/crypto/curve25519/const_amd64.s index 797f9b0..0ad5398 100644 --- a/cmd/gost/vendor/golang.org/x/crypto/curve25519/const_amd64.s +++ b/cmd/gost/vendor/golang.org/x/crypto/curve25519/const_amd64.s @@ -7,8 +7,8 @@ // +build amd64,!gccgo,!appengine -DATA ·REDMASK51(SB)/8, $0x0007FFFFFFFFFFFF -GLOBL ·REDMASK51(SB), 8, $8 +// These constants cannot be encoded in non-MOVQ immediates. +// We access them directly from memory instead. DATA ·_121666_213(SB)/8, $996687872 GLOBL ·_121666_213(SB), 8, $8 diff --git a/cmd/gost/vendor/golang.org/x/crypto/curve25519/freeze_amd64.s b/cmd/gost/vendor/golang.org/x/crypto/curve25519/freeze_amd64.s index 932800b..536479b 100644 --- a/cmd/gost/vendor/golang.org/x/crypto/curve25519/freeze_amd64.s +++ b/cmd/gost/vendor/golang.org/x/crypto/curve25519/freeze_amd64.s @@ -7,6 +7,8 @@ // +build amd64,!gccgo,!appengine +#include "const_amd64.h" + // func freeze(inout *[5]uint64) TEXT ·freeze(SB),7,$0-8 MOVQ inout+0(FP), DI @@ -16,7 +18,7 @@ TEXT ·freeze(SB),7,$0-8 MOVQ 16(DI),CX MOVQ 24(DI),R8 MOVQ 32(DI),R9 - MOVQ ·REDMASK51(SB),AX + MOVQ $REDMASK51,AX MOVQ AX,R10 SUBQ $18,R10 MOVQ $3,R11 diff --git a/cmd/gost/vendor/golang.org/x/crypto/curve25519/ladderstep_amd64.s b/cmd/gost/vendor/golang.org/x/crypto/curve25519/ladderstep_amd64.s index ee7b36c..7074e5c 100644 --- a/cmd/gost/vendor/golang.org/x/crypto/curve25519/ladderstep_amd64.s +++ b/cmd/gost/vendor/golang.org/x/crypto/curve25519/ladderstep_amd64.s @@ -7,6 +7,8 @@ // +build amd64,!gccgo,!appengine +#include "const_amd64.h" + // func ladderstep(inout *[5][5]uint64) TEXT ·ladderstep(SB),0,$296-8 MOVQ inout+0(FP),DI @@ -118,7 +120,7 @@ TEXT ·ladderstep(SB),0,$296-8 MULQ 72(SP) ADDQ AX,R12 ADCQ DX,R13 - MOVQ ·REDMASK51(SB),DX + MOVQ $REDMASK51,DX SHLQ $13,CX:SI ANDQ DX,SI SHLQ $13,R9:R8 @@ -233,7 +235,7 @@ TEXT ·ladderstep(SB),0,$296-8 MULQ 32(SP) ADDQ AX,R12 ADCQ DX,R13 - MOVQ ·REDMASK51(SB),DX + MOVQ $REDMASK51,DX SHLQ $13,CX:SI ANDQ DX,SI SHLQ $13,R9:R8 @@ -438,7 +440,7 @@ TEXT ·ladderstep(SB),0,$296-8 MULQ 72(SP) ADDQ AX,R12 ADCQ DX,R13 - MOVQ ·REDMASK51(SB),DX + MOVQ $REDMASK51,DX SHLQ $13,CX:SI ANDQ DX,SI SHLQ $13,R9:R8 @@ -588,7 +590,7 @@ TEXT ·ladderstep(SB),0,$296-8 MULQ 32(SP) ADDQ AX,R12 ADCQ DX,R13 - MOVQ ·REDMASK51(SB),DX + MOVQ $REDMASK51,DX SHLQ $13,CX:SI ANDQ DX,SI SHLQ $13,R9:R8 @@ -728,7 +730,7 @@ TEXT ·ladderstep(SB),0,$296-8 MULQ 152(DI) ADDQ AX,R12 ADCQ DX,R13 - MOVQ ·REDMASK51(SB),DX + MOVQ $REDMASK51,DX SHLQ $13,CX:SI ANDQ DX,SI SHLQ $13,R9:R8 @@ -843,7 +845,7 @@ TEXT ·ladderstep(SB),0,$296-8 MULQ 192(DI) ADDQ AX,R12 ADCQ DX,R13 - MOVQ ·REDMASK51(SB),DX + MOVQ $REDMASK51,DX SHLQ $13,CX:SI ANDQ DX,SI SHLQ $13,R9:R8 @@ -993,7 +995,7 @@ TEXT ·ladderstep(SB),0,$296-8 MULQ 32(DI) ADDQ AX,R12 ADCQ DX,R13 - MOVQ ·REDMASK51(SB),DX + MOVQ $REDMASK51,DX SHLQ $13,CX:SI ANDQ DX,SI SHLQ $13,R9:R8 @@ -1143,7 +1145,7 @@ TEXT ·ladderstep(SB),0,$296-8 MULQ 112(SP) ADDQ AX,R12 ADCQ DX,R13 - MOVQ ·REDMASK51(SB),DX + MOVQ $REDMASK51,DX SHLQ $13,CX:SI ANDQ DX,SI SHLQ $13,R9:R8 @@ -1329,7 +1331,7 @@ TEXT ·ladderstep(SB),0,$296-8 MULQ 192(SP) ADDQ AX,R12 ADCQ DX,R13 - MOVQ ·REDMASK51(SB),DX + MOVQ $REDMASK51,DX SHLQ $13,CX:SI ANDQ DX,SI SHLQ $13,R9:R8 diff --git a/cmd/gost/vendor/golang.org/x/crypto/curve25519/mul_amd64.s b/cmd/gost/vendor/golang.org/x/crypto/curve25519/mul_amd64.s index 33ce57d..b162e65 100644 --- a/cmd/gost/vendor/golang.org/x/crypto/curve25519/mul_amd64.s +++ b/cmd/gost/vendor/golang.org/x/crypto/curve25519/mul_amd64.s @@ -7,6 +7,8 @@ // +build amd64,!gccgo,!appengine +#include "const_amd64.h" + // func mul(dest, a, b *[5]uint64) TEXT ·mul(SB),0,$16-24 MOVQ dest+0(FP), DI @@ -121,7 +123,7 @@ TEXT ·mul(SB),0,$16-24 MULQ 32(CX) ADDQ AX,R14 ADCQ DX,R15 - MOVQ ·REDMASK51(SB),SI + MOVQ $REDMASK51,SI SHLQ $13,R9:R8 ANDQ SI,R8 SHLQ $13,R11:R10 diff --git a/cmd/gost/vendor/golang.org/x/crypto/curve25519/square_amd64.s b/cmd/gost/vendor/golang.org/x/crypto/curve25519/square_amd64.s index 3a92804..4e864a8 100644 --- a/cmd/gost/vendor/golang.org/x/crypto/curve25519/square_amd64.s +++ b/cmd/gost/vendor/golang.org/x/crypto/curve25519/square_amd64.s @@ -7,6 +7,8 @@ // +build amd64,!gccgo,!appengine +#include "const_amd64.h" + // func square(out, in *[5]uint64) TEXT ·square(SB),7,$0-16 MOVQ out+0(FP), DI @@ -84,7 +86,7 @@ TEXT ·square(SB),7,$0-16 MULQ 32(SI) ADDQ AX,R13 ADCQ DX,R14 - MOVQ ·REDMASK51(SB),SI + MOVQ $REDMASK51,SI SHLQ $13,R8:CX ANDQ SI,CX SHLQ $13,R10:R9 diff --git a/cmd/gost/vendor/vendor.json b/cmd/gost/vendor/vendor.json index 57223ca..b2c4b4d 100644 --- a/cmd/gost/vendor/vendor.json +++ b/cmd/gost/vendor/vendor.json @@ -23,8 +23,8 @@ { "checksumSHA1": "/unEypznQ0qT7TWxnA4KLOgOXwo=", "path": "github.com/ginuerzh/gost", - "revision": "ab87ca05fa5553dab59aa1623624ddefa66b408b", - "revisionTime": "2017-02-11T10:34:35Z" + "revision": "1e709ceababe54dc0254683304147359b9d59146", + "revisionTime": "2017-02-11T12:45:40Z" }, { "checksumSHA1": "+XIOnTW0rv8Kr/amkXgMraNeUr4=", @@ -53,8 +53,8 @@ { "checksumSHA1": "/EgCTbjJkJh2yi9lqEgzmau8O4I=", "path": "github.com/klauspost/compress/snappy", - "revision": "1e658061989f47658e69492cf63a839630a25eba", - "revisionTime": "2016-10-20T15:14:30Z" + "revision": "461e8fd8397ae84a23f56e385801e4feda2048ce", + "revisionTime": "2017-01-14T13:08:32Z" }, { "checksumSHA1": "iKPMvbAueGfdyHcWCgzwKzm8WVo=", @@ -105,7 +105,7 @@ "revisionTime": "2017-02-04T02:12:35Z" }, { - "checksumSHA1": "XUdlanAUfQt+UjszRgtMeziyiG8=", + "checksumSHA1": "FvtYBMKar0eNDWauCofafpJ+z7w=", "path": "github.com/lucas-clemente/quic-go/crypto", "revision": "268841f0cc2962070a8bd662551b150acbee369b", "revisionTime": "2017-02-04T02:12:35Z" @@ -177,16 +177,16 @@ "revisionTime": "2016-10-21T22:59:10Z" }, { - "checksumSHA1": "dwOedwBJ1EIK9+S3t108Bx054Y8=", + "checksumSHA1": "C1KKOxFoW7/W/NFNpiXK+boguNo=", "path": "golang.org/x/crypto/curve25519", - "revision": "bed12803fa9663d7aa2c2346b0c634ad2dcd43b7", - "revisionTime": "2017-02-01T20:15:17Z" + "revision": "453249f01cfeb54c3d549ddb75ff152ca243f9d8", + "revisionTime": "2017-02-08T20:51:15Z" }, { "checksumSHA1": "4D8hxMIaSDEW5pCQk22Xj4DcDh4=", "path": "golang.org/x/crypto/hkdf", - "revision": "bed12803fa9663d7aa2c2346b0c634ad2dcd43b7", - "revisionTime": "2017-02-01T20:15:17Z" + "revision": "453249f01cfeb54c3d549ddb75ff152ca243f9d8", + "revisionTime": "2017-02-08T20:51:15Z" }, { "checksumSHA1": "1MGpGDQqnUoRpv7VEcQrXOBydXE=",