mirror of
				https://gitea.com/Lydanne/buildx.git
				synced 2025-11-04 18:13:42 +08:00 
			
		
		
		
	vendor: update buildkit to master@d5c1d785b042
Signed-off-by: Justin Chadwell <me@jedevc.com>
This commit is contained in:
		
							
								
								
									
										99
									
								
								vendor/golang.org/x/crypto/curve25519/curve25519.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										99
									
								
								vendor/golang.org/x/crypto/curve25519/curve25519.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -5,71 +5,18 @@
 | 
			
		||||
// Package curve25519 provides an implementation of the X25519 function, which
 | 
			
		||||
// performs scalar multiplication on the elliptic curve known as Curve25519.
 | 
			
		||||
// See RFC 7748.
 | 
			
		||||
//
 | 
			
		||||
// Starting in Go 1.20, this package is a wrapper for the X25519 implementation
 | 
			
		||||
// in the crypto/ecdh package.
 | 
			
		||||
package curve25519 // import "golang.org/x/crypto/curve25519"
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"crypto/subtle"
 | 
			
		||||
	"errors"
 | 
			
		||||
	"strconv"
 | 
			
		||||
 | 
			
		||||
	"golang.org/x/crypto/curve25519/internal/field"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// ScalarMult sets dst to the product scalar * point.
 | 
			
		||||
//
 | 
			
		||||
// Deprecated: when provided a low-order point, ScalarMult will set dst to all
 | 
			
		||||
// zeroes, irrespective of the scalar. Instead, use the X25519 function, which
 | 
			
		||||
// will return an error.
 | 
			
		||||
