Deps update

This commit is contained in:
Frank Denis 2018-06-26 15:40:08 +02:00
parent 97f604670c
commit 02888adff3
9 changed files with 161 additions and 12 deletions

7
Gopkg.lock generated
View File

@ -143,12 +143,13 @@
"curve25519", "curve25519",
"ed25519", "ed25519",
"ed25519/internal/edwards25519", "ed25519/internal/edwards25519",
"internal/subtle",
"nacl/box", "nacl/box",
"nacl/secretbox", "nacl/secretbox",
"poly1305", "poly1305",
"salsa20/salsa" "salsa20/salsa"
] ]
revision = "8ac0e0d97ce45cd83d1d7243c060cb8461dda5e9" revision = "a49355c7e3f8fe157a85be2f77e6e269a0f89602"
[[projects]] [[projects]]
branch = "master" branch = "master"
@ -166,7 +167,7 @@
"ipv6", "ipv6",
"proxy" "proxy"
] ]
revision = "db08ff08e8622530d9ed3a0e8ac279f6d4c02196" revision = "afe8f62b1d6bbd81f31868121a50b06d8188e1f9"
[[projects]] [[projects]]
branch = "master" branch = "master"
@ -179,7 +180,7 @@
"windows/svc/eventlog", "windows/svc/eventlog",
"windows/svc/mgr" "windows/svc/mgr"
] ]
revision = "8ee9f3e146b708d082f4bab861e5759d1edf8c00" revision = "a200a19cb90b19de298170992778b1fda7217bd6"
[[projects]] [[projects]]
name = "golang.org/x/text" name = "golang.org/x/text"

32
vendor/golang.org/x/crypto/internal/subtle/aliasing.go generated vendored Normal file
View File

@ -0,0 +1,32 @@
// Copyright 2018 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.
// +build !appengine
// Package subtle implements functions that are often useful in cryptographic
// code but require careful thought to use correctly.
package subtle // import "golang.org/x/crypto/internal/subtle"
import "unsafe"
// AnyOverlap reports whether x and y share memory at any (not necessarily
// corresponding) index. The memory beyond the slice length is ignored.
func AnyOverlap(x, y []byte) bool {
return len(x) > 0 && len(y) > 0 &&
uintptr(unsafe.Pointer(&x[0])) <= uintptr(unsafe.Pointer(&y[len(y)-1])) &&
uintptr(unsafe.Pointer(&y[0])) <= uintptr(unsafe.Pointer(&x[len(x)-1]))
}
// InexactOverlap reports whether x and y share memory at any non-corresponding
// index. The memory beyond the slice length is ignored. Note that x and y can
// have different lengths and still not have any inexact overlap.
//
// InexactOverlap can be used to implement the requirements of the crypto/cipher
// AEAD, Block, BlockMode and Stream interfaces.
func InexactOverlap(x, y []byte) bool {
if len(x) == 0 || len(y) == 0 || &x[0] == &y[0] {
return false
}
return AnyOverlap(x, y)
}

View File

@ -0,0 +1,35 @@
// Copyright 2018 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.
// +build appengine
// Package subtle implements functions that are often useful in cryptographic
// code but require careful thought to use correctly.
package subtle // import "golang.org/x/crypto/internal/subtle"
// This is the Google App Engine standard variant based on reflect
// because the unsafe package and cgo are disallowed.
import "reflect"
// AnyOverlap reports whether x and y share memory at any (not necessarily
// corresponding) index. The memory beyond the slice length is ignored.
func AnyOverlap(x, y []byte) bool {
return len(x) > 0 && len(y) > 0 &&
reflect.ValueOf(&x[0]).Pointer() <= reflect.ValueOf(&y[len(y)-1]).Pointer() &&
reflect.ValueOf(&y[0]).Pointer() <= reflect.ValueOf(&x[len(x)-1]).Pointer()
}
// InexactOverlap reports whether x and y share memory at any non-corresponding
// index. The memory beyond the slice length is ignored. Note that x and y can
// have different lengths and still not have any inexact overlap.
//
// InexactOverlap can be used to implement the requirements of the crypto/cipher
// AEAD, Block, BlockMode and Stream interfaces.
func InexactOverlap(x, y []byte) bool {
if len(x) == 0 || len(y) == 0 || &x[0] == &y[0] {
return false
}
return AnyOverlap(x, y)
}

View File

