Update vendor (#1498)
This commit is contained in:
		
							
								
								
									
										4
									
								
								vendor/golang.org/x/crypto/acme/acme.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/golang.org/x/crypto/acme/acme.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -363,6 +363,10 @@ func AcceptTOS(tosURL string) bool { return true }
 | 
			
		||||
// Also see Error's Instance field for when a CA requires already registered accounts to agree
 | 
			
		||||
// to an updated Terms of Service.
 | 
			
		||||
func (c *Client) Register(ctx context.Context, acct *Account, prompt func(tosURL string) bool) (*Account, error) {
 | 
			
		||||
	if c.Key == nil {
 | 
			
		||||
		return nil, errors.New("acme: client.Key must be set to Register")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	dir, err := c.Discover(ctx)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								vendor/golang.org/x/crypto/acme/autocert/autocert.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								vendor/golang.org/x/crypto/acme/autocert/autocert.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1133,11 +1133,11 @@ func (s *certState) tlscert() (*tls.Certificate, error) {
 | 
			
		||||
	}, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// certRequest generates a CSR for the given common name cn and optional SANs.
 | 
			
		||||
func certRequest(key crypto.Signer, cn string, ext []pkix.Extension, san ...string) ([]byte, error) {
 | 
			
		||||
// certRequest generates a CSR for the given common name.
 | 
			
		||||
func certRequest(key crypto.Signer, name string, ext []pkix.Extension) ([]byte, error) {
 | 
			
		||||
	req := &x509.CertificateRequest{
 | 
			
		||||
		Subject:         pkix.Name{CommonName: cn},
 | 
			
		||||
		DNSNames:        san,
 | 
			
		||||
		Subject:         pkix.Name{CommonName: name},
 | 
			
		||||
		DNSNames:        []string{name},
 | 
			
		||||
		ExtraExtensions: ext,
 | 
			
		||||
	}
 | 
			
		||||
	return x509.CreateCertificateRequest(rand.Reader, req, key)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										54
									
								
								vendor/golang.org/x/crypto/acme/jws.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										54
									
								
								vendor/golang.org/x/crypto/acme/jws.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -7,6 +7,7 @@ package acme
 | 
			
		||||
import (
 | 
			
		||||
	"crypto"
 | 
			
		||||
	"crypto/ecdsa"
 | 
			
		||||
	"crypto/hmac"
 | 
			
		||||
	"crypto/rand"
 | 
			
		||||
	"crypto/rsa"
 | 
			
		||||
	"crypto/sha256"
 | 
			
		||||
@@ -14,6 +15,7 @@ import (
 | 
			
		||||
	"encoding/asn1"
 | 
			
		||||
	"encoding/base64"
 | 
			
		||||
	"encoding/json"
 | 
			
		||||
	"errors"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"math/big"
 | 
			
		||||
)
 | 
			
		||||
@@ -31,6 +33,14 @@ const noKeyID = keyID("")
 | 
			
		||||
// See https://tools.ietf.org/html/rfc8555#section-6.3 for more details.
 | 
			
		||||
const noPayload = ""
 | 
			
		||||
 | 
			
		||||
// jsonWebSignature can be easily serialized into a JWS following
 | 
			
		||||
// https://tools.ietf.org/html/rfc7515#section-3.2.
 | 
			
		||||
type jsonWebSignature struct {
 | 
			
		||||
	Protected string `json:"protected"`
 | 
			
		||||
	Payload   string `json:"payload"`
 | 
			
		||||
	Sig       string `json:"signature"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// jwsEncodeJSON signs claimset using provided key and a nonce.
 | 
			
		||||
// The result is serialized in JSON format containing either kid or jwk
 | 
			
		||||
// fields based on the provided keyID value.
 | 
			
		||||
@@ -71,12 +81,7 @@ func jwsEncodeJSON(claimset interface{}, key crypto.Signer, kid keyID, nonce, ur
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	enc := struct {
 | 
			
		||||
		Protected string `json:"protected"`
 | 
			
		||||
		Payload   string `json:"payload"`
 | 
			
		||||
		Sig       string `json:"signature"`
 | 
			
		||||
	}{
 | 
			
		||||
	enc := jsonWebSignature{
 | 
			
		||||
		Protected: phead,
 | 
			
		||||
		Payload:   payload,
 | 
			
		||||
		Sig:       base64.RawURLEncoding.EncodeToString(sig),
 | 
			
		||||
@@ -84,6 +89,43 @@ func jwsEncodeJSON(claimset interface{}, key crypto.Signer, kid keyID, nonce, ur
 | 
			
		||||
	return json.Marshal(&enc)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// jwsWithMAC creates and signs a JWS using the given key and the HS256
 | 
			
		||||
// algorithm. kid and url are included in the protected header. rawPayload
 | 
			
		||||
// should not be base64-URL-encoded.
 | 
			
		||||
func jwsWithMAC(key []byte, kid, url string, rawPayload []byte) (*jsonWebSignature, error) {
 | 
			
		||||
	if len(key) == 0 {
 | 
			
		||||
		return nil, errors.New("acme: cannot sign JWS with an empty MAC key")
 | 
			
		||||
	}
 | 
			
		||||
	header := struct {
 | 
			
		||||
		Algorithm string `json:"alg"`
 | 
			
		||||
		KID       string `json:"kid"`
 | 
			
		||||
		URL       string `json:"url,omitempty"`
 | 
			
		||||
	}{
 | 
			
		||||
		// Only HMAC-SHA256 is supported.
 | 
			
		||||
		Algorithm: "HS256",
 | 
			
		||||
		KID:       kid,
 | 
			
		||||
		URL:       url,
 | 
			
		||||
	}
 | 
			
		||||
	rawProtected, err := json.Marshal(header)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	protected := base64.RawURLEncoding.EncodeToString(rawProtected)
 | 
			
		||||
	payload := base64.RawURLEncoding.EncodeToString(rawPayload)
 | 
			
		||||
 | 
			
		||||
	h := hmac.New(sha256.New, key)
 | 
			
		||||
	if _, err := h.Write([]byte(protected + "." + payload)); err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	mac := h.Sum(nil)
 | 
			
		||||
 | 
			
		||||
	return &jsonWebSignature{
 | 
			
		||||
		Protected: protected,
 | 
			
		||||
		Payload:   payload,
 | 
			
		||||
		Sig:       base64.RawURLEncoding.EncodeToString(mac),
 | 
			
		||||
	}, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// jwkEncode encodes public part of an RSA or ECDSA key into a JWK.
 | 
			
		||||
// The result is also suitable for creating a JWK thumbprint.
 | 
			
		||||
// https://tools.ietf.org/html/rfc7517
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										30
									
								
								vendor/golang.org/x/crypto/acme/rfc8555.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										30
									
								
								vendor/golang.org/x/crypto/acme/rfc8555.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -37,22 +37,32 @@ func (c *Client) DeactivateReg(ctx context.Context) error {
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// registerRFC is quivalent to c.Register but for CAs implementing RFC 8555.
 | 
			
		||||
// registerRFC is equivalent to c.Register but for CAs implementing RFC 8555.
 | 
			
		||||
// It expects c.Discover to have already been called.
 | 
			
		||||
// TODO: Implement externalAccountBinding.
 | 
			
		||||
func (c *Client) registerRFC(ctx context.Context, acct *Account, prompt func(tosURL string) bool) (*Account, error) {
 | 
			
		||||
	c.cacheMu.Lock() // guard c.kid access
 | 
			
		||||
	defer c.cacheMu.Unlock()
 | 
			
		||||
 | 
			
		||||
	req := struct {
 | 
			
		||||
		TermsAgreed bool     `json:"termsOfServiceAgreed,omitempty"`
 | 
			
		||||
		Contact     []string `json:"contact,omitempty"`
 | 
			
		||||
		TermsAgreed            bool              `json:"termsOfServiceAgreed,omitempty"`
 | 
			
		||||
		Contact                []string          `json:"contact,omitempty"`
 | 
			
		||||
		ExternalAccountBinding *jsonWebSignature `json:"externalAccountBinding,omitempty"`
 | 
			
		||||
	}{
 | 
			
		||||
		Contact: acct.Contact,
 | 
			
		||||
	}
 | 
			
		||||
	if c.dir.Terms != "" {
 | 
			
		||||
		req.TermsAgreed = prompt(c.dir.Terms)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// set 'externalAccountBinding' field if requested
 | 
			
		||||
	if acct.ExternalAccountBinding != nil {
 | 
			
		||||
		eabJWS, err := c.encodeExternalAccountBinding(acct.ExternalAccountBinding)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, fmt.Errorf("acme: failed to encode external account binding: %v", err)
 | 
			
		||||
		}
 | 
			
		||||
		req.ExternalAccountBinding = eabJWS
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	res, err := c.post(ctx, c.Key, c.dir.RegURL, req, wantStatus(
 | 
			
		||||
		http.StatusOK,      // account with this key already registered
 | 
			
		||||
		http.StatusCreated, // new account created
 | 
			
		||||
@@ -75,7 +85,17 @@ func (c *Client) registerRFC(ctx context.Context, acct *Account, prompt func(tos
 | 
			
		||||
	return a, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// updateGegRFC is equivalent to c.UpdateReg but for CAs implementing RFC 8555.
 | 
			
		||||
// encodeExternalAccountBinding will encode an external account binding stanza
 | 
			
		||||
// as described in https://tools.ietf.org/html/rfc8555#section-7.3.4.
 | 
			
		||||
func (c *Client) encodeExternalAccountBinding(eab *ExternalAccountBinding) (*jsonWebSignature, error) {
 | 
			
		||||
	jwk, err := jwkEncode(c.Key.Public())
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	return jwsWithMAC(eab.Key, eab.KID, c.dir.RegURL, []byte(jwk))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// updateRegRFC is equivalent to c.UpdateReg but for CAs implementing RFC 8555.
 | 
			
		||||
// It expects c.Discover to have already been called.
 | 
			
		||||
func (c *Client) updateRegRFC(ctx context.Context, a *Account) (*Account, error) {
 | 
			
		||||
	url := string(c.accountKID(ctx))
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										22
									
								
								vendor/golang.org/x/crypto/acme/types.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										22
									
								
								vendor/golang.org/x/crypto/acme/types.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -199,6 +199,28 @@ type Account struct {
 | 
			
		||||
	//
 | 
			
		||||
	// It is non-RFC 8555 compliant and is obsoleted by OrdersURL.
 | 
			
		||||
	Certificates string
 | 
			
		||||
 | 
			
		||||
	// ExternalAccountBinding represents an arbitrary binding to an account of
 | 
			
		||||
	// the CA which the ACME server is tied to.
 | 
			
		||||
	// See https://tools.ietf.org/html/rfc8555#section-7.3.4 for more details.
 | 
			
		||||
	ExternalAccountBinding *ExternalAccountBinding
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ExternalAccountBinding contains the data needed to form a request with
 | 
			
		||||
// an external account binding.
 | 
			
		||||
// See https://tools.ietf.org/html/rfc8555#section-7.3.4 for more details.
 | 
			
		||||
type ExternalAccountBinding struct {
 | 
			
		||||
	// KID is the Key ID of the symmetric MAC key that the CA provides to
 | 
			
		||||
	// identify an external account from ACME.
 | 
			
		||||
	KID string
 | 
			
		||||
 | 
			
		||||
	// Key is the bytes of the symmetric key that the CA provides to identify
 | 
			
		||||
	// the account. Key must correspond to the KID.
 | 
			
		||||
	Key []byte
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (e *ExternalAccountBinding) String() string {
 | 
			
		||||
	return fmt.Sprintf("&{KID: %q, Key: redacted}", e.KID)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Directory is ACME server discovery data.
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										1
									
								
								vendor/golang.org/x/crypto/acme/version_go112.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/crypto/acme/version_go112.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -2,6 +2,7 @@
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
//go:build go1.12
 | 
			
		||||
// +build go1.12
 | 
			
		||||
 | 
			
		||||
package acme
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										3
									
								
								vendor/golang.org/x/crypto/chacha20/chacha_arm64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/golang.org/x/crypto/chacha20/chacha_arm64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -2,7 +2,8 @@
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
// +build go1.11,!gccgo,!purego
 | 
			
		||||
//go:build go1.11 && gc && !purego
 | 
			
		||||
// +build go1.11,gc,!purego
 | 
			
		||||
 | 
			
		||||
package chacha20
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								vendor/golang.org/x/crypto/chacha20/chacha_arm64.s
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/golang.org/x/crypto/chacha20/chacha_arm64.s
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -2,7 +2,7 @@
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
// +build go1.11,!gccgo,!purego
 | 
			
		||||
// +build go1.11,gc,!purego
 | 
			
		||||
 | 
			
		||||
#include "textflag.h"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										3
									
								
								vendor/golang.org/x/crypto/chacha20/chacha_noasm.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/golang.org/x/crypto/chacha20/chacha_noasm.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -2,7 +2,8 @@
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
// +build !arm64,!s390x,!ppc64le arm64,!go1.11 gccgo purego
 | 
			
		||||
//go:build (!arm64 && !s390x && !ppc64le) || (arm64 && !go1.11) || !gc || purego
 | 
			
		||||
// +build !arm64,!s390x,!ppc64le arm64,!go1.11 !gc purego
 | 
			
		||||
 | 
			
		||||
package chacha20
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										3
									
								
								vendor/golang.org/x/crypto/chacha20/chacha_ppc64le.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/golang.org/x/crypto/chacha20/chacha_ppc64le.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -2,7 +2,8 @@
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
// +build !gccgo,!purego
 | 
			
		||||
//go:build gc && !purego
 | 
			
		||||
// +build gc,!purego
 | 
			
		||||
 | 
			
		||||
package chacha20
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								vendor/golang.org/x/crypto/chacha20/chacha_ppc64le.s
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/golang.org/x/crypto/chacha20/chacha_ppc64le.s
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -19,7 +19,7 @@
 | 
			
		||||
// The differences in this and the original implementation are
 | 
			
		||||
// due to the calling conventions and initialization of constants.
 | 
			
		||||
 | 
			
		||||
// +build !gccgo,!purego
 | 
			
		||||
// +build gc,!purego
 | 
			
		||||
 | 
			
		||||
#include "textflag.h"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										3
									
								
								vendor/golang.org/x/crypto/chacha20/chacha_s390x.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/golang.org/x/crypto/chacha20/chacha_s390x.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -2,7 +2,8 @@
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
// +build !gccgo,!purego
 | 
			
		||||
//go:build gc && !purego
 | 
			
		||||
// +build gc,!purego
 | 
			
		||||
 | 
			
		||||
package chacha20
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								vendor/golang.org/x/crypto/chacha20/chacha_s390x.s
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/golang.org/x/crypto/chacha20/chacha_s390x.s
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -2,7 +2,7 @@
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
// +build !gccgo,!purego
 | 
			
		||||
// +build gc,!purego
 | 
			
		||||
 | 
			
		||||
#include "go_asm.h"
 | 
			
		||||
#include "textflag.h"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										3
									
								
								vendor/golang.org/x/crypto/curve25519/curve25519_amd64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/golang.org/x/crypto/curve25519/curve25519_amd64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -2,7 +2,8 @@
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
// +build amd64,!gccgo,!appengine,!purego
 | 
			
		||||
//go:build amd64 && gc && !purego
 | 
			
		||||
// +build amd64,gc,!purego
 | 
			
		||||
 | 
			
		||||
package curve25519
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								vendor/golang.org/x/crypto/curve25519/curve25519_amd64.s
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/golang.org/x/crypto/curve25519/curve25519_amd64.s
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -5,7 +5,7 @@
 | 
			
		||||
// This code was translated into a form compatible with 6a from the public
 | 
			
		||||
// domain sources in SUPERCOP: https://bench.cr.yp.to/supercop.html
 | 
			
		||||
 | 
			
		||||
// +build amd64,!gccgo,!appengine,!purego
 | 
			
		||||
// +build amd64,gc,!purego
 | 
			
		||||
 | 
			
		||||
#define REDMASK51     0x0007FFFFFFFFFFFF
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										3
									
								
								vendor/golang.org/x/crypto/curve25519/curve25519_noasm.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/golang.org/x/crypto/curve25519/curve25519_noasm.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -2,7 +2,8 @@
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
// +build !amd64 gccgo appengine purego
 | 
			
		||||
//go:build !amd64 || !gc || purego
 | 
			
		||||
// +build !amd64 !gc purego
 | 
			
		||||
 | 
			
		||||
package curve25519
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										1
									
								
								vendor/golang.org/x/crypto/ed25519/ed25519.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/crypto/ed25519/ed25519.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -5,6 +5,7 @@
 | 
			
		||||
// In Go 1.13, the ed25519 package was promoted to the standard library as
 | 
			
		||||
// crypto/ed25519, and this package became a wrapper for the standard library one.
 | 
			
		||||
//
 | 
			
		||||
//go:build !go1.13
 | 
			
		||||
// +build !go1.13
 | 
			
		||||
 | 
			
		||||
// Package ed25519 implements the Ed25519 signature algorithm. See
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										1
									
								
								vendor/golang.org/x/crypto/ed25519/ed25519_go113.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/crypto/ed25519/ed25519_go113.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -2,6 +2,7 @@
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
//go:build go1.13
 | 
			
		||||
// +build go1.13
 | 
			
		||||
 | 
			
		||||
// Package ed25519 implements the Ed25519 signature algorithm. See
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										3
									
								
								vendor/golang.org/x/crypto/internal/subtle/aliasing.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/golang.org/x/crypto/internal/subtle/aliasing.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -2,7 +2,8 @@
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
// +build !appengine
 | 
			
		||||
//go:build !purego
 | 
			
		||||
// +build !purego
 | 
			
		||||
 | 
			
		||||
// Package subtle implements functions that are often useful in cryptographic
 | 
			
		||||
// code but require careful thought to use correctly.
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,8 @@
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
// +build appengine
 | 
			
		||||
//go:build purego
 | 
			
		||||
// +build purego
 | 
			
		||||
 | 
			
		||||
// Package subtle implements functions that are often useful in cryptographic
 | 
			
		||||
// code but require careful thought to use correctly.
 | 
			
		||||
							
								
								
									
										1
									
								
								vendor/golang.org/x/crypto/poly1305/bits_compat.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/crypto/poly1305/bits_compat.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -2,6 +2,7 @@
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
//go:build !go1.13
 | 
			
		||||
// +build !go1.13
 | 
			
		||||
 | 
			
		||||
package poly1305
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										1
									
								
								vendor/golang.org/x/crypto/poly1305/bits_go1.13.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/crypto/poly1305/bits_go1.13.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -2,6 +2,7 @@
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
//go:build go1.13
 | 
			
		||||
// +build go1.13
 | 
			
		||||
 | 
			
		||||
package poly1305
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										3
									
								
								vendor/golang.org/x/crypto/poly1305/mac_noasm.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/golang.org/x/crypto/poly1305/mac_noasm.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -2,7 +2,8 @@
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
// +build !amd64,!ppc64le,!s390x gccgo purego
 | 
			
		||||
//go:build (!amd64 && !ppc64le && !s390x) || !gc || purego
 | 
			
		||||
// +build !amd64,!ppc64le,!s390x !gc purego
 | 
			
		||||
 | 
			
		||||
package poly1305
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										3
									
								
								vendor/golang.org/x/crypto/poly1305/sum_amd64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/golang.org/x/crypto/poly1305/sum_amd64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -2,7 +2,8 @@
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
// +build !gccgo,!purego
 | 
			
		||||
//go:build gc && !purego
 | 
			
		||||
// +build gc,!purego
 | 
			
		||||
 | 
			
		||||
package poly1305
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								vendor/golang.org/x/crypto/poly1305/sum_amd64.s
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/golang.org/x/crypto/poly1305/sum_amd64.s
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -2,7 +2,7 @@
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
// +build !gccgo,!purego
 | 
			
		||||
// +build gc,!purego
 | 
			
		||||
 | 
			
		||||
#include "textflag.h"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										3
									
								
								vendor/golang.org/x/crypto/poly1305/sum_ppc64le.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/golang.org/x/crypto/poly1305/sum_ppc64le.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -2,7 +2,8 @@
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
// +build !gccgo,!purego
 | 
			
		||||
//go:build gc && !purego
 | 
			
		||||
// +build gc,!purego
 | 
			
		||||
 | 
			
		||||
package poly1305
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								vendor/golang.org/x/crypto/poly1305/sum_ppc64le.s
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/golang.org/x/crypto/poly1305/sum_ppc64le.s
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -2,7 +2,7 @@
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
// +build !gccgo,!purego
 | 
			
		||||
// +build gc,!purego
 | 
			
		||||
 | 
			
		||||
#include "textflag.h"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										3
									
								
								vendor/golang.org/x/crypto/poly1305/sum_s390x.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/golang.org/x/crypto/poly1305/sum_s390x.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -2,7 +2,8 @@
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
// +build !gccgo,!purego
 | 
			
		||||
//go:build gc && !purego
 | 
			
		||||
// +build gc,!purego
 | 
			
		||||
 | 
			
		||||
package poly1305
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								vendor/golang.org/x/crypto/poly1305/sum_s390x.s
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/golang.org/x/crypto/poly1305/sum_s390x.s
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -2,7 +2,7 @@
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
// +build !gccgo,!purego
 | 
			
		||||
// +build gc,!purego
 | 
			
		||||
 | 
			
		||||
#include "textflag.h"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										3
									
								
								vendor/golang.org/x/crypto/salsa20/salsa/salsa20_amd64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/golang.org/x/crypto/salsa20/salsa/salsa20_amd64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -2,7 +2,8 @@
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
// +build amd64,!appengine,!gccgo
 | 
			
		||||
//go:build amd64 && !purego && gc
 | 
			
		||||
// +build amd64,!purego,gc
 | 
			
		||||
 | 
			
		||||
package salsa
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										237
									
								
								vendor/golang.org/x/crypto/salsa20/salsa/salsa20_amd64.s
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										237
									
								
								vendor/golang.org/x/crypto/salsa20/salsa/salsa20_amd64.s
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -2,13 +2,13 @@
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
// +build amd64,!appengine,!gccgo
 | 
			
		||||
// +build amd64,!purego,gc
 | 
			
		||||
 | 
			
		||||
// This code was translated into a form compatible with 6a from the public
 | 
			
		||||
// domain sources in SUPERCOP: https://bench.cr.yp.to/supercop.html
 | 
			
		||||
 | 
			
		||||
// func salsa2020XORKeyStream(out, in *byte, n uint64, nonce, key *byte)
 | 
			
		||||
// This needs up to 64 bytes at 360(SP); hence the non-obvious frame size.
 | 
			
		||||
// This needs up to 64 bytes at 360(R12); hence the non-obvious frame size.
 | 
			
		||||
TEXT ·salsa2020XORKeyStream(SB),0,$456-40 // frame = 424 + 32 byte alignment
 | 
			
		||||
	MOVQ out+0(FP),DI
 | 
			
		||||
	MOVQ in+8(FP),SI
 | 
			
		||||
@@ -17,10 +17,8 @@ TEXT ·salsa2020XORKeyStream(SB),0,$456-40 // frame = 424 + 32 byte alignment
 | 
			
		||||
	MOVQ key+32(FP),R8
 | 
			
		||||
 | 
			
		||||
	MOVQ SP,R12
 | 
			
		||||
	MOVQ SP,R9
 | 
			
		||||
	ADDQ $31, R9
 | 
			
		||||
	ANDQ $~31, R9
 | 
			
		||||
	MOVQ R9, SP
 | 
			
		||||
	ADDQ $31, R12
 | 
			
		||||
	ANDQ $~31, R12
 | 
			
		||||
 | 
			
		||||
	MOVQ DX,R9
 | 
			
		||||
	MOVQ CX,DX
 | 
			
		||||
@@ -32,116 +30,116 @@ TEXT ·salsa2020XORKeyStream(SB),0,$456-40 // frame = 424 + 32 byte alignment
 | 
			
		||||
	MOVL 0(R10),R8
 | 
			
		||||
	MOVL 0(DX),AX
 | 
			
		||||
	MOVL 16(R10),R11
 | 
			
		||||
	MOVL CX,0(SP)
 | 
			
		||||
	MOVL R8, 4 (SP)
 | 
			
		||||
	MOVL AX, 8 (SP)
 | 
			
		||||
	MOVL R11, 12 (SP)
 | 
			
		||||
	MOVL CX,0(R12)
 | 
			
		||||
	MOVL R8, 4 (R12)
 | 
			
		||||
	MOVL AX, 8 (R12)
 | 
			
		||||
	MOVL R11, 12 (R12)
 | 
			
		||||
	MOVL 8(DX),CX
 | 
			
		||||
	MOVL 24(R10),R8
 | 
			
		||||
	MOVL 4(R10),AX
 | 
			
		||||
	MOVL 4(DX),R11
 | 
			
		||||
	MOVL CX,16(SP)
 | 
			
		||||
	MOVL R8, 20 (SP)
 | 
			
		||||
	MOVL AX, 24 (SP)
 | 
			
		||||
	MOVL R11, 28 (SP)
 | 
			
		||||
	MOVL CX,16(R12)
 | 
			
		||||
	MOVL R8, 20 (R12)
 | 
			
		||||
	MOVL AX, 24 (R12)
 | 
			
		||||
	MOVL R11, 28 (R12)
 | 
			
		||||
	MOVL 12(DX),CX
 | 
			
		||||
	MOVL 12(R10),DX
 | 
			
		||||
	MOVL 28(R10),R8
 | 
			
		||||
	MOVL 8(R10),AX
 | 
			
		||||
	MOVL DX,32(SP)
 | 
			
		||||
	MOVL CX, 36 (SP)
 | 
			
		||||
	MOVL R8, 40 (SP)
 | 
			
		||||
	MOVL AX, 44 (SP)
 | 
			
		||||
	MOVL DX,32(R12)
 | 
			
		||||
	MOVL CX, 36 (R12)
 | 
			
		||||
	MOVL R8, 40 (R12)
 | 
			
		||||
	MOVL AX, 44 (R12)
 | 
			
		||||
	MOVQ $1634760805,DX
 | 
			
		||||
	MOVQ $857760878,CX
 | 
			
		||||
	MOVQ $2036477234,R8
 | 
			
		||||
	MOVQ $1797285236,AX
 | 
			
		||||
	MOVL DX,48(SP)
 | 
			
		||||
	MOVL CX, 52 (SP)
 | 
			
		||||
	MOVL R8, 56 (SP)
 | 
			
		||||
	MOVL AX, 60 (SP)
 | 
			
		||||
	MOVL DX,48(R12)
 | 
			
		||||
	MOVL CX, 52 (R12)
 | 
			
		||||
	MOVL R8, 56 (R12)
 | 
			
		||||
	MOVL AX, 60 (R12)
 | 
			
		||||
	CMPQ R9,$256
 | 
			
		||||
	JB BYTESBETWEEN1AND255
 | 
			
		||||
	MOVOA 48(SP),X0
 | 
			
		||||
	MOVOA 48(R12),X0
 | 
			
		||||
	PSHUFL $0X55,X0,X1
 | 
			
		||||
	PSHUFL $0XAA,X0,X2
 | 
			
		||||
	PSHUFL $0XFF,X0,X3
 | 
			
		||||
	PSHUFL $0X00,X0,X0
 | 
			
		||||
	MOVOA X1,64(SP)
 | 
			
		||||
	MOVOA X2,80(SP)
 | 
			
		||||
	MOVOA X3,96(SP)
 | 
			
		||||
	MOVOA X0,112(SP)
 | 
			
		||||
	MOVOA 0(SP),X0
 | 
			
		||||
	MOVOA X1,64(R12)
 | 
			
		||||
	MOVOA X2,80(R12)
 | 
			
		||||
	MOVOA X3,96(R12)
 | 
			
		||||
	MOVOA X0,112(R12)
 | 
			
		||||
	MOVOA 0(R12),X0
 | 
			
		||||
	PSHUFL $0XAA,X0,X1
 | 
			
		||||
	PSHUFL $0XFF,X0,X2
 | 
			
		||||
	PSHUFL $0X00,X0,X3
 | 
			
		||||
	PSHUFL $0X55,X0,X0
 | 
			
		||||
	MOVOA X1,128(SP)
 | 
			
		||||
	MOVOA X2,144(SP)
 | 
			
		||||
	MOVOA X3,160(SP)
 | 
			
		||||
	MOVOA X0,176(SP)
 | 
			
		||||
	MOVOA 16(SP),X0
 | 
			
		||||
	MOVOA X1,128(R12)
 | 
			
		||||
	MOVOA X2,144(R12)
 | 
			
		||||
	MOVOA X3,160(R12)
 | 
			
		||||
	MOVOA X0,176(R12)
 | 
			
		||||
	MOVOA 16(R12),X0
 | 
			
		||||
	PSHUFL $0XFF,X0,X1
 | 
			
		||||
	PSHUFL $0X55,X0,X2
 | 
			
		||||
	PSHUFL $0XAA,X0,X0
 | 
			
		||||
	MOVOA X1,192(SP)
 | 
			
		||||
	MOVOA X2,208(SP)
 | 
			
		||||
	MOVOA X0,224(SP)
 | 
			
		||||
	MOVOA 32(SP),X0
 | 
			
		||||
	MOVOA X1,192(R12)
 | 
			
		||||
	MOVOA X2,208(R12)
 | 
			
		||||
	MOVOA X0,224(R12)
 | 
			
		||||
	MOVOA 32(R12),X0
 | 
			
		||||
	PSHUFL $0X00,X0,X1
 | 
			
		||||
	PSHUFL $0XAA,X0,X2
 | 
			
		||||
	PSHUFL $0XFF,X0,X0
 | 
			
		||||
	MOVOA X1,240(SP)
 | 
			
		||||
	MOVOA X2,256(SP)
 | 
			
		||||
	MOVOA X0,272(SP)
 | 
			
		||||
	MOVOA X1,240(R12)
 | 
			
		||||
	MOVOA X2,256(R12)
 | 
			
		||||
	MOVOA X0,272(R12)
 | 
			
		||||
	BYTESATLEAST256:
 | 
			
		||||
	MOVL 16(SP),DX
 | 
			
		||||
	MOVL  36 (SP),CX
 | 
			
		||||
	MOVL DX,288(SP)
 | 
			
		||||
	MOVL CX,304(SP)
 | 
			
		||||
	MOVL 16(R12),DX
 | 
			
		||||
	MOVL  36 (R12),CX
 | 
			
		||||
	MOVL DX,288(R12)
 | 
			
		||||
	MOVL CX,304(R12)
 | 
			
		||||
	SHLQ $32,CX
 | 
			
		||||
	ADDQ CX,DX
 | 
			
		||||
	ADDQ $1,DX
 | 
			
		||||
	MOVQ DX,CX
 | 
			
		||||
	SHRQ $32,CX
 | 
			
		||||
	MOVL DX, 292 (SP)
 | 
			
		||||
	MOVL CX, 308 (SP)
 | 
			
		||||
	MOVL DX, 292 (R12)
 | 
			
		||||
	MOVL CX, 308 (R12)
 | 
			
		||||
	ADDQ $1,DX
 | 
			
		||||
	MOVQ DX,CX
 | 
			
		||||
	SHRQ $32,CX
 | 
			
		||||
	MOVL DX, 296 (SP)
 | 
			
		||||
	MOVL CX, 312 (SP)
 | 
			
		||||
	MOVL DX, 296 (R12)
 | 
			
		||||
	MOVL CX, 312 (R12)
 | 
			
		||||
	ADDQ $1,DX
 | 
			
		||||
	MOVQ DX,CX
 | 
			
		||||
	SHRQ $32,CX
 | 
			
		||||
	MOVL DX, 300 (SP)
 | 
			
		||||
	MOVL CX, 316 (SP)
 | 
			
		||||
	MOVL DX, 300 (R12)
 | 
			
		||||
	MOVL CX, 316 (R12)
 | 
			
		||||
	ADDQ $1,DX
 | 
			
		||||
	MOVQ DX,CX
 | 
			
		||||
	SHRQ $32,CX
 | 
			
		||||
	MOVL DX,16(SP)
 | 
			
		||||
	MOVL CX, 36 (SP)
 | 
			
		||||
	MOVQ R9,352(SP)
 | 
			
		||||
	MOVL DX,16(R12)
 | 
			
		||||
	MOVL CX, 36 (R12)
 | 
			
		||||
	MOVQ R9,352(R12)
 | 
			
		||||
	MOVQ $20,DX
 | 
			
		||||
	MOVOA 64(SP),X0
 | 
			
		||||
	MOVOA 80(SP),X1
 | 
			
		||||
	MOVOA 96(SP),X2
 | 
			
		||||
	MOVOA 256(SP),X3
 | 
			
		||||
	MOVOA 272(SP),X4
 | 
			
		||||
	MOVOA 128(SP),X5
 | 
			
		||||
	MOVOA 144(SP),X6
 | 
			
		||||
	MOVOA 176(SP),X7
 | 
			
		||||
	MOVOA 192(SP),X8
 | 
			
		||||
	MOVOA 208(SP),X9
 | 
			
		||||
	MOVOA 224(SP),X10
 | 
			
		||||
	MOVOA 304(SP),X11
 | 
			
		||||
	MOVOA 112(SP),X12
 | 
			
		||||
	MOVOA 160(SP),X13
 | 
			
		||||
	MOVOA 240(SP),X14
 | 
			
		||||
	MOVOA 288(SP),X15
 | 
			
		||||
	MOVOA 64(R12),X0
 | 
			
		||||
	MOVOA 80(R12),X1
 | 
			
		||||
	MOVOA 96(R12),X2
 | 
			
		||||
	MOVOA 256(R12),X3
 | 
			
		||||
	MOVOA 272(R12),X4
 | 
			
		||||
	MOVOA 128(R12),X5
 | 
			
		||||
	MOVOA 144(R12),X6
 | 
			
		||||
	MOVOA 176(R12),X7
 | 
			
		||||
	MOVOA 192(R12),X8
 | 
			
		||||
	MOVOA 208(R12),X9
 | 
			
		||||
	MOVOA 224(R12),X10
 | 
			
		||||
	MOVOA 304(R12),X11
 | 
			
		||||
	MOVOA 112(R12),X12
 | 
			
		||||
	MOVOA 160(R12),X13
 | 
			
		||||
	MOVOA 240(R12),X14
 | 
			
		||||
	MOVOA 288(R12),X15
 | 
			
		||||
	MAINLOOP1:
 | 
			
		||||
	MOVOA X1,320(SP)
 | 
			
		||||
	MOVOA X2,336(SP)
 | 
			
		||||
	MOVOA X1,320(R12)
 | 
			
		||||
	MOVOA X2,336(R12)
 | 
			
		||||
	MOVOA X13,X1
 | 
			
		||||
	PADDL X12,X1
 | 
			
		||||
	MOVOA X1,X2
 | 
			
		||||
@@ -191,8 +189,8 @@ TEXT ·salsa2020XORKeyStream(SB),0,$456-40 // frame = 424 + 32 byte alignment
 | 
			
		||||
	PXOR X1,X12
 | 
			
		||||
	PSRLL $14,X2
 | 
			
		||||
	PXOR X2,X12
 | 
			
		||||
	MOVOA 320(SP),X1
 | 
			
		||||
	MOVOA X12,320(SP)
 | 
			
		||||
	MOVOA 320(R12),X1
 | 
			
		||||
	MOVOA X12,320(R12)
 | 
			
		||||
	MOVOA X9,X2
 | 
			
		||||
	PADDL X7,X2
 | 
			
		||||
	MOVOA X2,X12
 | 
			
		||||
@@ -207,8 +205,8 @@ TEXT ·salsa2020XORKeyStream(SB),0,$456-40 // frame = 424 + 32 byte alignment
 | 
			
		||||
	PXOR X2,X3
 | 
			
		||||
	PSRLL $25,X12
 | 
			
		||||
	PXOR X12,X3
 | 
			
		||||
	MOVOA 336(SP),X2
 | 
			
		||||
	MOVOA X0,336(SP)
 | 
			
		||||
	MOVOA 336(R12),X2
 | 
			
		||||
	MOVOA X0,336(R12)
 | 
			
		||||
	MOVOA X6,X0
 | 
			
		||||
	PADDL X2,X0
 | 
			
		||||
	MOVOA X0,X12
 | 
			
		||||
@@ -251,8 +249,8 @@ TEXT ·salsa2020XORKeyStream(SB),0,$456-40 // frame = 424 + 32 byte alignment
 | 
			
		||||
	PXOR X0,X1
 | 
			
		||||
	PSRLL $14,X12
 | 
			
		||||
	PXOR X12,X1
 | 
			
		||||
	MOVOA 320(SP),X0
 | 
			
		||||
	MOVOA X1,320(SP)
 | 
			
		||||
	MOVOA 320(R12),X0
 | 
			
		||||
	MOVOA X1,320(R12)
 | 
			
		||||
	MOVOA X4,X1
 | 
			
		||||
	PADDL X0,X1
 | 
			
		||||
	MOVOA X1,X12
 | 
			
		||||
@@ -267,8 +265,8 @@ TEXT ·salsa2020XORKeyStream(SB),0,$456-40 // frame = 424 + 32 byte alignment
 | 
			
		||||
	PXOR X1,X2
 | 
			
		||||
	PSRLL $14,X12
 | 
			
		||||
	PXOR X12,X2
 | 
			
		||||
	MOVOA 336(SP),X12
 | 
			
		||||
	MOVOA X2,336(SP)
 | 
			
		||||
	MOVOA 336(R12),X12
 | 
			
		||||
	MOVOA X2,336(R12)
 | 
			
		||||
	MOVOA X14,X1
 | 
			
		||||
	PADDL X12,X1
 | 
			
		||||
	MOVOA X1,X2
 | 
			
		||||
@@ -311,8 +309,8 @@ TEXT ·salsa2020XORKeyStream(SB),0,$456-40 // frame = 424 + 32 byte alignment
 | 
			
		||||
	PXOR X1,X0
 | 
			
		||||
	PSRLL $14,X2
 | 
			
		||||
	PXOR X2,X0
 | 
			
		||||
	MOVOA 320(SP),X1
 | 
			
		||||
	MOVOA X0,320(SP)
 | 
			
		||||
	MOVOA 320(R12),X1
 | 
			
		||||
	MOVOA X0,320(R12)
 | 
			
		||||
	MOVOA X8,X0
 | 
			
		||||
	PADDL X14,X0
 | 
			
		||||
	MOVOA X0,X2
 | 
			
		||||
@@ -327,8 +325,8 @@ TEXT ·salsa2020XORKeyStream(SB),0,$456-40 // frame = 424 + 32 byte alignment
 | 
			
		||||
	PXOR X0,X6
 | 
			
		||||
	PSRLL $25,X2
 | 
			
		||||
	PXOR X2,X6
 | 
			
		||||
	MOVOA 336(SP),X2
 | 
			
		||||
	MOVOA X12,336(SP)
 | 
			
		||||
	MOVOA 336(R12),X2
 | 
			
		||||
	MOVOA X12,336(R12)
 | 
			
		||||
	MOVOA X3,X0
 | 
			
		||||
	PADDL X2,X0
 | 
			
		||||
	MOVOA X0,X12
 | 
			
		||||
@@ -378,14 +376,14 @@ TEXT ·salsa2020XORKeyStream(SB),0,$456-40 // frame = 424 + 32 byte alignment
 | 
			
		||||
	PXOR X0,X2
 | 
			
		||||
	PSRLL $14,X12
 | 
			
		||||
	PXOR X12,X2
 | 
			
		||||
	MOVOA 320(SP),X12
 | 
			
		||||
	MOVOA 336(SP),X0
 | 
			
		||||
	MOVOA 320(R12),X12
 | 
			
		||||
	MOVOA 336(R12),X0
 | 
			
		||||
	SUBQ $2,DX
 | 
			
		||||
	JA MAINLOOP1
 | 
			
		||||
	PADDL 112(SP),X12
 | 
			
		||||
	PADDL 176(SP),X7
 | 
			
		||||
	PADDL 224(SP),X10
 | 
			
		||||
	PADDL 272(SP),X4
 | 
			
		||||
	PADDL 112(R12),X12
 | 
			
		||||
	PADDL 176(R12),X7
 | 
			
		||||
	PADDL 224(R12),X10
 | 
			
		||||
	PADDL 272(R12),X4
 | 
			
		||||
	MOVD X12,DX
 | 
			
		||||
	MOVD X7,CX
 | 
			
		||||
	MOVD X10,R8
 | 
			
		||||
@@ -446,10 +444,10 @@ TEXT ·salsa2020XORKeyStream(SB),0,$456-40 // frame = 424 + 32 byte alignment
 | 
			
		||||
	MOVL CX,196(DI)
 | 
			
		||||
	MOVL R8,200(DI)
 | 
			
		||||
	MOVL R9,204(DI)
 | 
			
		||||
	PADDL 240(SP),X14
 | 
			
		||||
	PADDL 64(SP),X0
 | 
			
		||||
	PADDL 128(SP),X5
 | 
			
		||||
	PADDL 192(SP),X8
 | 
			
		||||
	PADDL 240(R12),X14
 | 
			
		||||
	PADDL 64(R12),X0
 | 
			
		||||
	PADDL 128(R12),X5
 | 
			
		||||
	PADDL 192(R12),X8
 | 
			
		||||
	MOVD X14,DX
 | 
			
		||||
	MOVD X0,CX
 | 
			
		||||
	MOVD X5,R8
 | 
			
		||||
@@ -510,10 +508,10 @@ TEXT ·salsa2020XORKeyStream(SB),0,$456-40 // frame = 424 + 32 byte alignment
 | 
			
		||||
	MOVL CX,212(DI)
 | 
			
		||||
	MOVL R8,216(DI)
 | 
			
		||||
	MOVL R9,220(DI)
 | 
			
		||||
	PADDL 288(SP),X15
 | 
			
		||||
	PADDL 304(SP),X11
 | 
			
		||||
	PADDL 80(SP),X1
 | 
			
		||||
	PADDL 144(SP),X6
 | 
			
		||||
	PADDL 288(R12),X15
 | 
			
		||||
	PADDL 304(R12),X11
 | 
			
		||||
	PADDL 80(R12),X1
 | 
			
		||||
	PADDL 144(R12),X6
 | 
			
		||||
	MOVD X15,DX
 | 
			
		||||
	MOVD X11,CX
 | 
			
		||||
	MOVD X1,R8
 | 
			
		||||
@@ -574,10 +572,10 @@ TEXT ·salsa2020XORKeyStream(SB),0,$456-40 // frame = 424 + 32 byte alignment
 | 
			
		||||
	MOVL CX,228(DI)
 | 
			
		||||
	MOVL R8,232(DI)
 | 
			
		||||
	MOVL R9,236(DI)
 | 
			
		||||
	PADDL 160(SP),X13
 | 
			
		||||
	PADDL 208(SP),X9
 | 
			
		||||
	PADDL 256(SP),X3
 | 
			
		||||
	PADDL 96(SP),X2
 | 
			
		||||
	PADDL 160(R12),X13
 | 
			
		||||
	PADDL 208(R12),X9
 | 
			
		||||
	PADDL 256(R12),X3
 | 
			
		||||
	PADDL 96(R12),X2
 | 
			
		||||
	MOVD X13,DX
 | 
			
		||||
	MOVD X9,CX
 | 
			
		||||
	MOVD X3,R8
 | 
			
		||||
@@ -638,7 +636,7 @@ TEXT ·salsa2020XORKeyStream(SB),0,$456-40 // frame = 424 + 32 byte alignment
 | 
			
		||||
	MOVL CX,244(DI)
 | 
			
		||||
	MOVL R8,248(DI)
 | 
			
		||||
	MOVL R9,252(DI)
 | 
			
		||||
	MOVQ 352(SP),R9
 | 
			
		||||
	MOVQ 352(R12),R9
 | 
			
		||||
	SUBQ $256,R9
 | 
			
		||||
	ADDQ $256,SI
 | 
			
		||||
	ADDQ $256,DI
 | 
			
		||||
@@ -650,17 +648,17 @@ TEXT ·salsa2020XORKeyStream(SB),0,$456-40 // frame = 424 + 32 byte alignment
 | 
			
		||||
	CMPQ R9,$64
 | 
			
		||||
	JAE NOCOPY
 | 
			
		||||
	MOVQ DI,DX
 | 
			
		||||
	LEAQ 360(SP),DI
 | 
			
		||||
	LEAQ 360(R12),DI
 | 
			
		||||
	MOVQ R9,CX
 | 
			
		||||
	REP; MOVSB
 | 
			
		||||
	LEAQ 360(SP),DI
 | 
			
		||||
	LEAQ 360(SP),SI
 | 
			
		||||
	LEAQ 360(R12),DI
 | 
			
		||||
	LEAQ 360(R12),SI
 | 
			
		||||
	NOCOPY:
 | 
			
		||||
	MOVQ R9,352(SP)
 | 
			
		||||
	MOVOA 48(SP),X0
 | 
			
		||||
	MOVOA 0(SP),X1
 | 
			
		||||
	MOVOA 16(SP),X2
 | 
			
		||||
	MOVOA 32(SP),X3
 | 
			
		||||
	MOVQ R9,352(R12)
 | 
			
		||||
	MOVOA 48(R12),X0
 | 
			
		||||
	MOVOA 0(R12),X1
 | 
			
		||||
	MOVOA 16(R12),X2
 | 
			
		||||
	MOVOA 32(R12),X3
 | 
			
		||||
	MOVOA X1,X4
 | 
			
		||||
	MOVQ $20,CX
 | 
			
		||||
	MAINLOOP2:
 | 
			
		||||
@@ -791,10 +789,10 @@ TEXT ·salsa2020XORKeyStream(SB),0,$456-40 // frame = 424 + 32 byte alignment
 | 
			
		||||
	PSHUFL $0X39,X3,X3
 | 
			
		||||
	PXOR X6,X0
 | 
			
		||||
	JA MAINLOOP2
 | 
			
		||||
	PADDL 48(SP),X0
 | 
			
		||||
	PADDL 0(SP),X1
 | 
			
		||||
	PADDL 16(SP),X2
 | 
			
		||||
	PADDL 32(SP),X3
 | 
			
		||||
	PADDL 48(R12),X0
 | 
			
		||||
	PADDL 0(R12),X1
 | 
			
		||||
	PADDL 16(R12),X2
 | 
			
		||||
	PADDL 32(R12),X3
 | 
			
		||||
	MOVD X0,CX
 | 
			
		||||
	MOVD X1,R8
 | 
			
		||||
	MOVD X2,R9
 | 
			
		||||
@@ -855,16 +853,16 @@ TEXT ·salsa2020XORKeyStream(SB),0,$456-40 // frame = 424 + 32 byte alignment
 | 
			
		||||
	MOVL R8,44(DI)
 | 
			
		||||
	MOVL R9,28(DI)
 | 
			
		||||
	MOVL AX,12(DI)
 | 
			
		||||
	MOVQ 352(SP),R9
 | 
			
		||||
	MOVL 16(SP),CX
 | 
			
		||||
	MOVL  36 (SP),R8
 | 
			
		||||
	MOVQ 352(R12),R9
 | 
			
		||||
	MOVL 16(R12),CX
 | 
			
		||||
	MOVL  36 (R12),R8
 | 
			
		||||
	ADDQ $1,CX
 | 
			
		||||
	SHLQ $32,R8
 | 
			
		||||
	ADDQ R8,CX
 | 
			
		||||
	MOVQ CX,R8
 | 
			
		||||
	SHRQ $32,R8
 | 
			
		||||
	MOVL CX,16(SP)
 | 
			
		||||
	MOVL R8, 36 (SP)
 | 
			
		||||
	MOVL CX,16(R12)
 | 
			
		||||
	MOVL R8, 36 (R12)
 | 
			
		||||
	CMPQ R9,$64
 | 
			
		||||
	JA BYTESATLEAST65
 | 
			
		||||
	JAE BYTESATLEAST64
 | 
			
		||||
@@ -874,7 +872,6 @@ TEXT ·salsa2020XORKeyStream(SB),0,$456-40 // frame = 424 + 32 byte alignment
 | 
			
		||||
	REP; MOVSB
 | 
			
		||||
	BYTESATLEAST64:
 | 
			
		||||
	DONE:
 | 
			
		||||
	MOVQ R12,SP
 | 
			
		||||
	RET
 | 
			
		||||
	BYTESATLEAST65:
 | 
			
		||||
	SUBQ $64,R9
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										3
									
								
								vendor/golang.org/x/crypto/salsa20/salsa/salsa20_noasm.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/golang.org/x/crypto/salsa20/salsa/salsa20_noasm.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -2,7 +2,8 @@
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
// +build !amd64 appengine gccgo
 | 
			
		||||
//go:build !amd64 || purego || !gc
 | 
			
		||||
// +build !amd64 purego !gc
 | 
			
		||||
 | 
			
		||||
package salsa
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										4
									
								
								vendor/golang.org/x/crypto/ssh/server.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/golang.org/x/crypto/ssh/server.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -572,6 +572,10 @@ userAuthLoop:
 | 
			
		||||
				perms = candidate.perms
 | 
			
		||||
			}
 | 
			
		||||
		case "gssapi-with-mic":
 | 
			
		||||
			if config.GSSAPIWithMICConfig == nil {
 | 
			
		||||
				authErr = errors.New("ssh: gssapi-with-mic auth not configured")
 | 
			
		||||
				break
 | 
			
		||||
			}
 | 
			
		||||
			gssapiConfig := config.GSSAPIWithMICConfig
 | 
			
		||||
			userAuthRequestGSSAPI, err := parseGSSAPIPayload(userAuthReq.Payload)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										989
									
								
								vendor/golang.org/x/crypto/ssh/terminal/terminal.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										989
									
								
								vendor/golang.org/x/crypto/ssh/terminal/terminal.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										114
									
								
								vendor/golang.org/x/crypto/ssh/terminal/util.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										114
									
								
								vendor/golang.org/x/crypto/ssh/terminal/util.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,114 +0,0 @@
 | 
			
		||||
// Copyright 2011 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 aix darwin dragonfly freebsd linux,!appengine netbsd openbsd
 | 
			
		||||
 | 
			
		||||
// Package terminal provides support functions for dealing with terminals, as
 | 
			
		||||
// commonly found on UNIX systems.
 | 
			
		||||
//
 | 
			
		||||
// Putting a terminal into raw mode is the most common requirement:
 | 
			
		||||
//
 | 
			
		||||
// 	oldState, err := terminal.MakeRaw(0)
 | 
			
		||||
// 	if err != nil {
 | 
			
		||||
// 	        panic(err)
 | 
			
		||||
// 	}
 | 
			
		||||
// 	defer terminal.Restore(0, oldState)
 | 
			
		||||
package terminal // import "golang.org/x/crypto/ssh/terminal"
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"golang.org/x/sys/unix"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// State contains the state of a terminal.
 | 
			
		||||
type State struct {
 | 
			
		||||
	termios unix.Termios
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// IsTerminal returns whether the given file descriptor is a terminal.
 | 
			
		||||
func IsTerminal(fd int) bool {
 | 
			
		||||
	_, err := unix.IoctlGetTermios(fd, ioctlReadTermios)
 | 
			
		||||
	return err == nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// MakeRaw put the terminal connected to the given file descriptor into raw
 | 
			
		||||
// mode and returns the previous state of the terminal so that it can be
 | 
			
		||||
// restored.
 | 
			
		||||
func MakeRaw(fd int) (*State, error) {
 | 
			
		||||
	termios, err := unix.IoctlGetTermios(fd, ioctlReadTermios)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	oldState := State{termios: *termios}
 | 
			
		||||
 | 
			
		||||
	// This attempts to replicate the behaviour documented for cfmakeraw in
 | 
			
		||||
	// the termios(3) manpage.
 | 
			
		||||
	termios.Iflag &^= unix.IGNBRK | unix.BRKINT | unix.PARMRK | unix.ISTRIP | unix.INLCR | unix.IGNCR | unix.ICRNL | unix.IXON
 | 
			
		||||
	termios.Oflag &^= unix.OPOST
 | 
			
		||||
	termios.Lflag &^= unix.ECHO | unix.ECHONL | unix.ICANON | unix.ISIG | unix.IEXTEN
 | 
			
		||||
	termios.Cflag &^= unix.CSIZE | unix.PARENB
 | 
			
		||||
	termios.Cflag |= unix.CS8
 | 
			
		||||
	termios.Cc[unix.VMIN] = 1
 | 
			
		||||
	termios.Cc[unix.VTIME] = 0
 | 
			
		||||
	if err := unix.IoctlSetTermios(fd, ioctlWriteTermios, termios); err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return &oldState, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetState returns the current state of a terminal which may be useful to
 | 
			
		||||
// restore the terminal after a signal.
 | 
			
		||||
func GetState(fd int) (*State, error) {
 | 
			
		||||
	termios, err := unix.IoctlGetTermios(fd, ioctlReadTermios)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return &State{termios: *termios}, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Restore restores the terminal connected to the given file descriptor to a
 | 
			
		||||
// previous state.
 | 
			
		||||
func Restore(fd int, state *State) error {
 | 
			
		||||
	return unix.IoctlSetTermios(fd, ioctlWriteTermios, &state.termios)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetSize returns the dimensions of the given terminal.
 | 
			
		||||
func GetSize(fd int) (width, height int, err error) {
 | 
			
		||||
	ws, err := unix.IoctlGetWinsize(fd, unix.TIOCGWINSZ)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return -1, -1, err
 | 
			
		||||
	}
 | 
			
		||||
	return int(ws.Col), int(ws.Row), nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// passwordReader is an io.Reader that reads from a specific file descriptor.
 | 
			
		||||
type passwordReader int
 | 
			
		||||
 | 
			
		||||
func (r passwordReader) Read(buf []byte) (int, error) {
 | 
			
		||||
	return unix.Read(int(r), buf)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ReadPassword reads a line of input from a terminal without local echo.  This
 | 
			
		||||
// is commonly used for inputting passwords and other sensitive data. The slice
 | 
			
		||||
// returned does not include the \n.
 | 
			
		||||
func ReadPassword(fd int) ([]byte, error) {
 | 
			
		||||
	termios, err := unix.IoctlGetTermios(fd, ioctlReadTermios)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	newState := *termios
 | 
			
		||||
	newState.Lflag &^= unix.ECHO
 | 
			
		||||
	newState.Lflag |= unix.ICANON | unix.ISIG
 | 
			
		||||
	newState.Iflag |= unix.ICRNL
 | 
			
		||||
	if err := unix.IoctlSetTermios(fd, ioctlWriteTermios, &newState); err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	defer unix.IoctlSetTermios(fd, ioctlWriteTermios, termios)
 | 
			
		||||
 | 
			
		||||
	return readPasswordLine(passwordReader(fd))
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										12
									
								
								vendor/golang.org/x/crypto/ssh/terminal/util_aix.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								vendor/golang.org/x/crypto/ssh/terminal/util_aix.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,12 +0,0 @@
 | 
			
		||||
// 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 aix
 | 
			
		||||
 | 
			
		||||
package terminal
 | 
			
		||||
 | 
			
		||||
import "golang.org/x/sys/unix"
 | 
			
		||||
 | 
			
		||||
const ioctlReadTermios = unix.TCGETS
 | 
			
		||||
const ioctlWriteTermios = unix.TCSETS
 | 
			
		||||
							
								
								
									
										12
									
								
								vendor/golang.org/x/crypto/ssh/terminal/util_bsd.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								vendor/golang.org/x/crypto/ssh/terminal/util_bsd.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,12 +0,0 @@
 | 
			
		||||
// Copyright 2013 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 darwin dragonfly freebsd netbsd openbsd
 | 
			
		||||
 | 
			
		||||
package terminal
 | 
			
		||||
 | 
			
		||||
import "golang.org/x/sys/unix"
 | 
			
		||||
 | 
			
		||||
const ioctlReadTermios = unix.TIOCGETA
 | 
			
		||||
const ioctlWriteTermios = unix.TIOCSETA
 | 
			
		||||
							
								
								
									
										10
									
								
								vendor/golang.org/x/crypto/ssh/terminal/util_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								vendor/golang.org/x/crypto/ssh/terminal/util_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,10 +0,0 @@
 | 
			
		||||
// Copyright 2013 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 terminal
 | 
			
		||||
 | 
			
		||||
import "golang.org/x/sys/unix"
 | 
			
		||||
 | 
			
		||||
const ioctlReadTermios = unix.TCGETS
 | 
			
		||||
const ioctlWriteTermios = unix.TCSETS
 | 
			
		||||
							
								
								
									
										58
									
								
								vendor/golang.org/x/crypto/ssh/terminal/util_plan9.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										58
									
								
								vendor/golang.org/x/crypto/ssh/terminal/util_plan9.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,58 +0,0 @@
 | 
			
		||||
// Copyright 2016 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 terminal provides support functions for dealing with terminals, as
 | 
			
		||||
// commonly found on UNIX systems.
 | 
			
		||||
//
 | 
			
		||||
// Putting a terminal into raw mode is the most common requirement:
 | 
			
		||||
//
 | 
			
		||||
// 	oldState, err := terminal.MakeRaw(0)
 | 
			
		||||
// 	if err != nil {
 | 
			
		||||
// 	        panic(err)
 | 
			
		||||
// 	}
 | 
			
		||||
// 	defer terminal.Restore(0, oldState)
 | 
			
		||||
package terminal
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"runtime"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type State struct{}
 | 
			
		||||
 | 
			
		||||
// IsTerminal returns whether the given file descriptor is a terminal.
 | 
			
		||||
func IsTerminal(fd int) bool {
 | 
			
		||||
	return false
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// MakeRaw put the terminal connected to the given file descriptor into raw
 | 
			
		||||
// mode and returns the previous state of the terminal so that it can be
 | 
			
		||||
// restored.
 | 
			
		||||
func MakeRaw(fd int) (*State, error) {
 | 
			
		||||
	return nil, fmt.Errorf("terminal: MakeRaw not implemented on %s/%s", runtime.GOOS, runtime.GOARCH)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetState returns the current state of a terminal which may be useful to
 | 
			
		||||
// restore the terminal after a signal.
 | 
			
		||||
func GetState(fd int) (*State, error) {
 | 
			
		||||
	return nil, fmt.Errorf("terminal: GetState not implemented on %s/%s", runtime.GOOS, runtime.GOARCH)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Restore restores the terminal connected to the given file descriptor to a
 | 
			
		||||
// previous state.
 | 
			
		||||
func Restore(fd int, state *State) error {
 | 
			
		||||
	return fmt.Errorf("terminal: Restore not implemented on %s/%s", runtime.GOOS, runtime.GOARCH)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetSize returns the dimensions of the given terminal.
 | 
			
		||||
func GetSize(fd int) (width, height int, err error) {
 | 
			
		||||
	return 0, 0, fmt.Errorf("terminal: GetSize not implemented on %s/%s", runtime.GOOS, runtime.GOARCH)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ReadPassword reads a line of input from a terminal without local echo.  This
 | 
			
		||||
// is commonly used for inputting passwords and other sensitive data. The slice
 | 
			
		||||
// returned does not include the \n.
 | 
			
		||||
func ReadPassword(fd int) ([]byte, error) {
 | 
			
		||||
	return nil, fmt.Errorf("terminal: ReadPassword not implemented on %s/%s", runtime.GOOS, runtime.GOARCH)
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										124
									
								
								vendor/golang.org/x/crypto/ssh/terminal/util_solaris.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										124
									
								
								vendor/golang.org/x/crypto/ssh/terminal/util_solaris.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,124 +0,0 @@
 | 
			
		||||
// Copyright 2015 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 solaris
 | 
			
		||||
 | 
			
		||||
package terminal // import "golang.org/x/crypto/ssh/terminal"
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"golang.org/x/sys/unix"
 | 
			
		||||
	"io"
 | 
			
		||||
	"syscall"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// State contains the state of a terminal.
 | 
			
		||||
type State struct {
 | 
			
		||||
	termios unix.Termios
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// IsTerminal returns whether the given file descriptor is a terminal.
 | 
			
		||||
func IsTerminal(fd int) bool {
 | 
			
		||||
	_, err := unix.IoctlGetTermio(fd, unix.TCGETA)
 | 
			
		||||
	return err == nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ReadPassword reads a line of input from a terminal without local echo.  This
 | 
			
		||||
// is commonly used for inputting passwords and other sensitive data. The slice
 | 
			
		||||
// returned does not include the \n.
 | 
			
		||||
func ReadPassword(fd int) ([]byte, error) {
 | 
			
		||||
	// see also: http://src.illumos.org/source/xref/illumos-gate/usr/src/lib/libast/common/uwin/getpass.c
 | 
			
		||||
	val, err := unix.IoctlGetTermios(fd, unix.TCGETS)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	oldState := *val
 | 
			
		||||
 | 
			
		||||
	newState := oldState
 | 
			
		||||
	newState.Lflag &^= syscall.ECHO
 | 
			
		||||
	newState.Lflag |= syscall.ICANON | syscall.ISIG
 | 
			
		||||
	newState.Iflag |= syscall.ICRNL
 | 
			
		||||
	err = unix.IoctlSetTermios(fd, unix.TCSETS, &newState)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	defer unix.IoctlSetTermios(fd, unix.TCSETS, &oldState)
 | 
			
		||||
 | 
			
		||||
	var buf [16]byte
 | 
			
		||||
	var ret []byte
 | 
			
		||||
	for {
 | 
			
		||||
		n, err := syscall.Read(fd, buf[:])
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
		if n == 0 {
 | 
			
		||||
			if len(ret) == 0 {
 | 
			
		||||
				return nil, io.EOF
 | 
			
		||||
			}
 | 
			
		||||
			break
 | 
			
		||||
		}
 | 
			
		||||
		if buf[n-1] == '\n' {
 | 
			
		||||
			n--
 | 
			
		||||
		}
 | 
			
		||||
		ret = append(ret, buf[:n]...)
 | 
			
		||||
		if n < len(buf) {
 | 
			
		||||
			break
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return ret, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// MakeRaw puts the terminal connected to the given file descriptor into raw
 | 
			
		||||
// mode and returns the previous state of the terminal so that it can be
 | 
			
		||||
// restored.
 | 
			
		||||
// see http://cr.illumos.org/~webrev/andy_js/1060/
 | 
			
		||||
func MakeRaw(fd int) (*State, error) {
 | 
			
		||||
	termios, err := unix.IoctlGetTermios(fd, unix.TCGETS)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	oldState := State{termios: *termios}
 | 
			
		||||
 | 
			
		||||
	termios.Iflag &^= unix.IGNBRK | unix.BRKINT | unix.PARMRK | unix.ISTRIP | unix.INLCR | unix.IGNCR | unix.ICRNL | unix.IXON
 | 
			
		||||
	termios.Oflag &^= unix.OPOST
 | 
			
		||||
	termios.Lflag &^= unix.ECHO | unix.ECHONL | unix.ICANON | unix.ISIG | unix.IEXTEN
 | 
			
		||||
	termios.Cflag &^= unix.CSIZE | unix.PARENB
 | 
			
		||||
	termios.Cflag |= unix.CS8
 | 
			
		||||
	termios.Cc[unix.VMIN] = 1
 | 
			
		||||
	termios.Cc[unix.VTIME] = 0
 | 
			
		||||
 | 
			
		||||
	if err := unix.IoctlSetTermios(fd, unix.TCSETS, termios); err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return &oldState, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Restore restores the terminal connected to the given file descriptor to a
 | 
			
		||||
// previous state.
 | 
			
		||||
func Restore(fd int, oldState *State) error {
 | 
			
		||||
	return unix.IoctlSetTermios(fd, unix.TCSETS, &oldState.termios)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetState returns the current state of a terminal which may be useful to
 | 
			
		||||
// restore the terminal after a signal.
 | 
			
		||||
func GetState(fd int) (*State, error) {
 | 
			
		||||
	termios, err := unix.IoctlGetTermios(fd, unix.TCGETS)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return &State{termios: *termios}, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetSize returns the dimensions of the given terminal.
 | 
			
		||||
func GetSize(fd int) (width, height int, err error) {
 | 
			
		||||
	ws, err := unix.IoctlGetWinsize(fd, unix.TIOCGWINSZ)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return 0, 0, err
 | 
			
		||||
	}
 | 
			
		||||
	return int(ws.Col), int(ws.Row), nil
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										105
									
								
								vendor/golang.org/x/crypto/ssh/terminal/util_windows.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										105
									
								
								vendor/golang.org/x/crypto/ssh/terminal/util_windows.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,105 +0,0 @@
 | 
			
		||||
// Copyright 2011 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 windows
 | 
			
		||||
 | 
			
		||||
// Package terminal provides support functions for dealing with terminals, as
 | 
			
		||||
// commonly found on UNIX systems.
 | 
			
		||||
//
 | 
			
		||||
// Putting a terminal into raw mode is the most common requirement:
 | 
			
		||||
//
 | 
			
		||||
// 	oldState, err := terminal.MakeRaw(0)
 | 
			
		||||
// 	if err != nil {
 | 
			
		||||
// 	        panic(err)
 | 
			
		||||
// 	}
 | 
			
		||||
// 	defer terminal.Restore(0, oldState)
 | 
			
		||||
package terminal
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"os"
 | 
			
		||||
 | 
			
		||||
	"golang.org/x/sys/windows"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type State struct {
 | 
			
		||||
	mode uint32
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// IsTerminal returns whether the given file descriptor is a terminal.
 | 
			
		||||
func IsTerminal(fd int) bool {
 | 
			
		||||
	var st uint32
 | 
			
		||||
	err := windows.GetConsoleMode(windows.Handle(fd), &st)
 | 
			
		||||
	return err == nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// MakeRaw put the terminal connected to the given file descriptor into raw
 | 
			
		||||
// mode and returns the previous state of the terminal so that it can be
 | 
			
		||||
// restored.
 | 
			
		||||
func MakeRaw(fd int) (*State, error) {
 | 
			
		||||
	var st uint32
 | 
			
		||||
	if err := windows.GetConsoleMode(windows.Handle(fd), &st); err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	raw := st &^ (windows.ENABLE_ECHO_INPUT | windows.ENABLE_PROCESSED_INPUT | windows.ENABLE_LINE_INPUT | windows.ENABLE_PROCESSED_OUTPUT)
 | 
			
		||||
	if err := windows.SetConsoleMode(windows.Handle(fd), raw); err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	return &State{st}, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetState returns the current state of a terminal which may be useful to
 | 
			
		||||
// restore the terminal after a signal.
 | 
			
		||||
func GetState(fd int) (*State, error) {
 | 
			
		||||
	var st uint32
 | 
			
		||||
	if err := windows.GetConsoleMode(windows.Handle(fd), &st); err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	return &State{st}, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Restore restores the terminal connected to the given file descriptor to a
 | 
			
		||||
// previous state.
 | 
			
		||||
func Restore(fd int, state *State) error {
 | 
			
		||||
	return windows.SetConsoleMode(windows.Handle(fd), state.mode)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetSize returns the visible dimensions of the given terminal.
 | 
			
		||||
//
 | 
			
		||||
// These dimensions don't include any scrollback buffer height.
 | 
			
		||||
func GetSize(fd int) (width, height int, err error) {
 | 
			
		||||
	var info windows.ConsoleScreenBufferInfo
 | 
			
		||||
	if err := windows.GetConsoleScreenBufferInfo(windows.Handle(fd), &info); err != nil {
 | 
			
		||||
		return 0, 0, err
 | 
			
		||||
	}
 | 
			
		||||
	return int(info.Window.Right - info.Window.Left + 1), int(info.Window.Bottom - info.Window.Top + 1), nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ReadPassword reads a line of input from a terminal without local echo.  This
 | 
			
		||||
// is commonly used for inputting passwords and other sensitive data. The slice
 | 
			
		||||
// returned does not include the \n.
 | 
			
		||||
func ReadPassword(fd int) ([]byte, error) {
 | 
			
		||||
	var st uint32
 | 
			
		||||
	if err := windows.GetConsoleMode(windows.Handle(fd), &st); err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	old := st
 | 
			
		||||
 | 
			
		||||
	st &^= (windows.ENABLE_ECHO_INPUT | windows.ENABLE_LINE_INPUT)
 | 
			
		||||
	st |= (windows.ENABLE_PROCESSED_OUTPUT | windows.ENABLE_PROCESSED_INPUT)
 | 
			
		||||
	if err := windows.SetConsoleMode(windows.Handle(fd), st); err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	defer windows.SetConsoleMode(windows.Handle(fd), old)
 | 
			
		||||
 | 
			
		||||
	var h windows.Handle
 | 
			
		||||
	p, _ := windows.GetCurrentProcess()
 | 
			
		||||
	if err := windows.DuplicateHandle(p, windows.Handle(fd), p, &h, 0, false, windows.DUPLICATE_SAME_ACCESS); err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	f := os.NewFile(uintptr(h), "stdin")
 | 
			
		||||
	defer f.Close()
 | 
			
		||||
	return readPasswordLine(f)
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user