func ScalarMult(dst, scalar, point *[32]byte) {
 | 
			
		||||
	var e [32]byte
 | 
			
		||||
 | 
			
		||||
	copy(e[:], scalar[:])
 | 
			
		||||
	e[0] &= 248
 | 
			
		||||
	e[31] &= 127
 | 
			
		||||
	e[31] |= 64
 | 
			
		||||
 | 
			
		||||
	var x1, x2, z2, x3, z3, tmp0, tmp1 field.Element
 | 
			
		||||
	x1.SetBytes(point[:])
 | 
			
		||||
	x2.One()
 | 
			
		||||
	x3.Set(&x1)
 | 
			
		||||
	z3.One()
 | 
			
		||||
 | 
			
		||||
	swap := 0
 | 
			
		||||
	for pos := 254; pos >= 0; pos-- {
 | 
			
		||||
		b := e[pos/8] >> uint(pos&7)
 | 
			
		||||
		b &= 1
 | 
			
		||||
		swap ^= int(b)
 | 
			
		||||
		x2.Swap(&x3, swap)
 | 
			
		||||
		z2.Swap(&z3, swap)
 | 
			
		||||
		swap = int(b)
 | 
			
		||||
 | 
			
		||||
		tmp0.Subtract(&x3, &z3)
 | 
			
		||||
		tmp1.Subtract(&x2, &z2)
 | 
			
		||||
		x2.Add(&x2, &z2)
 | 
			
		||||
		z2.Add(&x3, &z3)
 | 
			
		||||
		z3.Multiply(&tmp0, &x2)
 | 
			
		||||
		z2.Multiply(&z2, &tmp1)
 | 
			
		||||
		tmp0.Square(&tmp1)
 | 
			
		||||
		tmp1.Square(&x2)
 | 
			
		||||
		x3.Add(&z3, &z2)
 | 
			
		||||
		z2.Subtract(&z3, &z2)
 | 
			
		||||
		x2.Multiply(&tmp1, &tmp0)
 | 
			
		||||
		tmp1.Subtract(&tmp1, &tmp0)
 | 
			
		||||
		z2.Square(&z2)
 | 
			
		||||
 | 
			
		||||
		z3.Mult32(&tmp1, 121666)
 | 
			
		||||
		x3.Square(&x3)
 | 
			
		||||
		tmp0.Add(&tmp0, &z3)
 | 
			
		||||
		z3.Multiply(&x1, &z2)
 | 
			
		||||
		z2.Multiply(&tmp1, &tmp0)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	x2.Swap(&x3, swap)
 | 
			
		||||
	z2.Swap(&z3, swap)
 | 
			
		||||
 | 
			
		||||
	z2.Invert(&z2)
 | 
			
		||||
	x2.Multiply(&x2, &z2)
 | 
			
		||||
	copy(dst[:], x2.Bytes())
 | 
			
		||||
	scalarMult(dst, scalar, point)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ScalarBaseMult sets dst to the product scalar * base where base is the
 | 
			
		||||
@@ -78,7 +25,7 @@ func ScalarMult(dst, scalar, point *[32]byte) {
 | 
			
		||||
// It is recommended to use the X25519 function with Basepoint instead, as
 | 
			
		||||
// copying into fixed size arrays can lead to unexpected bugs.
 | 
			
		||||
func ScalarBaseMult(dst, scalar *[32]byte) {
 | 
			
		||||
	ScalarMult(dst, scalar, &basePoint)
 | 
			
		||||
	scalarBaseMult(dst, scalar)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
@@ -91,21 +38,10 @@ const (
 | 
			
		||||
// Basepoint is the canonical Curve25519 generator.
 | 
			
		||||
var Basepoint []byte
 | 
			
		||||
 | 
			
		||||
var basePoint = [32]byte{9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
 | 
			
		||||
var basePoint = [32]byte{9}
 | 
			
		||||
 | 
			
		||||
func init() { Basepoint = basePoint[:] }
 | 
			
		||||
 | 
			
		||||
func checkBasepoint() {
 | 
			
		||||
	if subtle.ConstantTimeCompare(Basepoint, []byte{
 | 
			
		||||
		0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
	}) != 1 {
 | 
			
		||||
		panic("curve25519: global Basepoint value was modified")
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// X25519 returns the result of the scalar multiplication (scalar * point),
 | 
			
		||||
// according to RFC 7748, Section 5. scalar, point and the return value are
 | 
			
		||||
// slices of 32 bytes.
 | 
			
		||||
@@ -121,26 +57,3 @@ func X25519(scalar, point []byte) ([]byte, error) {
 | 
			
		||||
	var dst [32]byte
 | 
			
		||||
	return x25519(&dst, scalar, point)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func x25519(dst *[32]byte, scalar, point []byte) ([]byte, error) {
 | 
			
		||||
	var in [32]byte
 | 
			
		||||
	if l := len(scalar); l != 32 {
 | 
			
		||||
		return nil, errors.New("bad scalar length: " + strconv.Itoa(l) + ", expected 32")
 | 
			
		||||
	}
 | 
			
		||||
	if l := len(point); l != 32 {
 | 
			
		||||
		return nil, errors.New("bad point length: " + strconv.Itoa(l) + ", expected 32")
 | 
			
		||||
	}
 | 
			
		||||
	copy(in[:], scalar)
 | 
			
		||||
	if &point[0] == &Basepoint[0] {
 | 
			
		||||
		checkBasepoint()
 | 
			
		||||
		ScalarBaseMult(dst, &in)
 | 
			
		||||
	} else {
 | 
			
		||||
		var base, zero [32]byte
 | 
			
		||||
		copy(base[:], point)
 | 
			
		||||
		ScalarMult(dst, &in, &base)
 | 
			
		||||
		if subtle.ConstantTimeCompare(dst[:], zero[:]) == 1 {
 | 
			
		||||
			return nil, errors.New("bad input point: low order point")
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return dst[:], nil
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										105
									
								
								vendor/golang.org/x/crypto/curve25519/curve25519_compat.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										105
									
								
								vendor/golang.org/x/crypto/curve25519/curve25519_compat.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,105 @@
 | 
			
		||||
// Copyright 2019 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.
 | 
			
		||||
 | 
			
		||||
//go:build !go1.20
 | 
			
		||||
 | 
			
		||||
package curve25519
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"crypto/subtle"
 | 
			
		||||
	"errors"
 | 
			
		||||
	"strconv"
 | 
			
		||||
 | 
			
		||||
	"golang.org/x/crypto/curve25519/internal/field"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func scalarMult(dst, scalar, point *[32]byte) {
 | 
			
		||||
	var e [32]byte
 | 
			
		||||
 | 
			
		||||
	copy(e[:], scalar[:])
 | 
			
		||||
	e[0] &= 248
 | 
			
		||||
	e[31] &= 127
 | 
			
		||||
	e[31] |= 64
 | 
			
		||||
 | 
			
		||||
	var x1, x2, z2, x3, z3, tmp0, tmp1 field.Element
 | 
			
		||||
	x1.SetBytes(point[:])
 | 
			
		||||
	x2.One()
 | 
			
		||||
	x3.Set(&x1)
 | 
			
		||||
	z3.One()
 | 
			
		||||
 | 
			
		||||
	swap := 0
 | 
			
		||||
	for pos := 254; pos >= 0; pos-- {
 | 
			
		||||
		b := e[pos/8] >> uint(pos&7)
 | 
			
		||||
		b &= 1
 | 
			
		||||
		swap ^= int(b)
 | 
			
		||||
		x2.Swap(&x3, swap)
 | 
			
		||||
		z2.Swap(&z3, swap)
 | 
			
		||||
		swap = int(b)
 | 
			
		||||
 | 
			
		||||
		tmp0.Subtract(&x3, &z3)
 | 
			
		||||
		tmp1.Subtract(&x2, &z2)
 | 
			
		||||
		x2.Add(&x2, &z2)
 | 
			
		||||
		z2.Add(&x3, &z3)
 | 
			
		||||
		z3.Multiply(&tmp0, &x2)
 | 
			
		||||
		z2.Multiply(&z2, &tmp1)
 | 
			
		||||
		tmp0.Square(&tmp1)
 | 
			
		||||
		tmp1.Square(&x2)
 | 
			
		||||
		x3.Add(&z3, &z2)
 | 
			
		||||
		z2.Subtract(&z3, &z2)
 | 
			
		||||
		x2.Multiply(&tmp1, &tmp0)
 | 
			
		||||
		tmp1.Subtract(&tmp1, &tmp0)
 | 
			
		||||
		z2.Square(&z2)
 | 
			
		||||
 | 
			
		||||
		z3.Mult32(&tmp1, 121666)
 | 
			
		||||
		x3.Square(&x3)
 | 
			
		||||
		tmp0.Add(&tmp0, &z3)
 | 
			
		||||
		z3.Multiply(&x1, &z2)
 | 
			
		||||
		z2.Multiply(&tmp1, &tmp0)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	x2.Swap(&x3, swap)
 | 
			
		||||
	z2.Swap(&z3, swap)
 | 
			
		||||
 | 
			
		||||
	z2.Invert(&z2)
 | 
			
		||||
	x2.Multiply(&x2, &z2)
 | 
			
		||||
	copy(dst[:], x2.Bytes())
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func scalarBaseMult(dst, scalar *[32]byte) {
 | 
			
		||||
	checkBasepoint()
 | 
			
		||||
	scalarMult(dst, scalar, &basePoint)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func x25519(dst *[32]byte, scalar, point []byte) ([]byte, error) {
 | 
			
		||||
	var in [32]byte
 | 
			
		||||
	if l := len(scalar); l != 32 {
 | 
			
		||||
		return nil, errors.New("bad scalar length: " + strconv.Itoa(l) + ", expected 32")
 | 
			
		||||
	}
 | 
			
		||||
	if l := len(point); l != 32 {
 | 
			
		||||
		return nil, errors.New("bad point length: " + strconv.Itoa(l) + ", expected 32")
 | 
			
		||||
	}
 | 
			
		||||
	copy(in[:], scalar)
 | 
			
		||||
	if &point[0] == &Basepoint[0] {
 | 
			
		||||
		scalarBaseMult(dst, &in)
 | 
			
		||||
	} else {
 | 
			
		||||
		var base, zero [32]byte
 | 
			
		||||
		copy(base[:], point)
 | 
			
		||||
		scalarMult(dst, &in, &base)
 | 
			
		||||
		if subtle.ConstantTimeCompare(dst[:], zero[:]) == 1 {
 | 
			
		||||
			return nil, errors.New("bad input point: low order point")
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return dst[:], nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func checkBasepoint() {
 | 
			
		||||
	if subtle.ConstantTimeCompare(Basepoint, []byte{
 | 
			
		||||
		0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
	}) != 1 {
 | 
			
		||||
		panic("curve25519: global Basepoint value was modified")
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										46
									
								
								vendor/golang.org/x/crypto/curve25519/curve25519_go120.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								vendor/golang.org/x/crypto/curve25519/curve25519_go120.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,46 @@
 | 
			
		||||
// Copyright 2022 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.
 | 
			
		||||
 | 
			
		||||
//go:build go1.20
 | 
			
		||||
 | 
			
		||||
package curve25519
 | 
			
		||||
 | 
			
		||||
import "crypto/ecdh"
 | 
			
		||||
 | 
			
		||||
func x25519(dst *[32]byte, scalar, point []byte) ([]byte, error) {
 | 
			
		||||
	curve := ecdh.X25519()
 | 
			
		||||
	pub, err := curve.NewPublicKey(point)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	priv, err := curve.NewPrivateKey(scalar)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	out, err := priv.ECDH(pub)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	copy(dst[:], out)
 | 
			
		||||
	return dst[:], nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func scalarMult(dst, scalar, point *[32]byte) {
 | 
			
		||||
	if _, err := x25519(dst, scalar[:], point[:]); err != nil {
 | 
			
		||||
		// The only error condition for x25519 when the inputs are 32 bytes long
 | 
			
		||||
		// is if the output would have been the all-zero value.
 | 
			
		||||
		for i := range dst {
 | 
			
		||||
			dst[i] = 0
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func scalarBaseMult(dst, scalar *[32]byte) {
 | 
			
		||||
	curve := ecdh.X25519()
 | 
			
		||||
	priv, err := curve.NewPrivateKey(scalar[:])
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		panic("curve25519: internal error: scalarBaseMult was not 32 bytes")
 | 
			
		||||
	}
 | 
			
		||||
	copy(dst[:], priv.PublicKey().Bytes())
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										2
									
								
								vendor/golang.org/x/crypto/curve25519/internal/field/fe_generic.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/golang.org/x/crypto/curve25519/internal/field/fe_generic.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -245,7 +245,7 @@ func feSquareGeneric(v, a *Element) {
 | 
			
		||||
	v.carryPropagate()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// carryPropagate brings the limbs below 52 bits by applying the reduction
 | 
			
		||||
// carryPropagateGeneric brings the limbs below 52 bits by applying the reduction
 | 
			
		||||
// identity (a * 2²⁵⁵ + b = a * 19 + b) to the l4 carry. TODO inline
 | 
			
		||||
func (v *Element) carryPropagateGeneric() *Element {
 | 
			
		||||
	c0 := v.l0 >> 51
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user