@ -0,0 +1,50 @@
// Copyright 2018 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 subtle_test
import (
"testing"
"golang.org/x/crypto/internal/subtle"
)
var a, b [100]byte
var aliasingTests = []struct {
x, y []byte
anyOverlap, inexactOverlap bool
}{
{a[:], b[:], false, false},
{a[:], b[:0], false, false},
{a[:], b[:50], false, false},
{a[40:50], a[50:60], false, false},
{a[40:50], a[60:70], false, false},
{a[:51], a[50:], true, true},
{a[:], a[:], true, false},
{a[:50], a[:60], true, false},
{a[:], nil, false, false},
{nil, nil, false, false},
{a[:], a[:0], false, false},
{a[:10], a[:10:20], true, false},
{a[:10], a[5:10:20], true, true},
}
func testAliasing(t *testing.T, i int, x, y []byte, anyOverlap, inexactOverlap bool) {
any := subtle.AnyOverlap(x, y)
if any != anyOverlap {
t.Errorf("%d: wrong AnyOverlap result, expected %v, got %v", i, anyOverlap, any)
}
inexact := subtle.InexactOverlap(x, y)
if inexact != inexactOverlap {
t.Errorf("%d: wrong InexactOverlap result, expected %v, got %v", i, inexactOverlap, any)
}
}
func TestAliasing(t *testing.T) {
for i, tt := range aliasingTests {
testAliasing(t, i, tt.x, tt.y, tt.anyOverlap, tt.inexactOverlap)
testAliasing(t, i, tt.y, tt.x, tt.anyOverlap, tt.inexactOverlap)
}
}

View File

