feat(dir2config)
This commit is contained in:
		
							
								
								
									
										2
									
								
								vendor/github.com/cloudflare/cfssl/auth/auth.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/cloudflare/cfssl/auth/auth.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -56,7 +56,7 @@ func New(key string, ad []byte) (*Standard, error) { | ||||
| 			if err != nil { | ||||
| 				return nil, err | ||||
| 			} | ||||
| 			key = string(data) | ||||
| 			key = strings.TrimSpace(string(data)) | ||||
| 		default: | ||||
| 			return nil, fmt.Errorf("unknown key prefix: %s", splitKey[0]) | ||||
| 		} | ||||
|  | ||||
							
								
								
									
										22
									
								
								vendor/github.com/cloudflare/cfssl/helpers/derhelpers/derhelpers.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										22
									
								
								vendor/github.com/cloudflare/cfssl/helpers/derhelpers/derhelpers.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -9,10 +9,11 @@ import ( | ||||
| 	"crypto/x509" | ||||
|  | ||||
| 	cferr "github.com/cloudflare/cfssl/errors" | ||||
| 	"golang.org/x/crypto/ed25519" | ||||
| ) | ||||
|  | ||||
| // ParsePrivateKeyDER parses a PKCS #1, PKCS #8, or elliptic curve | ||||
| // DER-encoded private key. The key must not be in PEM format. | ||||
| // ParsePrivateKeyDER parses a PKCS #1, PKCS #8, ECDSA, or Ed25519 DER-encoded | ||||
| // private key. The key must not be in PEM format. | ||||
| func ParsePrivateKeyDER(keyDER []byte) (key crypto.Signer, err error) { | ||||
| 	generalKey, err := x509.ParsePKCS8PrivateKey(keyDER) | ||||
| 	if err != nil { | ||||
| @ -20,12 +21,15 @@ func ParsePrivateKeyDER(keyDER []byte) (key crypto.Signer, err error) { | ||||
| 		if err != nil { | ||||
| 			generalKey, err = x509.ParseECPrivateKey(keyDER) | ||||
| 			if err != nil { | ||||
| 				// We don't include the actual error into | ||||
| 				// the final error. The reason might be | ||||
| 				// we don't want to leak any info about | ||||
| 				// the private key. | ||||
| 				return nil, cferr.New(cferr.PrivateKeyError, | ||||
| 					cferr.ParseFailed) | ||||
| 				generalKey, err = ParseEd25519PrivateKey(keyDER) | ||||
| 				if err != nil { | ||||
| 					// We don't include the actual error into | ||||
| 					// the final error. The reason might be | ||||
| 					// we don't want to leak any info about | ||||
| 					// the private key. | ||||
| 					return nil, cferr.New(cferr.PrivateKeyError, | ||||
| 						cferr.ParseFailed) | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| @ -35,6 +39,8 @@ func ParsePrivateKeyDER(keyDER []byte) (key crypto.Signer, err error) { | ||||
| 		return generalKey.(*rsa.PrivateKey), nil | ||||
| 	case *ecdsa.PrivateKey: | ||||
| 		return generalKey.(*ecdsa.PrivateKey), nil | ||||
| 	case ed25519.PrivateKey: | ||||
| 		return generalKey.(ed25519.PrivateKey), nil | ||||
| 	} | ||||
|  | ||||
| 	// should never reach here | ||||
|  | ||||
							
								
								
									
										133
									
								
								vendor/github.com/cloudflare/cfssl/helpers/derhelpers/ed25519.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										133
									
								
								vendor/github.com/cloudflare/cfssl/helpers/derhelpers/ed25519.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,133 @@ | ||||
| package derhelpers | ||||
|  | ||||
| import ( | ||||
| 	"crypto" | ||||
| 	"crypto/x509/pkix" | ||||
| 	"encoding/asn1" | ||||
| 	"errors" | ||||
|  | ||||
| 	"golang.org/x/crypto/ed25519" | ||||
| ) | ||||
|  | ||||
| var errEd25519WrongID = errors.New("incorrect object identifier") | ||||
| var errEd25519WrongKeyType = errors.New("incorrect key type") | ||||
|  | ||||
| // ed25519OID is the OID for the Ed25519 signature scheme: see | ||||
| // https://datatracker.ietf.org/doc/draft-ietf-curdle-pkix-04. | ||||
| var ed25519OID = asn1.ObjectIdentifier{1, 3, 101, 112} | ||||
|  | ||||
| // subjectPublicKeyInfo reflects the ASN.1 object defined in the X.509 standard. | ||||
| // | ||||
| // This is defined in crypto/x509 as "publicKeyInfo". | ||||
| type subjectPublicKeyInfo struct { | ||||
| 	Algorithm pkix.AlgorithmIdentifier | ||||
| 	PublicKey asn1.BitString | ||||
| } | ||||
|  | ||||
| // MarshalEd25519PublicKey creates a DER-encoded SubjectPublicKeyInfo for an | ||||
| // ed25519 public key, as defined in | ||||
| // https://tools.ietf.org/html/draft-ietf-curdle-pkix-04. This is analagous to | ||||
| // MarshalPKIXPublicKey in crypto/x509, which doesn't currently support Ed25519. | ||||
| func MarshalEd25519PublicKey(pk crypto.PublicKey) ([]byte, error) { | ||||
| 	pub, ok := pk.(ed25519.PublicKey) | ||||
| 	if !ok { | ||||
| 		return nil, errEd25519WrongKeyType | ||||
| 	} | ||||
|  | ||||
| 	spki := subjectPublicKeyInfo{ | ||||
| 		Algorithm: pkix.AlgorithmIdentifier{ | ||||
| 			Algorithm: ed25519OID, | ||||
| 		}, | ||||
| 		PublicKey: asn1.BitString{ | ||||
| 			BitLength: len(pub) * 8, | ||||
| 			Bytes:     pub, | ||||
| 		}, | ||||
| 	} | ||||
|  | ||||
| 	return asn1.Marshal(spki) | ||||
| } | ||||
|  | ||||
| // ParseEd25519PublicKey returns the Ed25519 public key encoded by the input. | ||||
| func ParseEd25519PublicKey(der []byte) (crypto.PublicKey, error) { | ||||
| 	var spki subjectPublicKeyInfo | ||||
| 	if rest, err := asn1.Unmarshal(der, &spki); err != nil { | ||||
| 		return nil, err | ||||
| 	} else if len(rest) > 0 { | ||||
| 		return nil, errors.New("SubjectPublicKeyInfo too long") | ||||
| 	} | ||||
|  | ||||
| 	if !spki.Algorithm.Algorithm.Equal(ed25519OID) { | ||||
| 		return nil, errEd25519WrongID | ||||
| 	} | ||||
|  | ||||
| 	if spki.PublicKey.BitLength != ed25519.PublicKeySize*8 { | ||||
| 		return nil, errors.New("SubjectPublicKeyInfo PublicKey length mismatch") | ||||
| 	} | ||||
|  | ||||
| 	return ed25519.PublicKey(spki.PublicKey.Bytes), nil | ||||
| } | ||||
|  | ||||
| // oneAsymmetricKey reflects the ASN.1 structure for storing private keys in | ||||
| // https://tools.ietf.org/html/draft-ietf-curdle-pkix-04, excluding the optional | ||||
| // fields, which we don't use here. | ||||
| // | ||||
| // This is identical to pkcs8 in crypto/x509. | ||||
| type oneAsymmetricKey struct { | ||||
| 	Version    int | ||||
| 	Algorithm  pkix.AlgorithmIdentifier | ||||
| 	PrivateKey []byte | ||||
| } | ||||
|  | ||||
| // curvePrivateKey is the innter type of the PrivateKey field of | ||||
| // oneAsymmetricKey. | ||||
| type curvePrivateKey []byte | ||||
|  | ||||
| // MarshalEd25519PrivateKey returns a DER encdoing of the input private key as | ||||
| // specified in https://tools.ietf.org/html/draft-ietf-curdle-pkix-04. | ||||
| func MarshalEd25519PrivateKey(sk crypto.PrivateKey) ([]byte, error) { | ||||
| 	priv, ok := sk.(ed25519.PrivateKey) | ||||
| 	if !ok { | ||||
| 		return nil, errEd25519WrongKeyType | ||||
| 	} | ||||
|  | ||||
| 	// Marshal the innter CurvePrivateKey. | ||||
| 	curvePrivateKey, err := asn1.Marshal(priv.Seed()) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
|  | ||||
| 	// Marshal the OneAsymmetricKey. | ||||
| 	asym := oneAsymmetricKey{ | ||||
| 		Version: 0, | ||||
| 		Algorithm: pkix.AlgorithmIdentifier{ | ||||
| 			Algorithm: ed25519OID, | ||||
| 		}, | ||||
| 		PrivateKey: curvePrivateKey, | ||||
| 	} | ||||
| 	return asn1.Marshal(asym) | ||||
| } | ||||
|  | ||||
| // ParseEd25519PrivateKey returns the Ed25519 private key encoded by the input. | ||||
| func ParseEd25519PrivateKey(der []byte) (crypto.PrivateKey, error) { | ||||
| 	asym := new(oneAsymmetricKey) | ||||
| 	if rest, err := asn1.Unmarshal(der, asym); err != nil { | ||||
| 		return nil, err | ||||
| 	} else if len(rest) > 0 { | ||||
| 		return nil, errors.New("OneAsymmetricKey too long") | ||||
| 	} | ||||
|  | ||||
| 	// Check that the key type is correct. | ||||
| 	if !asym.Algorithm.Algorithm.Equal(ed25519OID) { | ||||
| 		return nil, errEd25519WrongID | ||||
| 	} | ||||
|  | ||||
| 	// Unmarshal the inner CurvePrivateKey. | ||||
| 	seed := new(curvePrivateKey) | ||||
| 	if rest, err := asn1.Unmarshal(asym.PrivateKey, seed); err != nil { | ||||
| 		return nil, err | ||||
| 	} else if len(rest) > 0 { | ||||
| 		return nil, errors.New("CurvePrivateKey too long") | ||||
| 	} | ||||
|  | ||||
| 	return ed25519.NewKeyFromSeed(*seed), nil | ||||
| } | ||||
							
								
								
									
										13
									
								
								vendor/github.com/cloudflare/cfssl/helpers/helpers.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										13
									
								
								vendor/github.com/cloudflare/cfssl/helpers/helpers.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -184,6 +184,19 @@ func HashAlgoString(alg x509.SignatureAlgorithm) string { | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // StringTLSVersion returns underlying enum values from human names for TLS | ||||
| // versions, defaults to current golang default of TLS 1.0 | ||||
| func StringTLSVersion(version string) uint16 { | ||||
| 	switch version { | ||||
| 	case "1.2": | ||||
| 		return tls.VersionTLS12 | ||||
| 	case "1.1": | ||||
| 		return tls.VersionTLS11 | ||||
| 	default: | ||||
| 		return tls.VersionTLS10 | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // EncodeCertificatesPEM encodes a number of x509 certificates to PEM | ||||
| func EncodeCertificatesPEM(certs []*x509.Certificate) []byte { | ||||
| 	var buffer bytes.Buffer | ||||
|  | ||||
		Reference in New Issue
	
	Block a user