@ -35,6 +35,7 @@ This package is interoperable with NaCl: https://nacl.cr.yp.to/secretbox.html.
package secretbox // import "golang.org/x/crypto/nacl/secretbox" package secretbox // import "golang.org/x/crypto/nacl/secretbox"
import ( import (
"golang.org/x/crypto/internal/subtle"
"golang.org/x/crypto/poly1305" "golang.org/x/crypto/poly1305"
"golang.org/x/crypto/salsa20/salsa" "golang.org/x/crypto/salsa20/salsa"
) )
@ -87,6 +88,9 @@ func Seal(out, message []byte, nonce *[24]byte, key *[32]byte) []byte {
copy(poly1305Key[:], firstBlock[:]) copy(poly1305Key[:], firstBlock[:])
ret, out := sliceForAppend(out, len(message)+poly1305.TagSize) ret, out := sliceForAppend(out, len(message)+poly1305.TagSize)
if subtle.AnyOverlap(out, message) {
panic("nacl: invalid buffer overlap")
}
// We XOR up to 32 bytes of message with the keystream generated from // We XOR up to 32 bytes of message with the keystream generated from
// the first block. // the first block.
@ -118,7 +122,7 @@ func Seal(out, message []byte, nonce *[24]byte, key *[32]byte) []byte {
// Open authenticates and decrypts a box produced by Seal and appends the // Open authenticates and decrypts a box produced by Seal and appends the
// message to out, which must not overlap box. The output will be Overhead // message to out, which must not overlap box. The output will be Overhead
// bytes smaller than box. // bytes smaller than box.
func Open(out []byte, box []byte, nonce *[24]byte, key *[32]byte) ([]byte, bool) { func Open(out, box []byte, nonce *[24]byte, key *[32]byte) ([]byte, bool) {
if len(box) < Overhead { if len(box) < Overhead {
return nil, false return nil, false
} }
@ -143,6 +147,9 @@ func Open(out []byte, box []byte, nonce *[24]byte, key *[32]byte) ([]byte, bool)
} }
ret, out := sliceForAppend(out, len(box)-Overhead) ret, out := sliceForAppend(out, len(box)-Overhead)
if subtle.AnyOverlap(out, box) {
panic("nacl: invalid buffer overlap")
}
// We XOR up to 32 bytes of box with the keystream generated from // We XOR up to 32 bytes of box with the keystream generated from
// the first block. // the first block.

View File

@ -24,6 +24,7 @@ package salsa20 // import "golang.org/x/crypto/salsa20"
// TODO(agl): implement XORKeyStream12 and XORKeyStream8 - the reduced round variants of Salsa20. // TODO(agl): implement XORKeyStream12 and XORKeyStream8 - the reduced round variants of Salsa20.
import ( import (
"golang.org/x/crypto/internal/subtle"
"golang.org/x/crypto/salsa20/salsa" "golang.org/x/crypto/salsa20/salsa"
) )
@ -34,6 +35,9 @@ func XORKeyStream(out, in []byte, nonce []byte, key *[32]byte) {
if len(out) < len(in) { if len(out) < len(in) {
panic("salsa20: output smaller than input") panic("salsa20: output smaller than input")
} }
if subtle.InexactOverlap(out[:len(in)], in) {
panic("salsa20: invalid buffer overlap")
}
var subNonce [16]byte var subNonce [16]byte

View File

@ -1,4 +1,4 @@
// MACHINE GENERATED BY 'go generate' COMMAND; DO NOT EDIT // Code generated by 'go generate'; DO NOT EDIT.
package registry package registry

View File

@ -312,6 +312,14 @@ var (
OID_SGC_NETSCAPE = []byte("2.16.840.1.113730.4.1\x00") OID_SGC_NETSCAPE = []byte("2.16.840.1.113730.4.1\x00")
) )
// Pointer represents a pointer to an arbitrary Windows type.
//
// Pointer-typed fields may point to one of many different types. It's
// up to the caller to provide a pointer to the appropriate type, cast
// to Pointer. The caller must obey the unsafe.Pointer rules while
// doing so.
type Pointer *struct{}
// Invented values to support what package os expects. // Invented values to support what package os expects.
type Timeval struct { type Timeval struct {
Sec int32 Sec int32
@ -880,11 +888,15 @@ type MibIfRow struct {
Descr [MAXLEN_IFDESCR]byte Descr [MAXLEN_IFDESCR]byte
} }
type CertInfo struct {
// Not implemented
}
type CertContext struct { type CertContext struct {
EncodingType uint32 EncodingType uint32
EncodedCert *byte EncodedCert *byte
Length uint32 Length uint32
CertInfo uintptr CertInfo *CertInfo
Store Handle Store Handle
} }
@ -899,12 +911,16 @@ type CertChainContext struct {
RevocationFreshnessTime uint32 RevocationFreshnessTime uint32
} }
type CertTrustListInfo struct {
// Not implemented
}
type CertSimpleChain struct { type CertSimpleChain struct {
Size uint32 Size uint32
TrustStatus CertTrustStatus TrustStatus CertTrustStatus
NumElements uint32 NumElements uint32
Elements **CertChainElement Elements **CertChainElement
TrustListInfo uintptr TrustListInfo *CertTrustListInfo
HasRevocationFreshnessTime uint32 HasRevocationFreshnessTime uint32
RevocationFreshnessTime uint32 RevocationFreshnessTime uint32
} }
@ -919,14 +935,18 @@ type CertChainElement struct {
ExtendedErrorInfo *uint16 ExtendedErrorInfo *uint16
} }
type CertRevocationCrlInfo struct {
// Not implemented
}
type CertRevocationInfo struct { type CertRevocationInfo struct {
Size uint32 Size uint32
RevocationResult uint32 RevocationResult uint32
RevocationOid *byte RevocationOid *byte
OidSpecificInfo uintptr OidSpecificInfo Pointer
HasFreshnessTime uint32 HasFreshnessTime uint32
FreshnessTime uint32 FreshnessTime uint32
CrlInfo uintptr // *CertRevocationCrlInfo CrlInfo *CertRevocationCrlInfo
} }
type CertTrustStatus struct { type CertTrustStatus struct {
@ -957,7 +977,7 @@ type CertChainPara struct {
type CertChainPolicyPara struct { type CertChainPolicyPara struct {
Size uint32 Size uint32
Flags uint32 Flags uint32
ExtraPolicyPara uintptr ExtraPolicyPara Pointer
} }
type SSLExtraCertChainPolicyPara struct { type SSLExtraCertChainPolicyPara struct {
@ -972,7 +992,7 @@ type CertChainPolicyStatus struct {
Error uint32 Error uint32
ChainIndex uint32 ChainIndex uint32
ElementIndex uint32 ElementIndex uint32
ExtraPolicyStatus uintptr ExtraPolicyStatus Pointer
} }
const ( const (

View File

@ -1,4 +1,4 @@
// MACHINE GENERATED BY 'go generate' COMMAND; DO NOT EDIT // Code generated by 'go generate'; DO NOT EDIT.
package windows package windows