check hosts in ssl certificates
This commit is contained in:
parent
481115e0d0
commit
331f9ea96c
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
*.sw[po]
|
39
go.mod
39
go.mod
@ -1,25 +1,28 @@
|
|||||||
module novit.nc/direktil/local-server
|
module novit.nc/direktil/local-server
|
||||||
|
|
||||||
require (
|
require (
|
||||||
cloud.google.com/go v0.24.0
|
cloud.google.com/go v0.24.0 // indirect
|
||||||
github.com/cavaliercoder/go-cpio v0.0.0-20180626203310-925f9528c45e
|
github.com/cavaliercoder/go-cpio v0.0.0-20180626203310-925f9528c45e
|
||||||
github.com/cloudflare/cfssl v0.0.0-20180705210102-ff56ab5eb62a
|
github.com/cloudflare/cfssl v0.0.0-20180705210102-ff56ab5eb62a
|
||||||
github.com/go-sql-driver/mysql v1.4.0
|
github.com/go-sql-driver/mysql v1.4.0 // indirect
|
||||||
github.com/golang/protobuf v1.1.0
|
github.com/golang/protobuf v1.1.0 // indirect
|
||||||
github.com/google/certificate-transparency-go v1.0.20
|
github.com/google/certificate-transparency-go v1.0.20 // indirect
|
||||||
github.com/googleapis/gax-go v1.0.0
|
github.com/googleapis/gax-go v1.0.0 // indirect
|
||||||
github.com/kr/pretty v0.1.0
|
github.com/kr/pretty v0.1.0 // indirect
|
||||||
github.com/mattn/go-sqlite3 v1.9.0
|
github.com/mattn/go-sqlite3 v1.9.0 // indirect
|
||||||
golang.org/x/build v0.0.0-20180706045728-5a0b491d3d31
|
golang.org/x/build v0.0.0-20180706045728-5a0b491d3d31 // indirect
|
||||||
golang.org/x/crypto v0.0.0-20180621125126-a49355c7e3f8
|
golang.org/x/crypto v0.0.0-20180621125126-a49355c7e3f8 // indirect
|
||||||
golang.org/x/net v0.0.0-20180706051357-32a936f46389
|
golang.org/x/net v0.0.0-20180706051357-32a936f46389 // indirect
|
||||||
golang.org/x/oauth2 v0.0.0-20180620175406-ef147856a6dd
|
golang.org/x/oauth2 v0.0.0-20180620175406-ef147856a6dd // indirect
|
||||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f
|
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f // indirect
|
||||||
golang.org/x/tools v0.0.0-20180706162124-435878328fa3
|
golang.org/x/tools v0.0.0-20180706162124-435878328fa3 // indirect
|
||||||
google.golang.org/api v0.0.0-20180706000841-61180b1196c9
|
google.golang.org/api v0.0.0-20180706000841-61180b1196c9 // indirect
|
||||||
google.golang.org/appengine v1.1.0
|
google.golang.org/appengine v1.1.0 // indirect
|
||||||
google.golang.org/grpc v1.13.0
|
google.golang.org/grpc v1.13.0 // indirect
|
||||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127
|
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect
|
||||||
honnef.co/go/tools v0.0.0-20180628101929-85dde8b51d3a
|
gopkg.in/yaml.v2 v2.2.1
|
||||||
|
honnef.co/go/tools v0.0.0-20180628101929-85dde8b51d3a // indirect
|
||||||
|
k8s.io/apimachinery v0.0.0-20180808233214-a7b7e4de06b2
|
||||||
|
k8s.io/kubernetes v1.11.2 // indirect
|
||||||
novit.nc/direktil/pkg v0.0.0-20180707011528-e82b59c0324d
|
novit.nc/direktil/pkg v0.0.0-20180707011528-e82b59c0324d
|
||||||
)
|
)
|
||||||
|
42
go.sum
Normal file
42
go.sum
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
cloud.google.com/go v0.24.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||||
|
github.com/cavaliercoder/go-cpio v0.0.0-20180626203310-925f9528c45e h1:mep9E//vzfjmtYUVBAvRMIW5BKTL88nidNZc8RF2lhA=
|
||||||
|
github.com/cavaliercoder/go-cpio v0.0.0-20180626203310-925f9528c45e/go.mod h1:oDpT4efm8tSYHXV5tHSdRvBet/b/QzxZ+XyyPehvm3A=
|
||||||
|
github.com/cloudflare/cfssl v0.0.0-20180705210102-ff56ab5eb62a h1:wbCZ8e4WG5hcfVKSyaqobgvEe/uZeVvkbUBX1zgr9kw=
|
||||||
|
github.com/cloudflare/cfssl v0.0.0-20180705210102-ff56ab5eb62a/go.mod h1:yMWuSON2oQp+43nFtAV/uvKQIFpSPerB57DCt9t8sSA=
|
||||||
|
github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
|
||||||
|
github.com/golang/protobuf v1.1.0 h1:0iH4Ffd/meGoXqF2lSAhZHt8X+cPgkfn/cb6Cce5Vpc=
|
||||||
|
github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||||
|
github.com/google/certificate-transparency-go v1.0.20 h1:azETE79toaBOyp+StoEBy8atzQujL0PyBPEmsEeDCXI=
|
||||||
|
github.com/google/certificate-transparency-go v1.0.20/go.mod h1:QeJfpSbVSfYc7RgB3gJFj9cbuQMMchQxrWXz8Ruopmg=
|
||||||
|
github.com/googleapis/gax-go v1.0.0/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY=
|
||||||
|
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
|
||||||
|
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
||||||
|
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||||
|
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
|
||||||
|
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||||
|
github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
|
||||||
|
github.com/ulikunitz/xz v0.5.4/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8=
|
||||||
|
golang.org/x/build v0.0.0-20180706045728-5a0b491d3d31/go.mod h1:xwoxzDSBtVMfGm9EGvIEcwZxBYS/6ALXnEvsP1TooIk=
|
||||||
|
golang.org/x/crypto v0.0.0-20180621125126-a49355c7e3f8 h1:h7zdf0RiEvWbYBKIx4b+q41xoUVnMmvsGZnIVE5syG8=
|
||||||
|
golang.org/x/crypto v0.0.0-20180621125126-a49355c7e3f8/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||||
|
golang.org/x/net v0.0.0-20180706051357-32a936f46389 h1:U+zCn5sqaq+q4hrnMrz9sgrW1yatwEOUgYkGt3u9ZOU=
|
||||||
|
golang.org/x/net v0.0.0-20180706051357-32a936f46389/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
|
golang.org/x/oauth2 v0.0.0-20180620175406-ef147856a6dd/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||||
|
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f h1:wMNYb4v58l5UBM7MYRLPG6ZhfOqbKu7X5eyFl8ZhKvA=
|
||||||
|
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/tools v0.0.0-20180706162124-435878328fa3/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
|
google.golang.org/api v0.0.0-20180706000841-61180b1196c9/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0=
|
||||||
|
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
|
||||||
|
google.golang.org/grpc v1.13.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=
|
||||||
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
|
||||||
|
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
gopkg.in/yaml.v2 v2.2.1 h1:mUhvW9EsL+naU5Q3cakzfE91YhliOondGd6ZrsDBHQE=
|
||||||
|
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
|
honnef.co/go/tools v0.0.0-20180628101929-85dde8b51d3a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||||
|
k8s.io/apimachinery v0.0.0-20180808233214-a7b7e4de06b2 h1:w/5Dvht2Wf4vRaXFDb4cWInymI8NkaMJtrs8UsJyZLI=
|
||||||
|
k8s.io/apimachinery v0.0.0-20180808233214-a7b7e4de06b2/go.mod h1:ccL7Eh7zubPUSh9A3USN90/OzHNSVN6zxzde07TDCL0=
|
||||||
|
k8s.io/kubernetes v1.11.2 h1:2/lmzYbN17Mr23mX/p4ODMm/MBWTeu2Q1Bvsw82YC40=
|
||||||
|
k8s.io/kubernetes v1.11.2/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk=
|
||||||
|
novit.nc/direktil/pkg v0.0.0-20180707011528-e82b59c0324d h1:DMk2j7F+mXAQdZD5ouIxWVosY55RmpRevgCWSikRRzU=
|
||||||
|
novit.nc/direktil/pkg v0.0.0-20180707011528-e82b59c0324d/go.mod h1:rbcL+fuxazzipTdJV8t9MW39YsdaK3pSvvhTdI9SXsc=
|
27
secrets.go
27
secrets.go
@ -5,7 +5,9 @@ import (
|
|||||||
"encoding/base32"
|
"encoding/base32"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"errors"
|
"errors"
|
||||||
|
"fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
|
"net"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
|
||||||
@ -15,6 +17,8 @@ import (
|
|||||||
"github.com/cloudflare/cfssl/initca"
|
"github.com/cloudflare/cfssl/initca"
|
||||||
"github.com/cloudflare/cfssl/signer"
|
"github.com/cloudflare/cfssl/signer"
|
||||||
"github.com/cloudflare/cfssl/signer/local"
|
"github.com/cloudflare/cfssl/signer/local"
|
||||||
|
"k8s.io/apimachinery/pkg/util/validation"
|
||||||
|
"k8s.io/apimachinery/pkg/util/validation/field"
|
||||||
)
|
)
|
||||||
|
|
||||||
type SecretData struct {
|
type SecretData struct {
|
||||||
@ -152,6 +156,29 @@ func (sd *SecretData) CA(cluster, name string) (ca *CA, err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (sd *SecretData) KeyCert(cluster, caName, name, profile, label string, req *csr.CertificateRequest) (kc *KeyCert, err error) {
|
func (sd *SecretData) KeyCert(cluster, caName, name, profile, label string, req *csr.CertificateRequest) (kc *KeyCert, err error) {
|
||||||
|
for idx, host := range req.Hosts {
|
||||||
|
if ip := net.ParseIP(host); ip != nil {
|
||||||
|
// valid IP (v4 or v6)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if host == "*" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
//for _, part := range strings.Split(host, ".") {
|
||||||
|
if errs := validation.IsDNS1123Subdomain(host); len(errs) == 0 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if errs := validation.IsWildcardDNS1123Subdomain(host); len(errs) == 0 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
path := field.NewPath(cluster, name, "hosts").Index(idx)
|
||||||
|
return nil, fmt.Errorf("%v: %q is not an IP or FQDN", path, host)
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
|
||||||
if req.CA != nil {
|
if req.CA != nil {
|
||||||
err = errors.New("no CA section allowed here")
|
err = errors.New("no CA section allowed here")
|
||||||
return
|
return
|
||||||
|
77
vendor/github.com/cavaliercoder/go-cpio/example_test.go
generated
vendored
77
vendor/github.com/cavaliercoder/go-cpio/example_test.go
generated
vendored
@ -1,77 +0,0 @@
|
|||||||
package cpio_test
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bytes"
|
|
||||||
"fmt"
|
|
||||||
"io"
|
|
||||||
"log"
|
|
||||||
"os"
|
|
||||||
|
|
||||||
"github.com/cavaliercoder/go-cpio"
|
|
||||||
)
|
|
||||||
|
|
||||||
func Example() {
|
|
||||||
// Create a buffer to write our archive to.
|
|
||||||
buf := new(bytes.Buffer)
|
|
||||||
|
|
||||||
// Create a new cpio archive.
|
|
||||||
w := cpio.NewWriter(buf)
|
|
||||||
|
|
||||||
// Add some files to the archive.
|
|
||||||
var files = []struct {
|
|
||||||
Name, Body string
|
|
||||||
}{
|
|
||||||
{"readme.txt", "This archive contains some text files."},
|
|
||||||
{"gopher.txt", "Gopher names:\nGeorge\nGeoffrey\nGonzo"},
|
|
||||||
{"todo.txt", "Get animal handling license."},
|
|
||||||
}
|
|
||||||
for _, file := range files {
|
|
||||||
hdr := &cpio.Header{
|
|
||||||
Name: file.Name,
|
|
||||||
Mode: 0600,
|
|
||||||
Size: int64(len(file.Body)),
|
|
||||||
}
|
|
||||||
if err := w.WriteHeader(hdr); err != nil {
|
|
||||||
log.Fatalln(err)
|
|
||||||
}
|
|
||||||
if _, err := w.Write([]byte(file.Body)); err != nil {
|
|
||||||
log.Fatalln(err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Make sure to check the error on Close.
|
|
||||||
if err := w.Close(); err != nil {
|
|
||||||
log.Fatalln(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Open the cpio archive for reading.
|
|
||||||
b := bytes.NewReader(buf.Bytes())
|
|
||||||
r := cpio.NewReader(b)
|
|
||||||
|
|
||||||
// Iterate through the files in the archive.
|
|
||||||
for {
|
|
||||||
hdr, err := r.Next()
|
|
||||||
if err == io.EOF {
|
|
||||||
// end of cpio archive
|
|
||||||
break
|
|
||||||
}
|
|
||||||
if err != nil {
|
|
||||||
log.Fatalln(err)
|
|
||||||
}
|
|
||||||
fmt.Printf("Contents of %s:\n", hdr.Name)
|
|
||||||
if _, err := io.Copy(os.Stdout, r); err != nil {
|
|
||||||
log.Fatalln(err)
|
|
||||||
}
|
|
||||||
fmt.Println()
|
|
||||||
}
|
|
||||||
|
|
||||||
// Output:
|
|
||||||
// Contents of readme.txt:
|
|
||||||
// This archive contains some text files.
|
|
||||||
// Contents of gopher.txt:
|
|
||||||
// Gopher names:
|
|
||||||
// George
|
|
||||||
// Geoffrey
|
|
||||||
// Gonzo
|
|
||||||
// Contents of todo.txt:
|
|
||||||
// Get animal handling license.
|
|
||||||
}
|
|
121
vendor/github.com/cavaliercoder/go-cpio/svr4_test.go
generated
vendored
121
vendor/github.com/cavaliercoder/go-cpio/svr4_test.go
generated
vendored
@ -1,121 +0,0 @@
|
|||||||
package cpio
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"io"
|
|
||||||
"log"
|
|
||||||
"os"
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
var files = []struct {
|
|
||||||
Name, Body string
|
|
||||||
}{
|
|
||||||
{"./gophers.txt", "Gopher names:\nGeorge\nGeoffrey\nGonzo"},
|
|
||||||
{"./readme.txt", "This archive contains some text files."},
|
|
||||||
{"./todo.txt", "Get animal handling license."},
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestRead(t *testing.T) {
|
|
||||||
f, err := os.Open("testdata/test_svr4_crc.cpio")
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("error opening test file: %v", err)
|
|
||||||
}
|
|
||||||
defer f.Close()
|
|
||||||
|
|
||||||
r := NewReader(f)
|
|
||||||
for {
|
|
||||||
_, err := r.Next()
|
|
||||||
if err == io.EOF {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("error moving to next header: %v", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
// TODO: validate header fields
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestSVR4CRC(t *testing.T) {
|
|
||||||
f, err := os.Open("testdata/test_svr4_crc.cpio")
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("error opening test file: %v", err)
|
|
||||||
}
|
|
||||||
defer f.Close()
|
|
||||||
|
|
||||||
w := NewHash()
|
|
||||||
r := NewReader(f)
|
|
||||||
for {
|
|
||||||
hdr, err := r.Next()
|
|
||||||
if err != nil {
|
|
||||||
if err != io.EOF {
|
|
||||||
t.Errorf("error moving to next header: %v", err)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if hdr.Mode.IsRegular() {
|
|
||||||
w.Reset()
|
|
||||||
_, err = io.CopyN(w, r, hdr.Size)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("error writing to checksum hash: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
sum := Checksum(w.Sum32())
|
|
||||||
if sum != hdr.Checksum {
|
|
||||||
t.Errorf("expected checksum %v, got %v for %v", hdr.Checksum, sum, hdr.Name)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func ExampleNewHash() {
|
|
||||||
// Open the cpio archive for reading.
|
|
||||||
f, err := os.Open("testdata/test_svr4_crc.cpio")
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal(err)
|
|
||||||
}
|
|
||||||
defer f.Close()
|
|
||||||
r := NewReader(f)
|
|
||||||
|
|
||||||
// create a Hash
|
|
||||||
h := NewHash()
|
|
||||||
|
|
||||||
// Iterate through the files in the archive.
|
|
||||||
for {
|
|
||||||
hdr, err := r.Next()
|
|
||||||
if err == io.EOF {
|
|
||||||
// end of cpio archive
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// skip symlinks, directories, etc.
|
|
||||||
if !hdr.Mode.IsRegular() {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
// read file into hash
|
|
||||||
h.Reset()
|
|
||||||
_, err = io.CopyN(h, r, hdr.Size)
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// check hash matches header checksum
|
|
||||||
sum := Checksum(h.Sum32())
|
|
||||||
if sum == hdr.Checksum {
|
|
||||||
fmt.Printf("Checksum OK: %v (%v)\n", hdr.Name, hdr.Checksum)
|
|
||||||
} else {
|
|
||||||
fmt.Printf("Checksum FAIL: %v - expected %v, got %v\n", hdr.Name, hdr.Checksum, sum)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Output:
|
|
||||||
// Checksum OK: gophers.txt (00000C98)
|
|
||||||
// Checksum OK: readme.txt (00000E3D)
|
|
||||||
// Checksum OK: todo.txt (00000A52)
|
|
||||||
}
|
|
26
vendor/github.com/cavaliercoder/go-cpio/testdata/Makefile
generated
vendored
26
vendor/github.com/cavaliercoder/go-cpio/testdata/Makefile
generated
vendored
@ -1,26 +0,0 @@
|
|||||||
SOURCES = \
|
|
||||||
gophers.txt \
|
|
||||||
readme.txt \
|
|
||||||
todo.txt \
|
|
||||||
checklist.txt
|
|
||||||
|
|
||||||
ARCHIVES = \
|
|
||||||
test_odc.cpio \
|
|
||||||
test_svr4.cpio \
|
|
||||||
test_svr4_crc.cpio
|
|
||||||
|
|
||||||
all: $(ARCHIVES)
|
|
||||||
|
|
||||||
test_odc.cpio: $(SOURCES)
|
|
||||||
echo $(SOURCES) | tr " " "\n" | cpio -o --owner=0:0 --format=odc > $@
|
|
||||||
|
|
||||||
test_svr4.cpio: $(SOURCES)
|
|
||||||
echo $(SOURCES) | tr " " "\n" | cpio -o --owner=0:0 --format=newc > $@
|
|
||||||
|
|
||||||
test_svr4_crc.cpio: $(SOURCES)
|
|
||||||
echo $(SOURCES) | tr " " "\n" | cpio -o --owner=0:0 --format=crc > $@
|
|
||||||
|
|
||||||
clean:
|
|
||||||
rm -f $(ARCHIVES) version.txt
|
|
||||||
|
|
||||||
.PHONY: all clean
|
|
1
vendor/github.com/cavaliercoder/go-cpio/testdata/checklist.txt
generated
vendored
1
vendor/github.com/cavaliercoder/go-cpio/testdata/checklist.txt
generated
vendored
@ -1 +0,0 @@
|
|||||||
todo.txt
|
|
2
vendor/github.com/cavaliercoder/go-cpio/testdata/etc/hosts
generated
vendored
2
vendor/github.com/cavaliercoder/go-cpio/testdata/etc/hosts
generated
vendored
@ -1,2 +0,0 @@
|
|||||||
127.0.0.1 localhost
|
|
||||||
::1 localhost
|
|
4
vendor/github.com/cavaliercoder/go-cpio/testdata/gophers.txt
generated
vendored
4
vendor/github.com/cavaliercoder/go-cpio/testdata/gophers.txt
generated
vendored
@ -1,4 +0,0 @@
|
|||||||
Gopher names:
|
|
||||||
George
|
|
||||||
Geoffrey
|
|
||||||
Gonzo
|
|
1
vendor/github.com/cavaliercoder/go-cpio/testdata/readme.txt
generated
vendored
1
vendor/github.com/cavaliercoder/go-cpio/testdata/readme.txt
generated
vendored
@ -1 +0,0 @@
|
|||||||
This archive contains some text files.
|
|
BIN
vendor/github.com/cavaliercoder/go-cpio/testdata/test_odc.cpio
generated
vendored
BIN
vendor/github.com/cavaliercoder/go-cpio/testdata/test_odc.cpio
generated
vendored
Binary file not shown.
BIN
vendor/github.com/cavaliercoder/go-cpio/testdata/test_svr4.cpio
generated
vendored
BIN
vendor/github.com/cavaliercoder/go-cpio/testdata/test_svr4.cpio
generated
vendored
Binary file not shown.
BIN
vendor/github.com/cavaliercoder/go-cpio/testdata/test_svr4_crc.cpio
generated
vendored
BIN
vendor/github.com/cavaliercoder/go-cpio/testdata/test_svr4_crc.cpio
generated
vendored
Binary file not shown.
1
vendor/github.com/cavaliercoder/go-cpio/testdata/todo.txt
generated
vendored
1
vendor/github.com/cavaliercoder/go-cpio/testdata/todo.txt
generated
vendored
@ -1 +0,0 @@
|
|||||||
Get animal handling license.
|
|
53
vendor/github.com/cavaliercoder/go-cpio/writer_test.go
generated
vendored
53
vendor/github.com/cavaliercoder/go-cpio/writer_test.go
generated
vendored
@ -1,53 +0,0 @@
|
|||||||
package cpio_test
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bytes"
|
|
||||||
"io"
|
|
||||||
"os"
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
cpio "github.com/cavaliercoder/go-cpio"
|
|
||||||
)
|
|
||||||
|
|
||||||
func store(w *cpio.Writer, fn string) error {
|
|
||||||
f, err := os.Open(fn)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
defer f.Close()
|
|
||||||
fi, err := f.Stat()
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
hdr, err := cpio.FileInfoHeader(fi, "")
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if err := w.WriteHeader(hdr); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if !fi.IsDir() {
|
|
||||||
if _, err := io.Copy(w, f); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestWriter(t *testing.T) {
|
|
||||||
var buf bytes.Buffer
|
|
||||||
w := cpio.NewWriter(&buf)
|
|
||||||
|
|
||||||
if err := store(w, "testdata/etc"); err != nil {
|
|
||||||
t.Fatalf("store: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := store(w, "testdata/etc/hosts"); err != nil {
|
|
||||||
t.Fatalf("store: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := w.Close(); err != nil {
|
|
||||||
t.Fatalf("Close: %v", err)
|
|
||||||
}
|
|
||||||
}
|
|
24
vendor/github.com/cloudflare/cfssl/LICENSE
generated
vendored
Normal file
24
vendor/github.com/cloudflare/cfssl/LICENSE
generated
vendored
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
Copyright (c) 2014 CloudFlare Inc.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions
|
||||||
|
are met:
|
||||||
|
|
||||||
|
Redistributions of source code must retain the above copyright notice,
|
||||||
|
this list of conditions and the following disclaimer.
|
||||||
|
|
||||||
|
Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
this list of conditions and the following disclaimer in the documentation
|
||||||
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
|
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
|
||||||
|
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
|
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||||
|
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
159
vendor/github.com/cloudflare/cfssl/auth/auth_test.go
generated
vendored
159
vendor/github.com/cloudflare/cfssl/auth/auth_test.go
generated
vendored
@ -1,159 +0,0 @@
|
|||||||
package auth
|
|
||||||
|
|
||||||
import (
|
|
||||||
"encoding/json"
|
|
||||||
"io/ioutil"
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
testProvider Provider
|
|
||||||
testProviderAD Provider
|
|
||||||
testKey = "0123456789ABCDEF0123456789ABCDEF"
|
|
||||||
testAD = []byte{1, 2, 3, 4} // IP address 1.2.3.4
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestNew(t *testing.T) {
|
|
||||||
_, err := New("ABC", nil)
|
|
||||||
if err == nil {
|
|
||||||
t.Fatal("expected failure with improperly-hex-encoded key")
|
|
||||||
}
|
|
||||||
|
|
||||||
testProvider, err = New(testKey, nil)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("%v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
testProviderAD, err = New(testKey, testAD)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("%v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
var (
|
|
||||||
testRequest1A = &AuthenticatedRequest{
|
|
||||||
Request: []byte(`testing 1 2 3`),
|
|
||||||
}
|
|
||||||
testRequest1B = &AuthenticatedRequest{
|
|
||||||
Request: []byte(`testing 1 2 3`),
|
|
||||||
}
|
|
||||||
testRequest2 = &AuthenticatedRequest{
|
|
||||||
Request: []byte(`testing 3 2 1`),
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
// Sanity check: can a newly-generated token be verified?
|
|
||||||
func TestVerifyTrue(t *testing.T) {
|
|
||||||
var err error
|
|
||||||
|
|
||||||
testRequest1A.Token, err = testProvider.Token(testRequest1A.Request)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("%v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
testRequest1B.Token, err = testProviderAD.Token(testRequest1B.Request)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("%v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if !testProvider.Verify(testRequest1A) {
|
|
||||||
t.Fatal("failed to verify request 1A")
|
|
||||||
}
|
|
||||||
|
|
||||||
if !testProviderAD.Verify(testRequest1B) {
|
|
||||||
t.Fatal("failed to verify request 1B")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Sanity check: ensure that additional data is actually used in
|
|
||||||
// verification.
|
|
||||||
func TestVerifyAD(t *testing.T) {
|
|
||||||
if testProvider.Verify(testRequest1B) {
|
|
||||||
t.Fatal("no-AD provider verifies request with AD")
|
|
||||||
}
|
|
||||||
|
|
||||||
if testProviderAD.Verify(testRequest1A) {
|
|
||||||
t.Fatal("AD provider verifies request without AD")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Sanity check: verification fails if tokens are not the same length.
|
|
||||||
func TestTokenLength(t *testing.T) {
|
|
||||||
token := testRequest1A.Token[:]
|
|
||||||
testRequest1A.Token = testRequest1A.Token[1:]
|
|
||||||
|
|
||||||
if testProvider.Verify(testRequest1A) {
|
|
||||||
t.Fatal("invalid token should not be verified")
|
|
||||||
}
|
|
||||||
|
|
||||||
testRequest1A.Token = token
|
|
||||||
}
|
|
||||||
|
|
||||||
// Sanity check: token fails validation if the request is changed.
|
|
||||||
func TestBadRequest(t *testing.T) {
|
|
||||||
testRequest2.Token = testRequest1A.Token
|
|
||||||
if testProvider.Verify(testRequest2) {
|
|
||||||
t.Fatal("bad request should fail verification")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Sanity check: a null request should fail to verify.
|
|
||||||
func TestNullRequest(t *testing.T) {
|
|
||||||
if testProvider.Verify(nil) {
|
|
||||||
t.Fatal("null request should fail verification")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Sanity check: verify a pre-generated authenticated request.
|
|
||||||
func TestPreGenerated(t *testing.T) {
|
|
||||||
in, err := ioutil.ReadFile("testdata/authrequest.json")
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("%v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
var req AuthenticatedRequest
|
|
||||||
err = json.Unmarshal(in, &req)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("%v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if !testProvider.Verify(&req) {
|
|
||||||
t.Fatal("failed to verify pre-generated request")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var bmRequest []byte
|
|
||||||
|
|
||||||
func TestLoadBenchmarkRequest(t *testing.T) {
|
|
||||||
in, err := ioutil.ReadFile("testdata/request.json")
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("%v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
bmRequest = in
|
|
||||||
}
|
|
||||||
|
|
||||||
func BenchmarkToken(b *testing.B) {
|
|
||||||
for i := 0; i < b.N; i++ {
|
|
||||||
_, err := testProvider.Token(bmRequest)
|
|
||||||
if err != nil {
|
|
||||||
b.Fatalf("%v", err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func BenchmarkVerify(b *testing.B) {
|
|
||||||
token, _ := testProvider.Token(bmRequest)
|
|
||||||
req := &AuthenticatedRequest{
|
|
||||||
Token: token,
|
|
||||||
Request: bmRequest,
|
|
||||||
}
|
|
||||||
b.ResetTimer()
|
|
||||||
|
|
||||||
for i := 0; i < b.N; i++ {
|
|
||||||
if !testProvider.Verify(req) {
|
|
||||||
b.Fatal("failed to verify request")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
1
vendor/github.com/cloudflare/cfssl/auth/testdata/authrequest.json
generated
vendored
1
vendor/github.com/cloudflare/cfssl/auth/testdata/authrequest.json
generated
vendored
@ -1 +0,0 @@
|
|||||||
{"token": "tSU1WTE/322iXrOBfJSQ9/u1dleqpwUmCj1LXYHw07Y=", "request": "ewoJImhvc3RuYW1lIjogImt5bGVpc29tLm5ldCIsCgkicmVxdWVzdCI6ICItLS0tLUJFR0lOIENFUlRJRklDQVRFIFJFUVVFU1QtLS0tLQoJICAgIE1JSUQwVENDQWpzQ0FRQXdZREVMTUFrR0ExVUVCaE1DVlZNeEVqQVFCZ05WQkFvVENXUnliM0J6YjI1a1pURVEKCSAgICBNQTRHQTFVRUN4TUhRMFl0UTJoaGRERVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeVlXNWphWE5qYnpFVE1CRUdBMVVFCgkgICAgQ0JNS1EyRnNhV1p2Y201cFlUQ0NBYUl3RFFZSktvWklodmNOQVFFQkJRQURnZ0dQQURDQ0FZb0NnZ0dCQU1jQwoJICAgIEdCbDVMVHJla0dGV2hvdGtkYlorUjFNbG9hcld4UXY5alA0QWVrdDhVT2ljeXBIdkZPNnhPdFN3SG8rcjMyaUUKCSAgICBxblM1eXYvMDFQMk1KdXlxbmRuY1RTTXNPbFQvN242N1RNMDB1MDFLLzljL3NvZ0tFS2pseXBsVFA3eUZkRy9jCgkgICAgT3UvOXFLYi9KYWxkMndFTEZZRTZ4cTJSREZ5eHlpWk9CM2c3WjdGeGE1ZDZhZGZHUndaek50VUw0LzhzK0x5aQoJICAgIHFkdzlJMWZrUWQ2MDRwb1pGTjB3clFzNGxmaFdUVWZnMHJIdWg1d2dHS1AzVnpacGJ0OEZiMXZOamZiSHRvaHgKCSAgICBHMlBDVTZKeStEYzFiU2ZVeldjUW5lbnA4NThXNEY4ejdwRjV5YmRuRlIzMTNIam9zcVhuRzI4eklUck9hZE1UCgkgICAgSGFKNnpPaGdFYWZVT1dYT3pqTm9mRkJGYTJJdUNBVCtJVFJZMXRDL2dxcHhHd0gveXVWTjE5Qkc4VXBuMCtIQQoJICAgIGllMm1LQ0hmU0JBS1QvWGU0dW1QZWF4U2JJcVdzVzhjaytkM2I0b3I5Ulp2NWNaUmNUM29pa0p0K1NRRzY5cFcKCSAgICA0T0FiYitBQnNzL05JdXJpNnowZTdERWVJTDV6bXlTSnFkdFlIZE5ZTjcrK3Y5eEJOc0w0SXNVNklFeTMrUUlECgkgICAgQVFBQm9DNHdMQVlKS29aSWh2Y05BUWtPTVI4d0hUQWJCZ05WSFJFRUZEQVNnaEJqWmk1a2NtOXdjMjl1WkdVdQoJICAgIGJtVjBNQXNHQ1NxR1NJYjNEUUVCREFPQ0FZRUFoTUFxQmlySStrMWFVM2xmQUdRaVNtOHl0T3paaWozODloSXIKCSAgICBuVXA4K1duVHVWVGI4WFozL1YrTDlFblRJbUY2dTF3ZWFqWGQzU3VlNDk1NzBMYlltSXV4QmtHcDUwL0JkVUR6CgkgICAgdUI2eHNoaEpXczEySnhVYjkxSW1tMGJUUncyek1xZXdnYTZmdHpaL0FLNG1zeFFBMlVJYmNXWmRzS2J1TTdzbwoJICAgIEpUZlZXOWlPd3FIdC82NFpqNHRCWmY5THpPRHI3a051S0tMbndqaXpIMTg3eGZJSWhkcmpGOFdTN0g5QVBCMU8KCSAgICBTdUVVRGZxaDBTV1IzbHRXdUF1VVdlbzZTS2NIVnVzeS9HNFlFK1BCeXcxZVY3RzRTYmVHNVowbytHT1VVSy9GCgkgICAgYjU1R21XMXhhNExBcnMxQSt6ZUZidkovQkFwc2JVMmI2V1ZtTmE3V3BIejdXWElGT0p1WUpnRWtWS1BKbkt1cwoJICAgIHFxczNGZ1VxejBadjdUSzhtTWlFVEpvWFpzNnpDdk15c1FldTNKL29qZ3RBanZNaHpRYzZQUy9udk90SmRJZysKCSAgICBIMHFYNDlmaHAxQnJZeXNsYWx6UUlGMCtIMHFTVWV5b1V5VjJ3YkxCQUxhcHhNZnZUVmxoTnduYWN0Y0tReHE0CgkgICAgK3dUKzJQVEowYk0vNUFWMFRPMVNQVDBBVmlKaAoJICAgIC0tLS0tRU5EIENFUlRJRklDQVRFIFJFUVVFU1QtLS0tLSIsCgkicHJvZmlsZSI6ICIiLAoJInJlbW90ZSI6ICIiLAoJImxhYmVsIjogInByaW1hcnkiCn0KCg=="}
|
|
30
vendor/github.com/cloudflare/cfssl/auth/testdata/request.json
generated
vendored
30
vendor/github.com/cloudflare/cfssl/auth/testdata/request.json
generated
vendored
@ -1,30 +0,0 @@
|
|||||||
{
|
|
||||||
"hostname": "kyleisom.net",
|
|
||||||
"request": "-----BEGIN CERTIFICATE REQUEST-----
|
|
||||||
MIID0TCCAjsCAQAwYDELMAkGA1UEBhMCVVMxEjAQBgNVBAoTCWRyb3Bzb25kZTEQ
|
|
||||||
MA4GA1UECxMHQ0YtQ2hhdDEWMBQGA1UEBxMNU2FuIEZyYW5jaXNjbzETMBEGA1UE
|
|
||||||
CBMKQ2FsaWZvcm5pYTCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAMcC
|
|
||||||
GBl5LTrekGFWhotkdbZ+R1MloarWxQv9jP4Aekt8UOicypHvFO6xOtSwHo+r32iE
|
|
||||||
qnS5yv/01P2MJuyqndncTSMsOlT/7n67TM00u01K/9c/sogKEKjlyplTP7yFdG/c
|
|
||||||
Ou/9qKb/Jald2wELFYE6xq2RDFyxyiZOB3g7Z7Fxa5d6adfGRwZzNtUL4/8s+Lyi
|
|
||||||
qdw9I1fkQd604poZFN0wrQs4lfhWTUfg0rHuh5wgGKP3VzZpbt8Fb1vNjfbHtohx
|
|
||||||
G2PCU6Jy+Dc1bSfUzWcQnenp858W4F8z7pF5ybdnFR313HjosqXnG28zITrOadMT
|
|
||||||
HaJ6zOhgEafUOWXOzjNofFBFa2IuCAT+ITRY1tC/gqpxGwH/yuVN19BG8Upn0+HA
|
|
||||||
ie2mKCHfSBAKT/Xe4umPeaxSbIqWsW8ck+d3b4or9RZv5cZRcT3oikJt+SQG69pW
|
|
||||||
4OAbb+ABss/NIuri6z0e7DEeIL5zmySJqdtYHdNYN7++v9xBNsL4IsU6IEy3+QID
|
|
||||||
AQABoC4wLAYJKoZIhvcNAQkOMR8wHTAbBgNVHREEFDASghBjZi5kcm9wc29uZGUu
|
|
||||||
bmV0MAsGCSqGSIb3DQEBDAOCAYEAhMAqBirI+k1aU3lfAGQiSm8ytOzZij389hIr
|
|
||||||
nUp8+WnTuVTb8XZ3/V+L9EnTImF6u1weajXd3Sue49570LbYmIuxBkGp50/BdUDz
|
|
||||||
uB6xshhJWs12JxUb91Imm0bTRw2zMqewga6ftzZ/AK4msxQA2UIbcWZdsKbuM7so
|
|
||||||
JTfVW9iOwqHt/64Zj4tBZf9LzODr7kNuKKLnwjizH187xfIIhdrjF8WS7H9APB1O
|
|
||||||
SuEUDfqh0SWR3ltWuAuUWeo6SKcHVusy/G4YE+PByw1eV7G4SbeG5Z0o+GOUUK/F
|
|
||||||
b55GmW1xa4LArs1A+zeFbvJ/BApsbU2b6WVmNa7WpHz7WXIFOJuYJgEkVKPJnKus
|
|
||||||
qqs3FgUqz0Zv7TK8mMiETJoXZs6zCvMysQeu3J/ojgtAjvMhzQc6PS/nvOtJdIg+
|
|
||||||
H0qX49fhp1BrYyslalzQIF0+H0qSUeyoUyV2wbLBALapxMfvTVlhNwnactcKQxq4
|
|
||||||
+wT+2PTJ0bM/5AV0TO1SPT0AViJh
|
|
||||||
-----END CERTIFICATE REQUEST-----",
|
|
||||||
"profile": "",
|
|
||||||
"remote": "",
|
|
||||||
"label": "primary"
|
|
||||||
}
|
|
||||||
|
|
537
vendor/github.com/cloudflare/cfssl/config/config_test.go
generated
vendored
537
vendor/github.com/cloudflare/cfssl/config/config_test.go
generated
vendored
@ -1,537 +0,0 @@
|
|||||||
package config
|
|
||||||
|
|
||||||
import (
|
|
||||||
"encoding/json"
|
|
||||||
"fmt"
|
|
||||||
"testing"
|
|
||||||
"time"
|
|
||||||
)
|
|
||||||
|
|
||||||
var expiry = 1 * time.Minute
|
|
||||||
|
|
||||||
var invalidProfileConfig = &Config{
|
|
||||||
Signing: &Signing{
|
|
||||||
Profiles: map[string]*SigningProfile{
|
|
||||||
"invalid": {
|
|
||||||
Usage: []string{"wiretapping"},
|
|
||||||
Expiry: expiry,
|
|
||||||
},
|
|
||||||
"empty": {},
|
|
||||||
},
|
|
||||||
Default: &SigningProfile{
|
|
||||||
Usage: []string{"digital signature"},
|
|
||||||
Expiry: expiry,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
var invalidDefaultConfig = &Config{
|
|
||||||
Signing: &Signing{
|
|
||||||
Profiles: map[string]*SigningProfile{
|
|
||||||
"key usage": {
|
|
||||||
Usage: []string{"digital signature"},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Default: &SigningProfile{
|
|
||||||
Usage: []string{"s/mime"},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
var validConfig = &Config{
|
|
||||||
Signing: &Signing{
|
|
||||||
Profiles: map[string]*SigningProfile{
|
|
||||||
"valid": {
|
|
||||||
Usage: []string{"digital signature"},
|
|
||||||
Expiry: expiry,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Default: &SigningProfile{
|
|
||||||
Usage: []string{"digital signature"},
|
|
||||||
Expiry: expiry,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
var validMixedConfig = `
|
|
||||||
{
|
|
||||||
"signing": {
|
|
||||||
"profiles": {
|
|
||||||
"CA": {
|
|
||||||
"auth_key": "sample",
|
|
||||||
"remote": "localhost"
|
|
||||||
},
|
|
||||||
"email": {
|
|
||||||
"usages": ["s/mime"],
|
|
||||||
"expiry": "720h"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"default": {
|
|
||||||
"usages": ["digital signature", "email protection"],
|
|
||||||
"expiry": "8000h"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"auth_keys": {
|
|
||||||
"sample": {
|
|
||||||
"type":"standard",
|
|
||||||
"key":"0123456789ABCDEF0123456789ABCDEF"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"remotes": {
|
|
||||||
"localhost": "127.0.0.1:8888"
|
|
||||||
}
|
|
||||||
}`
|
|
||||||
|
|
||||||
var validMinimalRemoteConfig = `
|
|
||||||
{
|
|
||||||
"signing": {
|
|
||||||
"default": {
|
|
||||||
"auth_key": "sample",
|
|
||||||
"remote": "localhost"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"auth_keys": {
|
|
||||||
"sample": {
|
|
||||||
"type":"standard",
|
|
||||||
"key":"0123456789ABCDEF0123456789ABCDEF"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"remotes": {
|
|
||||||
"localhost": "127.0.0.1:8888"
|
|
||||||
}
|
|
||||||
}`
|
|
||||||
|
|
||||||
var validMinimalRemoteConfig2 = `
|
|
||||||
{
|
|
||||||
"signing": {
|
|
||||||
"default": {
|
|
||||||
"auth_remote":{
|
|
||||||
"auth_key": "sample",
|
|
||||||
"remote": "localhost"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"auth_keys": {
|
|
||||||
"sample": {
|
|
||||||
"type":"standard",
|
|
||||||
"key":"0123456789ABCDEF0123456789ABCDEF"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"remotes": {
|
|
||||||
"localhost": "127.0.0.1:8888"
|
|
||||||
}
|
|
||||||
}`
|
|
||||||
|
|
||||||
var invalidConflictRemoteConfig = `
|
|
||||||
{
|
|
||||||
"signing": {
|
|
||||||
"default": {
|
|
||||||
"auth_remote":{
|
|
||||||
"auth_key": "sample",
|
|
||||||
"remote": "localhost"
|
|
||||||
},
|
|
||||||
"remote": "localhost"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"auth_keys": {
|
|
||||||
"sample": {
|
|
||||||
"type":"standard",
|
|
||||||
"key":"0123456789ABCDEF0123456789ABCDEF"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"remotes": {
|
|
||||||
"localhost": "127.0.0.1:8888"
|
|
||||||
}
|
|
||||||
}`
|
|
||||||
|
|
||||||
var invalidRemoteConfig = `
|
|
||||||
{
|
|
||||||
"signing": {
|
|
||||||
"default": {
|
|
||||||
"auth_remotes_typos":{
|
|
||||||
"auth_key": "sample",
|
|
||||||
"remote": "localhost"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"auth_keys": {
|
|
||||||
"sample": {
|
|
||||||
"type":"standard",
|
|
||||||
"key":"0123456789ABCDEF0123456789ABCDEF"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"remotes": {
|
|
||||||
"localhost": "127.0.0.1:8888"
|
|
||||||
}
|
|
||||||
}`
|
|
||||||
|
|
||||||
var invalidAuthRemoteConfigMissingRemote = `
|
|
||||||
{
|
|
||||||
"signing": {
|
|
||||||
"default": {
|
|
||||||
"auth_remote":{
|
|
||||||
"auth_key": "sample"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"auth_keys": {
|
|
||||||
"sample": {
|
|
||||||
"type":"standard",
|
|
||||||
"key":"0123456789ABCDEF0123456789ABCDEF"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"remotes": {
|
|
||||||
"localhost": "127.0.0.1:8888"
|
|
||||||
}
|
|
||||||
}`
|
|
||||||
|
|
||||||
var invalidAuthRemoteConfigMissingKey = `
|
|
||||||
{
|
|
||||||
"signing": {
|
|
||||||
"default": {
|
|
||||||
"auth_remote":{
|
|
||||||
"remote": "localhost"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"auth_keys": {
|
|
||||||
"sample": {
|
|
||||||
"type":"standard",
|
|
||||||
"key":"0123456789ABCDEF0123456789ABCDEF"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"remotes": {
|
|
||||||
"localhost": "127.0.0.1:8888"
|
|
||||||
}
|
|
||||||
}`
|
|
||||||
|
|
||||||
var validMinimalLocalConfig = `
|
|
||||||
{
|
|
||||||
"signing": {
|
|
||||||
"default": {
|
|
||||||
"usages": ["digital signature", "email protection"],
|
|
||||||
"expiry": "8000h"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}`
|
|
||||||
|
|
||||||
var validLocalConfigsWithCAConstraint = []string{
|
|
||||||
`{
|
|
||||||
"signing": {
|
|
||||||
"default": {
|
|
||||||
"usages": ["digital signature", "email protection"],
|
|
||||||
"ca_constraint": { "is_ca": true },
|
|
||||||
"expiry": "8000h"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}`,
|
|
||||||
`{
|
|
||||||
"signing": {
|
|
||||||
"default": {
|
|
||||||
"usages": ["digital signature", "email protection"],
|
|
||||||
"ca_constraint": { "is_ca": true, "max_path_len": 1 },
|
|
||||||
"expiry": "8000h"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}`,
|
|
||||||
`{
|
|
||||||
"signing": {
|
|
||||||
"default": {
|
|
||||||
"usages": ["digital signature", "email protection"],
|
|
||||||
"ca_constraint": { "is_ca": true, "max_path_len_zero": true },
|
|
||||||
"expiry": "8000h"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}`,
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestInvalidProfile(t *testing.T) {
|
|
||||||
if invalidProfileConfig.Signing.Profiles["invalid"].validProfile(false) {
|
|
||||||
t.Fatal("invalid profile accepted as valid")
|
|
||||||
}
|
|
||||||
|
|
||||||
if invalidProfileConfig.Signing.Profiles["empty"].validProfile(false) {
|
|
||||||
t.Fatal("invalid profile accepted as valid")
|
|
||||||
}
|
|
||||||
|
|
||||||
if invalidProfileConfig.Valid() {
|
|
||||||
t.Fatal("invalid config accepted as valid")
|
|
||||||
}
|
|
||||||
|
|
||||||
if !invalidProfileConfig.Signing.Profiles["invalid"].validProfile(true) {
|
|
||||||
t.Fatal("invalid profile should be a valid default profile")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestRemoteProfiles(t *testing.T) {
|
|
||||||
var validRemoteProfile = &SigningProfile{
|
|
||||||
RemoteName: "localhost",
|
|
||||||
RemoteServer: "localhost:8080",
|
|
||||||
}
|
|
||||||
|
|
||||||
var invalidRemoteProfile = &SigningProfile{
|
|
||||||
RemoteName: "localhost",
|
|
||||||
}
|
|
||||||
|
|
||||||
var invalidRemoteAuthProfile = &SigningProfile{
|
|
||||||
RemoteName: "localhost",
|
|
||||||
RemoteServer: "localhost:8080",
|
|
||||||
AuthKeyName: "blahblah",
|
|
||||||
}
|
|
||||||
|
|
||||||
if !validRemoteProfile.validProfile(true) ||
|
|
||||||
!validRemoteProfile.validProfile(false) {
|
|
||||||
t.Fatal("valid remote profile is rejected.")
|
|
||||||
}
|
|
||||||
|
|
||||||
if invalidRemoteProfile.validProfile(true) ||
|
|
||||||
invalidRemoteProfile.validProfile(false) {
|
|
||||||
t.Fatal("invalid remote profile is accepted.")
|
|
||||||
}
|
|
||||||
|
|
||||||
if invalidRemoteAuthProfile.validProfile(true) ||
|
|
||||||
invalidRemoteAuthProfile.validProfile(false) {
|
|
||||||
t.Fatal("invalid remote profile is accepted.")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestInvalidDefault(t *testing.T) {
|
|
||||||
if invalidDefaultConfig.Signing.Default.validProfile(true) {
|
|
||||||
t.Fatal("invalid default accepted as valid")
|
|
||||||
}
|
|
||||||
|
|
||||||
if invalidDefaultConfig.Valid() {
|
|
||||||
t.Fatal("invalid config accepted as valid")
|
|
||||||
}
|
|
||||||
|
|
||||||
if !invalidDefaultConfig.Signing.Default.validProfile(false) {
|
|
||||||
t.Fatal("invalid default profile should be a valid profile")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestValidConfig(t *testing.T) {
|
|
||||||
if !validConfig.Valid() {
|
|
||||||
t.Fatal("Valid config is not valid")
|
|
||||||
}
|
|
||||||
bytes, _ := json.Marshal(validConfig)
|
|
||||||
fmt.Printf("%v", string(bytes))
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestDefaultConfig(t *testing.T) {
|
|
||||||
if !DefaultConfig().validProfile(false) {
|
|
||||||
t.Fatal("global default signing profile should be a valid profile.")
|
|
||||||
}
|
|
||||||
|
|
||||||
if !DefaultConfig().validProfile(true) {
|
|
||||||
t.Fatal("global default signing profile should be a valid default profile")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestParse(t *testing.T) {
|
|
||||||
var validProfiles = []*SigningProfile{
|
|
||||||
{
|
|
||||||
ExpiryString: "8760h",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
ExpiryString: "168h",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
ExpiryString: "300s",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
var invalidProfiles = []*SigningProfile{
|
|
||||||
nil,
|
|
||||||
{},
|
|
||||||
{
|
|
||||||
ExpiryString: "",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
ExpiryString: "365d",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
ExpiryString: "1y",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
ExpiryString: "one year",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, p := range validProfiles {
|
|
||||||
if p.populate(nil) != nil {
|
|
||||||
t.Fatalf("Failed to parse ExpiryString=%s", p.ExpiryString)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, p := range invalidProfiles {
|
|
||||||
if p.populate(nil) == nil {
|
|
||||||
if p != nil {
|
|
||||||
t.Fatalf("ExpiryString=%s should not be parseable", p.ExpiryString)
|
|
||||||
}
|
|
||||||
t.Fatalf("Nil profile should not be parseable")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestLoadFile(t *testing.T) {
|
|
||||||
validConfigFiles := []string{
|
|
||||||
"testdata/valid_config.json",
|
|
||||||
"testdata/valid_config_auth.json",
|
|
||||||
"testdata/valid_config_no_default.json",
|
|
||||||
"testdata/valid_config_auth_no_default.json",
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, configFile := range validConfigFiles {
|
|
||||||
_, err := LoadFile(configFile)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal("Load valid config file failed.", configFile, "error is ", err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestLoadInvalidConfigFile(t *testing.T) {
|
|
||||||
invalidConfigFiles := []string{"", "testdata/no_such_file",
|
|
||||||
"testdata/invalid_default.json",
|
|
||||||
"testdata/invalid_profiles.json",
|
|
||||||
"testdata/invalid_usage.json",
|
|
||||||
"testdata/invalid_config.json",
|
|
||||||
"testdata/invalid_auth.json",
|
|
||||||
"testdata/invalid_auth_bad_key.json",
|
|
||||||
"testdata/invalid_no_auth_keys.json",
|
|
||||||
"testdata/invalid_remote.json",
|
|
||||||
"testdata/invalid_no_remotes.json",
|
|
||||||
}
|
|
||||||
for _, configFile := range invalidConfigFiles {
|
|
||||||
_, err := LoadFile(configFile)
|
|
||||||
if err == nil {
|
|
||||||
t.Fatal("Invalid config is loaded.", configFile)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestNeedLocalSigner(t *testing.T) {
|
|
||||||
|
|
||||||
c, err := LoadConfig([]byte(validMixedConfig))
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal("load valid config failed:", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// This signing config needs both local signer and remote signer.
|
|
||||||
if c.Signing.NeedsLocalSigner() != true {
|
|
||||||
t.Fatal("incorrect NeedsLocalSigner().")
|
|
||||||
}
|
|
||||||
|
|
||||||
if c.Signing.NeedsRemoteSigner() != true {
|
|
||||||
t.Fatal("incorrect NeedsRemoteSigner()")
|
|
||||||
}
|
|
||||||
|
|
||||||
remoteConfig, err := LoadConfig([]byte(validMinimalRemoteConfig))
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal("Load valid config failed:", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if remoteConfig.Signing.NeedsLocalSigner() != false {
|
|
||||||
t.Fatal("incorrect NeedsLocalSigner().")
|
|
||||||
}
|
|
||||||
|
|
||||||
if remoteConfig.Signing.NeedsRemoteSigner() != true {
|
|
||||||
t.Fatal("incorrect NeedsRemoteSigner().")
|
|
||||||
}
|
|
||||||
|
|
||||||
localConfig, err := LoadConfig([]byte(validMinimalLocalConfig))
|
|
||||||
if localConfig.Signing.NeedsLocalSigner() != true {
|
|
||||||
t.Fatal("incorrect NeedsLocalSigner().")
|
|
||||||
}
|
|
||||||
|
|
||||||
if localConfig.Signing.NeedsRemoteSigner() != false {
|
|
||||||
t.Fatal("incorrect NeedsRemoteSigner().")
|
|
||||||
}
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestOverrideRemotes(t *testing.T) {
|
|
||||||
c, err := LoadConfig([]byte(validMixedConfig))
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal("load valid config failed:", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
host := "localhost:8888"
|
|
||||||
c.Signing.OverrideRemotes(host)
|
|
||||||
|
|
||||||
if c.Signing.Default.RemoteServer != host {
|
|
||||||
t.Fatal("should override default profile's RemoteServer")
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, p := range c.Signing.Profiles {
|
|
||||||
if p.RemoteServer != host {
|
|
||||||
t.Fatal("failed to override profile's RemoteServer")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestAuthRemoteConfig(t *testing.T) {
|
|
||||||
c, err := LoadConfig([]byte(validMinimalRemoteConfig2))
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal("load valid config failed:", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if c.Signing.Default.RemoteServer != "127.0.0.1:8888" {
|
|
||||||
t.Fatal("load valid config failed: incorrect remote server")
|
|
||||||
}
|
|
||||||
|
|
||||||
host := "localhost:8888"
|
|
||||||
c.Signing.OverrideRemotes(host)
|
|
||||||
|
|
||||||
if c.Signing.Default.RemoteServer != host {
|
|
||||||
t.Fatal("should override default profile's RemoteServer")
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, p := range c.Signing.Profiles {
|
|
||||||
if p.RemoteServer != host {
|
|
||||||
t.Fatal("failed to override profile's RemoteServer")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestDuplicateRemoteConfig(t *testing.T) {
|
|
||||||
_, err := LoadConfig([]byte(invalidConflictRemoteConfig))
|
|
||||||
if err == nil {
|
|
||||||
t.Fatal("fail to reject invalid config")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestBadAuthRemoteConfig(t *testing.T) {
|
|
||||||
_, err := LoadConfig([]byte(invalidRemoteConfig))
|
|
||||||
if err == nil {
|
|
||||||
t.Fatal("load invalid config should failed")
|
|
||||||
}
|
|
||||||
|
|
||||||
_, err = LoadConfig([]byte(invalidAuthRemoteConfigMissingRemote))
|
|
||||||
if err == nil {
|
|
||||||
t.Fatal("load invalid config should failed")
|
|
||||||
}
|
|
||||||
|
|
||||||
_, err = LoadConfig([]byte(invalidAuthRemoteConfigMissingKey))
|
|
||||||
if err == nil {
|
|
||||||
t.Fatal("load invalid config should failed")
|
|
||||||
}
|
|
||||||
|
|
||||||
var p *Signing
|
|
||||||
if p.Valid() {
|
|
||||||
t.Fatal("nil Signing config should be invalid")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestValidCAConstraint(t *testing.T) {
|
|
||||||
for _, config := range validLocalConfigsWithCAConstraint {
|
|
||||||
_, err := LoadConfig([]byte(config))
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal("can't parse valid ca constraint")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
27
vendor/github.com/cloudflare/cfssl/config/testdata/invalid_auth.json
generated
vendored
27
vendor/github.com/cloudflare/cfssl/config/testdata/invalid_auth.json
generated
vendored
@ -1,27 +0,0 @@
|
|||||||
{
|
|
||||||
"signing": {
|
|
||||||
"profiles": {
|
|
||||||
"CA": {
|
|
||||||
"remote": "localhost",
|
|
||||||
"auth_key": "garbage"
|
|
||||||
},
|
|
||||||
"email": {
|
|
||||||
"usages": ["s/mime"],
|
|
||||||
"expiry": "720h"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"default": {
|
|
||||||
"usages": ["digital signature", "email protection"],
|
|
||||||
"expiry": "8000h"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"auth_keys": {
|
|
||||||
"garbage": {
|
|
||||||
"type":"stadardo",
|
|
||||||
"key":"0123456789ABCDEF0123456789ABCDEF"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"remotes": {
|
|
||||||
"localhost": "127.0.0.1:8888"
|
|
||||||
}
|
|
||||||
}
|
|
27
vendor/github.com/cloudflare/cfssl/config/testdata/invalid_auth_bad_key.json
generated
vendored
27
vendor/github.com/cloudflare/cfssl/config/testdata/invalid_auth_bad_key.json
generated
vendored
@ -1,27 +0,0 @@
|
|||||||
{
|
|
||||||
"signing": {
|
|
||||||
"profiles": {
|
|
||||||
"CA": {
|
|
||||||
"remote": "localhost",
|
|
||||||
"auth_key": "garbage"
|
|
||||||
},
|
|
||||||
"email": {
|
|
||||||
"usages": ["s/mime"],
|
|
||||||
"expiry": "720h"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"default": {
|
|
||||||
"usages": ["digital signature", "email protection"],
|
|
||||||
"expiry": "8000h"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"auth_keys": {
|
|
||||||
"garbage": {
|
|
||||||
"type":"standard",
|
|
||||||
"key":"BAD_KEY"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"remotes": {
|
|
||||||
"localhost": "127.0.0.1:8888"
|
|
||||||
}
|
|
||||||
}
|
|
17
vendor/github.com/cloudflare/cfssl/config/testdata/invalid_config.json
generated
vendored
17
vendor/github.com/cloudflare/cfssl/config/testdata/invalid_config.json
generated
vendored
@ -1,17 +0,0 @@
|
|||||||
{
|
|
||||||
"signing": {
|
|
||||||
"profiles": {
|
|
||||||
"CA": {
|
|
||||||
"usages": ["cert sign"],
|
|
||||||
"expiry": "720h"
|
|
||||||
},
|
|
||||||
"email": {
|
|
||||||
"usages": ["s/mime"],
|
|
||||||
"expiry": "720h"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"default": {
|
|
||||||
"usages": ["digital signature", "email protection"],
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
18
vendor/github.com/cloudflare/cfssl/config/testdata/invalid_default.json
generated
vendored
18
vendor/github.com/cloudflare/cfssl/config/testdata/invalid_default.json
generated
vendored
@ -1,18 +0,0 @@
|
|||||||
{
|
|
||||||
"signing": {
|
|
||||||
"profiles": {
|
|
||||||
"CA": {
|
|
||||||
"usages": ["cert sign"],
|
|
||||||
"expiry": "720h"
|
|
||||||
},
|
|
||||||
"email": {
|
|
||||||
"usages": ["s/mime"],
|
|
||||||
"expiry": "720h"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"default": {
|
|
||||||
"usages": ["digital signature", "email protection"],
|
|
||||||
"expiry": "invalid_expiry"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
23
vendor/github.com/cloudflare/cfssl/config/testdata/invalid_no_auth_keys.json
generated
vendored
23
vendor/github.com/cloudflare/cfssl/config/testdata/invalid_no_auth_keys.json
generated
vendored
@ -1,23 +0,0 @@
|
|||||||
{
|
|
||||||
"signing": {
|
|
||||||
"profiles": {
|
|
||||||
"CA": {
|
|
||||||
"remote": "localhost",
|
|
||||||
"auth_key": "garbage"
|
|
||||||
},
|
|
||||||
"email": {
|
|
||||||
"usages": ["s/mime"],
|
|
||||||
"expiry": "720h"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"default": {
|
|
||||||
"usages": ["digital signature", "email protection"],
|
|
||||||
"expiry": "8000h"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"auth_keys": {
|
|
||||||
},
|
|
||||||
"remotes": {
|
|
||||||
"localhost": "127.0.0.1:8888"
|
|
||||||
}
|
|
||||||
}
|
|
24
vendor/github.com/cloudflare/cfssl/config/testdata/invalid_no_remotes.json
generated
vendored
24
vendor/github.com/cloudflare/cfssl/config/testdata/invalid_no_remotes.json
generated
vendored
@ -1,24 +0,0 @@
|
|||||||
{
|
|
||||||
"signing": {
|
|
||||||
"profiles": {
|
|
||||||
"CA": {
|
|
||||||
"auth_key": "garbage",
|
|
||||||
"remote": "localhoster"
|
|
||||||
},
|
|
||||||
"email": {
|
|
||||||
"usages": ["s/mime"],
|
|
||||||
"expiry": "720h"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"default": {
|
|
||||||
"usages": ["digital signature", "email protection"],
|
|
||||||
"expiry": "8000h"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"auth_keys": {
|
|
||||||
"garbage": {
|
|
||||||
"type":"standard",
|
|
||||||
"key":"0123456789ABCDEF0123456789ABCDEF"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
18
vendor/github.com/cloudflare/cfssl/config/testdata/invalid_profile.json
generated
vendored
18
vendor/github.com/cloudflare/cfssl/config/testdata/invalid_profile.json
generated
vendored
@ -1,18 +0,0 @@
|
|||||||
{
|
|
||||||
"signing": {
|
|
||||||
"profiles": {
|
|
||||||
"CA": {
|
|
||||||
"usages": ["cert sign"],
|
|
||||||
"expiry": "720h"
|
|
||||||
},
|
|
||||||
"email": {
|
|
||||||
"usages": ["s/mime"],
|
|
||||||
"expiry": "invalid_expiry"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"default": {
|
|
||||||
"usages": ["digital signature", "email protection"],
|
|
||||||
"expiry": "8000h"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
27
vendor/github.com/cloudflare/cfssl/config/testdata/invalid_remotes.json
generated
vendored
27
vendor/github.com/cloudflare/cfssl/config/testdata/invalid_remotes.json
generated
vendored
@ -1,27 +0,0 @@
|
|||||||
{
|
|
||||||
"signing": {
|
|
||||||
"profiles": {
|
|
||||||
"CA": {
|
|
||||||
"auth_key": "garbage",
|
|
||||||
"remote": "localhoster"
|
|
||||||
},
|
|
||||||
"email": {
|
|
||||||
"usages": ["s/mime"],
|
|
||||||
"expiry": "720h"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"default": {
|
|
||||||
"usages": ["digital signature", "email protection"],
|
|
||||||
"expiry": "8000h"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"auth_keys": {
|
|
||||||
"garbage": {
|
|
||||||
"type":"standard",
|
|
||||||
"key":"0123456789ABCDEF0123456789ABCDEF"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"remotes": {
|
|
||||||
"localhost": "127.0.0.1:8888"
|
|
||||||
}
|
|
||||||
}
|
|
18
vendor/github.com/cloudflare/cfssl/config/testdata/invalid_usage.json
generated
vendored
18
vendor/github.com/cloudflare/cfssl/config/testdata/invalid_usage.json
generated
vendored
@ -1,18 +0,0 @@
|
|||||||
{
|
|
||||||
"signing": {
|
|
||||||
"profiles": {
|
|
||||||
"CA": {
|
|
||||||
"usages": ["cert sign"],
|
|
||||||
"expiry": "720h"
|
|
||||||
},
|
|
||||||
"email": {
|
|
||||||
"usages": ["BAD_USAGE"],
|
|
||||||
"expiry": "720h"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"default": {
|
|
||||||
"usages": ["digital signature", "email protection"],
|
|
||||||
"expiry": "8000h"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
24
vendor/github.com/cloudflare/cfssl/config/testdata/valid_config.json
generated
vendored
24
vendor/github.com/cloudflare/cfssl/config/testdata/valid_config.json
generated
vendored
@ -1,24 +0,0 @@
|
|||||||
{
|
|
||||||
"signing": {
|
|
||||||
"profiles": {
|
|
||||||
"CA": {
|
|
||||||
"usages": ["cert sign"],
|
|
||||||
"expiry": "720h"
|
|
||||||
},
|
|
||||||
"email": {
|
|
||||||
"usages": ["s/mime"],
|
|
||||||
"expiry": "720h"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"default": {
|
|
||||||
"usages": ["digital signature", "email protection"],
|
|
||||||
"expiry": "8000h"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"auth_key": {
|
|
||||||
"garbage": {
|
|
||||||
"type":"standard",
|
|
||||||
"key":"0123456789ABCDEF0123456789ABCDEF"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
29
vendor/github.com/cloudflare/cfssl/config/testdata/valid_config_auth.json
generated
vendored
29
vendor/github.com/cloudflare/cfssl/config/testdata/valid_config_auth.json
generated
vendored
@ -1,29 +0,0 @@
|
|||||||
{
|
|
||||||
"signing": {
|
|
||||||
"profiles": {
|
|
||||||
"CA": {
|
|
||||||
"usages": ["cert sign"],
|
|
||||||
"expiry": "720h",
|
|
||||||
"auth_key": "garbage",
|
|
||||||
"remote": "localhost"
|
|
||||||
},
|
|
||||||
"email": {
|
|
||||||
"usages": ["s/mime"],
|
|
||||||
"expiry": "720h"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"default": {
|
|
||||||
"usages": ["digital signature", "email protection"],
|
|
||||||
"expiry": "8000h"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"auth_keys": {
|
|
||||||
"garbage": {
|
|
||||||
"type":"standard",
|
|
||||||
"key":"0123456789ABCDEF0123456789ABCDEF"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"remotes": {
|
|
||||||
"localhost": "127.0.0.1:8888"
|
|
||||||
}
|
|
||||||
}
|
|
19
vendor/github.com/cloudflare/cfssl/config/testdata/valid_config_auth_no_default.json
generated
vendored
19
vendor/github.com/cloudflare/cfssl/config/testdata/valid_config_auth_no_default.json
generated
vendored
@ -1,19 +0,0 @@
|
|||||||
{
|
|
||||||
"signing": {
|
|
||||||
"profiles": {
|
|
||||||
"CA": {
|
|
||||||
"auth_key": "garbage",
|
|
||||||
"remote": "localhost"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"auth_keys": {
|
|
||||||
"garbage": {
|
|
||||||
"type":"standard",
|
|
||||||
"key":"0123456789ABCDEF0123456789ABCDEF"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"remotes": {
|
|
||||||
"localhost": "127.0.0.1:8888"
|
|
||||||
}
|
|
||||||
}
|
|
14
vendor/github.com/cloudflare/cfssl/config/testdata/valid_config_no_default.json
generated
vendored
14
vendor/github.com/cloudflare/cfssl/config/testdata/valid_config_no_default.json
generated
vendored
@ -1,14 +0,0 @@
|
|||||||
{
|
|
||||||
"signing": {
|
|
||||||
"profiles": {
|
|
||||||
"CA": {
|
|
||||||
"usages": ["cert sign"],
|
|
||||||
"expiry": "720h"
|
|
||||||
},
|
|
||||||
"email": {
|
|
||||||
"usages": ["s/mime"],
|
|
||||||
"expiry": "720h"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
744
vendor/github.com/cloudflare/cfssl/csr/csr_test.go
generated
vendored
744
vendor/github.com/cloudflare/cfssl/csr/csr_test.go
generated
vendored
@ -1,744 +0,0 @@
|
|||||||
package csr
|
|
||||||
|
|
||||||
import (
|
|
||||||
"crypto"
|
|
||||||
"crypto/ecdsa"
|
|
||||||
"crypto/elliptic"
|
|
||||||
"crypto/rsa"
|
|
||||||
"crypto/x509"
|
|
||||||
"encoding/asn1"
|
|
||||||
"encoding/pem"
|
|
||||||
"io/ioutil"
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"github.com/cloudflare/cfssl/errors"
|
|
||||||
"github.com/cloudflare/cfssl/helpers"
|
|
||||||
)
|
|
||||||
|
|
||||||
//TestNew validate the CertificateRequest created to return with a BasicKeyRequest
|
|
||||||
//in KeyRequest field
|
|
||||||
|
|
||||||
func TestNew(t *testing.T) {
|
|
||||||
|
|
||||||
if cr := New(); cr.KeyRequest == nil {
|
|
||||||
t.Fatalf("Should create a new, empty certificate request with BasicKeyRequest")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// TestBasicKeyRequest ensures that key generation returns the same type of
|
|
||||||
// key specified in the BasicKeyRequest.
|
|
||||||
func TestBasicKeyRequest(t *testing.T) {
|
|
||||||
kr := NewBasicKeyRequest()
|
|
||||||
priv, err := kr.Generate()
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("%v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
switch priv.(type) {
|
|
||||||
case *rsa.PrivateKey:
|
|
||||||
if kr.Algo() != "rsa" {
|
|
||||||
t.Fatal("RSA key generated, but expected", kr.Algo())
|
|
||||||
}
|
|
||||||
case *ecdsa.PrivateKey:
|
|
||||||
if kr.Algo() != "ecdsa" {
|
|
||||||
t.Fatal("ECDSA key generated, but expected", kr.Algo())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// TestPKIXName validates building a pkix.Name structure from a
|
|
||||||
// CertificateRequest.
|
|
||||||
func TestPKIXName(t *testing.T) {
|
|
||||||
var cr = &CertificateRequest{
|
|
||||||
CN: "Test Common Name",
|
|
||||||
Names: []Name{
|
|
||||||
{
|
|
||||||
C: "US",
|
|
||||||
ST: "California",
|
|
||||||
L: "San Francisco",
|
|
||||||
O: "CloudFlare, Inc.",
|
|
||||||
OU: "Systems Engineering",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
C: "GB",
|
|
||||||
ST: "London",
|
|
||||||
L: "London",
|
|
||||||
O: "CloudFlare, Inc",
|
|
||||||
OU: "Systems Engineering",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Hosts: []string{"cloudflare.com", "www.cloudflare.com"},
|
|
||||||
KeyRequest: NewBasicKeyRequest(),
|
|
||||||
}
|
|
||||||
|
|
||||||
name := cr.Name()
|
|
||||||
if len(name.Country) != 2 {
|
|
||||||
t.Fatal("Expected two countries in SubjInfo.")
|
|
||||||
} else if len(name.Province) != 2 {
|
|
||||||
t.Fatal("Expected two states in SubjInfo.")
|
|
||||||
} else if len(name.Locality) != 2 {
|
|
||||||
t.Fatal("Expected two localities in SubjInfo.")
|
|
||||||
} else if len(name.Country) != 2 {
|
|
||||||
t.Fatal("Expected two countries in SubjInfo.")
|
|
||||||
} else if len(name.Organization) != 2 {
|
|
||||||
t.Fatal("Expected two organization in SubjInfo.")
|
|
||||||
} else if len(name.OrganizationalUnit) != 2 {
|
|
||||||
t.Fatal("Expected two organizational units in SubjInfo.")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// TestParseRequest ensures that a valid certificate request does not
|
|
||||||
// error.
|
|
||||||
func TestParseRequest(t *testing.T) {
|
|
||||||
var cr = &CertificateRequest{
|
|
||||||
CN: "Test Common Name",
|
|
||||||
Names: []Name{
|
|
||||||
{
|
|
||||||
C: "US",
|
|
||||||
ST: "California",
|
|
||||||
L: "San Francisco",
|
|
||||||
O: "CloudFlare, Inc.",
|
|
||||||
OU: "Systems Engineering",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
C: "GB",
|
|
||||||
ST: "London",
|
|
||||||
L: "London",
|
|
||||||
O: "CloudFlare, Inc",
|
|
||||||
OU: "Systems Engineering",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Hosts: []string{"cloudflare.com", "www.cloudflare.com", "192.168.0.1", "jdoe@example.com"},
|
|
||||||
KeyRequest: NewBasicKeyRequest(),
|
|
||||||
}
|
|
||||||
|
|
||||||
_, _, err := ParseRequest(cr)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("%v", err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// TestParseRequestCA ensures that a valid CA certificate request does not
|
|
||||||
// error and the resulting CSR includes the BasicConstraint extension
|
|
||||||
func TestParseRequestCA(t *testing.T) {
|
|
||||||
var cr = &CertificateRequest{
|
|
||||||
CN: "Test Common Name",
|
|
||||||
Names: []Name{
|
|
||||||
{
|
|
||||||
C: "US",
|
|
||||||
ST: "California",
|
|
||||||
L: "San Francisco",
|
|
||||||
O: "CloudFlare, Inc.",
|
|
||||||
OU: "Systems Engineering",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
C: "GB",
|
|
||||||
ST: "London",
|
|
||||||
L: "London",
|
|
||||||
O: "CloudFlare, Inc",
|
|
||||||
OU: "Systems Engineering",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
CA: &CAConfig{
|
|
||||||
PathLength: 0,
|
|
||||||
PathLenZero: true,
|
|
||||||
},
|
|
||||||
KeyRequest: NewBasicKeyRequest(),
|
|
||||||
}
|
|
||||||
|
|
||||||
csrBytes, _, err := ParseRequest(cr)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("%v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
block, _ := pem.Decode(csrBytes)
|
|
||||||
if block == nil {
|
|
||||||
t.Fatalf("%v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if block.Type != "CERTIFICATE REQUEST" {
|
|
||||||
t.Fatalf("Incorrect block type: %s", block.Type)
|
|
||||||
}
|
|
||||||
|
|
||||||
csr, err := x509.ParseCertificateRequest(block.Bytes)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("%v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
found := false
|
|
||||||
for _, ext := range csr.Extensions {
|
|
||||||
if ext.Id.Equal(asn1.ObjectIdentifier{2, 5, 29, 19}) {
|
|
||||||
found = true
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if !found {
|
|
||||||
t.Fatalf("CSR did not include BasicConstraint Extension")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// TestParseRequestCANoPathlen ensures that a valid CA certificate request
|
|
||||||
// with an unspecified pathlen does not error and the resulting CSR includes
|
|
||||||
// the BasicConstraint extension
|
|
||||||
func TestParseRequestCANoPathlen(t *testing.T) {
|
|
||||||
var cr = &CertificateRequest{
|
|
||||||
CN: "Test Common Name",
|
|
||||||
Names: []Name{
|
|
||||||
{
|
|
||||||
C: "US",
|
|
||||||
ST: "California",
|
|
||||||
L: "San Francisco",
|
|
||||||
O: "CloudFlare, Inc.",
|
|
||||||
OU: "Systems Engineering",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
C: "GB",
|
|
||||||
ST: "London",
|
|
||||||
L: "London",
|
|
||||||
O: "CloudFlare, Inc",
|
|
||||||
OU: "Systems Engineering",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
CA: &CAConfig{
|
|
||||||
PathLength: 0,
|
|
||||||
PathLenZero: false,
|
|
||||||
},
|
|
||||||
KeyRequest: NewBasicKeyRequest(),
|
|
||||||
}
|
|
||||||
|
|
||||||
csrBytes, _, err := ParseRequest(cr)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("%v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
block, _ := pem.Decode(csrBytes)
|
|
||||||
if block == nil {
|
|
||||||
t.Fatalf("%v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if block.Type != "CERTIFICATE REQUEST" {
|
|
||||||
t.Fatalf("Incorrect block type: %s", block.Type)
|
|
||||||
}
|
|
||||||
|
|
||||||
csr, err := x509.ParseCertificateRequest(block.Bytes)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("%v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
found := false
|
|
||||||
for _, ext := range csr.Extensions {
|
|
||||||
if ext.Id.Equal(asn1.ObjectIdentifier{2, 5, 29, 19}) {
|
|
||||||
bc := &BasicConstraints{}
|
|
||||||
asn1.Unmarshal(ext.Value, bc)
|
|
||||||
if bc.IsCA == true && bc.MaxPathLen == -1 {
|
|
||||||
found = true
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if !found {
|
|
||||||
t.Fatalf("CSR did not include BasicConstraint Extension")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func whichCurve(sz int) elliptic.Curve {
|
|
||||||
switch sz {
|
|
||||||
case 256:
|
|
||||||
return elliptic.P256()
|
|
||||||
case 384:
|
|
||||||
return elliptic.P384()
|
|
||||||
case 521:
|
|
||||||
return elliptic.P521()
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// TestECGeneration ensures that the proper curve is used depending on
|
|
||||||
// the bit size specified in a key request and that an appropriate
|
|
||||||
// signature algorithm is returned.
|
|
||||||
func TestECGeneration(t *testing.T) {
|
|
||||||
var eckey *ecdsa.PrivateKey
|
|
||||||
|
|
||||||
for _, sz := range []int{256, 384, 521} {
|
|
||||||
kr := &BasicKeyRequest{"ecdsa", sz}
|
|
||||||
priv, err := kr.Generate()
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("%v", err)
|
|
||||||
}
|
|
||||||
eckey = priv.(*ecdsa.PrivateKey)
|
|
||||||
if eckey.Curve != whichCurve(sz) {
|
|
||||||
t.Fatal("Generated key has wrong curve.")
|
|
||||||
}
|
|
||||||
if sa := kr.SigAlgo(); sa == x509.UnknownSignatureAlgorithm {
|
|
||||||
t.Fatal("Invalid signature algorithm!")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestRSAKeyGeneration(t *testing.T) {
|
|
||||||
var rsakey *rsa.PrivateKey
|
|
||||||
|
|
||||||
for _, sz := range []int{2048, 3072, 4096} {
|
|
||||||
kr := &BasicKeyRequest{"rsa", sz}
|
|
||||||
priv, err := kr.Generate()
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("%v", err)
|
|
||||||
}
|
|
||||||
rsakey = priv.(*rsa.PrivateKey)
|
|
||||||
if rsakey.PublicKey.N.BitLen() != kr.Size() {
|
|
||||||
t.Fatal("Generated key has wrong size.")
|
|
||||||
}
|
|
||||||
if sa := kr.SigAlgo(); sa == x509.UnknownSignatureAlgorithm {
|
|
||||||
t.Fatal("Invalid signature algorithm!")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// TestBadBasicKeyRequest ensures that generating a key from a BasicKeyRequest
|
|
||||||
// fails with an invalid algorithm, or an invalid RSA or ECDSA key
|
|
||||||
// size. An invalid ECDSA key size is any size other than 256, 384, or
|
|
||||||
// 521; an invalid RSA key size is any size less than 2048 bits.
|
|
||||||
func TestBadBasicKeyRequest(t *testing.T) {
|
|
||||||
kr := &BasicKeyRequest{"yolocrypto", 1024}
|
|
||||||
|
|
||||||
if _, err := kr.Generate(); err == nil {
|
|
||||||
t.Fatal("Key generation should fail with invalid algorithm")
|
|
||||||
} else if sa := kr.SigAlgo(); sa != x509.UnknownSignatureAlgorithm {
|
|
||||||
t.Fatal("The wrong signature algorithm was returned from SigAlgo!")
|
|
||||||
}
|
|
||||||
|
|
||||||
kr.A = "ecdsa"
|
|
||||||
if _, err := kr.Generate(); err == nil {
|
|
||||||
t.Fatal("Key generation should fail with invalid key size")
|
|
||||||
} else if sa := kr.SigAlgo(); sa != x509.ECDSAWithSHA1 {
|
|
||||||
t.Fatal("The wrong signature algorithm was returned from SigAlgo!")
|
|
||||||
}
|
|
||||||
|
|
||||||
kr.A = "rsa"
|
|
||||||
if _, err := kr.Generate(); err == nil {
|
|
||||||
t.Fatal("Key generation should fail with invalid key size")
|
|
||||||
} else if sa := kr.SigAlgo(); sa != x509.SHA1WithRSA {
|
|
||||||
t.Fatal("The wrong signature algorithm was returned from SigAlgo!")
|
|
||||||
}
|
|
||||||
|
|
||||||
kr = &BasicKeyRequest{"tobig", 9216}
|
|
||||||
|
|
||||||
kr.A = "rsa"
|
|
||||||
if _, err := kr.Generate(); err == nil {
|
|
||||||
t.Fatal("Key generation should fail with invalid key size")
|
|
||||||
} else if sa := kr.SigAlgo(); sa != x509.SHA512WithRSA {
|
|
||||||
t.Fatal("The wrong signature algorithm was returned from SigAlgo!")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// TestDefaultBasicKeyRequest makes sure that certificate requests without
|
|
||||||
// explicit key requests fall back to the default key request.
|
|
||||||
func TestDefaultBasicKeyRequest(t *testing.T) {
|
|
||||||
var req = &CertificateRequest{
|
|
||||||
Names: []Name{
|
|
||||||
{
|
|
||||||
C: "US",
|
|
||||||
ST: "California",
|
|
||||||
L: "San Francisco",
|
|
||||||
O: "CloudFlare",
|
|
||||||
OU: "Systems Engineering",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
CN: "cloudflare.com",
|
|
||||||
Hosts: []string{"cloudflare.com", "www.cloudflare.com", "jdoe@example.com"},
|
|
||||||
}
|
|
||||||
_, priv, err := ParseRequest(req)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("%v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// If the default key type changes, this will need to be changed.
|
|
||||||
block, _ := pem.Decode(priv)
|
|
||||||
if block == nil {
|
|
||||||
t.Fatal("Bad private key was generated!")
|
|
||||||
}
|
|
||||||
|
|
||||||
DefaultKeyRequest := NewBasicKeyRequest()
|
|
||||||
switch block.Type {
|
|
||||||
case "RSA PRIVATE KEY":
|
|
||||||
if DefaultKeyRequest.Algo() != "rsa" {
|
|
||||||
t.Fatal("Invalid default key request.")
|
|
||||||
}
|
|
||||||
case "EC PRIVATE KEY":
|
|
||||||
if DefaultKeyRequest.Algo() != "ecdsa" {
|
|
||||||
t.Fatal("Invalid default key request.")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// TestRSACertRequest validates parsing a certificate request with an
|
|
||||||
// RSA key.
|
|
||||||
func TestRSACertRequest(t *testing.T) {
|
|
||||||
var req = &CertificateRequest{
|
|
||||||
Names: []Name{
|
|
||||||
{
|
|
||||||
C: "US",
|
|
||||||
ST: "California",
|
|
||||||
L: "San Francisco",
|
|
||||||
O: "CloudFlare",
|
|
||||||
OU: "Systems Engineering",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
CN: "cloudflare.com",
|
|
||||||
Hosts: []string{"cloudflare.com", "www.cloudflare.com", "jdoe@example.com"},
|
|
||||||
KeyRequest: &BasicKeyRequest{"rsa", 2048},
|
|
||||||
}
|
|
||||||
_, _, err := ParseRequest(req)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("%v", err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// TestBadCertRequest checks for failure conditions of ParseRequest.
|
|
||||||
func TestBadCertRequest(t *testing.T) {
|
|
||||||
var req = &CertificateRequest{
|
|
||||||
Names: []Name{
|
|
||||||
{
|
|
||||||
C: "US",
|
|
||||||
ST: "California",
|
|
||||||
L: "San Francisco",
|
|
||||||
O: "CloudFlare",
|
|
||||||
OU: "Systems Engineering",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
CN: "cloudflare.com",
|
|
||||||
Hosts: []string{"cloudflare.com", "www.cloudflare.com"},
|
|
||||||
KeyRequest: &BasicKeyRequest{"yolo-crypto", 2048},
|
|
||||||
}
|
|
||||||
_, _, err := ParseRequest(req)
|
|
||||||
if err == nil {
|
|
||||||
t.Fatal("ParseRequest should fail with a bad key algorithm.")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// testValidator is a stripped-down validator that checks to make sure
|
|
||||||
// the request has a common name. It should mimic some of the
|
|
||||||
// functionality expected in an actual validator.
|
|
||||||
func testValidator(req *CertificateRequest) error {
|
|
||||||
if req.CN == "" {
|
|
||||||
return errors.NewBadRequestMissingParameter("CN")
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// TestGenerator ensures that a valid request is processed properly
|
|
||||||
// and returns a certificate request and key.
|
|
||||||
func TestGenerator(t *testing.T) {
|
|
||||||
g := &Generator{testValidator}
|
|
||||||
var req = &CertificateRequest{
|
|
||||||
Names: []Name{
|
|
||||||
{
|
|
||||||
C: "US",
|
|
||||||
ST: "California",
|
|
||||||
L: "San Francisco",
|
|
||||||
O: "CloudFlare",
|
|
||||||
OU: "Systems Engineering",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
CN: "cloudflare.com",
|
|
||||||
Hosts: []string{"cloudflare.com", "www.cloudflare.com", "192.168.0.1", "jdoe@example.com"},
|
|
||||||
KeyRequest: &BasicKeyRequest{"rsa", 2048},
|
|
||||||
}
|
|
||||||
|
|
||||||
csrBytes, _, err := g.ProcessRequest(req)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
block, _ := pem.Decode([]byte(csrBytes))
|
|
||||||
if block == nil {
|
|
||||||
t.Fatalf("bad CSR in PEM")
|
|
||||||
}
|
|
||||||
|
|
||||||
if block.Type != "CERTIFICATE REQUEST" {
|
|
||||||
t.Fatalf("bad CSR in PEM")
|
|
||||||
}
|
|
||||||
|
|
||||||
csr, err := x509.ParseCertificateRequest(block.Bytes)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(csr.DNSNames) != 2 {
|
|
||||||
t.Fatal("SAN parsing error")
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(csr.IPAddresses) != 1 {
|
|
||||||
t.Fatal("SAN parsing error")
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(csr.EmailAddresses) != 1 {
|
|
||||||
t.Fatal("SAN parsing error")
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// TestBadGenerator ensures that a request that fails the validator is
|
|
||||||
// not processed.
|
|
||||||
func TestBadGenerator(t *testing.T) {
|
|
||||||
g := &Generator{testValidator}
|
|
||||||
missingCN := &CertificateRequest{
|
|
||||||
Names: []Name{
|
|
||||||
{
|
|
||||||
C: "US",
|
|
||||||
ST: "California",
|
|
||||||
L: "San Francisco",
|
|
||||||
O: "CloudFlare",
|
|
||||||
OU: "Systems Engineering",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
// Missing CN
|
|
||||||
Hosts: []string{"cloudflare.com", "www.cloudflare.com"},
|
|
||||||
KeyRequest: &BasicKeyRequest{"rsa", 2048},
|
|
||||||
}
|
|
||||||
|
|
||||||
_, _, err := g.ProcessRequest(missingCN)
|
|
||||||
if err == nil {
|
|
||||||
t.Fatalf("Request should have failed.")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestWeakCSR(t *testing.T) {
|
|
||||||
weakKey := &CertificateRequest{
|
|
||||||
Names: []Name{
|
|
||||||
{
|
|
||||||
C: "US",
|
|
||||||
ST: "California",
|
|
||||||
L: "San Francisco",
|
|
||||||
O: "CloudFlare",
|
|
||||||
OU: "Systems Engineering",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
CN: "cloudflare.com",
|
|
||||||
Hosts: []string{"cloudflare.com", "www.cloudflare.com", "jdoe@example.com"},
|
|
||||||
KeyRequest: &BasicKeyRequest{"rsa", 1024},
|
|
||||||
}
|
|
||||||
g := &Generator{testValidator}
|
|
||||||
|
|
||||||
_, _, err := g.ProcessRequest(weakKey)
|
|
||||||
if err == nil {
|
|
||||||
t.Fatalf("Request should have failed.")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var testEmpty = []struct {
|
|
||||||
name Name
|
|
||||||
ok bool
|
|
||||||
}{
|
|
||||||
{
|
|
||||||
Name{},
|
|
||||||
true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Name{C: "OK"},
|
|
||||||
false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Name{ST: "OK"},
|
|
||||||
false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Name{L: "OK"},
|
|
||||||
false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Name{O: "OK"},
|
|
||||||
false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Name{OU: "OK"},
|
|
||||||
false,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestIsNameEmpty(t *testing.T) {
|
|
||||||
for i, c := range testEmpty {
|
|
||||||
if IsNameEmpty(c.name) != c.ok {
|
|
||||||
t.Fatalf("%d: expected IsNameEmpty to return %v, but have %v", i, c.ok, !c.ok)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestGenerate(t *testing.T) {
|
|
||||||
var req = &CertificateRequest{
|
|
||||||
Names: []Name{
|
|
||||||
{
|
|
||||||
C: "US",
|
|
||||||
ST: "California",
|
|
||||||
L: "San Francisco",
|
|
||||||
O: "CloudFlare",
|
|
||||||
OU: "Systems Engineering",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
CN: "cloudflare.com",
|
|
||||||
Hosts: []string{"cloudflare.com", "www.cloudflare.com", "192.168.0.1", "jdoe@example.com"},
|
|
||||||
KeyRequest: &BasicKeyRequest{"ecdsa", 256},
|
|
||||||
}
|
|
||||||
|
|
||||||
key, err := req.KeyRequest.Generate()
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("%v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
priv, ok := key.(crypto.Signer)
|
|
||||||
if !ok {
|
|
||||||
t.Fatal("Private key is not a signer.")
|
|
||||||
}
|
|
||||||
|
|
||||||
csrPEM, err := Generate(priv, req)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("%v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
csr, _, err := helpers.ParseCSR(csrPEM)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("%v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(csr.DNSNames) != 2 {
|
|
||||||
t.Fatal("SAN parsing error")
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(csr.IPAddresses) != 1 {
|
|
||||||
t.Fatal("SAN parsing error")
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(csr.EmailAddresses) != 1 {
|
|
||||||
t.Fatal("SAN parsing error")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// TestReGenerate ensures Regenerate() is abel to use the provided CSR as a template for signing a new
|
|
||||||
// CSR using priv.
|
|
||||||
func TestReGenerate(t *testing.T) {
|
|
||||||
var req = &CertificateRequest{
|
|
||||||
Names: []Name{
|
|
||||||
{
|
|
||||||
C: "US",
|
|
||||||
ST: "California",
|
|
||||||
L: "San Francisco",
|
|
||||||
O: "CloudFlare",
|
|
||||||
OU: "Systems Engineering",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
CN: "cloudflare.com",
|
|
||||||
Hosts: []string{"cloudflare.com", "www.cloudflare.com", "192.168.0.1"},
|
|
||||||
KeyRequest: &BasicKeyRequest{"ecdsa", 256},
|
|
||||||
}
|
|
||||||
|
|
||||||
_, key, err := ParseRequest(req)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("%v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
priv, err := helpers.ParsePrivateKeyPEM(key)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("%v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
csr, err := Generate(priv, req)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("%v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if _, _, err = helpers.ParseCSR(csr); err != nil {
|
|
||||||
t.Fatalf("%v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
_, err = Regenerate(priv, csr)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("%v", err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// TestBadReGenerator ensures that a request that fails the ParseCSR is
|
|
||||||
// not processed.
|
|
||||||
func TestBadReGenerate(t *testing.T) {
|
|
||||||
var req = &CertificateRequest{
|
|
||||||
Names: []Name{
|
|
||||||
{
|
|
||||||
C: "US",
|
|
||||||
ST: "California",
|
|
||||||
L: "San Francisco",
|
|
||||||
O: "CloudFlare",
|
|
||||||
OU: "Systems Engineering",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
CN: "cloudflare.com",
|
|
||||||
Hosts: []string{"cloudflare.com", "www.cloudflare.com", "192.168.0.1"},
|
|
||||||
KeyRequest: &BasicKeyRequest{"ecdsa", 256},
|
|
||||||
}
|
|
||||||
|
|
||||||
_, key, err := ParseRequest(req)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("%v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
priv, err := helpers.ParsePrivateKeyPEM(key)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("%v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
csr, err := Generate(priv, req)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("%v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
block := pem.Block{
|
|
||||||
Type: "CERTIFICATE REQUEST",
|
|
||||||
Headers: map[string]string{
|
|
||||||
"Location": "UCSD",
|
|
||||||
},
|
|
||||||
Bytes: csr,
|
|
||||||
}
|
|
||||||
|
|
||||||
csr = pem.EncodeToMemory(&block)
|
|
||||||
|
|
||||||
_, err = Regenerate(priv, csr)
|
|
||||||
if err == nil {
|
|
||||||
t.Fatalf("%v", err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var testECDSACertificateFile = "testdata/test-ecdsa-ca.pem"
|
|
||||||
|
|
||||||
func TestExtractCertificateRequest(t *testing.T) {
|
|
||||||
certPEM, err := ioutil.ReadFile(testECDSACertificateFile)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// must parse ok
|
|
||||||
cert, err := helpers.ParseCertificatePEM(certPEM)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
req := ExtractCertificateRequest(cert)
|
|
||||||
|
|
||||||
if req.CN != "" {
|
|
||||||
t.Fatal("Bad Certificate Request!")
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(req.Names) != 1 {
|
|
||||||
t.Fatal("Bad Certificate Request!")
|
|
||||||
}
|
|
||||||
|
|
||||||
name := req.Names[0]
|
|
||||||
if name.C != "US" || name.ST != "California" || name.O != "CloudFlare, Inc." ||
|
|
||||||
name.OU != "Test Certificate Authority" || name.L != "San Francisco" {
|
|
||||||
t.Fatal("Bad Certificate Request!")
|
|
||||||
}
|
|
||||||
|
|
||||||
if req.CA == nil || req.CA.PathLength != 2 {
|
|
||||||
t.Fatal("Bad Certificate Request!")
|
|
||||||
}
|
|
||||||
}
|
|
15
vendor/github.com/cloudflare/cfssl/csr/testdata/test-ecdsa-ca.pem
generated
vendored
15
vendor/github.com/cloudflare/cfssl/csr/testdata/test-ecdsa-ca.pem
generated
vendored
@ -1,15 +0,0 @@
|
|||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIICUDCCAfagAwIBAgIIec5PjdpJcNYwCgYIKoZIzj0EAwIwejELMAkGA1UEBhMC
|
|
||||||
VVMxGTAXBgNVBAoTEENsb3VkRmxhcmUsIEluYy4xIzAhBgNVBAsTGlRlc3QgQ2Vy
|
|
||||||
dGlmaWNhdGUgQXV0aG9yaXR5MRYwFAYDVQQHEw1TYW4gRnJhbmNpc2NvMRMwEQYD
|
|
||||||
VQQIEwpDYWxpZm9ybmlhMB4XDTE1MTAwODIzMDEwMFoXDTE1MTAwODIzMDYwMFow
|
|
||||||
ejELMAkGA1UEBhMCVVMxGTAXBgNVBAoTEENsb3VkRmxhcmUsIEluYy4xIzAhBgNV
|
|
||||||
BAsTGlRlc3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MRYwFAYDVQQHEw1TYW4gRnJh
|
|
||||||
bmNpc2NvMRMwEQYDVQQIEwpDYWxpZm9ybmlhMFkwEwYHKoZIzj0CAQYIKoZIzj0D
|
|
||||||
AQcDQgAEoCV+bVOLTJMy38j50sc3vE5k41GMRgriFJt0g0OVX8yaOZ93CZTI7Lzf
|
|
||||||
GbMU+KqWTgOwGhrPvpusep3fjw+dAaNmMGQwDgYDVR0PAQH/BAQDAgEGMBIGA1Ud
|
|
||||||
EwEB/wQIMAYBAf8CAQIwHQYDVR0OBBYEFDpLhSKBN3njfb6cXQCdRLzCZt0ZMB8G
|
|
||||||
A1UdIwQYMBaAFDpLhSKBN3njfb6cXQCdRLzCZt0ZMAoGCCqGSM49BAMCA0gAMEUC
|
|
||||||
IFU3BmzntGGeXZu2qWZx249nYn37S0AkCnQ3rUtI31bdAiEAsPICnZ+GB8yCN26N
|
|
||||||
OL+N8dHvXiOvZ9/Vl488pyWOccY=
|
|
||||||
-----END CERTIFICATE-----
|
|
338
vendor/github.com/cloudflare/cfssl/errors/error_test.go
generated
vendored
338
vendor/github.com/cloudflare/cfssl/errors/error_test.go
generated
vendored
@ -1,338 +0,0 @@
|
|||||||
package errors
|
|
||||||
|
|
||||||
import (
|
|
||||||
"crypto/x509"
|
|
||||||
"encoding/json"
|
|
||||||
"errors"
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestNew(t *testing.T) {
|
|
||||||
err := New(CertificateError, Unknown)
|
|
||||||
if err == nil {
|
|
||||||
t.Fatal("Error creation failed.")
|
|
||||||
}
|
|
||||||
if err.ErrorCode != int(CertificateError)+int(Unknown) {
|
|
||||||
t.Fatal("Error code construction failed.")
|
|
||||||
}
|
|
||||||
if err.Message != "Unknown certificate error" {
|
|
||||||
t.Fatal("Error message construction failed.")
|
|
||||||
}
|
|
||||||
|
|
||||||
code := New(OCSPError, ReadFailed).ErrorCode
|
|
||||||
if code != 8001 {
|
|
||||||
t.Fatal("Improper error code")
|
|
||||||
}
|
|
||||||
|
|
||||||
code = New(OCSPError, IssuerMismatch).ErrorCode
|
|
||||||
if code != 8100 {
|
|
||||||
t.Fatal("Improper error code")
|
|
||||||
}
|
|
||||||
|
|
||||||
code = New(OCSPError, InvalidStatus).ErrorCode
|
|
||||||
if code != 8200 {
|
|
||||||
t.Fatal("Improper error code")
|
|
||||||
}
|
|
||||||
|
|
||||||
code = New(CertificateError, Unknown).ErrorCode
|
|
||||||
if code != 1000 {
|
|
||||||
t.Fatal("Improper error code")
|
|
||||||
}
|
|
||||||
code = New(CertificateError, ReadFailed).ErrorCode
|
|
||||||
if code != 1001 {
|
|
||||||
t.Fatal("Improper error code")
|
|
||||||
}
|
|
||||||
code = New(CertificateError, DecodeFailed).ErrorCode
|
|
||||||
if code != 1002 {
|
|
||||||
t.Fatal("Improper error code")
|
|
||||||
}
|
|
||||||
code = New(CertificateError, ParseFailed).ErrorCode
|
|
||||||
if code != 1003 {
|
|
||||||
t.Fatal("Improper error code")
|
|
||||||
}
|
|
||||||
code = New(CertificateError, SelfSigned).ErrorCode
|
|
||||||
if code != 1100 {
|
|
||||||
t.Fatal("Improper error code")
|
|
||||||
}
|
|
||||||
code = New(CertificateError, VerifyFailed).ErrorCode
|
|
||||||
if code != 1200 {
|
|
||||||
t.Fatal("Improper error code")
|
|
||||||
}
|
|
||||||
code = New(CertificateError, BadRequest).ErrorCode
|
|
||||||
if code != 1300 {
|
|
||||||
t.Fatal("Improper error code")
|
|
||||||
}
|
|
||||||
code = New(CertificateError, MissingSerial).ErrorCode
|
|
||||||
if code != 1400 {
|
|
||||||
t.Fatal("Improper error code")
|
|
||||||
}
|
|
||||||
|
|
||||||
code = New(PrivateKeyError, Unknown).ErrorCode
|
|
||||||
if code != 2000 {
|
|
||||||
t.Fatal("Improper error code")
|
|
||||||
}
|
|
||||||
code = New(PrivateKeyError, ReadFailed).ErrorCode
|
|
||||||
if code != 2001 {
|
|
||||||
t.Fatal("Improper error code")
|
|
||||||
}
|
|
||||||
code = New(PrivateKeyError, DecodeFailed).ErrorCode
|
|
||||||
if code != 2002 {
|
|
||||||
t.Fatal("Improper error code")
|
|
||||||
}
|
|
||||||
code = New(PrivateKeyError, ParseFailed).ErrorCode
|
|
||||||
if code != 2003 {
|
|
||||||
t.Fatal("Improper error code")
|
|
||||||
}
|
|
||||||
code = New(PrivateKeyError, Encrypted).ErrorCode
|
|
||||||
if code != 2100 {
|
|
||||||
t.Fatal("Improper error code")
|
|
||||||
}
|
|
||||||
code = New(PrivateKeyError, NotRSAOrECC).ErrorCode
|
|
||||||
if code != 2200 {
|
|
||||||
t.Fatal("Improper error code")
|
|
||||||
}
|
|
||||||
code = New(PrivateKeyError, KeyMismatch).ErrorCode
|
|
||||||
if code != 2300 {
|
|
||||||
t.Fatal("Improper error code")
|
|
||||||
}
|
|
||||||
code = New(PrivateKeyError, GenerationFailed).ErrorCode
|
|
||||||
if code != 2400 {
|
|
||||||
t.Fatal("Improper error code")
|
|
||||||
}
|
|
||||||
code = New(PrivateKeyError, Unavailable).ErrorCode
|
|
||||||
if code != 2500 {
|
|
||||||
t.Fatal("Improper error code")
|
|
||||||
}
|
|
||||||
|
|
||||||
code = New(IntermediatesError, Unknown).ErrorCode
|
|
||||||
if code != 3000 {
|
|
||||||
t.Fatal("Improper error code")
|
|
||||||
}
|
|
||||||
code = New(IntermediatesError, ReadFailed).ErrorCode
|
|
||||||
if code != 3001 {
|
|
||||||
t.Fatal("Improper error code")
|
|
||||||
}
|
|
||||||
code = New(IntermediatesError, DecodeFailed).ErrorCode
|
|
||||||
if code != 3002 {
|
|
||||||
t.Fatal("Improper error code")
|
|
||||||
}
|
|
||||||
code = New(IntermediatesError, ParseFailed).ErrorCode
|
|
||||||
if code != 3003 {
|
|
||||||
t.Fatal("Improper error code")
|
|
||||||
}
|
|
||||||
|
|
||||||
code = New(RootError, Unknown).ErrorCode
|
|
||||||
if code != 4000 {
|
|
||||||
t.Fatal("Improper error code")
|
|
||||||
}
|
|
||||||
code = New(RootError, ReadFailed).ErrorCode
|
|
||||||
if code != 4001 {
|
|
||||||
t.Fatal("Improper error code")
|
|
||||||
}
|
|
||||||
code = New(RootError, DecodeFailed).ErrorCode
|
|
||||||
if code != 4002 {
|
|
||||||
t.Fatal("Improper error code")
|
|
||||||
}
|
|
||||||
code = New(RootError, ParseFailed).ErrorCode
|
|
||||||
if code != 4003 {
|
|
||||||
t.Fatal("Improper error code")
|
|
||||||
}
|
|
||||||
|
|
||||||
code = New(PolicyError, Unknown).ErrorCode
|
|
||||||
if code != 5000 {
|
|
||||||
t.Fatal("Improper error code")
|
|
||||||
}
|
|
||||||
code = New(PolicyError, NoKeyUsages).ErrorCode
|
|
||||||
if code != 5100 {
|
|
||||||
t.Fatal("Improper error code")
|
|
||||||
}
|
|
||||||
code = New(PolicyError, InvalidPolicy).ErrorCode
|
|
||||||
if code != 5200 {
|
|
||||||
t.Fatal("Improper error code")
|
|
||||||
}
|
|
||||||
code = New(PolicyError, InvalidRequest).ErrorCode
|
|
||||||
if code != 5300 {
|
|
||||||
t.Fatal("Improper error code")
|
|
||||||
}
|
|
||||||
code = New(PolicyError, UnknownProfile).ErrorCode
|
|
||||||
if code != 5400 {
|
|
||||||
t.Fatal("Improper error code")
|
|
||||||
}
|
|
||||||
|
|
||||||
code = New(DialError, Unknown).ErrorCode
|
|
||||||
if code != 6000 {
|
|
||||||
t.Fatal("Improper error code")
|
|
||||||
}
|
|
||||||
|
|
||||||
code = New(APIClientError, AuthenticationFailure).ErrorCode
|
|
||||||
if code != 7100 {
|
|
||||||
t.Fatal("Improper error code")
|
|
||||||
}
|
|
||||||
code = New(APIClientError, JSONError).ErrorCode
|
|
||||||
if code != 7200 {
|
|
||||||
t.Fatal("Improper error code")
|
|
||||||
}
|
|
||||||
code = New(APIClientError, ClientHTTPError).ErrorCode
|
|
||||||
if code != 7400 {
|
|
||||||
t.Fatal("Improper error code")
|
|
||||||
}
|
|
||||||
code = New(APIClientError, IOError).ErrorCode
|
|
||||||
if code != 7300 {
|
|
||||||
t.Fatal("Improper error code")
|
|
||||||
}
|
|
||||||
code = New(APIClientError, ServerRequestFailed).ErrorCode
|
|
||||||
if code != 7500 {
|
|
||||||
t.Fatal("Improper error code")
|
|
||||||
}
|
|
||||||
|
|
||||||
code = New(CSRError, Unknown).ErrorCode
|
|
||||||
if code != 9000 {
|
|
||||||
t.Fatal("Improper error code")
|
|
||||||
}
|
|
||||||
code = New(CSRError, ReadFailed).ErrorCode
|
|
||||||
if code != 9001 {
|
|
||||||
t.Fatal("Improper error code")
|
|
||||||
}
|
|
||||||
code = New(CSRError, DecodeFailed).ErrorCode
|
|
||||||
if code != 9002 {
|
|
||||||
t.Fatal("Improper error code")
|
|
||||||
}
|
|
||||||
code = New(CSRError, ParseFailed).ErrorCode
|
|
||||||
if code != 9003 {
|
|
||||||
t.Fatal("Improper error code")
|
|
||||||
}
|
|
||||||
code = New(CSRError, KeyMismatch).ErrorCode
|
|
||||||
if code != 9300 {
|
|
||||||
t.Fatal("Improper error code")
|
|
||||||
}
|
|
||||||
code = New(CSRError, BadRequest).ErrorCode
|
|
||||||
if code != 9300 {
|
|
||||||
t.Fatal("Improper error code")
|
|
||||||
}
|
|
||||||
|
|
||||||
code = New(CTError, Unknown).ErrorCode
|
|
||||||
if code != 10000 {
|
|
||||||
t.Fatal("Improper error code")
|
|
||||||
}
|
|
||||||
code = New(CTError, PrecertSubmissionFailed).ErrorCode
|
|
||||||
if code != 10100 {
|
|
||||||
t.Fatal("Improper error code")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestWrap(t *testing.T) {
|
|
||||||
msg := "Arbitrary error message"
|
|
||||||
err := Wrap(CertificateError, Unknown, errors.New(msg))
|
|
||||||
if err == nil {
|
|
||||||
t.Fatal("Error creation failed.")
|
|
||||||
}
|
|
||||||
if err.ErrorCode != int(CertificateError)+int(Unknown) {
|
|
||||||
t.Fatal("Error code construction failed.")
|
|
||||||
}
|
|
||||||
if err.Message != msg {
|
|
||||||
t.Fatal("Error message construction failed.")
|
|
||||||
}
|
|
||||||
|
|
||||||
err = Wrap(CertificateError, VerifyFailed, x509.CertificateInvalidError{Reason: x509.Expired})
|
|
||||||
if err == nil {
|
|
||||||
t.Fatal("Error creation failed.")
|
|
||||||
}
|
|
||||||
if err.ErrorCode != int(CertificateError)+int(VerifyFailed)+certificateInvalid+int(x509.Expired) {
|
|
||||||
t.Fatal("Error code construction failed.")
|
|
||||||
}
|
|
||||||
if err.Message != "x509: certificate has expired or is not yet valid" {
|
|
||||||
t.Fatal("Error message construction failed.")
|
|
||||||
}
|
|
||||||
|
|
||||||
err = Wrap(CertificateError, VerifyFailed, x509.UnknownAuthorityError{})
|
|
||||||
if err == nil {
|
|
||||||
t.Fatal("Error creation failed.")
|
|
||||||
}
|
|
||||||
|
|
||||||
err = Wrap(RootError, Unknown, errors.New(msg))
|
|
||||||
if err == nil {
|
|
||||||
t.Fatal("Error creation failed.")
|
|
||||||
}
|
|
||||||
if err.ErrorCode != int(RootError)+int(Unknown) {
|
|
||||||
t.Fatal("Error code construction failed.")
|
|
||||||
}
|
|
||||||
if err.Message != msg {
|
|
||||||
t.Fatal("Error message construction failed.")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestMarshal(t *testing.T) {
|
|
||||||
msg := "Arbitrary error message"
|
|
||||||
err := Wrap(CertificateError, Unknown, errors.New(msg))
|
|
||||||
bytes, _ := json.Marshal(err)
|
|
||||||
var received Error
|
|
||||||
json.Unmarshal(bytes, &received)
|
|
||||||
if received.ErrorCode != int(CertificateError)+int(Unknown) {
|
|
||||||
t.Fatal("Error code construction failed.")
|
|
||||||
}
|
|
||||||
if received.Message != msg {
|
|
||||||
t.Fatal("Error message construction failed.")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestErrorString(t *testing.T) {
|
|
||||||
msg := "Arbitrary error message"
|
|
||||||
err := Wrap(CertificateError, Unknown, errors.New(msg))
|
|
||||||
str := err.Error()
|
|
||||||
if str != `{"code":1000,"message":"`+msg+`"}` {
|
|
||||||
t.Fatal("Incorrect Error():", str)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestHTTP(t *testing.T) {
|
|
||||||
err := NewMethodNotAllowed("GET")
|
|
||||||
if err == nil {
|
|
||||||
t.Fatal("New Mathod Check failed")
|
|
||||||
}
|
|
||||||
|
|
||||||
err = NewBadRequest(errors.New("Bad Request"))
|
|
||||||
if err == nil {
|
|
||||||
t.Fatal("New Bad Request Check failed")
|
|
||||||
}
|
|
||||||
|
|
||||||
if err.StatusCode != 400 {
|
|
||||||
t.Fatal("New Bad Request error code construction failed")
|
|
||||||
}
|
|
||||||
|
|
||||||
err = NewBadRequestString("Bad Request String")
|
|
||||||
if err == nil {
|
|
||||||
t.Fatal("New Bad Request String Check failed")
|
|
||||||
}
|
|
||||||
|
|
||||||
if err.StatusCode != 400 {
|
|
||||||
t.Fatal("New Bad Request String error code construction failed")
|
|
||||||
}
|
|
||||||
|
|
||||||
err = NewBadRequestMissingParameter("Request Missing Parameter")
|
|
||||||
if err == nil {
|
|
||||||
t.Fatal("New Bad Request Missing Parameter Check failed")
|
|
||||||
}
|
|
||||||
|
|
||||||
if err.StatusCode != 400 {
|
|
||||||
t.Fatal("New Bad Request Missing Parameter error code construction failed")
|
|
||||||
}
|
|
||||||
|
|
||||||
err = NewBadRequestUnwantedParameter("Unwanted Parameter Present In Request")
|
|
||||||
if err == nil {
|
|
||||||
t.Fatal("New Bad Request Unwanted Parameter Check failed")
|
|
||||||
}
|
|
||||||
|
|
||||||
if err.StatusCode != 400 {
|
|
||||||
t.Fatal("New Bad Request Unwanted Parameter error code construction failed")
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestHTTPErrorString(t *testing.T) {
|
|
||||||
method := "GET"
|
|
||||||
err := NewMethodNotAllowed(method)
|
|
||||||
str := err.Error()
|
|
||||||
if str != `Method is not allowed:"`+method+`"` {
|
|
||||||
t.Fatal("Incorrect Error():", str)
|
|
||||||
}
|
|
||||||
}
|
|
629
vendor/github.com/cloudflare/cfssl/helpers/helpers_test.go
generated
vendored
629
vendor/github.com/cloudflare/cfssl/helpers/helpers_test.go
generated
vendored
@ -1,629 +0,0 @@
|
|||||||
package helpers
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bytes"
|
|
||||||
"crypto/ecdsa"
|
|
||||||
"crypto/elliptic"
|
|
||||||
"crypto/rand"
|
|
||||||
"crypto/rsa"
|
|
||||||
"crypto/x509"
|
|
||||||
"crypto/x509/pkix"
|
|
||||||
"encoding/asn1"
|
|
||||||
"encoding/pem"
|
|
||||||
"io/ioutil"
|
|
||||||
"math"
|
|
||||||
"testing"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"golang.org/x/crypto/ocsp"
|
|
||||||
|
|
||||||
"github.com/google/certificate-transparency-go"
|
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
|
||||||
testCertFile = "testdata/cert.pem"
|
|
||||||
testCertDERFile = "testdata/cert.der"
|
|
||||||
testBundleFile = "testdata/bundle.pem"
|
|
||||||
testExtraWSCertFile = "testdata/cert_with_whitespace.pem"
|
|
||||||
testExtraWSBundleFile = "testdata/bundle_with_whitespace.pem"
|
|
||||||
testMessedUpBundleFile = "testdata/messed_up_bundle.pem"
|
|
||||||
testMessedUpCertFile = "testdata/messedupcert.pem"
|
|
||||||
testEmptyCertFile = "testdata/emptycert.pem"
|
|
||||||
testPrivateRSAKey = "testdata/priv_rsa_key.pem"
|
|
||||||
testPrivateECDSAKey = "testdata/private_ecdsa_key.pem"
|
|
||||||
testUnsupportedECDSAKey = "testdata/secp256k1-key.pem"
|
|
||||||
testMessedUpPrivateKey = "testdata/messed_up_priv_key.pem"
|
|
||||||
testEncryptedPrivateKey = "testdata/enc_priv_key.pem"
|
|
||||||
testEmptyPem = "testdata/empty.pem"
|
|
||||||
testNoHeaderCert = "testdata/noheadercert.pem"
|
|
||||||
testSinglePKCS7 = "testdata/cert_pkcs7.pem" // openssl crl2pkcs7 -nocrl -out cert_pkcs7.pem -in cert.pem
|
|
||||||
testEmptyPKCS7DER = "testdata/empty_pkcs7.der" // openssl crl2pkcs7 -nocrl -out empty_pkcs7.der -outform der
|
|
||||||
testEmptyPKCS7PEM = "testdata/empty_pkcs7.pem" // openssl crl2pkcs7 -nocrl -out empty_pkcs7.pem -outform pem
|
|
||||||
testMultiplePKCS7 = "testdata/bundle_pkcs7.pem"
|
|
||||||
testPKCS12EmptyPswd = "testdata/emptypasswordpkcs12.p12"
|
|
||||||
testPKCS12Passwordispassword = "testdata/passwordpkcs12.p12"
|
|
||||||
testPKCS12MultipleCerts = "testdata/multiplecerts.p12"
|
|
||||||
testCSRPEM = "testdata/test.csr.pem"
|
|
||||||
testCSRPEMBad = "testdata/test.bad.csr.pem"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestParseCertificatesDER(t *testing.T) {
|
|
||||||
var password = []string{"password", "", ""}
|
|
||||||
for i, testFile := range []string{testPKCS12Passwordispassword, testPKCS12EmptyPswd, testCertDERFile} {
|
|
||||||
testDER, err := ioutil.ReadFile(testFile)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
if _, _, err := ParseCertificatesDER(testDER, password[i]); err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
// Incorrect Password for PKCS12 formatted files
|
|
||||||
if _, _, err := ParseCertificatesDER(testDER, "incorrectpassword"); err == nil && i != 2 {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
testDER, err := ioutil.ReadFile(testEmptyPKCS7DER)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
// PKCS7 with no certificates
|
|
||||||
if _, _, err := ParseCertificatesDER(testDER, ""); err == nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestKeyLength(t *testing.T) {
|
|
||||||
expNil := 0
|
|
||||||
recNil := KeyLength(nil)
|
|
||||||
if expNil != recNil {
|
|
||||||
t.Fatal("KeyLength on nil did not return 0")
|
|
||||||
}
|
|
||||||
|
|
||||||
expNonsense := 0
|
|
||||||
inNonsense := "string?"
|
|
||||||
outNonsense := KeyLength(inNonsense)
|
|
||||||
if expNonsense != outNonsense {
|
|
||||||
t.Fatal("KeyLength malfunctioning on nonsense input")
|
|
||||||
}
|
|
||||||
|
|
||||||
//test the ecdsa branch
|
|
||||||
ecdsaPriv, _ := ecdsa.GenerateKey(elliptic.P224(), rand.Reader)
|
|
||||||
ecdsaIn, _ := ecdsaPriv.Public().(*ecdsa.PublicKey)
|
|
||||||
expEcdsa := ecdsaIn.Curve.Params().BitSize
|
|
||||||
outEcdsa := KeyLength(ecdsaIn)
|
|
||||||
if expEcdsa != outEcdsa {
|
|
||||||
t.Fatal("KeyLength malfunctioning on ecdsa input")
|
|
||||||
}
|
|
||||||
|
|
||||||
//test the rsa branch
|
|
||||||
rsaPriv, _ := rsa.GenerateKey(rand.Reader, 256)
|
|
||||||
rsaIn, _ := rsaPriv.Public().(*rsa.PublicKey)
|
|
||||||
expRsa := rsaIn.N.BitLen()
|
|
||||||
outRsa := KeyLength(rsaIn)
|
|
||||||
|
|
||||||
if expRsa != outRsa {
|
|
||||||
t.Fatal("KeyLength malfunctioning on rsa input")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestExpiryTime(t *testing.T) {
|
|
||||||
// nil case
|
|
||||||
var expNil time.Time
|
|
||||||
inNil := []*x509.Certificate{}
|
|
||||||
outNil := ExpiryTime(inNil)
|
|
||||||
if expNil != outNil {
|
|
||||||
t.Fatal("Expiry time is malfunctioning on empty input")
|
|
||||||
}
|
|
||||||
|
|
||||||
//read a pem file and use that expiry date
|
|
||||||
bytes, _ := ioutil.ReadFile(testBundleFile)
|
|
||||||
certs, err := ParseCertificatesPEM(bytes)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("%v", err)
|
|
||||||
}
|
|
||||||
expected := time.Date(2014, time.April, 15, 0, 0, 0, 0, time.UTC)
|
|
||||||
out := ExpiryTime(certs)
|
|
||||||
if out != expected {
|
|
||||||
t.Fatalf("Expected %v, got %v", expected, out)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestMonthsValid(t *testing.T) {
|
|
||||||
var cert = &x509.Certificate{
|
|
||||||
NotBefore: time.Date(2015, time.April, 01, 0, 0, 0, 0, time.UTC),
|
|
||||||
NotAfter: time.Date(2015, time.April, 01, 0, 0, 0, 0, time.UTC),
|
|
||||||
}
|
|
||||||
|
|
||||||
if MonthsValid(cert) != 0 {
|
|
||||||
t.Fail()
|
|
||||||
}
|
|
||||||
|
|
||||||
cert.NotAfter = time.Date(2016, time.April, 01, 0, 0, 0, 0, time.UTC)
|
|
||||||
if MonthsValid(cert) != 12 {
|
|
||||||
t.Fail()
|
|
||||||
}
|
|
||||||
|
|
||||||
// extra days should be rounded up to 1 month
|
|
||||||
cert.NotAfter = time.Date(2016, time.April, 02, 0, 0, 0, 0, time.UTC)
|
|
||||||
if MonthsValid(cert) != 13 {
|
|
||||||
t.Fail()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestHasValidExpiry(t *testing.T) {
|
|
||||||
// Issue period > April 1, 2015
|
|
||||||
var cert = &x509.Certificate{
|
|
||||||
NotBefore: time.Date(2015, time.April, 01, 0, 0, 0, 0, time.UTC),
|
|
||||||
NotAfter: time.Date(2016, time.April, 01, 0, 0, 0, 0, time.UTC),
|
|
||||||
}
|
|
||||||
|
|
||||||
if !ValidExpiry(cert) {
|
|
||||||
t.Fail()
|
|
||||||
}
|
|
||||||
|
|
||||||
cert.NotAfter = time.Date(2019, time.April, 01, 01, 0, 0, 0, time.UTC)
|
|
||||||
if ValidExpiry(cert) {
|
|
||||||
t.Fail()
|
|
||||||
}
|
|
||||||
|
|
||||||
// Issue period < July 1, 2012
|
|
||||||
cert.NotBefore = time.Date(2009, time.March, 01, 0, 0, 0, 0, time.UTC)
|
|
||||||
if ValidExpiry(cert) {
|
|
||||||
t.Fail()
|
|
||||||
}
|
|
||||||
|
|
||||||
// Issue period July 1, 2012 - April 1, 2015
|
|
||||||
cert.NotBefore = time.Date(2012, time.July, 01, 0, 0, 0, 0, time.UTC)
|
|
||||||
cert.NotAfter = time.Date(2017, time.July, 01, 0, 0, 0, 0, time.UTC)
|
|
||||||
if !ValidExpiry(cert) {
|
|
||||||
t.Fail()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestHashAlgoString(t *testing.T) {
|
|
||||||
if HashAlgoString(x509.MD2WithRSA) != "MD2" {
|
|
||||||
t.Fatal("standin")
|
|
||||||
}
|
|
||||||
if HashAlgoString(x509.MD5WithRSA) != "MD5" {
|
|
||||||
t.Fatal("standin")
|
|
||||||
}
|
|
||||||
if HashAlgoString(x509.SHA1WithRSA) != "SHA1" {
|
|
||||||
t.Fatal("standin")
|
|
||||||
}
|
|
||||||
if HashAlgoString(x509.SHA256WithRSA) != "SHA256" {
|
|
||||||
t.Fatal("standin")
|
|
||||||
}
|
|
||||||
if HashAlgoString(x509.SHA384WithRSA) != "SHA384" {
|
|
||||||
t.Fatal("standin")
|
|
||||||
}
|
|
||||||
if HashAlgoString(x509.SHA512WithRSA) != "SHA512" {
|
|
||||||
t.Fatal("standin")
|
|
||||||
}
|
|
||||||
if HashAlgoString(x509.DSAWithSHA1) != "SHA1" {
|
|
||||||
t.Fatal("standin")
|
|
||||||
}
|
|
||||||
if HashAlgoString(x509.DSAWithSHA256) != "SHA256" {
|
|
||||||
t.Fatal("standin")
|
|
||||||
}
|
|
||||||
if HashAlgoString(x509.ECDSAWithSHA1) != "SHA1" {
|
|
||||||
t.Fatal("standin")
|
|
||||||
}
|
|
||||||
if HashAlgoString(x509.ECDSAWithSHA256) != "SHA256" {
|
|
||||||
t.Fatal("standin")
|
|
||||||
}
|
|
||||||
if HashAlgoString(x509.ECDSAWithSHA384) != "SHA384" {
|
|
||||||
t.Fatal("standin")
|
|
||||||
}
|
|
||||||
if HashAlgoString(x509.ECDSAWithSHA512) != "SHA512" {
|
|
||||||
t.Fatal("standin")
|
|
||||||
}
|
|
||||||
if HashAlgoString(math.MaxInt32) != "Unknown Hash Algorithm" {
|
|
||||||
t.Fatal("standin")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestSignatureString(t *testing.T) {
|
|
||||||
if SignatureString(x509.MD2WithRSA) != "MD2WithRSA" {
|
|
||||||
t.Fatal("Signature String functioning improperly")
|
|
||||||
}
|
|
||||||
if SignatureString(x509.MD5WithRSA) != "MD5WithRSA" {
|
|
||||||
t.Fatal("Signature String functioning improperly")
|
|
||||||
}
|
|
||||||
if SignatureString(x509.SHA1WithRSA) != "SHA1WithRSA" {
|
|
||||||
t.Fatal("Signature String functioning improperly")
|
|
||||||
}
|
|
||||||
if SignatureString(x509.SHA256WithRSA) != "SHA256WithRSA" {
|
|
||||||
t.Fatal("Signature String functioning improperly")
|
|
||||||
}
|
|
||||||
if SignatureString(x509.SHA384WithRSA) != "SHA384WithRSA" {
|
|
||||||
t.Fatal("Signature String functioning improperly")
|
|
||||||
}
|
|
||||||
if SignatureString(x509.SHA512WithRSA) != "SHA512WithRSA" {
|
|
||||||
t.Fatal("Signature String functioning improperly")
|
|
||||||
}
|
|
||||||
if SignatureString(x509.DSAWithSHA1) != "DSAWithSHA1" {
|
|
||||||
t.Fatal("Signature String functioning improperly")
|
|
||||||
}
|
|
||||||
if SignatureString(x509.DSAWithSHA256) != "DSAWithSHA256" {
|
|
||||||
t.Fatal("Signature String functioning improperly")
|
|
||||||
}
|
|
||||||
if SignatureString(x509.ECDSAWithSHA1) != "ECDSAWithSHA1" {
|
|
||||||
t.Fatal("Signature String functioning improperly")
|
|
||||||
}
|
|
||||||
if SignatureString(x509.ECDSAWithSHA256) != "ECDSAWithSHA256" {
|
|
||||||
t.Fatal("Signature String functioning improperly")
|
|
||||||
}
|
|
||||||
if SignatureString(x509.ECDSAWithSHA384) != "ECDSAWithSHA384" {
|
|
||||||
t.Fatal("Signature String functioning improperly")
|
|
||||||
}
|
|
||||||
if SignatureString(x509.ECDSAWithSHA512) != "ECDSAWithSHA512" {
|
|
||||||
t.Fatal("Signature String functioning improperly")
|
|
||||||
}
|
|
||||||
if SignatureString(math.MaxInt32) != "Unknown Signature" {
|
|
||||||
t.Fatal("Signature String functioning improperly")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestParseCertificatePEM(t *testing.T) {
|
|
||||||
for _, testFile := range []string{testCertFile, testExtraWSCertFile, testSinglePKCS7} {
|
|
||||||
certPEM, err := ioutil.ReadFile(testFile)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if _, err := ParseCertificatePEM(certPEM); err != nil {
|
|
||||||
t.Log(testFile)
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for _, testFile := range []string{testBundleFile, testMessedUpCertFile, testEmptyPKCS7PEM, testEmptyCertFile, testMultiplePKCS7} {
|
|
||||||
certPEM, err := ioutil.ReadFile(testFile)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if _, err := ParseCertificatePEM(certPEM); err == nil {
|
|
||||||
t.Fatal("Incorrect cert failed to raise error")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestParseCertificatesPEM(t *testing.T) {
|
|
||||||
// expected cases
|
|
||||||
for _, testFile := range []string{testBundleFile, testExtraWSBundleFile, testSinglePKCS7, testMultiplePKCS7} {
|
|
||||||
bundlePEM, err := ioutil.ReadFile(testFile)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if _, err := ParseCertificatesPEM(bundlePEM); err != nil {
|
|
||||||
t.Log(testFile)
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// test failure cases
|
|
||||||
// few lines deleted, then headers removed
|
|
||||||
for _, testFile := range []string{testMessedUpBundleFile, testEmptyPKCS7PEM, testNoHeaderCert} {
|
|
||||||
bundlePEM, err := ioutil.ReadFile(testFile)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if _, err := ParseCertificatesPEM(bundlePEM); err == nil {
|
|
||||||
t.Fatal("Incorrectly-formatted file failed to produce an error")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestSelfSignedCertificatePEM(t *testing.T) {
|
|
||||||
testPEM, _ := ioutil.ReadFile(testCertFile)
|
|
||||||
_, err := ParseSelfSignedCertificatePEM(testPEM)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("%v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// a few lines deleted from the pem file
|
|
||||||
wrongPEM, _ := ioutil.ReadFile(testMessedUpCertFile)
|
|
||||||
_, err2 := ParseSelfSignedCertificatePEM(wrongPEM)
|
|
||||||
if err2 == nil {
|
|
||||||
t.Fatal("Improper pem file failed to raise an error")
|
|
||||||
}
|
|
||||||
|
|
||||||
// alter the signature of a valid certificate
|
|
||||||
blk, _ := pem.Decode(testPEM)
|
|
||||||
blk.Bytes[len(blk.Bytes)-10]++ // some hacking to get to the sig
|
|
||||||
alteredBytes := pem.EncodeToMemory(blk)
|
|
||||||
_, err = ParseSelfSignedCertificatePEM(alteredBytes)
|
|
||||||
if err == nil {
|
|
||||||
t.Fatal("Incorrect cert failed to produce an error")
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestParsePrivateKeyPEM(t *testing.T) {
|
|
||||||
|
|
||||||
// expected cases
|
|
||||||
testRSAPEM, _ := ioutil.ReadFile(testPrivateRSAKey)
|
|
||||||
_, err := ParsePrivateKeyPEM(testRSAPEM)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
testECDSAPEM, _ := ioutil.ReadFile(testPrivateECDSAKey)
|
|
||||||
_, err = ParsePrivateKeyPEM(testECDSAPEM)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// error cases
|
|
||||||
errCases := []string{
|
|
||||||
testMessedUpPrivateKey, // a few lines deleted
|
|
||||||
testEmptyPem, // empty file
|
|
||||||
testEncryptedPrivateKey, // encrypted key
|
|
||||||
testUnsupportedECDSAKey, // ECDSA curve not currently supported by Go standard library
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, fname := range errCases {
|
|
||||||
testPEM, _ := ioutil.ReadFile(fname)
|
|
||||||
_, err = ParsePrivateKeyPEM(testPEM)
|
|
||||||
if err == nil {
|
|
||||||
t.Fatal("Incorrect private key failed to produce an error")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// Imported from signers/local/testdata/
|
|
||||||
const ecdsaTestCSR = "testdata/ecdsa256.csr"
|
|
||||||
|
|
||||||
func TestParseCSRPEM(t *testing.T) {
|
|
||||||
in, err := ioutil.ReadFile(ecdsaTestCSR)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("%v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
_, _, err = ParseCSR(in)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("%v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
in[12]++
|
|
||||||
_, _, err = ParseCSR(in)
|
|
||||||
if err == nil {
|
|
||||||
t.Fatalf("Expected an invalid CSR.")
|
|
||||||
}
|
|
||||||
in[12]--
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestParseCSRPEMMore(t *testing.T) {
|
|
||||||
csrPEM, err := ioutil.ReadFile(testCSRPEM)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if _, err := ParseCSRPEM(csrPEM); err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
csrPEM, err = ioutil.ReadFile(testCSRPEMBad)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if _, err := ParseCSRPEM(csrPEM); err == nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if _, err := ParseCSRPEM([]byte("not even pem")); err == nil {
|
|
||||||
t.Fatal("Expected an invalid CSR.")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Imported from signers/local/testdata/
|
|
||||||
const rsaOldTestCSR = "testdata/rsa-old.csr"
|
|
||||||
|
|
||||||
func TestParseOldCSR(t *testing.T) {
|
|
||||||
in, err := ioutil.ReadFile(rsaOldTestCSR)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("%v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
_, _, err = ParseCSR(in)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("%v", err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Imported from signers/local/testdata/
|
|
||||||
const clientCertFile = "testdata/ca.pem"
|
|
||||||
const clientKeyFile = "testdata/ca_key.pem"
|
|
||||||
|
|
||||||
func TestClientCertParams(t *testing.T) {
|
|
||||||
_, err := LoadClientCertificate(testCertFile, testPrivateRSAKey)
|
|
||||||
if err == nil {
|
|
||||||
t.Fatal("Unmatched cert/key should generate error")
|
|
||||||
}
|
|
||||||
|
|
||||||
cert, err := LoadClientCertificate("", "")
|
|
||||||
if err != nil || cert != nil {
|
|
||||||
t.Fatal("Certificate atempted to loaded with missing key and cert")
|
|
||||||
}
|
|
||||||
cert, err = LoadClientCertificate(clientCertFile, "")
|
|
||||||
if err != nil || cert != nil {
|
|
||||||
t.Fatal("Certificate atempted to loaded with missing key")
|
|
||||||
}
|
|
||||||
cert, err = LoadClientCertificate("", clientKeyFile)
|
|
||||||
if err != nil || cert != nil {
|
|
||||||
t.Fatal("Certificate atempted to loaded with missing cert")
|
|
||||||
}
|
|
||||||
|
|
||||||
cert, err = LoadClientCertificate(clientCertFile, clientKeyFile)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
if cert == nil {
|
|
||||||
t.Fatal("cert not created")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestLoadPEMCertPool(t *testing.T) {
|
|
||||||
certPool, err := PEMToCertPool([]byte{})
|
|
||||||
if certPool != nil || err != nil {
|
|
||||||
t.Fatal("Empty file name should not generate error or a cert pool")
|
|
||||||
}
|
|
||||||
|
|
||||||
in, err := ioutil.ReadFile(testEmptyPem)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("%v", err)
|
|
||||||
}
|
|
||||||
certPool, err = PEMToCertPool(in)
|
|
||||||
if certPool != nil {
|
|
||||||
t.Fatal("Empty file should not generate a cert pool")
|
|
||||||
} else if err == nil {
|
|
||||||
t.Fatal("Expected error for empty file")
|
|
||||||
}
|
|
||||||
|
|
||||||
in, err = ioutil.ReadFile(testEmptyCertFile)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("%v", err)
|
|
||||||
}
|
|
||||||
certPool, err = PEMToCertPool(in)
|
|
||||||
if certPool != nil {
|
|
||||||
t.Fatal("Empty cert should not generate a cert pool")
|
|
||||||
} else if err == nil {
|
|
||||||
t.Fatal("Expected error for empty cert")
|
|
||||||
}
|
|
||||||
|
|
||||||
in, err = ioutil.ReadFile(clientCertFile)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("%v", err)
|
|
||||||
}
|
|
||||||
certPool, err = PEMToCertPool(in)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("%v", err)
|
|
||||||
} else if certPool == nil {
|
|
||||||
t.Fatal("cert pool not created")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// sctEquals returns true if all fields of both SCTs are equivalent.
|
|
||||||
func sctEquals(sctA, sctB ct.SignedCertificateTimestamp) bool {
|
|
||||||
if sctA.SCTVersion == sctB.SCTVersion &&
|
|
||||||
sctA.LogID == sctB.LogID &&
|
|
||||||
sctA.Timestamp == sctB.Timestamp &&
|
|
||||||
bytes.Equal(sctA.Extensions, sctB.Extensions) &&
|
|
||||||
sctA.Signature.Algorithm == sctB.Signature.Algorithm &&
|
|
||||||
bytes.Equal(sctA.Signature.Signature, sctA.Signature.Signature) {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
// NOTE: TestDeserializeSCTList tests both DeserializeSCTList and
|
|
||||||
// SerializeSCTList.
|
|
||||||
func TestDeserializeSCTList(t *testing.T) {
|
|
||||||
// Here we make sure that empty SCT lists return an error
|
|
||||||
emptyLists := [][]byte{nil, {}}
|
|
||||||
for _, emptyList := range emptyLists {
|
|
||||||
_, err := DeserializeSCTList(emptyList)
|
|
||||||
if err == nil {
|
|
||||||
t.Fatalf("DeserializeSCTList(%v) should raise an error\n", emptyList)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Here we make sure that an SCT list with a zero SCT is deserialized
|
|
||||||
// correctly
|
|
||||||
var zeroSCT ct.SignedCertificateTimestamp
|
|
||||||
serializedSCT, err := SerializeSCTList([]ct.SignedCertificateTimestamp{zeroSCT})
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
deserializedSCTList, err := DeserializeSCTList(serializedSCT)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
if !sctEquals(zeroSCT, (deserializedSCTList)[0]) {
|
|
||||||
t.Fatal("SCTs don't match")
|
|
||||||
}
|
|
||||||
|
|
||||||
// Here we verify that an error is raised when the SCT list length
|
|
||||||
// field is greater than its actual length
|
|
||||||
serializedSCT, err = SerializeSCTList([]ct.SignedCertificateTimestamp{zeroSCT})
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
serializedSCT[0] = 15
|
|
||||||
_, err = DeserializeSCTList(serializedSCT)
|
|
||||||
if err == nil {
|
|
||||||
t.Fatalf("DeserializeSCTList should raise an error when " +
|
|
||||||
"the SCT list length field and the list length don't match\n")
|
|
||||||
}
|
|
||||||
|
|
||||||
// Here we verify that an error is raised when the SCT list length
|
|
||||||
// field is less than its actual length
|
|
||||||
serializedSCT[0] = 0
|
|
||||||
serializedSCT[1] = 0
|
|
||||||
_, err = DeserializeSCTList(serializedSCT)
|
|
||||||
if err == nil {
|
|
||||||
t.Fatalf("DeserializeSCTList should raise an error when " +
|
|
||||||
"the SCT list length field and the list length don't match\n")
|
|
||||||
}
|
|
||||||
|
|
||||||
// Here we verify that an error is raised when the SCT length field is
|
|
||||||
// greater than its actual length
|
|
||||||
serializedSCT[0] = 0
|
|
||||||
serializedSCT[1] = 49
|
|
||||||
serializedSCT[2] = 1
|
|
||||||
_, err = DeserializeSCTList(serializedSCT)
|
|
||||||
if err == nil {
|
|
||||||
t.Fatalf("DeserializeSCTList should raise an error when " +
|
|
||||||
"the SCT length field and the SCT length don't match\n")
|
|
||||||
}
|
|
||||||
|
|
||||||
// Here we verify that an error is raised when the SCT length field is
|
|
||||||
// less than its actual length
|
|
||||||
serializedSCT[2] = 0
|
|
||||||
serializedSCT[3] = 0
|
|
||||||
_, err = DeserializeSCTList(serializedSCT)
|
|
||||||
if err == nil {
|
|
||||||
t.Fatalf("DeserializeSCTList should raise an error when " +
|
|
||||||
"the SCT length field and the SCT length don't match\n")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestSCTListFromOCSPResponse(t *testing.T) {
|
|
||||||
var response ocsp.Response
|
|
||||||
lst, err := SCTListFromOCSPResponse(&response)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
if len(lst) != 0 {
|
|
||||||
t.Fatal("SCTListFromOCSPResponse should return an empty SCT list for an empty extension")
|
|
||||||
}
|
|
||||||
|
|
||||||
var zeroSCT ct.SignedCertificateTimestamp
|
|
||||||
serializedSCTList, err := SerializeSCTList([]ct.SignedCertificateTimestamp{zeroSCT})
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal("failed to serialize SCT list")
|
|
||||||
}
|
|
||||||
serializedSCTList, err = asn1.Marshal(serializedSCTList)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal("failed to serialize SCT list")
|
|
||||||
}
|
|
||||||
// The value of Id below is the object identifier of the OCSP Stapling
|
|
||||||
// SCT extension (see section 3.3. of RFC 6962).
|
|
||||||
response.Extensions = []pkix.Extension{{
|
|
||||||
Id: asn1.ObjectIdentifier{1, 3, 6, 1, 4, 1, 11129, 2, 4, 5},
|
|
||||||
Critical: false,
|
|
||||||
Value: serializedSCTList,
|
|
||||||
}}
|
|
||||||
lst, err = SCTListFromOCSPResponse(&response)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
if !sctEquals(zeroSCT, lst[0]) {
|
|
||||||
t.Fatal("SCTs don't match")
|
|
||||||
}
|
|
||||||
}
|
|
53
vendor/github.com/cloudflare/cfssl/helpers/testdata/bundle.pem
generated
vendored
53
vendor/github.com/cloudflare/cfssl/helpers/testdata/bundle.pem
generated
vendored
@ -1,53 +0,0 @@
|
|||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIEczCCAl2gAwIBAgIIDARj8BWNsscwCwYJKoZIhvcNAQELMIGMMQswCQYDVQQG
|
|
||||||
EwJVUzETMBEGA1UEChMKQ2xvdWRGbGFyZTEcMBoGA1UECxMTU3lzdGVtcyBFbmdp
|
|
||||||
bmVlcmluZzEWMBQGA1UEBxMNU2FuIEZyYW5jaXNjbzETMBEGA1UECBMKQ2FsaWZv
|
|
||||||
cm5pYTEdMBsGA1UEAxMUY2xvdWRmbGFyZS1pbnRlci5jb20wHhcNMTQwMzAyMDAw
|
|
||||||
MDAwWhcNMTkwNDAxMDAwMDAwWjCBjDELMAkGA1UEBhMCVVMxEzARBgNVBAoTCkNs
|
|
||||||
b3VkRmxhcmUxHDAaBgNVBAsTE1N5c3RlbXMgRW5naW5lZXJpbmcxFjAUBgNVBAcT
|
|
||||||
DVNhbiBGcmFuY2lzY28xEzARBgNVBAgTCkNhbGlmb3JuaWExHTAbBgNVBAMTFGNs
|
|
||||||
b3VkZmxhcmUtaW50ZXIuY29tMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEIVkjNJGw
|
|
||||||
f3F0XWJH7yQSVtxuoBidi5JNsQ7FhxEQcZEl3b+/1iF60TBY2Yi6KwJuA6nIE73P
|
|
||||||
IXGyfNhThw4D8CiZbackQ/ufgz2DyvxyWFDPzLr7TXeM/0wSp/imoxWeo4GIMIGF
|
|
||||||
MA4GA1UdDwEB/wQEAwIApDASBgNVHRMBAf8ECDAGAQH/AgEBMB0GA1UdDgQWBBRB
|
|
||||||
+YoiUjIm34/wBwHdJGE4Wufs/DAfBgNVHSMEGDAWgBTXXUgpaSwO9HOrQBxGqOOS
|
|
||||||
FHsHEDAfBgNVHREEGDAWghRjbG91ZGZsYXJlLWludGVyLmNvbTALBgkqhkiG9w0B
|
|
||||||
AQsDggIBACRqAC5EJEe+8ihv1WzCUMEMb7KtS0BqoNbdXE32ia66PgJSQmHcmeJd
|
|
||||||
FI1UjL0DlljTM2tc+8KxR/1/qnKiI+W/D4wFTWOY/JWFOd15q7lXuKGl+8PMkAHF
|
|
||||||
A145JCr6oZoO9G9wUwVUrbmXAbyPCOfzsEQ2+mD9F1ZpoEjzVhtGf0R+vnYrRw8j
|
|
||||||
4WCv5AIcYRAf7HZxbhMILF1bccNlqyUtdH+/MTHXpjkjJjA5KbsHBrAEfjAXkD7c
|
|
||||||
WWOay6m7mVWb3PPFmGorP6t29baEETK9ZTZSrfD9rnExjjUCftWJEn0M4Pp98DvT
|
|
||||||
br6+bg8jwtq73qdyOfNsC/Sod18UuHH7MTQA22yqAF5jIlcYtAHGlNnl+sDPZACs
|
|
||||||
369/Z9rOL9vPFL+Z3F/uJtqZzvN1QiCkj8jWzR0u9fh3eQwZADM2RwgwS4Gs2Ygh
|
|
||||||
PsypDo33sFOwfX93KqKBsTHssn8SSDDaSnZ8bu1ATEdshbVieecuQx40UadPuJpw
|
|
||||||
EPVqTR5AhviXQ9bKrTnU5T7EgkW9vNydkpLQQlMg3QE8hsndv4loGZbZGfNtqQHS
|
|
||||||
/mg1t07S+7OEa4YaMW+wVOBOqTdW7OXlZFLfCcF5SYLM0SnlTMklRMxiqI4JqZXH
|
|
||||||
0thnUGD0JjfLX4rTaZUzT3lrXXWzpS2jzutXQkjGv4nhGGprIDuT
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIEkDCCA/ugAwIBAgIIWnP9jF/2nogwCwYJKoZIhvcNAQELMH0xCzAJBgNVBAYT
|
|
||||||
AlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1TYW4gRnJhbmNpc2Nv
|
|
||||||
MRMwEQYDVQQKDApDbG91ZEZsYXJlMRQwEgYDVQQLDAtERVZfVEVTVElORzEWMBQG
|
|
||||||
A1UEAwwNQ0ZTU0xfVEVTVF9DQTAeFw0xNDAzMDEwMDAwMDBaFw0xNDA0MTUwMDAw
|
|
||||||
MDBaMIGMMQswCQYDVQQGEwJVUzETMBEGA1UEChMKQ2xvdWRGbGFyZTEcMBoGA1UE
|
|
||||||
CxMTU3lzdGVtcyBFbmdpbmVlcmluZzEWMBQGA1UEBxMNU2FuIEZyYW5jaXNjbzET
|
|
||||||
MBEGA1UECBMKQ2FsaWZvcm5pYTEdMBsGA1UEAxMUY2xvdWRmbGFyZS1pbnRlci5j
|
|
||||||
b20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDlCnV+vj0sVPy8SqHL
|
|
||||||
AlI+xwnPhWgzj2VevD6Nz1Zu1BeQ5m5y4CWCf+GmRGTP7+a/C510Fw6rpmInB0Ng
|
|
||||||
xxwQ2rC08fJtCnijlGH/VjEPIHY5lRaAomcM8Rgx6JOuv9BpZJKpr9pyUMV53JeW
|
|
||||||
RbWuLH5nEMdyk9NpetS2gWxt4/D20QlhK/tHkROrcLmEUddwIGdwE8JzI88c77Fu
|
|
||||||
u6pgMtHKvl4GGH0yvb4T7PvCdH8V2tCH7bt8roXd9MSyFVy7uORkfouip7EsVREU
|
|
||||||
mlcY5EvpR141KXbZqiOQiusJ+u76mEUQNk8wCR1/CW/ii9v1BKOVjXwCfEtIXjg0
|
|
||||||
APJx1VNSSH6XoDpUETL+eQ4J0FL9XNbsDuYar7+zD0N1/5vSo3HLNRQR9f0lbsys
|
|
||||||
sWBEN+CxK19xyPumr21Z0bU0f1B5H52VSF0q3I1Ju9wRo994a7YipdGcmZ2lChmT
|
|
||||||
7r3mzlBTYl3poU26q34v8wG9U7Jv4fsZJ+RGebDI+TR3QG6Yod06l9oEYZxWXBY7
|
|
||||||
STOs8wuTu3huSnan/IpWnV017Vsc61D5G+QrqcxZdXckt3anZKCF75JpUnJ7vuow
|
|
||||||
TmmHlb8KIMa9mOvcuGX4P6mz8gTi2arl/aL27kj9Q0Jgv/y1ebe2Bx2P9TF6+VND
|
|
||||||
DL3J/vSVlFeqLt2reAIBKnytLwIDAQABo4GIMIGFMA4GA1UdDwEB/wQEAwIApDAS
|
|
||||||
BgNVHRMBAf8ECDAGAQH/AgEBMB0GA1UdDgQWBBTXXUgpaSwO9HOrQBxGqOOSFHsH
|
|
||||||
EDAfBgNVHSMEGDAWgBS4Xu+uZ1C31vMH5Wq+VbNnOg2SPjAfBgNVHREEGDAWghRj
|
|
||||||
bG91ZGZsYXJlLWludGVyLmNvbTALBgkqhkiG9w0BAQsDgYEAfPLKCAHnPzgMYLX/
|
|
||||||
fWznVvOEFAAYZByPFx4QdMBbDZUtxHyvJIBs6PdxrdSuDwSiMqE7qQIi+jzzwGl9
|
|
||||||
fC7vf45B2zCX0OW51QL2oWNBdKlGgB+b2pwyME82lX/Pr7V1GY10u+ep1xdZDnch
|
|
||||||
DaMsXjQQTJu0iuG3qKEuCmUwOmc=
|
|
||||||
-----END CERTIFICATE-----
|
|
52
vendor/github.com/cloudflare/cfssl/helpers/testdata/bundle_pkcs7.pem
generated
vendored
52
vendor/github.com/cloudflare/cfssl/helpers/testdata/bundle_pkcs7.pem
generated
vendored
@ -1,52 +0,0 @@
|
|||||||
-----BEGIN PKCS7-----
|
|
||||||
MIIJOAYJKoZIhvcNAQcCoIIJKTCCCSUCAQExADALBgkqhkiG9w0BBwGgggkLMIIE
|
|
||||||
czCCAl2gAwIBAgIIDARj8BWNsscwCwYJKoZIhvcNAQELMIGMMQswCQYDVQQGEwJV
|
|
||||||
UzETMBEGA1UEChMKQ2xvdWRGbGFyZTEcMBoGA1UECxMTU3lzdGVtcyBFbmdpbmVl
|
|
||||||
cmluZzEWMBQGA1UEBxMNU2FuIEZyYW5jaXNjbzETMBEGA1UECBMKQ2FsaWZvcm5p
|
|
||||||
YTEdMBsGA1UEAxMUY2xvdWRmbGFyZS1pbnRlci5jb20wHhcNMTQwMzAyMDAwMDAw
|
|
||||||
WhcNMTkwNDAxMDAwMDAwWjCBjDELMAkGA1UEBhMCVVMxEzARBgNVBAoTCkNsb3Vk
|
|
||||||
RmxhcmUxHDAaBgNVBAsTE1N5c3RlbXMgRW5naW5lZXJpbmcxFjAUBgNVBAcTDVNh
|
|
||||||
biBGcmFuY2lzY28xEzARBgNVBAgTCkNhbGlmb3JuaWExHTAbBgNVBAMTFGNsb3Vk
|
|
||||||
ZmxhcmUtaW50ZXIuY29tMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEIVkjNJGwf3F0
|
|
||||||
XWJH7yQSVtxuoBidi5JNsQ7FhxEQcZEl3b+/1iF60TBY2Yi6KwJuA6nIE73PIXGy
|
|
||||||
fNhThw4D8CiZbackQ/ufgz2DyvxyWFDPzLr7TXeM/0wSp/imoxWeo4GIMIGFMA4G
|
|
||||||
A1UdDwEB/wQEAwIApDASBgNVHRMBAf8ECDAGAQH/AgEBMB0GA1UdDgQWBBRB+Yoi
|
|
||||||
UjIm34/wBwHdJGE4Wufs/DAfBgNVHSMEGDAWgBTXXUgpaSwO9HOrQBxGqOOSFHsH
|
|
||||||
EDAfBgNVHREEGDAWghRjbG91ZGZsYXJlLWludGVyLmNvbTALBgkqhkiG9w0BAQsD
|
|
||||||
ggIBACRqAC5EJEe+8ihv1WzCUMEMb7KtS0BqoNbdXE32ia66PgJSQmHcmeJdFI1U
|
|
||||||
jL0DlljTM2tc+8KxR/1/qnKiI+W/D4wFTWOY/JWFOd15q7lXuKGl+8PMkAHFA145
|
|
||||||
JCr6oZoO9G9wUwVUrbmXAbyPCOfzsEQ2+mD9F1ZpoEjzVhtGf0R+vnYrRw8j4WCv
|
|
||||||
5AIcYRAf7HZxbhMILF1bccNlqyUtdH+/MTHXpjkjJjA5KbsHBrAEfjAXkD7cWWOa
|
|
||||||
y6m7mVWb3PPFmGorP6t29baEETK9ZTZSrfD9rnExjjUCftWJEn0M4Pp98DvTbr6+
|
|
||||||
bg8jwtq73qdyOfNsC/Sod18UuHH7MTQA22yqAF5jIlcYtAHGlNnl+sDPZACs369/
|
|
||||||
Z9rOL9vPFL+Z3F/uJtqZzvN1QiCkj8jWzR0u9fh3eQwZADM2RwgwS4Gs2YghPsyp
|
|
||||||
Do33sFOwfX93KqKBsTHssn8SSDDaSnZ8bu1ATEdshbVieecuQx40UadPuJpwEPVq
|
|
||||||
TR5AhviXQ9bKrTnU5T7EgkW9vNydkpLQQlMg3QE8hsndv4loGZbZGfNtqQHS/mg1
|
|
||||||
t07S+7OEa4YaMW+wVOBOqTdW7OXlZFLfCcF5SYLM0SnlTMklRMxiqI4JqZXH0thn
|
|
||||||
UGD0JjfLX4rTaZUzT3lrXXWzpS2jzutXQkjGv4nhGGprIDuTMIIEkDCCA/ugAwIB
|
|
||||||
AgIIWnP9jF/2nogwCwYJKoZIhvcNAQELMH0xCzAJBgNVBAYTAlVTMRMwEQYDVQQI
|
|
||||||
DApDYWxpZm9ybmlhMRYwFAYDVQQHDA1TYW4gRnJhbmNpc2NvMRMwEQYDVQQKDApD
|
|
||||||
bG91ZEZsYXJlMRQwEgYDVQQLDAtERVZfVEVTVElORzEWMBQGA1UEAwwNQ0ZTU0xf
|
|
||||||
VEVTVF9DQTAeFw0xNDAzMDEwMDAwMDBaFw0xNDA0MTUwMDAwMDBaMIGMMQswCQYD
|
|
||||||
VQQGEwJVUzETMBEGA1UEChMKQ2xvdWRGbGFyZTEcMBoGA1UECxMTU3lzdGVtcyBF
|
|
||||||
bmdpbmVlcmluZzEWMBQGA1UEBxMNU2FuIEZyYW5jaXNjbzETMBEGA1UECBMKQ2Fs
|
|
||||||
aWZvcm5pYTEdMBsGA1UEAxMUY2xvdWRmbGFyZS1pbnRlci5jb20wggIiMA0GCSqG
|
|
||||||
SIb3DQEBAQUAA4ICDwAwggIKAoICAQDlCnV+vj0sVPy8SqHLAlI+xwnPhWgzj2Ve
|
|
||||||
vD6Nz1Zu1BeQ5m5y4CWCf+GmRGTP7+a/C510Fw6rpmInB0NgxxwQ2rC08fJtCnij
|
|
||||||
lGH/VjEPIHY5lRaAomcM8Rgx6JOuv9BpZJKpr9pyUMV53JeWRbWuLH5nEMdyk9Np
|
|
||||||
etS2gWxt4/D20QlhK/tHkROrcLmEUddwIGdwE8JzI88c77Fuu6pgMtHKvl4GGH0y
|
|
||||||
vb4T7PvCdH8V2tCH7bt8roXd9MSyFVy7uORkfouip7EsVREUmlcY5EvpR141KXbZ
|
|
||||||
qiOQiusJ+u76mEUQNk8wCR1/CW/ii9v1BKOVjXwCfEtIXjg0APJx1VNSSH6XoDpU
|
|
||||||
ETL+eQ4J0FL9XNbsDuYar7+zD0N1/5vSo3HLNRQR9f0lbsyssWBEN+CxK19xyPum
|
|
||||||
r21Z0bU0f1B5H52VSF0q3I1Ju9wRo994a7YipdGcmZ2lChmT7r3mzlBTYl3poU26
|
|
||||||
q34v8wG9U7Jv4fsZJ+RGebDI+TR3QG6Yod06l9oEYZxWXBY7STOs8wuTu3huSnan
|
|
||||||
/IpWnV017Vsc61D5G+QrqcxZdXckt3anZKCF75JpUnJ7vuowTmmHlb8KIMa9mOvc
|
|
||||||
uGX4P6mz8gTi2arl/aL27kj9Q0Jgv/y1ebe2Bx2P9TF6+VNDDL3J/vSVlFeqLt2r
|
|
||||||
eAIBKnytLwIDAQABo4GIMIGFMA4GA1UdDwEB/wQEAwIApDASBgNVHRMBAf8ECDAG
|
|
||||||
AQH/AgEBMB0GA1UdDgQWBBTXXUgpaSwO9HOrQBxGqOOSFHsHEDAfBgNVHSMEGDAW
|
|
||||||
gBS4Xu+uZ1C31vMH5Wq+VbNnOg2SPjAfBgNVHREEGDAWghRjbG91ZGZsYXJlLWlu
|
|
||||||
dGVyLmNvbTALBgkqhkiG9w0BAQsDgYEAfPLKCAHnPzgMYLX/fWznVvOEFAAYZByP
|
|
||||||
Fx4QdMBbDZUtxHyvJIBs6PdxrdSuDwSiMqE7qQIi+jzzwGl9fC7vf45B2zCX0OW5
|
|
||||||
1QL2oWNBdKlGgB+b2pwyME82lX/Pr7V1GY10u+ep1xdZDnchDaMsXjQQTJu0iuG3
|
|
||||||
qKEuCmUwOmehADEA
|
|
||||||
-----END PKCS7-----
|
|
56
vendor/github.com/cloudflare/cfssl/helpers/testdata/bundle_with_whitespace.pem
generated
vendored
56
vendor/github.com/cloudflare/cfssl/helpers/testdata/bundle_with_whitespace.pem
generated
vendored
@ -1,56 +0,0 @@
|
|||||||
|
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIEczCCAl2gAwIBAgIIDARj8BWNsscwCwYJKoZIhvcNAQELMIGMMQswCQYDVQQG
|
|
||||||
EwJVUzETMBEGA1UEChMKQ2xvdWRGbGFyZTEcMBoGA1UECxMTU3lzdGVtcyBFbmdp
|
|
||||||
bmVlcmluZzEWMBQGA1UEBxMNU2FuIEZyYW5jaXNjbzETMBEGA1UECBMKQ2FsaWZv
|
|
||||||
cm5pYTEdMBsGA1UEAxMUY2xvdWRmbGFyZS1pbnRlci5jb20wHhcNMTQwMzAyMDAw
|
|
||||||
MDAwWhcNMTkwNDAxMDAwMDAwWjCBjDELMAkGA1UEBhMCVVMxEzARBgNVBAoTCkNs
|
|
||||||
b3VkRmxhcmUxHDAaBgNVBAsTE1N5c3RlbXMgRW5naW5lZXJpbmcxFjAUBgNVBAcT
|
|
||||||
DVNhbiBGcmFuY2lzY28xEzARBgNVBAgTCkNhbGlmb3JuaWExHTAbBgNVBAMTFGNs
|
|
||||||
b3VkZmxhcmUtaW50ZXIuY29tMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEIVkjNJGw
|
|
||||||
f3F0XWJH7yQSVtxuoBidi5JNsQ7FhxEQcZEl3b+/1iF60TBY2Yi6KwJuA6nIE73P
|
|
||||||
IXGyfNhThw4D8CiZbackQ/ufgz2DyvxyWFDPzLr7TXeM/0wSp/imoxWeo4GIMIGF
|
|
||||||
MA4GA1UdDwEB/wQEAwIApDASBgNVHRMBAf8ECDAGAQH/AgEBMB0GA1UdDgQWBBRB
|
|
||||||
+YoiUjIm34/wBwHdJGE4Wufs/DAfBgNVHSMEGDAWgBTXXUgpaSwO9HOrQBxGqOOS
|
|
||||||
FHsHEDAfBgNVHREEGDAWghRjbG91ZGZsYXJlLWludGVyLmNvbTALBgkqhkiG9w0B
|
|
||||||
AQsDggIBACRqAC5EJEe+8ihv1WzCUMEMb7KtS0BqoNbdXE32ia66PgJSQmHcmeJd
|
|
||||||
FI1UjL0DlljTM2tc+8KxR/1/qnKiI+W/D4wFTWOY/JWFOd15q7lXuKGl+8PMkAHF
|
|
||||||
A145JCr6oZoO9G9wUwVUrbmXAbyPCOfzsEQ2+mD9F1ZpoEjzVhtGf0R+vnYrRw8j
|
|
||||||
4WCv5AIcYRAf7HZxbhMILF1bccNlqyUtdH+/MTHXpjkjJjA5KbsHBrAEfjAXkD7c
|
|
||||||
WWOay6m7mVWb3PPFmGorP6t29baEETK9ZTZSrfD9rnExjjUCftWJEn0M4Pp98DvT
|
|
||||||
br6+bg8jwtq73qdyOfNsC/Sod18UuHH7MTQA22yqAF5jIlcYtAHGlNnl+sDPZACs
|
|
||||||
369/Z9rOL9vPFL+Z3F/uJtqZzvN1QiCkj8jWzR0u9fh3eQwZADM2RwgwS4Gs2Ygh
|
|
||||||
PsypDo33sFOwfX93KqKBsTHssn8SSDDaSnZ8bu1ATEdshbVieecuQx40UadPuJpw
|
|
||||||
EPVqTR5AhviXQ9bKrTnU5T7EgkW9vNydkpLQQlMg3QE8hsndv4loGZbZGfNtqQHS
|
|
||||||
/mg1t07S+7OEa4YaMW+wVOBOqTdW7OXlZFLfCcF5SYLM0SnlTMklRMxiqI4JqZXH
|
|
||||||
0thnUGD0JjfLX4rTaZUzT3lrXXWzpS2jzutXQkjGv4nhGGprIDuT
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
|
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIEkDCCA/ugAwIBAgIIWnP9jF/2nogwCwYJKoZIhvcNAQELMH0xCzAJBgNVBAYT
|
|
||||||
AlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1TYW4gRnJhbmNpc2Nv
|
|
||||||
MRMwEQYDVQQKDApDbG91ZEZsYXJlMRQwEgYDVQQLDAtERVZfVEVTVElORzEWMBQG
|
|
||||||
A1UEAwwNQ0ZTU0xfVEVTVF9DQTAeFw0xNDAzMDEwMDAwMDBaFw0xNDA0MTUwMDAw
|
|
||||||
MDBaMIGMMQswCQYDVQQGEwJVUzETMBEGA1UEChMKQ2xvdWRGbGFyZTEcMBoGA1UE
|
|
||||||
CxMTU3lzdGVtcyBFbmdpbmVlcmluZzEWMBQGA1UEBxMNU2FuIEZyYW5jaXNjbzET
|
|
||||||
MBEGA1UECBMKQ2FsaWZvcm5pYTEdMBsGA1UEAxMUY2xvdWRmbGFyZS1pbnRlci5j
|
|
||||||
b20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDlCnV+vj0sVPy8SqHL
|
|
||||||
AlI+xwnPhWgzj2VevD6Nz1Zu1BeQ5m5y4CWCf+GmRGTP7+a/C510Fw6rpmInB0Ng
|
|
||||||
xxwQ2rC08fJtCnijlGH/VjEPIHY5lRaAomcM8Rgx6JOuv9BpZJKpr9pyUMV53JeW
|
|
||||||
RbWuLH5nEMdyk9NpetS2gWxt4/D20QlhK/tHkROrcLmEUddwIGdwE8JzI88c77Fu
|
|
||||||
u6pgMtHKvl4GGH0yvb4T7PvCdH8V2tCH7bt8roXd9MSyFVy7uORkfouip7EsVREU
|
|
||||||
mlcY5EvpR141KXbZqiOQiusJ+u76mEUQNk8wCR1/CW/ii9v1BKOVjXwCfEtIXjg0
|
|
||||||
APJx1VNSSH6XoDpUETL+eQ4J0FL9XNbsDuYar7+zD0N1/5vSo3HLNRQR9f0lbsys
|
|
||||||
sWBEN+CxK19xyPumr21Z0bU0f1B5H52VSF0q3I1Ju9wRo994a7YipdGcmZ2lChmT
|
|
||||||
7r3mzlBTYl3poU26q34v8wG9U7Jv4fsZJ+RGebDI+TR3QG6Yod06l9oEYZxWXBY7
|
|
||||||
STOs8wuTu3huSnan/IpWnV017Vsc61D5G+QrqcxZdXckt3anZKCF75JpUnJ7vuow
|
|
||||||
TmmHlb8KIMa9mOvcuGX4P6mz8gTi2arl/aL27kj9Q0Jgv/y1ebe2Bx2P9TF6+VND
|
|
||||||
DL3J/vSVlFeqLt2reAIBKnytLwIDAQABo4GIMIGFMA4GA1UdDwEB/wQEAwIApDAS
|
|
||||||
BgNVHRMBAf8ECDAGAQH/AgEBMB0GA1UdDgQWBBTXXUgpaSwO9HOrQBxGqOOSFHsH
|
|
||||||
EDAfBgNVHSMEGDAWgBS4Xu+uZ1C31vMH5Wq+VbNnOg2SPjAfBgNVHREEGDAWghRj
|
|
||||||
bG91ZGZsYXJlLWludGVyLmNvbTALBgkqhkiG9w0BAQsDgYEAfPLKCAHnPzgMYLX/
|
|
||||||
fWznVvOEFAAYZByPFx4QdMBbDZUtxHyvJIBs6PdxrdSuDwSiMqE7qQIi+jzzwGl9
|
|
||||||
fC7vf45B2zCX0OW51QL2oWNBdKlGgB+b2pwyME82lX/Pr7V1GY10u+ep1xdZDnch
|
|
||||||
DaMsXjQQTJu0iuG3qKEuCmUwOmc=
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
|
|
27
vendor/github.com/cloudflare/cfssl/helpers/testdata/ca.pem
generated
vendored
27
vendor/github.com/cloudflare/cfssl/helpers/testdata/ca.pem
generated
vendored
@ -1,27 +0,0 @@
|
|||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIEmzCCA4OgAwIBAgIMAMSvNBgypwaaSQ5iMA0GCSqGSIb3DQEBBQUAMIGMMQsw
|
|
||||||
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
|
|
||||||
YW5jaXNjbzETMBEGA1UEChMKQ0ZTU0wgVEVTVDEbMBkGA1UEAxMSQ0ZTU0wgVEVT
|
|
||||||
VCBSb290IENBMR4wHAYJKoZIhvcNAQkBFg90ZXN0QHRlc3QubG9jYWwwHhcNMTIx
|
|
||||||
MjEyMDIxMDMxWhcNMjIxMDIxMDIxMDMxWjCBjDELMAkGA1UEBhMCVVMxEzARBgNV
|
|
||||||
BAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lzY28xEzARBgNVBAoT
|
|
||||||
CkNGU1NMIFRFU1QxGzAZBgNVBAMTEkNGU1NMIFRFU1QgUm9vdCBDQTEeMBwGCSqG
|
|
||||||
SIb3DQEJARYPdGVzdEB0ZXN0LmxvY2FsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
|
||||||
MIIBCgKCAQEAsRp1xSfIDoD/40Bo4Hls3sFn4dav5NgxbZGpVyGF7dJI9u0eEnL4
|
|
||||||
BUGssPaUFLWC83CZxujUEiEfE0oKX+uOhhGv3+j5xSTNM764m2eSiN53cdZtK05d
|
|
||||||
hwq9uS8LtjKOQeN1mQ5qmiqxBMdjkKgMsVw5lMCgoYKo57kaKFyXzdpNVDzqw+pt
|
|
||||||
HWmuNtDQjK3qT5Ma06mYPmIGYhIZYLY7oJGg9ZEaNR0GIw4zIT5JRsNiaSb5wTLw
|
|
||||||
aa0n/4vLJyVjLJcYmJBvZWj8g+taK+C4INu/jGux+bmsC9hq14tbOaTNAn/NE0qN
|
|
||||||
8oHwcRBEqfOdEYdZkxI5NWPiKNW/Q+AeXQIDAQABo4H6MIH3MB0GA1UdDgQWBBS3
|
|
||||||
0veEuqg51fusEM4p/YuWpBPsvTCBxAYDVR0jBIG8MIG5gBS30veEuqg51fusEM4p
|
|
||||||
/YuWpBPsvaGBkqSBjzCBjDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3Ju
|
|
||||||
aWExFjAUBgNVBAcTDVNhbiBGcmFuY2lzY28xEzARBgNVBAoTCkNGU1NMIFRFU1Qx
|
|
||||||
GzAZBgNVBAMTEkNGU1NMIFRFU1QgUm9vdCBDQTEeMBwGCSqGSIb3DQEJARYPdGVz
|
|
||||||
dEB0ZXN0LmxvY2FsggwAxK80GDKnBppJDmIwDwYDVR0TBAgwBgEB/wIBADANBgkq
|
|
||||||
hkiG9w0BAQUFAAOCAQEAJ7r1EZYDwed6rS0+YKHdkRGRQ5Rz6A9DIVBPXrSMAGj3
|
|
||||||
F5EF2m/GJbhpVbnNJTVlgP9DDyabOZNxzdrCr4cHMkYYnocDdgAodnkw6GZ/GJTc
|
|
||||||
depbVTR4TpihFNzeDEGJePrEwM1DouGswpu97jyuCYZ3z1a60+a+3C1GwWaJ7Aet
|
|
||||||
Uqm+yLTUrMISsfnDPqJdM1NeqW3jiZ4IgcqJkieCCSpag9Xuzrp9q6rjmePvlQkv
|
|
||||||
qz020JGg6VijJ+c6Tf5y0XqbAhkBTqYtVamu9gEth9utn12EhdNjTZMPKMjjgFUd
|
|
||||||
H0N6yOEuQMl4ky7RxZBM0iPyeob6i4z2LEQilgv9MQ==
|
|
||||||
-----END CERTIFICATE-----
|
|
28
vendor/github.com/cloudflare/cfssl/helpers/testdata/ca_key.pem
generated
vendored
28
vendor/github.com/cloudflare/cfssl/helpers/testdata/ca_key.pem
generated
vendored
@ -1,28 +0,0 @@
|
|||||||
-----BEGIN PRIVATE KEY-----
|
|
||||||
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCxGnXFJ8gOgP/j
|
|
||||||
QGjgeWzewWfh1q/k2DFtkalXIYXt0kj27R4ScvgFQayw9pQUtYLzcJnG6NQSIR8T
|
|
||||||
Sgpf646GEa/f6PnFJM0zvribZ5KI3ndx1m0rTl2HCr25Lwu2Mo5B43WZDmqaKrEE
|
|
||||||
x2OQqAyxXDmUwKChgqjnuRooXJfN2k1UPOrD6m0daa420NCMrepPkxrTqZg+YgZi
|
|
||||||
EhlgtjugkaD1kRo1HQYjDjMhPklGw2JpJvnBMvBprSf/i8snJWMslxiYkG9laPyD
|
|
||||||
61or4Lgg27+Ma7H5uawL2GrXi1s5pM0Cf80TSo3ygfBxEESp850Rh1mTEjk1Y+Io
|
|
||||||
1b9D4B5dAgMBAAECggEAKHhjcSomDSptTwDo9mLI/h40HudwSlsc8GzYxZBjinUD
|
|
||||||
N2n39T9QbeMUE1xFenX/9qFEgq+xxnLLJx1EQacSapCgIAqdCO/f9HMgvGJumdg8
|
|
||||||
c0cMq1i9Bp7tu+OESZ5D48qWlOM2eQRIb08g8W11eRIaFmPuUPoKnuktkQuXpPJc
|
|
||||||
YbS/+JuA8SDwe6sV0cMCQuS+iHFfeGwWCKrDUkhLwcL3waW3od2XFyOeFFWFhl0h
|
|
||||||
HmM/mWKRuRdqR7hrmArTwFZVkB+o/1ywVYXIv+JQm0eNZ5PKLNJGL2f5oxbMR/JI
|
|
||||||
AoK0bAlJmYaFp96h1KpbPwLEL/0hHSWA7sAyJIgQAQKBgQDaEAZor/w4ZUTekT1+
|
|
||||||
cbId0yA+ikDXQOfXaNCSh9Pex+Psjd5zVVOqyVFJ29daRju3d7rmpN4Cm5V4h0l1
|
|
||||||
/2ad207rjCAnpCHtaddJWNyJzF2IL2IaoCZQRp0k7zOjBGQpoWDTwBaEin5CCv3P
|
|
||||||
kkdQkKz6FDP1xskHSLZr21/QCQKBgQDP6jXutEgGjf3yKpMFk/69EamJdon8clbt
|
|
||||||
hl7cOyWtobnZhdOWVZPe00Oo3Jag2aWgFFsm3EtwnUCnR4d4+fXRKS2LkhfIUZcz
|
|
||||||
cKy17Ileggdd8UGhL4RDrF/En9tJL86WcVkcoOrqLcGB2FLWrVhVpHFK74eLMCH/
|
|
||||||
uc/+ioPItQKBgHYoDsD08s7AGMQcoNx90MyWVLduhFnegoFW+wUa8jOZzieka6/E
|
|
||||||
wVQeR5yksZjpy3vLNYu6M83n7eLkM2rrm/fXGHlLcTTpm7SgEBZfPwivotKjEh5p
|
|
||||||
PrlqucWEk082lutz1RqHz+u7e1Rfzk2F7nx6GDBdeBYpw03eGXJx6QW5AoGBAIJq
|
|
||||||
4puyAEAET1fZNtHX7IGCk7sDXTi6LCbgE57HhzHr8V0t4fQ6CABMuvMwM1gATjEk
|
|
||||||
s6yjoLqqGUUUzDipanViBAy5fiuManC868lN7zkWDTLzQ3ytBqVAee4na/DziP27
|
|
||||||
ae9YTSLJwskE/alloLRP6zTbHUXE0n7LelmrX1DFAoGBAMFLl+Lu+WFgCHxBjn43
|
|
||||||
rHpJbQZQmsFhAMhkN4hsj6dJfAGn2gRLRiVRAika+8QF65xMZiVQWUVSUZADWERi
|
|
||||||
0SXGjzN1wYxO3Qzy3LYwws6fxFAq5lo79eb38yFT2lHdqK3x/QgiDSRVl+R6cExV
|
|
||||||
xQB518/lp2eIeMpglWByDwJX
|
|
||||||
-----END PRIVATE KEY-----
|
|
BIN
vendor/github.com/cloudflare/cfssl/helpers/testdata/cert.der
generated
vendored
BIN
vendor/github.com/cloudflare/cfssl/helpers/testdata/cert.der
generated
vendored
Binary file not shown.
13
vendor/github.com/cloudflare/cfssl/helpers/testdata/cert.pem
generated
vendored
13
vendor/github.com/cloudflare/cfssl/helpers/testdata/cert.pem
generated
vendored
@ -1,13 +0,0 @@
|
|||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIB7DCCAZKgAwIBAgIIE/Qz49ebG7kwCgYIKoZIzj0EAwIwTDELMAkGA1UEBhMC
|
|
||||||
VVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lzY28x
|
|
||||||
EDAOBgNVBAoTB2FjbWUuY28wHhcNMTcwNTIzMTk1MTQ0WhcNMTcwODIzMDE1NjQ0
|
|
||||||
WjBMMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
|
|
||||||
U2FuIEZyYW5jaXNjbzEQMA4GA1UEChMHYWNtZS5jbzBZMBMGByqGSM49AgEGCCqG
|
|
||||||
SM49AwEHA0IABEW8F+k/avvdBm/KRsuDnTZ3p+VuVdsqDF+aD9nIYeOhx5sj574y
|
|
||||||
hEIZOpgbEsi3BvqY63y2jYyPFodf25+CA9GjXjBcMA4GA1UdDwEB/wQEAwIFoDAd
|
|
||||||
BgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADAdBgNV
|
|
||||||
HQ4EFgQUzDpu+HN89EC1M8aNl7f0Ln5JnnIwCgYIKoZIzj0EAwIDSAAwRQIgC4/r
|
|
||||||
urbw/pzE3LDA6GpIts6TVyzgftLLEfU2BzQsjp0CIQDo+sn8t7XC6JN4KKRr2ABl
|
|
||||||
ZI+JifgG+2KCy9ln2LxGJQ==
|
|
||||||
-----END CERTIFICATE-----
|
|
14
vendor/github.com/cloudflare/cfssl/helpers/testdata/cert_pkcs7.pem
generated
vendored
14
vendor/github.com/cloudflare/cfssl/helpers/testdata/cert_pkcs7.pem
generated
vendored
@ -1,14 +0,0 @@
|
|||||||
-----BEGIN PKCS7-----
|
|
||||||
MIICHQYJKoZIhvcNAQcCoIICDjCCAgoCAQExADALBgkqhkiG9w0BBwGgggHwMIIB
|
|
||||||
7DCCAZKgAwIBAgIIE/Qz49ebG7kwCgYIKoZIzj0EAwIwTDELMAkGA1UEBhMCVVMx
|
|
||||||
EzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lzY28xEDAO
|
|
||||||
BgNVBAoTB2FjbWUuY28wHhcNMTcwNTIzMTk1MTQ0WhcNMTcwODIzMDE1NjQ0WjBM
|
|
||||||
MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2Fu
|
|
||||||
IEZyYW5jaXNjbzEQMA4GA1UEChMHYWNtZS5jbzBZMBMGByqGSM49AgEGCCqGSM49
|
|
||||||
AwEHA0IABEW8F+k/avvdBm/KRsuDnTZ3p+VuVdsqDF+aD9nIYeOhx5sj574yhEIZ
|
|
||||||
OpgbEsi3BvqY63y2jYyPFodf25+CA9GjXjBcMA4GA1UdDwEB/wQEAwIFoDAdBgNV
|
|
||||||
HSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADAdBgNVHQ4E
|
|
||||||
FgQUzDpu+HN89EC1M8aNl7f0Ln5JnnIwCgYIKoZIzj0EAwIDSAAwRQIgC4/rurbw
|
|
||||||
/pzE3LDA6GpIts6TVyzgftLLEfU2BzQsjp0CIQDo+sn8t7XC6JN4KKRr2ABlZI+J
|
|
||||||
ifgG+2KCy9ln2LxGJaEAMQA=
|
|
||||||
-----END PKCS7-----
|
|
15
vendor/github.com/cloudflare/cfssl/helpers/testdata/cert_with_whitespace.pem
generated
vendored
15
vendor/github.com/cloudflare/cfssl/helpers/testdata/cert_with_whitespace.pem
generated
vendored
@ -1,15 +0,0 @@
|
|||||||
|
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIB7DCCAZKgAwIBAgIIE/Qz49ebG7kwCgYIKoZIzj0EAwIwTDELMAkGA1UEBhMC
|
|
||||||
VVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lzY28x
|
|
||||||
EDAOBgNVBAoTB2FjbWUuY28wHhcNMTcwNTIzMTk1MTQ0WhcNMTcwODIzMDE1NjQ0
|
|
||||||
WjBMMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
|
|
||||||
U2FuIEZyYW5jaXNjbzEQMA4GA1UEChMHYWNtZS5jbzBZMBMGByqGSM49AgEGCCqG
|
|
||||||
SM49AwEHA0IABEW8F+k/avvdBm/KRsuDnTZ3p+VuVdsqDF+aD9nIYeOhx5sj574y
|
|
||||||
hEIZOpgbEsi3BvqY63y2jYyPFodf25+CA9GjXjBcMA4GA1UdDwEB/wQEAwIFoDAd
|
|
||||||
BgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADAdBgNV
|
|
||||||
HQ4EFgQUzDpu+HN89EC1M8aNl7f0Ln5JnnIwCgYIKoZIzj0EAwIDSAAwRQIgC4/r
|
|
||||||
urbw/pzE3LDA6GpIts6TVyzgftLLEfU2BzQsjp0CIQDo+sn8t7XC6JN4KKRr2ABl
|
|
||||||
ZI+JifgG+2KCy9ln2LxGJQ==
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
|
|
11
vendor/github.com/cloudflare/cfssl/helpers/testdata/ecdsa256.csr
generated
vendored
11
vendor/github.com/cloudflare/cfssl/helpers/testdata/ecdsa256.csr
generated
vendored
@ -1,11 +0,0 @@
|
|||||||
-----BEGIN CERTIFICATE REQUEST-----
|
|
||||||
MIIBgTCCASgCAQAwgYYxCzAJBgNVBAYTAlVTMRMwEQYDVQQKEwpDbG91ZEZsYXJl
|
|
||||||
MRwwGgYDVQQLExNTeXN0ZW1zIEVuZ2luZWVyaW5nMRYwFAYDVQQHEw1TYW4gRnJh
|
|
||||||
bmNpc2NvMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRcwFQYDVQQDEw5jbG91ZGZsYXJl
|
|
||||||
LmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABBn9Ldie6BOcMHezn2dPuYqW
|
|
||||||
z/NoLYMLGNBqhOxUyEidYClI0JW2pWyUgT3A2UazFp1WgE94y7Z+2YlfRz+vcrKg
|
|
||||||
PzA9BgkqhkiG9w0BCQ4xMDAuMCwGA1UdEQQlMCOCDmNsb3VkZmxhcmUuY29tghF3
|
|
||||||
d3djbG91ZGZsYXJlLmNvbTAKBggqhkjOPQQDAgNHADBEAiBM+QRxe8u6rkdr10Jy
|
|
||||||
cxbR6NxrGrNeg5QqiOqF96JEmgIgDbtjd5e3y3I8W/+ih2us3WtMxgnTXfqPd48i
|
|
||||||
VLcv28Q=
|
|
||||||
-----END CERTIFICATE REQUEST-----
|
|
1
vendor/github.com/cloudflare/cfssl/helpers/testdata/empty.pem
generated
vendored
1
vendor/github.com/cloudflare/cfssl/helpers/testdata/empty.pem
generated
vendored
@ -1 +0,0 @@
|
|||||||
|
|
BIN
vendor/github.com/cloudflare/cfssl/helpers/testdata/empty_pkcs7.der
generated
vendored
BIN
vendor/github.com/cloudflare/cfssl/helpers/testdata/empty_pkcs7.der
generated
vendored
Binary file not shown.
3
vendor/github.com/cloudflare/cfssl/helpers/testdata/empty_pkcs7.pem
generated
vendored
3
vendor/github.com/cloudflare/cfssl/helpers/testdata/empty_pkcs7.pem
generated
vendored
@ -1,3 +0,0 @@
|
|||||||
-----BEGIN PKCS7-----
|
|
||||||
MCcGCSqGSIb3DQEHAqAaMBgCAQExADALBgkqhkiG9w0BBwGgAKEAMQA=
|
|
||||||
-----END PKCS7-----
|
|
2
vendor/github.com/cloudflare/cfssl/helpers/testdata/emptycert.pem
generated
vendored
2
vendor/github.com/cloudflare/cfssl/helpers/testdata/emptycert.pem
generated
vendored
@ -1,2 +0,0 @@
|
|||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
-----END CERTIFICATE-----LSKFSKLF
|
|
BIN
vendor/github.com/cloudflare/cfssl/helpers/testdata/emptypasswordpkcs12.p12
generated
vendored
BIN
vendor/github.com/cloudflare/cfssl/helpers/testdata/emptypasswordpkcs12.p12
generated
vendored
Binary file not shown.
30
vendor/github.com/cloudflare/cfssl/helpers/testdata/enc_priv_key.pem
generated
vendored
30
vendor/github.com/cloudflare/cfssl/helpers/testdata/enc_priv_key.pem
generated
vendored
@ -1,30 +0,0 @@
|
|||||||
-----BEGIN RSA PRIVATE KEY-----
|
|
||||||
Proc-Type: 4,ENCRYPTED
|
|
||||||
DEK-Info: AES-128-CBC,90B8A5792FA2FE75B2053582F3DF394F
|
|
||||||
|
|
||||||
yVY2xuth5fdJBg9gg+6eP3qTsr0CJ2mGEDW6rvYmYuATSRF1hVERrsznxJYjYLaw
|
|
||||||
JHec8FVr78y4aXxI/aFzlxLkS8f12WjTtIhzHwhzgSJDwVOXSRphnLAeHWnhEKLe
|
|
||||||
7kO+vzoTPIc3ECwdvtr6//z2tP1/sac+yIhL6C+x2rS5hFHhmDUXtILPxxfHJCiM
|
|
||||||
qtKiiOZz3W6008CeJMC9ZPlKHDvpq7aIL4rfVP/GkZ+/teQkgWNpMxac7+gWLKuK
|
|
||||||
109v6pu+8KT49D6SMsaZPvAb5PXcIB79ZCPI1JX0V26CKcswba4RHG/h1xifwyAF
|
|
||||||
OIvmK29mmFqbx5GPlUefRUuPwRJKCXFiK6LTdhCwLYodtXde4ibvOFYy4onGoVax
|
|
||||||
I5WVaOhQMqp+mxA6z7odrIvuFcQGixIA+peaaSbpNZSZGuxRvVefcdxPbJ+26Ijs
|
|
||||||
wq8uyalbwhKtjPTPNkMaaYzJdWS7wd2DS4RM9JT8Y1h6NTftCY3c+/txOlt5pQzW
|
|
||||||
T8n+NTd4o+PFOHzMnmEnrtf9Y/SSzXDB2OPCD95YdIXItQDdKcjK0NmnY8GNfkWL
|
|
||||||
G30NJNy3/DR7Sa5u4xuqNgcgTFhgZaOQ1IVB3p5VjknqAX3gWFu2DrqzbH45071A
|
|
||||||
He7VbdbzBpMHI2EdiCVOuK9fD/5sv25u9vVC2NHtG/YcoEQv+RB52TNHn9kdiMj1
|
|
||||||
gLaywPqGjFmaPxI0xX07BrL+D9RruUT1GAEyw4JAHuJZIyq3+V98wmV/pEqwc7hp
|
|
||||||
8WuSi6YddetfF4NPA5cGWt8qZ1it+wD/1ydQEAQsxdANqi0XVudYpYox02EoRS02
|
|
||||||
up0sd9zqz83pN9RyOOKtGcHdt85gb9DYRVeff1UszMaoVULxqxYetwtzpiHn6grL
|
|
||||||
DmnSk+DYgvXKOVt8tmSJysDTumhK1VN3xb34TYYJxeBOQJLzWFjGSELEpphZAQSj
|
|
||||||
rS4OM1FwoP48wvASGiWD4VUJ6v+6F+NDvJr01S+zWGLg1EeUZJmXGHW5GrGd4Kgx
|
|
||||||
3rdeOsrED9oXKp2cpgx9avXJ9upixja9MbAPp7RkSyeHMPvsuaI44xvOP3f0crmG
|
|
||||||
d/5CdBKVT7nFaeTGSx/78kHb3VJyopAMm9k0V3CheKwBXXSbXmV1+0muBxMHsEI3
|
|
||||||
aEKaI0y5cDfTewzo/U0l0kGtxF6kUPN1pdjFpAvssRlkGttFOC2nWxHwaNHpn7Kq
|
|
||||||
gFAlN6P4cyB6kb+LvckIYTZ/tV39dx7PfL0KG5TWjJ4a9GSoL1IrAhQq+Qv6oUEt
|
|
||||||
1vlejZoKyZ/35fni0fmeYNho+pCPimm6l+sHTuXkrWgGLr0S9O00HFLz11D7R4o9
|
|
||||||
7mF4JkMNztT+ENOdT4xQBi3OGjRGMwtE6PsQPfDeu13Vq6eDtdEGUdhW1kAsGnBi
|
|
||||||
eJRuysnGpnoWofJ7yS0+DhnS4GAVi907TMrQWwmez9V4CXl4NBc8X9T69TFL2LsW
|
|
||||||
2KU9NUXdiCRZqZHD41gd3+RuRA/oXh50V9oaow+uepwYKTFyzde5IH1/DgBd7tOd
|
|
||||||
Fa2fM5/zSA0uFPRb3yCVhRg5d6J9t5yaPAz7Jp0D1mDDGsMBD1O/FYJvWoANEwUX
|
|
||||||
-----END RSA PRIVATE KEY-----
|
|
48
vendor/github.com/cloudflare/cfssl/helpers/testdata/messed_up_bundle.pem
generated
vendored
48
vendor/github.com/cloudflare/cfssl/helpers/testdata/messed_up_bundle.pem
generated
vendored
@ -1,48 +0,0 @@
|
|||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIEczCCAl2gAwIBAgIIDARj8BWNsscwCwYJKoZIhvcNAQELMIGMMQswCQYDVQQG
|
|
||||||
EwJVUzETMBEGA1UEChMKQ2xvdWRGbGFyZTEcMBoGA1UECxMTU3lzdGVtcyBFbmdp
|
|
||||||
bmVlcmluZzEWMBQGA1UEBxMNU2FuIEZyYW5jaXNjbzETMBEGA1UECBMKQ2FsaWZv
|
|
||||||
cm5pYTEdMBsGA1UEAxMUY2xvdWRmbGFyZS1pbnRlci5jb20wHhcNMTQwMzAyMDAw
|
|
||||||
MDAwWhcNMTkwNDAxMDAwMDAwWjCBjDELMAkGA1UEBhMCVVMxEzARBgNVBAoTCkNs
|
|
||||||
b3VkRmxhcmUxHDAaBgNVBAsTE1N5c3RlbXMgRW5naW5lZXJpbmcxFjAUBgNVBAcT
|
|
||||||
FHsHEDAfBgNVHREEGDAWghRjbG91ZGZsYXJlLWludGVyLmNvbTALBgkqhkiG9w0B
|
|
||||||
AQsDggIBACRqAC5EJEe+8ihv1WzCUMEMb7KtS0BqoNbdXE32ia66PgJSQmHcmeJd
|
|
||||||
FI1UjL0DlljTM2tc+8KxR/1/qnKiI+W/D4wFTWOY/JWFOd15q7lXuKGl+8PMkAHF
|
|
||||||
A145JCr6oZoO9G9wUwVUrbmXAbyPCOfzsEQ2+mD9F1ZpoEjzVhtGf0R+vnYrRw8j
|
|
||||||
4WCv5AIcYRAf7HZxbhMILF1bccNlqyUtdH+/MTHXpjkjJjA5KbsHBrAEfjAXkD7c
|
|
||||||
WWOay6m7mVWb3PPFmGorP6t29baEETK9ZTZSrfD9rnExjjUCftWJEn0M4Pp98DvT
|
|
||||||
br6+bg8jwtq73qdyOfNsC/Sod18UuHH7MTQA22yqAF5jIlcYtAHGlNnl+sDPZACs
|
|
||||||
369/Z9rOL9vPFL+Z3F/uJtqZzvN1QiCkj8jWzR0u9fh3eQwZADM2RwgwS4Gs2Ygh
|
|
||||||
PsypDo33sFOwfX93KqKBsTHssn8SSDDaSnZ8bu1ATEdshbVieecuQx40UadPuJpw
|
|
||||||
EPVqTR5AhviXQ9bKrTnU5T7EgkW9vNydkpLQQlMg3QE8hsndv4loGZbZGfNtqQHS
|
|
||||||
/mg1t07S+7OEa4YaMW+wVOBOqTdW7OXlZFLfCcF5SYLM0SnlTMklRMxiqI4JqZXH
|
|
||||||
0thnUGD0JjfLX4rTaZUzT3lrXXWzpS2jzutXQkjGv4nhGGprIDuT
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIEkDCCA/ugAwIBAgIIWnP9jF/2nogwCwYJKoZIhvcNAQELMH0xCzAJBgNVBAYT
|
|
||||||
AlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1TYW4gRnJhbmNpc2Nv
|
|
||||||
MRMwEQYDVQQKDApDbG91ZEZsYXJlMRQwEgYDVQQLDAtERVZfVEVTVElORzEWMBQG
|
|
||||||
A1UEAwwNQ0ZTU0xfVEVTVF9DQTAeFw0xNDAzMDEwMDAwMDBaFw0xNDA0MTUwMDAw
|
|
||||||
MDBaMIGMMQswCQYDVQQGEwJVUzETMBEGA1UEChMKQ2xvdWRGbGFyZTEcMBoGA1UE
|
|
||||||
CxMTU3lzdGVtcyBFbmdpbmVlcmluZzEWMBQGA1UEBxMNU2FuIEZyYW5jaXNjbzET
|
|
||||||
MBEGA1UECBMKQ2FsaWZvcm5pYTEdMBsGA1UEAxMUY2xvdWRmbGFyZS1pbnRlci5j
|
|
||||||
b20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDlCnV+vj0sVPy8SqHL
|
|
||||||
AlI+xwnPhWgzj2VevD6Nz1Zu1BeQ5m5y4CWCf+GmRGTP7+a/C510Fw6rpmInB0Ng
|
|
||||||
xxwQ2rC08fJtCnijlGH/VjEPIHY5lRaAomcM8Rgx6JOuv9BpZJKpr9pyUMV53JeW
|
|
||||||
RbWuLH5nEMdyk9NpetS2gWxt4/D20QlhK/tHkROrcLmEUddwIGdwE8JzI88c77Fu
|
|
||||||
u6pgMtHKvl4GGH0yvb4T7PvCdH8V2tCH7bt8roXd9MSyFVy7uORkfouip7EsVREU
|
|
||||||
mlcY5EvpR141KXbZqiOQiusJ+u76mEUQNk8wCR1/CW/ii9v1BKOVjXwCfEtIXjg0
|
|
||||||
APJx1VNSSH6XoDpUETL+eQ4J0FL9XNbsDuYar7+zD0N1/5vSo3HLNRQR9f0lbsys
|
|
||||||
sWBEN+CxK19xyPumr21Z0bU0f1B5H52VSF0q3I1Ju9wRo994a7YipdGcmZ2lChmT
|
|
||||||
7r3mzlBTYl3poU26q34v8wG9U7Jv4fsZJ+RGebDI+TR3QG6Yod06l9oEYZxWXBY7
|
|
||||||
STOs8wuTu3huSnan/IpWnV017Vsc61D5G+QrqcxZdXckt3anZKCF75JpUnJ7vuow
|
|
||||||
TmmHlb8KIMa9mOvcuGX4P6mz8gTi2arl/aL27kj9Q0Jgv/y1ebe2Bx2P9TF6+VND
|
|
||||||
DL3J/vSVlFeqLt2reAIBKnytLwIDAQABo4GIMIGFMA4GA1UdDwEB/wQEAwIApDAS
|
|
||||||
BgNVHRMBAf8ECDAGAQH/AgEBMB0GA1UdDgQWBBTXXUgpaSwO9HOrQBxGqOOSFHsH
|
|
||||||
EDAfBgNVHSMEGDAWgBS4Xu+uZ1C31vMH5Wq+VbNnOg2SPjAfBgNVHREEGDAWghRj
|
|
||||||
bG91ZGZsYXJlLWludGVyLmNvbTALBgkqhkiG9w0BAQsDgYEAfPLKCAHnPzgMYLX/
|
|
||||||
fWznVvOEFAAYZByPFx4QdMBbDZUtxHyvJIBs6PdxrdSuDwSiMqE7qQIi+jzzwGl9
|
|
||||||
fC7vf45B2zCX0OW51QL2oWNBdKlGgB+b2pwyME82lX/Pr7V1GY10u+ep1xdZDnch
|
|
||||||
DaMsXjQQTJu0iuG3qKEuCmUwOmc=
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
SDFSDKjkfdlsdfj
|
|
20
vendor/github.com/cloudflare/cfssl/helpers/testdata/messed_up_priv_key.pem
generated
vendored
20
vendor/github.com/cloudflare/cfssl/helpers/testdata/messed_up_priv_key.pem
generated
vendored
@ -1,20 +0,0 @@
|
|||||||
-----BEGIN RSA PRIVATE KEY-----
|
|
||||||
MIIEowIBAAKCAQEAvGKyz9ZzIXI/BFrtqbVQMmKQkPZGndyfV3AzeSb2ulbS/s5k
|
|
||||||
yNJMH/jKZiSCvZiJNnW+JNlJrgLxORMmPStPz/N/0L0vCTotQKZUiaBttFgHgobQ
|
|
||||||
LFsbMnumt9It5W/uOwgWI9binuzvqyPXywLlYwOq3jkOmA22ymhflzRrl6a3jzcY
|
|
||||||
hT9evxHl0gV4bN7KZ5p4wK/UUuG1uMEQLw87lUwRRHeW3ZG52VL38+redka+f5pa
|
|
||||||
SGKyG5j0oe1NPLqAjckNgqvDdPMY2gicmCq0VSLzTNpHRsURTUSJvC/iv34vVfba
|
|
||||||
gIYgTvm8BvGbJSlZqP4kEVlOfd3vmB0ttUeoDwIDAQABAoIBAHZdpXCFlA1d1U6N
|
|
||||||
O2s4a01dNOyAcVpa9xtfelgTLU9jomtLj3PG/uHP1oxbQHKUVxKK5JAOnwbg/mQY
|
|
||||||
LhydDCbjHlovpFAt56UJXXCkBoocDYvr3P0huXL80oIJY6EXtR4ONKsMJ5Qn12c2
|
|
||||||
vC3ogey2rzO1sf/EDigbcIR3AWtk1Tx8ZDUooktOFypIsDQgjjxXiURGssAlMPSh
|
|
||||||
6GVgO4JRRG6oRxEna7yDe7izmh/hC5sxSYLsEikCgYEAsBHhb/Qef5obRCSrfFuQ
|
|
||||||
41P7MCtGrXVxKD3iCDGQCzVbEbYGpmZnGsXSaHljp2FtnamaGGEudYziozGKPHjs
|
|
||||||
pbTbsLIDbmNwxz1WcaZ1iyIjtOxcAEqDod8hY4hL6SaxypwTHn4Ydbw2NGzp11Eg
|
|
||||||
Di4SVL82utjycATdKFvBzdsCgYB/3M+GMrt0Sh87rKcQLdL709Kzjcfhvm4HjIbJ
|
|
||||||
GSXGPCZaYMKaXRTdNAjtRKxMawc9qcf0xSBEHL0GkB158TzusDQtjP1anTcYOnl6
|
|
||||||
GsO4bRivp314iNlP4r3S3bIXqBxCGH3HbrvpdPFAN//qjYmAki2lFQZywfvbQOE8
|
|
||||||
oFQHwQKBgHqJkTck2DGlXQIwA7jirLggISXjSPlsG4w4LuhY9ivyNKLUi4x5k1cE
|
|
||||||
bX7SrRtJErQ1WaDN4TFG25xnysi5h+aPinuySatd0XmA5+dE1YjTqqShMO+lUpzi
|
|
||||||
PrOQl6Eva/uw5BDAcUH4AaXTNRvvtXQptUil9qXyOh6fszikA9Mm
|
|
||||||
-----END RSA PRIVATE KEY-----
|
|
11
vendor/github.com/cloudflare/cfssl/helpers/testdata/messedupcert.pem
generated
vendored
11
vendor/github.com/cloudflare/cfssl/helpers/testdata/messedupcert.pem
generated
vendored
@ -1,11 +0,0 @@
|
|||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIB7jCCAVmgAwIBAgIBADALBgkqhkiG9w0BAQUwJjEQMA4GA1UEChMHQWNtZSBD
|
|
||||||
bzESMBAGA1UEAxMJMTI3LjAuMC4xMB4XDTEyMDkwNzIyMDAwNFoXDTEzMDkwNzIy
|
|
||||||
MDUwNFowJjEQMA4GA1UEChMHQWNtZSBDbzESMBAGA1UEAxMJMTI3LjAuMC4xMIGd
|
|
||||||
MAsGCSqGSIb3DQEBAQOBjQAwgYkCgYEAm6f+jkP2t5q/vM0YAUZZkhq/EAYD+L1C
|
|
||||||
cqhEvLFbu3MCAwEAAaMyMDAwDgYDVR0PAQH/BAQDAgCgMA0GA1UdDgQGBAQBAgME
|
|
||||||
MA8GA1UdIwQIMAaABAECAwQwCwYJKoZIhvcNAQEFA4GBABndWRIcfi+QB9Sakr+m
|
|
||||||
dYnXTgYCnFio53L2Z+6EHTGG+rEhWtUEGhL4p4pzXX4siAnjWvwcgXTo92cafcfi
|
|
||||||
uB7wRfK+NL9CTJdpN6cdL+fiNHzH8hsl3bj1nL0CSmdn2hkUWVLbLhSgWlib/I8O
|
|
||||||
aq+K7aVrgHkPnWeRiG6tl+ZA
|
|
||||||
-----END CERTIFICATE-----
|
|
BIN
vendor/github.com/cloudflare/cfssl/helpers/testdata/multiplecerts.p12
generated
vendored
BIN
vendor/github.com/cloudflare/cfssl/helpers/testdata/multiplecerts.p12
generated
vendored
Binary file not shown.
9
vendor/github.com/cloudflare/cfssl/helpers/testdata/noheadercert.pem
generated
vendored
9
vendor/github.com/cloudflare/cfssl/helpers/testdata/noheadercert.pem
generated
vendored
@ -1,9 +0,0 @@
|
|||||||
MIIB7jCCAVmgAwIBAgIBADALBgkqhkiG9w0BAQUwJjEQMA4GA1UEChMHQWNtZSBD
|
|
||||||
bzESMBAGA1UEAxMJMTI3LjAuMC4xMB4XDTEyMDkwNzIyMDAwNFoXDTEzMDkwNzIy
|
|
||||||
MDUwNFowJjEQMA4GA1UEChMHQWNtZSBDbzESMBAGA1UEAxMJMTI3LjAuMC4xMIGd
|
|
||||||
MAsGCSqGSIb3DQEBAQOBjQAwgYkCgYEAm6f+jkP2t5q/vM0YAUZZkhq/EAYD+L1C
|
|
||||||
cqhEvLFbu3MCAwEAAaMyMDAwDgYDVR0PAQH/BAQDAgCgMA0GA1UdDgQGBAQBAgME
|
|
||||||
MA8GA1UdIwQIMAaABAECAwQwCwYJKoZIhvcNAQEFA4GBABndWRIcfi+QB9Sakr+m
|
|
||||||
dYnXTgYCnFio53L2Z+6EHTGG+rEhWtUEGhL4p4pzXX4siAnjWvwcgXTo92cafcfi
|
|
||||||
uB7wRfK+NL9CTJdpN6cdL+fiNHzH8hsl3bj1nL0CSmdn2hkUWVLbLhSgWlib/I8O
|
|
||||||
aq+K7aVrgHkPnWeRiG6tl+ZA
|
|
BIN
vendor/github.com/cloudflare/cfssl/helpers/testdata/passwordpkcs12.p12
generated
vendored
BIN
vendor/github.com/cloudflare/cfssl/helpers/testdata/passwordpkcs12.p12
generated
vendored
Binary file not shown.
28
vendor/github.com/cloudflare/cfssl/helpers/testdata/priv_rsa_key.pem
generated
vendored
28
vendor/github.com/cloudflare/cfssl/helpers/testdata/priv_rsa_key.pem
generated
vendored
@ -1,28 +0,0 @@
|
|||||||
-----BEGIN RSA PRIVATE KEY-----
|
|
||||||
MIIEowIBAAKCAQEAvGKyz9ZzIXI/BFrtqbVQMmKQkPZGndyfV3AzeSb2ulbS/s5k
|
|
||||||
yNJMH/jKZiSCvZiJNnW+JNlJrgLxORMmPStPz/N/0L0vCTotQKZUiaBttFgHgobQ
|
|
||||||
LFsbMnumt9It5W/uOwgWI9binuzvqyPXywLlYwOq3jkOmA22ymhflzRrl6a3jzcY
|
|
||||||
hT9evxHl0gV4bN7KZ5p4wK/UUuG1uMEQLw87lUwRRHeW3ZG52VL38+redka+f5pa
|
|
||||||
SGKyG5j0oe1NPLqAjckNgqvDdPMY2gicmCq0VSLzTNpHRsURTUSJvC/iv34vVfba
|
|
||||||
gIYgTvm8BvGbJSlZqP4kEVlOfd3vmB0ttUeoDwIDAQABAoIBAHZdpXCFlA1d1U6N
|
|
||||||
O2s4a01dNOyAcVpa9xtfelgTLU9jomtLj3PG/uHP1oxbQHKUVxKK5JAOnwbg/mQY
|
|
||||||
LhydDCbjHlovpFAt56UJXXCkBoocDYvr3P0huXL80oIJY6EXtR4ONKsMJ5Qn12c2
|
|
||||||
vC3ogey2rzO1sf/EDigbcIR3AWtk1Tx8ZDUooktOFypIsDQgjjxXiURGssAlMPSh
|
|
||||||
1BFz4StRUK4bESaja0GiHwbuxHa+XYEBlK5OqMo/fpWqpgHhV/42+7wdcBMJsMr8
|
|
||||||
rFBe6m+r6TTbLSGJNowyd05XrjoAI35qduckpJ3Voun90i4ynTudjdJ/vHpIqB74
|
|
||||||
qQLFW2ECgYEA+GSRVqobaKKakNUFGmK0I5T5Tikz5f137YXXER6aLtDQNiSrlXNi
|
|
||||||
0aphkC/EfRO3oNvamq5+55bmmgDVoNNPDfpajKz+LZyG8GC2EXlTKO0hZS64KRRl
|
|
||||||
C+bd+ZsYiUDImNVRbIHN82f+BQgsgXlTaWpBOrEqmoePO/J44O4eX3cCgYEAwieq
|
|
||||||
amY4UaY+MhWPJFRK1y9M3hM8+N9N/35CFewQUdFJosC6vVQ4t8jNkSOxVQdgbNwE
|
|
||||||
i/bTBgIwg82JJYbBUPuCVeTT3i6zxymf/FLumrI73URD81IN6FiH1skg0hSFrvs0
|
|
||||||
6GVgO4JRRG6oRxEna7yDe7izmh/hC5sxSYLsEikCgYEAsBHhb/Qef5obRCSrfFuQ
|
|
||||||
41P7MCtGrXVxKD3iCDGQCzVbEbYGpmZnGsXSaHljp2FtnamaGGEudYziozGKPHjs
|
|
||||||
pbTbsLIDbmNwxz1WcaZ1iyIjtOxcAEqDod8hY4hL6SaxypwTHn4Ydbw2NGzp11Eg
|
|
||||||
Di4SVL82utjycATdKFvBzdsCgYB/3M+GMrt0Sh87rKcQLdL709Kzjcfhvm4HjIbJ
|
|
||||||
GSXGPCZaYMKaXRTdNAjtRKxMawc9qcf0xSBEHL0GkB158TzusDQtjP1anTcYOnl6
|
|
||||||
GsO4bRivp314iNlP4r3S3bIXqBxCGH3HbrvpdPFAN//qjYmAki2lFQZywfvbQOE8
|
|
||||||
oFQHwQKBgHqJkTck2DGlXQIwA7jirLggISXjSPlsG4w4LuhY9ivyNKLUi4x5k1cE
|
|
||||||
bX7SrRtJErQ1WaDN4TFG25xnysi5h+aPinuySatd0XmA5+dE1YjTqqShMO+lUpzi
|
|
||||||
PrOQl6Eva/uw5BDAcUH4AaXTNRvvtXQptUil9qXyOh6fszikA9Mm
|
|
||||||
-----END RSA PRIVATE KEY-----
|
|
||||||
|
|
5
vendor/github.com/cloudflare/cfssl/helpers/testdata/private_ecdsa_key.pem
generated
vendored
5
vendor/github.com/cloudflare/cfssl/helpers/testdata/private_ecdsa_key.pem
generated
vendored
@ -1,5 +0,0 @@
|
|||||||
-----BEGIN EC PRIVATE KEY-----
|
|
||||||
MGgCAQEEHCGXsrNo2xfy8+zd4Pzj8rcQ5KqQO43au1t/7nugBwYFK4EEACGhPAM6
|
|
||||||
AASJodCTtj5aYXnWxMiYhwjEgNQJJbNzJFEbsGJX9pCWZC673ammTWFHMjnMPkS/
|
|
||||||
9eU5YeW40BHqfw==
|
|
||||||
-----END EC PRIVATE KEY-----
|
|
19
vendor/github.com/cloudflare/cfssl/helpers/testdata/rsa-old.csr
generated
vendored
19
vendor/github.com/cloudflare/cfssl/helpers/testdata/rsa-old.csr
generated
vendored
@ -1,19 +0,0 @@
|
|||||||
-----BEGIN NEW CERTIFICATE REQUEST-----
|
|
||||||
MIIDCTCCAfMCAQAwgYYxCzAJBgNVBAYTAlVTMRMwEQYDVQQKEwpDbG91ZEZsYXJl
|
|
||||||
MRwwGgYDVQQLExNTeXN0ZW1zIEVuZ2luZWVyaW5nMRYwFAYDVQQHEw1TYW4gRnJh
|
|
||||||
bmNpc2NvMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRcwFQYDVQQDEw5jbG91ZGZsYXJl
|
|
||||||
LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALTWdoYxX4KN51fP
|
|
||||||
WxQAyGH++VsPbfpAoXIbCPXSmU04BvIxyjzpHQ0ChMKkT/2VNcUeFJwk2fCf+ZwU
|
|
||||||
f0raTQTplofwkckE0gEYA3WcEfJp+hbvbTb/2recsf+JE6JACYJe2Uu5wsjtrE5j
|
|
||||||
A+7aT2BEU9RWzBdSy/5281ZfW3PArqcWaf8+RUyA3WRxVWmjmhFsVB+mdNLhCpW0
|
|
||||||
C0QNMYR1ppEZiKVnEdao8gcI5sOvSd+35t8g82aPXcNSPU6jKcx1YNUPX5wgPEmu
|
|
||||||
+anfc9RliQbYqqJYVODgBmV8IR5grw93yTsODoWKtFQ4PKVlnt9CD8AS/iSMQYm3
|
|
||||||
OUogqgMCAwEAAaA/MD0GCSqGSIb3DQEJDjEwMC4wLAYDVR0RBCUwI4IOY2xvdWRm
|
|
||||||
bGFyZS5jb22CEXd3d2Nsb3VkZmxhcmUuY29tMAsGCSqGSIb3DQEBCwOCAQEAl809
|
|
||||||
gk9uZkRK+MJVYDSLjgGR2xqk5qOwnhovnispA7N3Z1GshodJRQa6ngNCKuXIm2/6
|
|
||||||
AxB9kDGK14n186Qq4odXqHSHs8FG9i0zUcBXeLv1rPAKtwKTas/SLmsOpPgWPZFa
|
|
||||||
iYiHHeu4HjOQoF987d7uGRYwc3xfstKwJsEXc12eCw2NH8TM1tJgSc/o6CzIpA91
|
|
||||||
QnZKhx6uGM4xI2gnOaJA1YikNhyFGBuOGMZgd0k2+/IcR2pg0z4pc5oQw1bXLANx
|
|
||||||
anqlA/MDrCM9v9019bRJ73zK8LQ3k/FW61PA9nL7RZ8ku65R+uYcVEdLa8pUeqnH
|
|
||||||
cJZNboDRsItpccZuRQ==
|
|
||||||
-----END NEW CERTIFICATE REQUEST-----
|
|
5
vendor/github.com/cloudflare/cfssl/helpers/testdata/secp256k1-key.pem
generated
vendored
5
vendor/github.com/cloudflare/cfssl/helpers/testdata/secp256k1-key.pem
generated
vendored
@ -1,5 +0,0 @@
|
|||||||
-----BEGIN EC PRIVATE KEY-----
|
|
||||||
MHQCAQEEIJLKycmoCAk4HqlJGdsuFyHsxfIheKsLH91tS/TNP5OOoAcGBSuBBAAK
|
|
||||||
oUQDQgAEBkmL7cvC2cgchzfSuUZPGnzH0FqBtf3kGhSllQiIzGDn4envPXNqp+93
|
|
||||||
V2NZ8VT+Aba4ln2Vbp9gYrKquut5Zg==
|
|
||||||
-----END EC PRIVATE KEY-----
|
|
15
vendor/github.com/cloudflare/cfssl/helpers/testdata/test.bad.csr.pem
generated
vendored
15
vendor/github.com/cloudflare/cfssl/helpers/testdata/test.bad.csr.pem
generated
vendored
@ -1,15 +0,0 @@
|
|||||||
-----BEGIN CERTIFICATE REQUEST-----
|
|
||||||
MIICzDCCAbQCAQAwgYYxCzAJBgNVBAYTAkVOMQ0wCwYDVQQIDARub25lMQ0wCwYD
|
|
||||||
VQQHDARub25lMRIwEAYDVQQKDAlXaWtpcGVkaWExDTALBgNVBAsMBG5vbmUxGDAW
|
|
||||||
BgNVBAMMDyoud2lraXBlZGlhLm9yZzEcMBoGCSqGSIb3DQEJARYNbm9uZUBub25l
|
|
||||||
LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMP/U8RlcCD6E8AL
|
|
||||||
PT8LLUR9ygyygPCaSmIEC8zXGJung3ykElXFRz/Jc/bu0hxCxi2YDz5IjxBBOpB/
|
|
||||||
kieG83HsSmZZtR+drZIQ6vOsr/ucvpnB9z4XzKuabNGZ5ZiTSQ9L7Mx8FzvUTq5y
|
|
||||||
57HhA7ECAwEAAaAAMA0GCSqGSIb3DQEBBAUAA4IBAQBn8OCVOIx+n0AS6WbEmYDR
|
|
||||||
SspR9xOCoOwYfamB+2Bpmt82R01zJ/kaqzUtZUjaGvQvAaz5lUwoMdaO0X7I5Xfl
|
|
||||||
sllMFDaYoGD4Rru4s8gz2qG/QHWA8uPXzJVAj6X0olbIdLTEqTKsnBj4Zr1AJCNy
|
|
||||||
/YcG4ouLJr140o26MhwBpoCRpPjAgdYMH60BYfnc4/DILxMVqR9xqK1s98d6Ob/+
|
|
||||||
3wHFK+S7BRWrJQXcM8veAexXuk9lHQ+FgGfD0eSYGz0kyP26Qa2pLTwumjt+nBPl
|
|
||||||
rfJxaLHwTQ/1988G0H35ED0f9Md5fzoKi5evU1wG5WRxdEUPyt3QUXxdQ69i0C+7
|
|
||||||
-----END CERTIFICATE REQUEST-----
|
|
||||||
|
|
18
vendor/github.com/cloudflare/cfssl/helpers/testdata/test.csr.pem
generated
vendored
18
vendor/github.com/cloudflare/cfssl/helpers/testdata/test.csr.pem
generated
vendored
@ -1,18 +0,0 @@
|
|||||||
-----BEGIN CERTIFICATE REQUEST-----
|
|
||||||
MIICzDCCAbQCAQAwgYYxCzAJBgNVBAYTAkVOMQ0wCwYDVQQIDARub25lMQ0wCwYD
|
|
||||||
VQQHDARub25lMRIwEAYDVQQKDAlXaWtpcGVkaWExDTALBgNVBAsMBG5vbmUxGDAW
|
|
||||||
BgNVBAMMDyoud2lraXBlZGlhLm9yZzEcMBoGCSqGSIb3DQEJARYNbm9uZUBub25l
|
|
||||||
LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMP/U8RlcCD6E8AL
|
|
||||||
PT8LLUR9ygyygPCaSmIEC8zXGJung3ykElXFRz/Jc/bu0hxCxi2YDz5IjxBBOpB/
|
|
||||||
kieG83HsSmZZtR+drZIQ6vOsr/ucvpnB9z4XzKuabNGZ5ZiTSQ9L7Mx8FzvUTq5y
|
|
||||||
/ArIuM+FBeuno/IV8zvwAe/VRa8i0QjFXT9vBBp35aeatdnJ2ds50yKCsHHcjvtr
|
|
||||||
9/8zPVqqmhl2XFS3Qdqlsprzbgksom67OobJGjaV+fNHNQ0o/rzP//Pl3i7vvaEG
|
|
||||||
7Ff8tQhEwR9nJUR1T6Z7ln7S6cOr23YozgWVkEJ/dSr6LAopb+cZ88FzW5NszU6i
|
|
||||||
57HhA7ECAwEAAaAAMA0GCSqGSIb3DQEBBAUAA4IBAQBn8OCVOIx+n0AS6WbEmYDR
|
|
||||||
SspR9xOCoOwYfamB+2Bpmt82R01zJ/kaqzUtZUjaGvQvAaz5lUwoMdaO0X7I5Xfl
|
|
||||||
sllMFDaYoGD4Rru4s8gz2qG/QHWA8uPXzJVAj6X0olbIdLTEqTKsnBj4Zr1AJCNy
|
|
||||||
/YcG4ouLJr140o26MhwBpoCRpPjAgdYMH60BYfnc4/DILxMVqR9xqK1s98d6Ob/+
|
|
||||||
3wHFK+S7BRWrJQXcM8veAexXuk9lHQ+FgGfD0eSYGz0kyP26Qa2pLTwumjt+nBPl
|
|
||||||
rfJxaLHwTQ/1988G0H35ED0f9Md5fzoKi5evU1wG5WRxdEUPyt3QUXxdQ69i0C+7
|
|
||||||
-----END CERTIFICATE REQUEST-----
|
|
||||||
|
|
385
vendor/github.com/cloudflare/cfssl/initca/initca_test.go
generated
vendored
385
vendor/github.com/cloudflare/cfssl/initca/initca_test.go
generated
vendored
@ -1,385 +0,0 @@
|
|||||||
package initca
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bytes"
|
|
||||||
"crypto/ecdsa"
|
|
||||||
"crypto/rsa"
|
|
||||||
"io/ioutil"
|
|
||||||
"strings"
|
|
||||||
"testing"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/cloudflare/cfssl/config"
|
|
||||||
"github.com/cloudflare/cfssl/csr"
|
|
||||||
"github.com/cloudflare/cfssl/helpers"
|
|
||||||
"github.com/cloudflare/cfssl/signer"
|
|
||||||
"github.com/cloudflare/cfssl/signer/local"
|
|
||||||
)
|
|
||||||
|
|
||||||
var validKeyParams = []csr.BasicKeyRequest{
|
|
||||||
{A: "rsa", S: 2048},
|
|
||||||
{A: "rsa", S: 3072},
|
|
||||||
{A: "rsa", S: 4096},
|
|
||||||
{A: "ecdsa", S: 256},
|
|
||||||
{A: "ecdsa", S: 384},
|
|
||||||
{A: "ecdsa", S: 521},
|
|
||||||
}
|
|
||||||
|
|
||||||
var validCAConfigs = []csr.CAConfig{
|
|
||||||
{PathLength: 0, PathLenZero: true},
|
|
||||||
{PathLength: 0, PathLenZero: false},
|
|
||||||
{PathLength: 2},
|
|
||||||
{PathLength: 2, Expiry: "1h"},
|
|
||||||
// invalid PathLenZero value will be ignored
|
|
||||||
{PathLength: 2, PathLenZero: true},
|
|
||||||
}
|
|
||||||
|
|
||||||
var invalidCAConfig = csr.CAConfig{
|
|
||||||
PathLength: 2,
|
|
||||||
// Expiry must be a duration string
|
|
||||||
Expiry: "2116/12/31",
|
|
||||||
}
|
|
||||||
var csrFiles = []string{
|
|
||||||
"testdata/rsa2048.csr",
|
|
||||||
"testdata/rsa3072.csr",
|
|
||||||
"testdata/rsa4096.csr",
|
|
||||||
"testdata/ecdsa256.csr",
|
|
||||||
"testdata/ecdsa384.csr",
|
|
||||||
"testdata/ecdsa521.csr",
|
|
||||||
}
|
|
||||||
|
|
||||||
var testRSACAFile = "testdata/5min-rsa.pem"
|
|
||||||
var testRSACAKeyFile = "testdata/5min-rsa-key.pem"
|
|
||||||
var testECDSACAFile = "testdata/5min-ecdsa.pem"
|
|
||||||
var testECDSACAKeyFile = "testdata/5min-ecdsa-key.pem"
|
|
||||||
|
|
||||||
var invalidCryptoParams = []csr.BasicKeyRequest{
|
|
||||||
// Weak Key
|
|
||||||
{A: "rsa", S: 1024},
|
|
||||||
// Bad param
|
|
||||||
{A: "rsaCrypto", S: 2048},
|
|
||||||
{A: "ecdsa", S: 2000},
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestInitCA(t *testing.T) {
|
|
||||||
var req *csr.CertificateRequest
|
|
||||||
hostname := "cloudflare.com"
|
|
||||||
for _, param := range validKeyParams {
|
|
||||||
for _, caconfig := range validCAConfigs {
|
|
||||||
req = &csr.CertificateRequest{
|
|
||||||
Names: []csr.Name{
|
|
||||||
{
|
|
||||||
C: "US",
|
|
||||||
ST: "California",
|
|
||||||
L: "San Francisco",
|
|
||||||
O: "CloudFlare",
|
|
||||||
OU: "Systems Engineering",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
CN: hostname,
|
|
||||||
Hosts: []string{hostname, "www." + hostname},
|
|
||||||
KeyRequest: ¶m,
|
|
||||||
CA: &caconfig,
|
|
||||||
}
|
|
||||||
certBytes, _, keyBytes, err := New(req)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal("InitCA failed:", err)
|
|
||||||
}
|
|
||||||
key, err := helpers.ParsePrivateKeyPEM(keyBytes)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal("InitCA private key parsing failed:", err)
|
|
||||||
}
|
|
||||||
cert, err := helpers.ParseCertificatePEM(certBytes)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal("InitCA cert parsing failed:", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Verify key parameters.
|
|
||||||
switch req.KeyRequest.Algo() {
|
|
||||||
case "rsa":
|
|
||||||
if cert.PublicKey.(*rsa.PublicKey).N.BitLen() != param.Size() {
|
|
||||||
t.Fatal("Cert key length mismatch.")
|
|
||||||
}
|
|
||||||
if key.(*rsa.PrivateKey).N.BitLen() != param.Size() {
|
|
||||||
t.Fatal("Private key length mismatch.")
|
|
||||||
}
|
|
||||||
case "ecdsa":
|
|
||||||
if cert.PublicKey.(*ecdsa.PublicKey).Curve.Params().BitSize != param.Size() {
|
|
||||||
t.Fatal("Cert key length mismatch.")
|
|
||||||
}
|
|
||||||
if key.(*ecdsa.PrivateKey).Curve.Params().BitSize != param.Size() {
|
|
||||||
t.Fatal("Private key length mismatch.")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Verify CA MaxPathLen
|
|
||||||
if caconfig.PathLength == 0 && cert.MaxPathLenZero != caconfig.PathLenZero {
|
|
||||||
t.Fatalf("fail to init a CA cert with specified CA pathlen zero: expect %v, got %v", caconfig.PathLenZero, cert.MaxPathLenZero)
|
|
||||||
}
|
|
||||||
|
|
||||||
if caconfig.PathLength != 0 {
|
|
||||||
if cert.MaxPathLen != caconfig.PathLength {
|
|
||||||
t.Fatalf("fail to init a CA cert with specified CA pathlen: expect %d, got %d", caconfig.PathLength, cert.MaxPathLen)
|
|
||||||
}
|
|
||||||
if cert.MaxPathLenZero != false {
|
|
||||||
t.Fatalf("fail to init a CA cert with specified CA pathlen zero: expect false, got %t", cert.MaxPathLenZero)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Replace the default CAPolicy with a test (short expiry) version.
|
|
||||||
CAPolicy = func() *config.Signing {
|
|
||||||
return &config.Signing{
|
|
||||||
Default: &config.SigningProfile{
|
|
||||||
Usage: []string{"cert sign", "crl sign"},
|
|
||||||
ExpiryString: "300s",
|
|
||||||
Expiry: 300 * time.Second,
|
|
||||||
CAConstraint: config.CAConstraint{IsCA: true},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Start a signer
|
|
||||||
s, err := local.NewSigner(key, cert, signer.DefaultSigAlgo(key), nil)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal("Signer Creation error:", err)
|
|
||||||
}
|
|
||||||
s.SetPolicy(CAPolicy())
|
|
||||||
|
|
||||||
// Sign RSA and ECDSA customer CSRs.
|
|
||||||
for _, csrFile := range csrFiles {
|
|
||||||
csrBytes, err := ioutil.ReadFile(csrFile)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal("CSR loading error:", err)
|
|
||||||
}
|
|
||||||
req := signer.SignRequest{
|
|
||||||
Request: string(csrBytes),
|
|
||||||
Hosts: signer.SplitHosts(hostname),
|
|
||||||
Profile: "",
|
|
||||||
Label: "",
|
|
||||||
}
|
|
||||||
|
|
||||||
bytes, err := s.Sign(req)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
customerCert, _ := helpers.ParseCertificatePEM(bytes)
|
|
||||||
if customerCert.SignatureAlgorithm != s.SigAlgo() {
|
|
||||||
t.Fatal("Signature Algorithm mismatch")
|
|
||||||
}
|
|
||||||
err = customerCert.CheckSignatureFrom(cert)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal("Signing CSR failed.", err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
func TestInvalidCAConfig(t *testing.T) {
|
|
||||||
hostname := "example.com"
|
|
||||||
req := &csr.CertificateRequest{
|
|
||||||
Names: []csr.Name{
|
|
||||||
{
|
|
||||||
C: "US",
|
|
||||||
ST: "California",
|
|
||||||
L: "San Francisco",
|
|
||||||
O: "CloudFlare",
|
|
||||||
OU: "Systems Engineering",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
CN: hostname,
|
|
||||||
Hosts: []string{hostname, "www." + hostname},
|
|
||||||
KeyRequest: &validKeyParams[0],
|
|
||||||
CA: &invalidCAConfig,
|
|
||||||
}
|
|
||||||
|
|
||||||
_, _, _, err := New(req)
|
|
||||||
if err == nil {
|
|
||||||
t.Fatal("InitCA with bad CAConfig should fail:", err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
func TestInvalidCryptoParams(t *testing.T) {
|
|
||||||
var req *csr.CertificateRequest
|
|
||||||
hostname := "cloudflare.com"
|
|
||||||
for _, invalidParam := range invalidCryptoParams {
|
|
||||||
req = &csr.CertificateRequest{
|
|
||||||
Names: []csr.Name{
|
|
||||||
{
|
|
||||||
C: "US",
|
|
||||||
ST: "California",
|
|
||||||
L: "San Francisco",
|
|
||||||
O: "CloudFlare",
|
|
||||||
OU: "Systems Engineering",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
CN: hostname,
|
|
||||||
Hosts: []string{hostname, "www." + hostname},
|
|
||||||
KeyRequest: &invalidParam,
|
|
||||||
}
|
|
||||||
_, _, _, err := New(req)
|
|
||||||
if err == nil {
|
|
||||||
t.Fatal("InitCA with bad params should fail:", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if !strings.Contains(err.Error(), `"code":2400`) {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
type validation struct {
|
|
||||||
r *csr.CertificateRequest
|
|
||||||
v bool
|
|
||||||
}
|
|
||||||
|
|
||||||
var testValidations = []validation{
|
|
||||||
{&csr.CertificateRequest{}, false},
|
|
||||||
{&csr.CertificateRequest{
|
|
||||||
CN: "test CA",
|
|
||||||
}, true},
|
|
||||||
{&csr.CertificateRequest{
|
|
||||||
Names: []csr.Name{{}},
|
|
||||||
}, false},
|
|
||||||
{&csr.CertificateRequest{
|
|
||||||
Names: []csr.Name{
|
|
||||||
{O: "Example CA"},
|
|
||||||
},
|
|
||||||
}, true},
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestValidations(t *testing.T) {
|
|
||||||
for i, tv := range testValidations {
|
|
||||||
err := validator(tv.r)
|
|
||||||
if tv.v && err != nil {
|
|
||||||
t.Fatalf("%v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if !tv.v && err == nil {
|
|
||||||
t.Fatalf("%d: expected error, but no error was reported", i)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestRenewRSA(t *testing.T) {
|
|
||||||
certPEM, err := RenewFromPEM(testRSACAFile, testRSACAKeyFile)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// must parse ok
|
|
||||||
cert, err := helpers.ParseCertificatePEM(certPEM)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if !cert.IsCA {
|
|
||||||
t.Fatal("renewed CA certificate is not CA")
|
|
||||||
}
|
|
||||||
|
|
||||||
// cert expiry must be 5 minutes
|
|
||||||
expiry := cert.NotAfter.Sub(cert.NotBefore).Seconds()
|
|
||||||
if expiry >= 301 || expiry <= 299 {
|
|
||||||
t.Fatal("expiry is not correct:", expiry)
|
|
||||||
}
|
|
||||||
|
|
||||||
// check subject
|
|
||||||
|
|
||||||
if cert.Subject.CommonName != "" {
|
|
||||||
t.Fatal("Bad CommonName")
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(cert.Subject.Country) != 1 || cert.Subject.Country[0] != "US" {
|
|
||||||
t.Fatal("Bad Subject")
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(cert.Subject.Organization) != 1 || cert.Subject.Organization[0] != "CloudFlare, Inc." {
|
|
||||||
t.Fatal("Bad Subject")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestRenewECDSA(t *testing.T) {
|
|
||||||
certPEM, err := RenewFromPEM(testECDSACAFile, testECDSACAKeyFile)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// must parse ok
|
|
||||||
cert, err := helpers.ParseCertificatePEM(certPEM)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if !cert.IsCA {
|
|
||||||
t.Fatal("renewed CA certificate is not CA")
|
|
||||||
}
|
|
||||||
|
|
||||||
// cert expiry must be 5 minutes
|
|
||||||
expiry := cert.NotAfter.Sub(cert.NotBefore).Seconds()
|
|
||||||
if expiry >= 301 || expiry <= 299 {
|
|
||||||
t.Fatal("expiry is not correct:", expiry)
|
|
||||||
}
|
|
||||||
|
|
||||||
// check subject
|
|
||||||
|
|
||||||
if cert.Subject.CommonName != "" {
|
|
||||||
t.Fatal("Bad CommonName")
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(cert.Subject.Country) != 1 || cert.Subject.Country[0] != "US" {
|
|
||||||
t.Fatal("Bad Subject")
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(cert.Subject.Organization) != 1 || cert.Subject.Organization[0] != "CloudFlare, Inc." {
|
|
||||||
t.Fatal("Bad Subject")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestRenewMismatch(t *testing.T) {
|
|
||||||
_, err := RenewFromPEM(testECDSACAFile, testRSACAKeyFile)
|
|
||||||
if err == nil {
|
|
||||||
t.Fatal("Fail to detect cert/key mismatch")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestRenew(t *testing.T) {
|
|
||||||
in, err := ioutil.ReadFile(testECDSACAFile)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
cert, err := helpers.ParseCertificatePEM(in)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
in, err = ioutil.ReadFile(testECDSACAKeyFile)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
priv, err := helpers.ParsePrivateKeyPEM(in)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
renewed, err := Update(cert, priv)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
newCert, err := helpers.ParseCertificatePEM(renewed)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if !bytes.Equal(newCert.RawSubjectPublicKeyInfo, cert.RawSubjectPublicKeyInfo) {
|
|
||||||
t.Fatal("Update returned a certificate with different subject public key info")
|
|
||||||
}
|
|
||||||
|
|
||||||
if !bytes.Equal(newCert.RawSubject, cert.RawSubject) {
|
|
||||||
t.Fatal("Update returned a certificate with different subject info")
|
|
||||||
}
|
|
||||||
|
|
||||||
if !bytes.Equal(newCert.RawIssuer, cert.RawIssuer) {
|
|
||||||
t.Fatal("Update returned a certificate with different issuer info")
|
|
||||||
}
|
|
||||||
}
|
|
5
vendor/github.com/cloudflare/cfssl/initca/testdata/5min-ecdsa-key.pem
generated
vendored
5
vendor/github.com/cloudflare/cfssl/initca/testdata/5min-ecdsa-key.pem
generated
vendored
@ -1,5 +0,0 @@
|
|||||||
-----BEGIN EC PRIVATE KEY-----
|
|
||||||
MHcCAQEEIA8OzPeVZT0cXTAPdcXYefLRIqyUXa0f0SgYMJ2J1AVcoAoGCCqGSM49
|
|
||||||
AwEHoUQDQgAEoCV+bVOLTJMy38j50sc3vE5k41GMRgriFJt0g0OVX8yaOZ93CZTI
|
|
||||||
7LzfGbMU+KqWTgOwGhrPvpusep3fjw+dAQ==
|
|
||||||
-----END EC PRIVATE KEY-----
|
|
15
vendor/github.com/cloudflare/cfssl/initca/testdata/5min-ecdsa.pem
generated
vendored
15
vendor/github.com/cloudflare/cfssl/initca/testdata/5min-ecdsa.pem
generated
vendored
@ -1,15 +0,0 @@
|
|||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIICUDCCAfagAwIBAgIIec5PjdpJcNYwCgYIKoZIzj0EAwIwejELMAkGA1UEBhMC
|
|
||||||
VVMxGTAXBgNVBAoTEENsb3VkRmxhcmUsIEluYy4xIzAhBgNVBAsTGlRlc3QgQ2Vy
|
|
||||||
dGlmaWNhdGUgQXV0aG9yaXR5MRYwFAYDVQQHEw1TYW4gRnJhbmNpc2NvMRMwEQYD
|
|
||||||
VQQIEwpDYWxpZm9ybmlhMB4XDTE1MTAwODIzMDEwMFoXDTE1MTAwODIzMDYwMFow
|
|
||||||
ejELMAkGA1UEBhMCVVMxGTAXBgNVBAoTEENsb3VkRmxhcmUsIEluYy4xIzAhBgNV
|
|
||||||
BAsTGlRlc3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MRYwFAYDVQQHEw1TYW4gRnJh
|
|
||||||
bmNpc2NvMRMwEQYDVQQIEwpDYWxpZm9ybmlhMFkwEwYHKoZIzj0CAQYIKoZIzj0D
|
|
||||||
AQcDQgAEoCV+bVOLTJMy38j50sc3vE5k41GMRgriFJt0g0OVX8yaOZ93CZTI7Lzf
|
|
||||||
GbMU+KqWTgOwGhrPvpusep3fjw+dAaNmMGQwDgYDVR0PAQH/BAQDAgEGMBIGA1Ud
|
|
||||||
EwEB/wQIMAYBAf8CAQIwHQYDVR0OBBYEFDpLhSKBN3njfb6cXQCdRLzCZt0ZMB8G
|
|
||||||
A1UdIwQYMBaAFDpLhSKBN3njfb6cXQCdRLzCZt0ZMAoGCCqGSM49BAMCA0gAMEUC
|
|
||||||
IFU3BmzntGGeXZu2qWZx249nYn37S0AkCnQ3rUtI31bdAiEAsPICnZ+GB8yCN26N
|
|
||||||
OL+N8dHvXiOvZ9/Vl488pyWOccY=
|
|
||||||
-----END CERTIFICATE-----
|
|
27
vendor/github.com/cloudflare/cfssl/initca/testdata/5min-rsa-key.pem
generated
vendored
27
vendor/github.com/cloudflare/cfssl/initca/testdata/5min-rsa-key.pem
generated
vendored
@ -1,27 +0,0 @@
|
|||||||
-----BEGIN RSA PRIVATE KEY-----
|
|
||||||
MIIEogIBAAKCAQEAtrYWs9ao2CpLWWLMyJJr3Bw7eJu3vSImzoqsBuhAREMaeuHm
|
|
||||||
vAwqbByVpdxu1o+t0u6cMp/1M4YwDSxD4Ny3zEUUGse6yZpyph0+whdHSn1LOCxY
|
|
||||||
KVwMtcYaEswenm0a+s/b9BYpbLv6lPoJ8+6bQNDuyyracDzlvGgk/HabemqDly4+
|
|
||||||
W64tlrMUDHBuHHIm5EMF1sqVcinLCS8KsVDVfg4qKfzsZbTw0dDo5GZh1lPslkk9
|
|
||||||
y8NzRltZjfJ3y5acv7SvIlETpy41VxScplR+Ot/6sXNJY3aEBT10smPXPABDeWjx
|
|
||||||
FbnU5xacL/pC7pnKy734sL4lkvzKPDWZPsNMEwIDAQABAoIBAHIFHBHKib+sVS1I
|
|
||||||
7MbWKR1JOQvBEV6kK1eFTmlZEpIG1kWNJ/J+HRMum2zQLRMUwsL5SNyG2fv3Z5Ew
|
|
||||||
6IMw+joteahkr/oTuixT39A7uq+PlRtPAQ1+digRoj/MxebT65xNjtO56MwEWxIR
|
|
||||||
H5jsdFJ0kDCVY4/bUPrMexhZ5Bj1xM3j8wpCPlVv2b9Ic/FUD9p6tOZDFhfSluiE
|
|
||||||
87VsFHUImNvu4p/BAKUuKiz58cPNDHPAABsPrJR2SVU59roC4QtEmaxbmDkXUtB1
|
|
||||||
+o+ypJQ0saqoffzHq7URebrJU9u+AV51UWaqHjg5OAe8eElOou6MHYX8R9cWZmJX
|
|
||||||
UQKPyVECgYEAyLqstNHtA7R7+r4bW8Tr/kF7z+VvCfV9wB6TPT+ycuv3aU5+HYgR
|
|
||||||
YRs2RBRtwI625hPk7AXEdbMt3SKoKjcMNMSD3qUK+fJFEyvOqRXiMJ2pLg04GlYZ
|
|
||||||
cOInJd0T1q3O2cNLZwcWB1L0/KiV0dYHc4p+p5hisai3T9w7QthTUr8CgYEA6QVW
|
|
||||||
jcsSBRFCokf/GKpTCVXIeqDSwrcEwoZh/RN6PlvgDwjw08G2IxKdAFs3/wxbKWHT
|
|
||||||
xss+LQiMyBL8aRJvBUfotj5e5ZYESaSDqdeYv0Sydl1vfxcknHpTBRUdbyDtsOQn
|
|
||||||
4X1ZEmfa9vFWS5P9fTFBC0BU2zzrhSlfQb6g360CgYBmnT+zBGo07aw/p7XWuRmn
|
|
||||||
lhRUWEbmgXAyqa69rfVs2IJXfD/umuO/j6izLvpYaNzJS7xIiD5BqUK1/ISZaCC+
|
|
||||||
TQPY6uhslFSJk2iHed9y2PZmy2010XQaCBLZQWZl5d6L5lGCrtWtEtSY4RoN9mtC
|
|
||||||
vrc2uCkkB0sG8V/+MRaPgwKBgBiML2oQkn1mLBbcbssyZjz9hHkmqA1LKn0zmu8G
|
|
||||||
NkKLezcaQgSMy5s2QsPe2C9OJexeGek/T/V+iRYqqdyHzJpJ0QIh3+1fuGPpqNUj
|
|
||||||
mTvNCN/fR/ejgH/bgxNt/gPO/Ds+TdU7Vz7RIggRtH2RwYqGvctpo4bVDBqjGR3b
|
|
||||||
7yahAoGAAgH97uN2FU1ffK0OAfMA1N58ikq/bg07KnJxO2CP5hrgsWK2ZVfeHUmU
|
|
||||||
3k+xqQHCIuew55yO0tARTrFAh3Rj+zarA+PrtnzqW82wCIn8Fym3PFzbK2qrIMie
|
|
||||||
yp0p4nBXsRmzinrPWKUYlFyRNY3Tcbstm5gUw2S4czSwwQeM/No=
|
|
||||||
-----END RSA PRIVATE KEY-----
|
|
23
vendor/github.com/cloudflare/cfssl/initca/testdata/5min-rsa.pem
generated
vendored
23
vendor/github.com/cloudflare/cfssl/initca/testdata/5min-rsa.pem
generated
vendored
@ -1,23 +0,0 @@
|
|||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIID3DCCAsSgAwIBAgIIfbm2I1hwBa8wDQYJKoZIhvcNAQELBQAwejELMAkGA1UE
|
|
||||||
BhMCVVMxGTAXBgNVBAoTEENsb3VkRmxhcmUsIEluYy4xIzAhBgNVBAsTGlRlc3Qg
|
|
||||||
Q2VydGlmaWNhdGUgQXV0aG9yaXR5MRYwFAYDVQQHEw1TYW4gRnJhbmNpc2NvMRMw
|
|
||||||
EQYDVQQIEwpDYWxpZm9ybmlhMB4XDTE1MTAwODIwMjEwMFoXDTE1MTAwODIwMjYw
|
|
||||||
MFowejELMAkGA1UEBhMCVVMxGTAXBgNVBAoTEENsb3VkRmxhcmUsIEluYy4xIzAh
|
|
||||||
BgNVBAsTGlRlc3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MRYwFAYDVQQHEw1TYW4g
|
|
||||||
RnJhbmNpc2NvMRMwEQYDVQQIEwpDYWxpZm9ybmlhMIIBIjANBgkqhkiG9w0BAQEF
|
|
||||||
AAOCAQ8AMIIBCgKCAQEAtrYWs9ao2CpLWWLMyJJr3Bw7eJu3vSImzoqsBuhAREMa
|
|
||||||
euHmvAwqbByVpdxu1o+t0u6cMp/1M4YwDSxD4Ny3zEUUGse6yZpyph0+whdHSn1L
|
|
||||||
OCxYKVwMtcYaEswenm0a+s/b9BYpbLv6lPoJ8+6bQNDuyyracDzlvGgk/HabemqD
|
|
||||||
ly4+W64tlrMUDHBuHHIm5EMF1sqVcinLCS8KsVDVfg4qKfzsZbTw0dDo5GZh1lPs
|
|
||||||
lkk9y8NzRltZjfJ3y5acv7SvIlETpy41VxScplR+Ot/6sXNJY3aEBT10smPXPABD
|
|
||||||
eWjxFbnU5xacL/pC7pnKy734sL4lkvzKPDWZPsNMEwIDAQABo2YwZDAOBgNVHQ8B
|
|
||||||
Af8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBAjAdBgNVHQ4EFgQUCHoGEI1RZ8JN
|
|
||||||
7UZ4zcTRll8nnnAwHwYDVR0jBBgwFoAUCHoGEI1RZ8JN7UZ4zcTRll8nnnAwDQYJ
|
|
||||||
KoZIhvcNAQELBQADggEBAHRcbd6cSXV6IuT4jLV8k6OUUlxzobbiRnXJrLjy9Anx
|
|
||||||
tyIUWv2XSh/4IEJa+/MLNIb28gU9Sa2y4GV1qAgOM5qUM2iQJyLem0pTg0WTVKlj
|
|
||||||
ytEK1kUwQCNkc/xpDrPo5CbN3aDuW/VPntOJL1GSQzS7jzK3NeQ9sah9YYhk4Wsk
|
|
||||||
jzHVI1sX+qzcuUqCIPhqmGR0JE8ZI5YzbMTZ4/B+oWxZ7EyzB8O+v6HVD4eQFBSq
|
|
||||||
tyGhGbh7mUvuMpVJ8FIX4BA7QL+RwqNNtAMZKcxPjhy5I23nVclbTCz/NC2Dgp8H
|
|
||||||
13uQsEpUZ65clgiTo4LuPzPiIouZh5cBWP4gGqbyyS4=
|
|
||||||
-----END CERTIFICATE-----
|
|
11
vendor/github.com/cloudflare/cfssl/initca/testdata/README.md
generated
vendored
11
vendor/github.com/cloudflare/cfssl/initca/testdata/README.md
generated
vendored
@ -1,11 +0,0 @@
|
|||||||
1. To generate 5min-rsa.pem and 5min-rsa-key.pem
|
|
||||||
```
|
|
||||||
$ GOPATH/bin/cfssl gencert -initca ca_csr_rsa.json | GOPATH/bin/cfssljson -bare 5min-rsa
|
|
||||||
```
|
|
||||||
2. To generate 5min-ecdsa.pem and 5min-ecdsa-key.pem
|
|
||||||
```
|
|
||||||
$ GOPATH/bin/cfssl gencert -initca ca_csr_ecdsa.json | GOPATH/bin/cfssljson -bare 5min-ecdsa
|
|
||||||
```
|
|
||||||
|
|
||||||
The above commands will generate 5min-rsa.csr and 5min-ecdsa.csr as well, but those
|
|
||||||
files can be ignored.
|
|
18
vendor/github.com/cloudflare/cfssl/initca/testdata/ca_csr_ecdsa.json
generated
vendored
18
vendor/github.com/cloudflare/cfssl/initca/testdata/ca_csr_ecdsa.json
generated
vendored
@ -1,18 +0,0 @@
|
|||||||
{
|
|
||||||
"key": {
|
|
||||||
"algo": "ecdsa",
|
|
||||||
"size": 256
|
|
||||||
},
|
|
||||||
"names": [
|
|
||||||
{
|
|
||||||
"C": "US",
|
|
||||||
"L": "San Francisco",
|
|
||||||
"ST": "California",
|
|
||||||
"O": "CloudFlare, Inc.",
|
|
||||||
"OU": "Test Certificate Authority"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"ca": {
|
|
||||||
"expiry": "5m"
|
|
||||||
}
|
|
||||||
}
|
|
18
vendor/github.com/cloudflare/cfssl/initca/testdata/ca_csr_rsa.json
generated
vendored
18
vendor/github.com/cloudflare/cfssl/initca/testdata/ca_csr_rsa.json
generated
vendored
@ -1,18 +0,0 @@
|
|||||||
{
|
|
||||||
"key": {
|
|
||||||
"algo": "rsa",
|
|
||||||
"size": 2048
|
|
||||||
},
|
|
||||||
"names": [
|
|
||||||
{
|
|
||||||
"C": "US",
|
|
||||||
"L": "San Francisco",
|
|
||||||
"ST": "California",
|
|
||||||
"O": "CloudFlare, Inc.",
|
|
||||||
"OU": "Test Certificate Authority"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"ca": {
|
|
||||||
"expiry": "5m"
|
|
||||||
}
|
|
||||||
}
|
|
11
vendor/github.com/cloudflare/cfssl/initca/testdata/ecdsa256.csr
generated
vendored
11
vendor/github.com/cloudflare/cfssl/initca/testdata/ecdsa256.csr
generated
vendored
@ -1,11 +0,0 @@
|
|||||||
-----BEGIN CERTIFICATE REQUEST-----
|
|
||||||
MIIBgTCCASgCAQAwgYYxCzAJBgNVBAYTAlVTMRMwEQYDVQQKEwpDbG91ZEZsYXJl
|
|
||||||
MRwwGgYDVQQLExNTeXN0ZW1zIEVuZ2luZWVyaW5nMRYwFAYDVQQHEw1TYW4gRnJh
|
|
||||||
bmNpc2NvMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRcwFQYDVQQDEw5jbG91ZGZsYXJl
|
|
||||||
LmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABBn9Ldie6BOcMHezn2dPuYqW
|
|
||||||
z/NoLYMLGNBqhOxUyEidYClI0JW2pWyUgT3A2UazFp1WgE94y7Z+2YlfRz+vcrKg
|
|
||||||
PzA9BgkqhkiG9w0BCQ4xMDAuMCwGA1UdEQQlMCOCDmNsb3VkZmxhcmUuY29tghF3
|
|
||||||
d3djbG91ZGZsYXJlLmNvbTAKBggqhkjOPQQDAgNHADBEAiBM+QRxe8u6rkdr10Jy
|
|
||||||
cxbR6NxrGrNeg5QqiOqF96JEmgIgDbtjd5e3y3I8W/+ih2us3WtMxgnTXfqPd48i
|
|
||||||
VLcv28Q=
|
|
||||||
-----END CERTIFICATE REQUEST-----
|
|
12
vendor/github.com/cloudflare/cfssl/initca/testdata/ecdsa384.csr
generated
vendored
12
vendor/github.com/cloudflare/cfssl/initca/testdata/ecdsa384.csr
generated
vendored
@ -1,12 +0,0 @@
|
|||||||
-----BEGIN CERTIFICATE REQUEST-----
|
|
||||||
MIIBvzCCAUUCAQAwgYYxCzAJBgNVBAYTAlVTMRMwEQYDVQQKEwpDbG91ZEZsYXJl
|
|
||||||
MRwwGgYDVQQLExNTeXN0ZW1zIEVuZ2luZWVyaW5nMRYwFAYDVQQHEw1TYW4gRnJh
|
|
||||||
bmNpc2NvMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRcwFQYDVQQDEw5jbG91ZGZsYXJl
|
|
||||||
LmNvbTB2MBAGByqGSM49AgEGBSuBBAAiA2IABBk/Q+zMsZOJGkufRzGCWtSUtRjq
|
|
||||||
0QqChDGWbHLaa0h6ODVeEoKYOMvFJTg4V186tuuBe97KEey0OPDegzCBp5kBIiwg
|
|
||||||
HB/0xWoKdnfdRk6VyjmubPx399cGoZn8aCqgC6A/MD0GCSqGSIb3DQEJDjEwMC4w
|
|
||||||
LAYDVR0RBCUwI4IOY2xvdWRmbGFyZS5jb22CEXd3d2Nsb3VkZmxhcmUuY29tMAoG
|
|
||||||
CCqGSM49BAMDA2gAMGUCMQC57VfwMXDyL5kM7vmO2ynbpgSAuFZT6Yd3C3NnV2jz
|
|
||||||
Biozw3eqIDXqCb2LI09stZMCMGIwCuVARr2IRctxf7AmX7/O2SIaIhCpMFKRedQ7
|
|
||||||
RiWGZIucp5r6AfT9381PB29bHA==
|
|
||||||
-----END CERTIFICATE REQUEST-----
|
|
13
vendor/github.com/cloudflare/cfssl/initca/testdata/ecdsa521.csr
generated
vendored
13
vendor/github.com/cloudflare/cfssl/initca/testdata/ecdsa521.csr
generated
vendored
@ -1,13 +0,0 @@
|
|||||||
-----BEGIN CERTIFICATE REQUEST-----
|
|
||||||
MIICCjCCAWsCAQAwgYYxCzAJBgNVBAYTAlVTMRMwEQYDVQQKEwpDbG91ZEZsYXJl
|
|
||||||
MRwwGgYDVQQLExNTeXN0ZW1zIEVuZ2luZWVyaW5nMRYwFAYDVQQHEw1TYW4gRnJh
|
|
||||||
bmNpc2NvMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRcwFQYDVQQDEw5jbG91ZGZsYXJl
|
|
||||||
LmNvbTCBmzAQBgcqhkjOPQIBBgUrgQQAIwOBhgAEAHt/s9KTZETzu94JIAjZ3BaS
|
|
||||||
toSG65hGIc1e0Gt7PhdQxPp5FP2D8rQ1wc+pcZhD2O8525kPxopaqTd+fWKBuD3O
|
|
||||||
AULzoH2OX+atIuumTQzLNbTsIbP0tY3dh7d8LItuERkZn1NfsNl3z6bnNAaR137m
|
|
||||||
f4aWv49ImbA/Tkv8VmoKX279oD8wPQYJKoZIhvcNAQkOMTAwLjAsBgNVHREEJTAj
|
|
||||||
gg5jbG91ZGZsYXJlLmNvbYIRd3d3Y2xvdWRmbGFyZS5jb20wCgYIKoZIzj0EAwQD
|
|
||||||
gYwAMIGIAkIA8OX9LxWOVnyfB25DFBz6JkjhyDpBM/PXlgLnWb/n2mEuMMB44DOG
|
|
||||||
pljDV768PSW11AC3DtULoIyR92z0TyLEKYoCQgHdGd6PwUtDW5mrAMJQDgebjsxu
|
|
||||||
MwfcdthzKlFlSmRpHMBnRMOJjlg5f9CTBg9d6wEdv7ZIrQSO6eqQHDQRM0VMnw==
|
|
||||||
-----END CERTIFICATE REQUEST-----
|
|
19
vendor/github.com/cloudflare/cfssl/initca/testdata/rsa2048.csr
generated
vendored
19
vendor/github.com/cloudflare/cfssl/initca/testdata/rsa2048.csr
generated
vendored
@ -1,19 +0,0 @@
|
|||||||
-----BEGIN CERTIFICATE REQUEST-----
|
|
||||||
MIIDCTCCAfMCAQAwgYYxCzAJBgNVBAYTAlVTMRMwEQYDVQQKEwpDbG91ZEZsYXJl
|
|
||||||
MRwwGgYDVQQLExNTeXN0ZW1zIEVuZ2luZWVyaW5nMRYwFAYDVQQHEw1TYW4gRnJh
|
|
||||||
bmNpc2NvMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRcwFQYDVQQDEw5jbG91ZGZsYXJl
|
|
||||||
LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALTWdoYxX4KN51fP
|
|
||||||
WxQAyGH++VsPbfpAoXIbCPXSmU04BvIxyjzpHQ0ChMKkT/2VNcUeFJwk2fCf+ZwU
|
|
||||||
f0raTQTplofwkckE0gEYA3WcEfJp+hbvbTb/2recsf+JE6JACYJe2Uu5wsjtrE5j
|
|
||||||
A+7aT2BEU9RWzBdSy/5281ZfW3PArqcWaf8+RUyA3WRxVWmjmhFsVB+mdNLhCpW0
|
|
||||||
C0QNMYR1ppEZiKVnEdao8gcI5sOvSd+35t8g82aPXcNSPU6jKcx1YNUPX5wgPEmu
|
|
||||||
+anfc9RliQbYqqJYVODgBmV8IR5grw93yTsODoWKtFQ4PKVlnt9CD8AS/iSMQYm3
|
|
||||||
OUogqgMCAwEAAaA/MD0GCSqGSIb3DQEJDjEwMC4wLAYDVR0RBCUwI4IOY2xvdWRm
|
|
||||||
bGFyZS5jb22CEXd3d2Nsb3VkZmxhcmUuY29tMAsGCSqGSIb3DQEBCwOCAQEAl809
|
|
||||||
gk9uZkRK+MJVYDSLjgGR2xqk5qOwnhovnispA7N3Z1GshodJRQa6ngNCKuXIm2/6
|
|
||||||
AxB9kDGK14n186Qq4odXqHSHs8FG9i0zUcBXeLv1rPAKtwKTas/SLmsOpPgWPZFa
|
|
||||||
iYiHHeu4HjOQoF987d7uGRYwc3xfstKwJsEXc12eCw2NH8TM1tJgSc/o6CzIpA91
|
|
||||||
QnZKhx6uGM4xI2gnOaJA1YikNhyFGBuOGMZgd0k2+/IcR2pg0z4pc5oQw1bXLANx
|
|
||||||
anqlA/MDrCM9v9019bRJ73zK8LQ3k/FW61PA9nL7RZ8ku65R+uYcVEdLa8pUeqnH
|
|
||||||
cJZNboDRsItpccZuRQ==
|
|
||||||
-----END CERTIFICATE REQUEST-----
|
|
24
vendor/github.com/cloudflare/cfssl/initca/testdata/rsa3072.csr
generated
vendored
24
vendor/github.com/cloudflare/cfssl/initca/testdata/rsa3072.csr
generated
vendored
@ -1,24 +0,0 @@
|
|||||||
-----BEGIN CERTIFICATE REQUEST-----
|
|
||||||
MIIECTCCAnMCAQAwgYYxCzAJBgNVBAYTAlVTMRMwEQYDVQQKEwpDbG91ZEZsYXJl
|
|
||||||
MRwwGgYDVQQLExNTeXN0ZW1zIEVuZ2luZWVyaW5nMRYwFAYDVQQHEw1TYW4gRnJh
|
|
||||||
bmNpc2NvMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRcwFQYDVQQDEw5jbG91ZGZsYXJl
|
|
||||||
LmNvbTCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAL0zzgBv+VTwZOPy
|
|
||||||
LtuLFweQrj5Lfrje2hnNB7Y3TD4+yCM/cA4yTILixCe/B+N7LQysJgVDbW8u6BZQ
|
|
||||||
8ZqeDKOP6KCt37WhmcbT45tLpHmH+Z/uAnCz0hVc/7AyJ3CJXo6PaDCcJjgLuUun
|
|
||||||
W47iy4h79AxyuzELmUeZZGYcO8nqClqcnAzQ6sClGZvJwSbYg2QAFGoA2lHqZ9uN
|
|
||||||
ygAxNLd+rX9cP+yFwAeKzuKtOnVPiJD5lT3wufSkAbd6M7lOoqmTYnbv0A1WfA/e
|
|
||||||
upXno9lbgB6iwF5U0V7OtxdA1bTbvgJgNLlxFF1do0sB28CWmqCFNwLfzcPzt5A4
|
|
||||||
gLnOyLhNZOmUMXn35KOtp1Zv/yethlgZHxUYGcl6OYwMEFye3Du6dgnTwONzaLhA
|
|
||||||
7hMI8R60p2YrTLkgSKdFohAY/mKuxHyXxugOHHthlRCOn9m49edcdZ1HrkJXm9jd
|
|
||||||
P9katjCXgTwSdTQlvaMJkfH7wF3ZMjAxPcDf4RKFEpF2wABeNQIDAQABoD8wPQYJ
|
|
||||||
KoZIhvcNAQkOMTAwLjAsBgNVHREEJTAjgg5jbG91ZGZsYXJlLmNvbYIRd3d3Y2xv
|
|
||||||
dWRmbGFyZS5jb20wCwYJKoZIhvcNAQEMA4IBgQBF/RCHNAAOAaRI4VyO0tRPA5Dw
|
|
||||||
0/1/pgmBm/VejHIwDJnMFCl9njh0RSo1RgsVLhw6ovYbk3ORb4OD4UczPTq3GrFp
|
|
||||||
KP9uPR+2pR4FWJpCVfCl76YabQv6fUDdiT7ojzyRhsAmkd5rOdiMvWV3Rp+YmBuU
|
|
||||||
KH/dwkukfn+OeJIbERS5unzOBtQL+g5dU4CHWAqJQIqHr373w38OlYN+JY9QLrYy
|
|
||||||
sWU9Ye6RjdySXPJ5UzyfOEfc9Ji89RJsVeceB1+As5u5vBvtzGgIMSFUzN947RZo
|
|
||||||
DZ48JiB71VpmKXbn9LIRn25dlbVMzxRdSeZ194L3JFVAf9OxJTsc1QNFhOacoFgy
|
|
||||||
hqvtN2iKntEyPo2nacYhpz/FAdJ2JThNH+4WtpPWAqx8Lw/e1OttiDt+6M0FEuVz
|
|
||||||
svkSHnK206yo+a9Md37nUDDYxtlJEB+9F2qUZNQ7Hv+dxjmJOIgHOXxy1pLEdpVU
|
|
||||||
rGdGLVXeJNPCh9x+GK21QjdxZABmYAaF8k36Pv4=
|
|
||||||
-----END CERTIFICATE REQUEST-----
|
|
29
vendor/github.com/cloudflare/cfssl/initca/testdata/rsa4096.csr
generated
vendored
29
vendor/github.com/cloudflare/cfssl/initca/testdata/rsa4096.csr
generated
vendored
@ -1,29 +0,0 @@
|
|||||||
-----BEGIN CERTIFICATE REQUEST-----
|
|
||||||
MIIFCTCCAvMCAQAwgYYxCzAJBgNVBAYTAlVTMRMwEQYDVQQKEwpDbG91ZEZsYXJl
|
|
||||||
MRwwGgYDVQQLExNTeXN0ZW1zIEVuZ2luZWVyaW5nMRYwFAYDVQQHEw1TYW4gRnJh
|
|
||||||
bmNpc2NvMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRcwFQYDVQQDEw5jbG91ZGZsYXJl
|
|
||||||
LmNvbTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANkKL22jMn3eFCpj
|
|
||||||
T6lbeq4nC3aEqwTGrLARidAmO29WIhzs6LxRpM6xSMoPI6DvJVUGpMFEKF4xNTc5
|
|
||||||
X9/gSFrw2eI5Q3U3aGcaToSCxH4hXejwIzX8Ftlb/LfpXhbSsFr5MS3kiTY4zZxM
|
|
||||||
n3dSy2gZljD/g0tlQf5BdHdR4WKRhWnqRiGng+BmW4rjbcO7SoN33jSXsMcguCg5
|
|
||||||
8dmYuf5G5KVXsqwEoCQBeKGnca9orcm4i90VnGt4qZUpfAn1cADzYGpRzX79USJ6
|
|
||||||
tol4ovgGPN08LJFqcVl+dK8VzJ03JWBhI1jePbWS4Bz5oNtkhQQXilU+G6FQxc6a
|
|
||||||
UPf6KcFyOB+qMJmEwJZD9yaNK1YbsKfSztQEsb1JEezQnVHxp91Ch3AcWoikuOiY
|
|
||||||
yCg0V5lcK15SLv1+5sj9YzF7ngMmThcIJ6B5gS3swpD5AX6FJaI1BrGwT/RXKKQP
|
|
||||||
tRX1BySLx8RcINjFb5wv3q9QIE8vrW1BOk9f4dfmxiFYnc+6bCCbIrg7APQVtKTa
|
|
||||||
ixNJFSqZz7fm9loeNPHHXfUT5RoW5yzVa8igc+yv4qeYsWHcZ4c/Y91OJp19HMjM
|
|
||||||
bYm2alt8XagBgJjO0FW8wvsKwhhlhWK0WO6sQ7Fkl7fH1GtxEpc248hAW24SZMmS
|
|
||||||
led3LblCT8IC3a9BLhqJ2q8cfPp9AgMBAAGgPzA9BgkqhkiG9w0BCQ4xMDAuMCwG
|
|
||||||
A1UdEQQlMCOCDmNsb3VkZmxhcmUuY29tghF3d3djbG91ZGZsYXJlLmNvbTALBgkq
|
|
||||||
hkiG9w0BAQ0DggIBAAgz3NuN43+F+8+WhQ9hb7DOp6Amut7XubOkEBtBVgP3R8U1
|
|
||||||
uSsgocR1rvnZ1/bhkeGyTly0eQPhcSEdMo/GgIrcn+co0KLcDyV6Rf3Cgksx9dUZ
|
|
||||||
TzHSkxmFkxlxYfIGes6abH+2OPiacwK2gLvvmXFYIxEhv+LKzzteQi0xlinewv7R
|
|
||||||
FnSykZ4QialsFyCgOjOxa11aEdRv6T8qKwhjUOk0VedtzOkt/k95aydTNLjXl2OV
|
|
||||||
jloeTsbB00yWIqdyhG12+TgcJOa0pNP1zTjgFPodMuRUuiAcbT7Mt7sLCefKNzvZ
|
|
||||||
Ln6b4y7e6N3YLOHALTIP+LI4y8ar47WlXCNw/zeOM2sW8udjYrukN6WOV3X68oMf
|
|
||||||
Zsv6jqyGSaCDwdImR4VECUVvkabg9Sq4pz+ijTT+9cNA66omYL+/QAh0GahlROgW
|
|
||||||
kDGI8zeEUoAC8RkAbFGMJA8jEbAfbT000ZwnLX2SZ8YRQX4Jd1FTmAH99FkvvT8N
|
|
||||||
ovaGRSQQI5rWQGQYqF67So7PywEaEXeUHTBrv41Msva6CdaWHn7bh/fj4B21ETS7
|
|
||||||
VJvrk5DLJTyruqon7EVJU1pn38ppaXF4Z6a9n3C8TqudT/gdJUYn/SBo5jx20uGJ
|
|
||||||
d9k6vDqixntvk/TRZ848k1AXiv5uUJTdnoPPhzSGjxEaeKuB0R1ZHomVdjU4
|
|
||||||
-----END CERTIFICATE REQUEST-----
|
|
186
vendor/github.com/cloudflare/cfssl/log/log_test.go
generated
vendored
186
vendor/github.com/cloudflare/cfssl/log/log_test.go
generated
vendored
@ -1,186 +0,0 @@
|
|||||||
package log
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bytes"
|
|
||||||
"log"
|
|
||||||
"strings"
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
const teststring = "asdf123"
|
|
||||||
|
|
||||||
func TestOutputf(t *testing.T) {
|
|
||||||
buf := new(bytes.Buffer)
|
|
||||||
log.SetOutput(buf)
|
|
||||||
Level = LevelDebug
|
|
||||||
outputf(LevelDebug, teststring, nil)
|
|
||||||
|
|
||||||
// outputf correctly prints string
|
|
||||||
if !strings.Contains(buf.String(), teststring) {
|
|
||||||
t.Fail()
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestOutput(t *testing.T) {
|
|
||||||
buf := new(bytes.Buffer)
|
|
||||||
log.SetOutput(buf)
|
|
||||||
Level = LevelDebug
|
|
||||||
output(LevelDebug, nil)
|
|
||||||
|
|
||||||
// outputf correctly prints string with proper Debug prefix
|
|
||||||
if !strings.Contains(buf.String(), levelPrefix[LevelDebug]) {
|
|
||||||
t.Fail()
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestCriticalf(t *testing.T) {
|
|
||||||
buf := new(bytes.Buffer)
|
|
||||||
log.SetOutput(buf)
|
|
||||||
Criticalf(teststring, nil)
|
|
||||||
|
|
||||||
// outputf correctly prints string
|
|
||||||
// should never fail because critical > debug
|
|
||||||
if !strings.Contains(buf.String(), teststring) {
|
|
||||||
t.Fail()
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestCritical(t *testing.T) {
|
|
||||||
buf := new(bytes.Buffer)
|
|
||||||
log.SetOutput(buf)
|
|
||||||
Critical(nil)
|
|
||||||
|
|
||||||
// outputf correctly prints string
|
|
||||||
if !strings.Contains(buf.String(), levelPrefix[LevelCritical]) {
|
|
||||||
t.Fail()
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestWarningf(t *testing.T) {
|
|
||||||
buf := new(bytes.Buffer)
|
|
||||||
log.SetOutput(buf)
|
|
||||||
Warningf(teststring, nil)
|
|
||||||
|
|
||||||
// outputf correctly prints string
|
|
||||||
// should never fail because fatal critical > debug
|
|
||||||
if !strings.Contains(buf.String(), teststring) {
|
|
||||||
t.Fail()
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestWarning(t *testing.T) {
|
|
||||||
buf := new(bytes.Buffer)
|
|
||||||
log.SetOutput(buf)
|
|
||||||
Warning(nil)
|
|
||||||
|
|
||||||
// outputf correctly prints string
|
|
||||||
if !strings.Contains(buf.String(), levelPrefix[LevelWarning]) {
|
|
||||||
t.Fail()
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestInfof(t *testing.T) {
|
|
||||||
buf := new(bytes.Buffer)
|
|
||||||
log.SetOutput(buf)
|
|
||||||
Infof(teststring, nil)
|
|
||||||
|
|
||||||
// outputf correctly prints string
|
|
||||||
// should never fail because fatal info > debug
|
|
||||||
if !strings.Contains(buf.String(), teststring) {
|
|
||||||
t.Fail()
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestInfo(t *testing.T) {
|
|
||||||
buf := new(bytes.Buffer)
|
|
||||||
log.SetOutput(buf)
|
|
||||||
Info(nil)
|
|
||||||
|
|
||||||
// outputf correctly prints string
|
|
||||||
if !strings.Contains(buf.String(), levelPrefix[LevelInfo]) {
|
|
||||||
t.Fail()
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestDebugf(t *testing.T) {
|
|
||||||
buf := new(bytes.Buffer)
|
|
||||||
log.SetOutput(buf)
|
|
||||||
Level = LevelDebug
|
|
||||||
Debugf(teststring, nil)
|
|
||||||
|
|
||||||
// outputf correctly prints string
|
|
||||||
// should never fail because fatal debug >= debug
|
|
||||||
if !strings.Contains(buf.String(), teststring) {
|
|
||||||
t.Fail()
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestDebug(t *testing.T) {
|
|
||||||
buf := new(bytes.Buffer)
|
|
||||||
log.SetOutput(buf)
|
|
||||||
Level = LevelDebug
|
|
||||||
Debug(nil)
|
|
||||||
|
|
||||||
// outputf correctly prints string
|
|
||||||
if !strings.Contains(buf.String(), levelPrefix[LevelDebug]) {
|
|
||||||
t.Fail()
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
type testSyslogger struct {
|
|
||||||
*bytes.Buffer
|
|
||||||
}
|
|
||||||
|
|
||||||
func (l testSyslogger) Debug(s string) {
|
|
||||||
l.WriteString("[DEBUG] ")
|
|
||||||
_, _ = l.WriteString(s)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (l testSyslogger) Info(s string) {
|
|
||||||
l.WriteString("[INFO] ")
|
|
||||||
_, _ = l.WriteString(s)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (l testSyslogger) Warning(s string) {
|
|
||||||
l.WriteString("[WARN] ")
|
|
||||||
_, _ = l.WriteString(s)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (l testSyslogger) Err(s string) {
|
|
||||||
l.WriteString("[ERROR] ")
|
|
||||||
_, _ = l.WriteString(s)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (l testSyslogger) Crit(s string) {
|
|
||||||
l.WriteString("[CRIT] ")
|
|
||||||
_, _ = l.WriteString(s)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (l testSyslogger) Emerg(s string) {
|
|
||||||
l.WriteString("[FATAL] ")
|
|
||||||
_, _ = l.WriteString(s)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestSetLogger(t *testing.T) {
|
|
||||||
buf := new(bytes.Buffer)
|
|
||||||
SetLogger(testSyslogger{buf})
|
|
||||||
Level = LevelDebug
|
|
||||||
outputf(LevelDebug, teststring, nil)
|
|
||||||
|
|
||||||
// outputf correctly prints string
|
|
||||||
if !strings.Contains(buf.String(), teststring) {
|
|
||||||
t.Fail()
|
|
||||||
}
|
|
||||||
SetLogger(nil)
|
|
||||||
return
|
|
||||||
}
|
|
27
vendor/github.com/cloudflare/cfssl/ocsp/testdata/ca-key.pem
generated
vendored
27
vendor/github.com/cloudflare/cfssl/ocsp/testdata/ca-key.pem
generated
vendored
@ -1,27 +0,0 @@
|
|||||||
-----BEGIN RSA PRIVATE KEY-----
|
|
||||||
MIIEpAIBAAKCAQEAvKOCXwP8Y6x1YkjcimQafnP1bRCF/iWY+z4ffuTWA150RRpA
|
|
||||||
GnhwOen8muU5wxOEm1A2IkWhNfXQ9GYVdOnzXumTx9Go4Gm8/1nRCYG69GZbQAEr
|
|
||||||
pNGx/l4wReLVj2iizCf/xkcch5ZM/5zplXWZXCQiavmKz6M+1aSYdsGP0mrLu31c
|
|
||||||
yod2iJmlISt+nuP5yXkgoKxzGrKjP5qrs6XniVXrKMt+5g1Ta5blWUoft2pwM6yp
|
|
||||||
8+IAtxh+iYTIJc8dDHbVl9AjVfsfaYeS8SkHcIRyIuD8/3HgLmP/gMLDzuLXvH+W
|
|
||||||
slOEYqLGMkSo2JPOwLguggDyjt1rI2cEcFkgJwIDAQABAoIBAQCTAZW6+D87ag28
|
|
||||||
f22nR+XBwBp2WVcivSggO8SNvkXuMDDKHW/xcQR8jZW3HIZMOSyxYOwe/0Zn595k
|
|
||||||
aB22lA9+Wuc45HIIGT8ZfGREVV5d0lqwYXkio+xjgAF8pQ6rCO89zLouSgK4w2/U
|
|
||||||
D/OU7yWJwfs0hK4hrGVuVywd+DBd2Fc7UfZ4oEcy89mwUIRVK8+eXrRCav6lGDrz
|
|
||||||
I+GmW6GL16U8lS8vsUNciYyNYCzgSIIa/yyiZO/Aje93yJRVpmujAK2p6/w/7vmK
|
|
||||||
OareeixlpNYpiY7Nk6o3w6sKEEVzf+AquDgeH5IkzD1nkYbd+JY7bdg1cgjz3kJg
|
|
||||||
IhsiIER5AoGBAOkZpicTIsiAMxz43bzMt1IMYu1ezAEw4Vk2sVEbSfFXdbO5J9gW
|
|
||||||
/Ou+AhwxhsDeO6vgh3mYkG+2s5U+ztk68X1BVIf87kYBQiz175XvxcLmDBFm5S6g
|
|
||||||
eyTCwsop9J4XlgQQ5HNm80G9oHnF50oujCqpUiC5xj5fEd8vULmua5jTAoGBAM8r
|
|
||||||
rTTpVBHKArDlzYF5EpyXDkcFT2uAgw9Xpc6xIl/UWQ+XU1qD5Te0fmjpdwo3VZTL
|
|
||||||
W2e8eg0U9O2skrxBcRLREnh1U2znCMSIGTkwYQ2JDjhz2Jjbh8r/NhvSdydql9wQ
|
|
||||||
LGyPOIpcURaD+ohOExF82EtEqWgNp4QfQHH70cbdAoGAPBoy7yxN8aishTHd6opW
|
|
||||||
Uj+DWnTw4PW7hQdHHQSOQj4syRRao6r5t8ccQCy89AnZFO4lwEKIK2XOVBMHvpcm
|
|
||||||
IQexRgb/YOl+KJ2ZEu3p7eDnB62iNi2G0ums0/eRbRnjwlSgsui+nBrKv9s5UbVC
|
|
||||||
ytUxqeJ8rSRSNVu70sSYVaUCgYALYUrSbT7A+2fKb9UqF4x+LY4LOK90KEsKvLXO
|
|
||||||
9Mv+l5uMz7M0dapRtQh8mtZ/KSr6UXFj8WaC8XPC2of072NWtUVeeJNsmARTR2ab
|
|
||||||
TZ0HMVAmqbZsLyL2c651OMpyz9gnrnvCOtvQPeH2aqmIc0F45HK9L7hejuF00IKp
|
|
||||||
wDt1wQKBgQC8sjlF/8e03m3AfLs2ZW/w0Rsggz52TgBdH24BMUmvd5McVZlH8uZq
|
|
||||||
zwx5ht3ppVjObG28JPEj8c/FtAmsUjURDD7EVdjb5bDxrMtH++8sHrXUuMMBeUxl
|
|
||||||
DN2IU+xL9MwMh5H0cyJbXnE+LWGpSefCccDnH5qlEjwNXE5/RggOrw==
|
|
||||||
-----END RSA PRIVATE KEY-----
|
|
23
vendor/github.com/cloudflare/cfssl/ocsp/testdata/ca.pem
generated
vendored
23
vendor/github.com/cloudflare/cfssl/ocsp/testdata/ca.pem
generated
vendored
@ -1,23 +0,0 @@
|
|||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIDvjCCAqigAwIBAgIIWhorb65IXvUwCwYJKoZIhvcNAQELMG0xCzAJBgNVBAYT
|
|
||||||
AlVTMRMwEQYDVQQKEwpDbG91ZEZsYXJlMRwwGgYDVQQLExNTeXN0ZW1zIEVuZ2lu
|
|
||||||
ZWVyaW5nMRYwFAYDVQQHEw1TYW4gRnJhbmNpc2NvMRMwEQYDVQQIEwpDYWxpZm9y
|
|
||||||
bmlhMB4XDTE1MDQxOTE2MTAwMFoXDTIwMDQxNzE2MTAwMFowbTELMAkGA1UEBhMC
|
|
||||||
VVMxEzARBgNVBAoTCkNsb3VkRmxhcmUxHDAaBgNVBAsTE1N5c3RlbXMgRW5naW5l
|
|
||||||
ZXJpbmcxFjAUBgNVBAcTDVNhbiBGcmFuY2lzY28xEzARBgNVBAgTCkNhbGlmb3Ju
|
|
||||||
aWEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC8o4JfA/xjrHViSNyK
|
|
||||||
ZBp+c/VtEIX+JZj7Ph9+5NYDXnRFGkAaeHA56fya5TnDE4SbUDYiRaE19dD0ZhV0
|
|
||||||
6fNe6ZPH0ajgabz/WdEJgbr0ZltAASuk0bH+XjBF4tWPaKLMJ//GRxyHlkz/nOmV
|
|
||||||
dZlcJCJq+YrPoz7VpJh2wY/Sasu7fVzKh3aImaUhK36e4/nJeSCgrHMasqM/mquz
|
|
||||||
peeJVesoy37mDVNrluVZSh+3anAzrKnz4gC3GH6JhMglzx0MdtWX0CNV+x9ph5Lx
|
|
||||||
KQdwhHIi4Pz/ceAuY/+AwsPO4te8f5ayU4RiosYyRKjYk87AuC6CAPKO3WsjZwRw
|
|
||||||
WSAnAgMBAAGjZjBkMA4GA1UdDwEB/wQEAwIABjASBgNVHRMBAf8ECDAGAQH/AgEC
|
|
||||||
MB0GA1UdDgQWBBSrzjPP4Y5PLsqeyp6iddofBjoRmTAfBgNVHSMEGDAWgBSrzjPP
|
|
||||||
4Y5PLsqeyp6iddofBjoRmTALBgkqhkiG9w0BAQsDggEBAH7McpSm7+DeIZPQKYpF
|
|
||||||
kFUlNn3N4MRvek5lxOw6jLE1QmzG3lTB79g6iBiGKsYLPoJqNS6VxMoLrMC+qFhM
|
|
||||||
0QM5eIzRpdfYa83IDIYcbUYx7fLG/azX+FMFh/O5yPtS+bqbxGinxofRIyuKGs9r
|
|
||||||
dks6I5lGncRs0Liysp4mHJAjyj9G2W2onI3Y00BYhiOy4mYvZ5/S31KI4550HZ+p
|
|
||||||
dnexuC29CsWGkOTXTOS7+e7Zmbh8UjsYcA5YOojew+EjJfETPVO+Pn7WGg/+XrFX
|
|
||||||
8UOG3o9k8M0ePQof4R6FTJ+BQxtSkWWdp1HrMQbZ1TXfZx84XkmFdcmy8FjYiHbP
|
|
||||||
M+M=
|
|
||||||
-----END CERTIFICATE-----
|
|
23
vendor/github.com/cloudflare/cfssl/ocsp/testdata/cert.pem
generated
vendored
23
vendor/github.com/cloudflare/cfssl/ocsp/testdata/cert.pem
generated
vendored
@ -1,23 +0,0 @@
|
|||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIID4TCCAsugAwIBAgIIEoDcqfKl/s4wCwYJKoZIhvcNAQELMG0xCzAJBgNVBAYT
|
|
||||||
AlVTMRMwEQYDVQQKEwpDbG91ZEZsYXJlMRwwGgYDVQQLExNTeXN0ZW1zIEVuZ2lu
|
|
||||||
ZWVyaW5nMRYwFAYDVQQHEw1TYW4gRnJhbmNpc2NvMRMwEQYDVQQIEwpDYWxpZm9y
|
|
||||||
bmlhMB4XDTE1MDQxOTE2MTkwMFoXDTE2MDQxODE2MTkwMFowXTELMAkGA1UEBhMC
|
|
||||||
VVMxEDAOBgNVBAoTB0V4YW1wbGUxDzANBgNVBAsTBlRoaW5nczEWMBQGA1UEBxMN
|
|
||||||
U2FuIEZyYW5jaXNjbzETMBEGA1UECBMKQ2FsaWZvcm5pYTCCASIwDQYJKoZIhvcN
|
|
||||||
AQEBBQADggEPADCCAQoCggEBAK7jUnRUeD5QY9YPjbW6aiGkVWRWAebi4nZl++C+
|
|
||||||
HEBHSyB0jXX+J93y97PuhgeguCuMM6KZU7C0tPZKjwdxBSqpXeyFpvcj+UWMjZjz
|
|
||||||
9FrBAzZ1DIYquqfYuKUtavoFv29IomRqzyZ4FrMJ2qy0RudnWMTqn4P6/7DrWos+
|
|
||||||
oJMCpl/mdWl+YXMXypgW5JwM7ladx8GkEKQwGMtXrG9pop7qS6LNikN76tLPYWjR
|
|
||||||
DhrWLBe8gCGjuXkwvxw78CeeJNyWF+P/+x4lVsWphip3jX57SUx/bjaRjsWSfpMz
|
|
||||||
xHueHtuCrGffgCkFzYH1/Z60FZNxuHYqJeL4V3gcR8IIaZECAwEAAaOBmDCBlTAO
|
|
||||||
BgNVHQ8BAf8EBAMCAKAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwG
|
|
||||||
A1UdEwEB/wQCMAAwHQYDVR0OBBYEFBnFrxc1gkG2CYImTYKL0DAaGxRBMB8GA1Ud
|
|
||||||
IwQYMBaAFKvOM8/hjk8uyp7KnqJ12h8GOhGZMBYGA1UdEQQPMA2CC2V4YW1wbGUu
|
|
||||||
Y29tMAsGCSqGSIb3DQEBCwOCAQEAX31Jk7R9gDMw/gepIxxeKx9m+c7eOYDxjJ12
|
|
||||||
bfXQVKNNPLZsO9M9r2/0BCTFsNTF2jh6ZTeIf7qy+Jw08YqTcO5m8jhiGzCjOYu5
|
|
||||||
tiGxCUe+cYjXcCRk83+XGkVrQm3fQ0cVtic0yfm/fez3iv915jH0GYO5X8/d7bKa
|
|
||||||
0kWJ3uOjur6tenfnisypEsuYYjPRcQdXSG6/qgHEc4r279Z2ltjy1bFFr86hHUbj
|
|
||||||
DX7XNWH/MXFgqLzfQm5VzmqBj9om+0/tgTWdkgI1DK/Hnvm9A4YZfaxh4fxv7ITo
|
|
||||||
Ce8FWW13Wj55x64peb8ZiW1jUyoaJQcxQxFpRHIVu26nXApWtg==
|
|
||||||
-----END CERTIFICATE-----
|
|
1
vendor/github.com/cloudflare/cfssl/ocsp/testdata/db-config.json
generated
vendored
1
vendor/github.com/cloudflare/cfssl/ocsp/testdata/db-config.json
generated
vendored
@ -1 +0,0 @@
|
|||||||
{"driver":"sqlite3","data_source":"sqlite_test.db"}
|
|
2
vendor/github.com/cloudflare/cfssl/ocsp/testdata/resp64.pem
generated
vendored
2
vendor/github.com/cloudflare/cfssl/ocsp/testdata/resp64.pem
generated
vendored
@ -1,2 +0,0 @@
|
|||||||
MIIFCAoBAKCCBQEwggT9BgkrBgEFBQcwAQEEggTuMIIE6jCBrKADAgEAoS0wKzEpMCcGA1UEAwwgY2Fja2xpbmcgY3J5cHRvZ3JhcGhlciBmYWtlIFJPT1QYDzIwMTUxMDIxMjEyNjAwWjBlMGMwOzAJBgUrDgMCGgUABBSwLsMRhyg1dJUwnXWk++D57lvgagQU6aQ/7p6l5vLV13lgPJOmLiSOl6oCAhJNgAAYDzIwMTUwOTAxMDAwMDAwWqARGA8yMDE0MDEwMTAwMDAwMFowDQYJKoZIhvcNAQELBQADggEBAHlFcNKa7mZDJeWzJt1S45kx4gDqOLzyeZzflFbSjsrHRrLA7Y3RKoy0i4Y9Vi6Jfhe7xj6dgDMJy1Z1qayI/Q8QvnaU6V2kFcnaD7pah9uALu2xNYMJPllq8KsQYvDLa1E2PMvQTqDhY2/QrIuxw3jkqtzeI5aG0idFm3aF1z/v3dt6XPWjE8IlAJfXY4CeUorLvA+mK2YHJ3V7MSgymVXZdyth1rg0/0cP9v77Rlb8hmWA/EUMcIPKQqErVQK+gZiVC0SfElaMO25CD9cjY+fd904oC5+ahvhHXxOSEbXVZBT1FY2teFCKEpx86gAVcZWpGmVwJO+dpsrkgwpN786gggMjMIIDHzCCAxswggIDoAMCAQICCQDNMc/iNkPNdTANBgkqhkiG9w0BAQsFADArMSkwJwYDVQQDDCBjYWNrbGluZyBjcnlwdG9ncmFwaGVyIGZha2UgUk9PVDAeFw0xNTEwMjEyMDExNTJaFw0yMDEwMTkyMDExNTJaMCsxKTAnBgNVBAMMIGNhY2tsaW5nIGNyeXB0b2dyYXBoZXIgZmFrZSBST09UMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA+TbvalHXQYO6GhJUJZI5mF2k4+nZDIvqWyrjw+2k9+UAcekuLKPpSclu9aBRvUggw3XFHAW95qW6Dv2+5gvinUmTq9Ry7kVTUYAxyZu1ydHt+wDETmFJfeY6/fpBHHIsuGLItqpUGmr8D6LROGEqfFY2B9+08O7Zs+FufDRgLHWEvLTdpPkrzeDJs9Oo6g38jfT9b4+9Ahs+FvvwqneAkbeZgBC2NWKB+drMuNBTPbF/W1a8czAzHeOs6qy0dBlTHNjL62/o9cRKNiKe3IqwHJdd01V1aLSUgIbe2HrP9EC1djnUXWR3jx3ursaKt7PTKsC52UJkRqnai80MzQj0WwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU6aQ/7p6l5vLV13lgPJOmLiSOl6owDQYJKoZIhvcNAQELBQADggEBACuwILDTvaBrdorv2zMsYnZuKvXtknWAf/DTcvF4N5PMOPBNkeHuGfv0VDe6VXpBHiU5G9E2RdU435W7o0kRSn27YcqrxaXGt9m2kArW6e49136+MnFx47jjk0p4T48s6MeaL5JVLJzxYouu1ZOZqlVokwNPO+8bxn6ALumIVUOD1jSBN7Y9pgLUS2rzO5pe5pxS2Ak/eO7Q7M21r1sEuG/uPuWqBFogk+4Z9omKVZdRDbzm9vYUATgEZdlTe2tct3BVBQ2zWbe0R2svIuCs8XzERykvfv1JawxI68I9vN0Dh9vj/xDM6udorfALlhjgQdftmbHovRLpJ1ZSOMIUNGY=
|
|
||||||
MIIFCAoBAKCCBQEwggT9BgkrBgEFBQcwAQEEggTuMIIE6jCBrKADAgEAoS0wKzEpMCcGA1UEAwwgY2Fja2xpbmcgY3J5cHRvZ3JhcGhlciBmYWtlIFJPT1QYDzIwMTUxMDIxMjA1NTAwWjBlMGMwOzAJBgUrDgMCGgUABBSwLsMRhyg1dJUwnXWk++D57lvgagQU6aQ/7p6l5vLV13lgPJOmLiSOl6oCAhJNgAAYDzIwMTUxMDIwMDAwMDAwWqARGA8yMDMwMTAyMDAwMDAwMFowDQYJKoZIhvcNAQELBQADggEBAFgnZ/Ft1LTDYPwPlecOtLykgwS4HZTelUaSi841nq/tgfLM11G3D1AUXAT2V2jxiG+0YTxzkWd5v44KJGB9Mm+qjafPMKR3ULjQkJHJ8goFHpWkUtLrIYurj8N+4HpwZ+RJccieuZIX8SMeSWRq5w83okWZPGoUrl6GRdQDteE7imrNkBa35zrzUWozPqY8k90ttKfhZHRXNCJe8YbVfJRDh0vVZABzlfHeW8V+ie15HPVDx/M341KC3tBMM88e5/bt3sLyUU8SwxGH5nOe/ohVpjhkjk2Pz4TPdwD2ZK5Auc09VBfivdLYRE84BMhd8/yOEt53VWGPIMxWUVtrUyegggMjMIIDHzCCAxswggIDoAMCAQICCQDNMc/iNkPNdTANBgkqhkiG9w0BAQsFADArMSkwJwYDVQQDDCBjYWNrbGluZyBjcnlwdG9ncmFwaGVyIGZha2UgUk9PVDAeFw0xNTEwMjEyMDExNTJaFw0yMDEwMTkyMDExNTJaMCsxKTAnBgNVBAMMIGNhY2tsaW5nIGNyeXB0b2dyYXBoZXIgZmFrZSBST09UMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA+TbvalHXQYO6GhJUJZI5mF2k4+nZDIvqWyrjw+2k9+UAcekuLKPpSclu9aBRvUggw3XFHAW95qW6Dv2+5gvinUmTq9Ry7kVTUYAxyZu1ydHt+wDETmFJfeY6/fpBHHIsuGLItqpUGmr8D6LROGEqfFY2B9+08O7Zs+FufDRgLHWEvLTdpPkrzeDJs9Oo6g38jfT9b4+9Ahs+FvvwqneAkbeZgBC2NWKB+drMuNBTPbF/W1a8czAzHeOs6qy0dBlTHNjL62/o9cRKNiKe3IqwHJdd01V1aLSUgIbe2HrP9EC1djnUXWR3jx3ursaKt7PTKsC52UJkRqnai80MzQj0WwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU6aQ/7p6l5vLV13lgPJOmLiSOl6owDQYJKoZIhvcNAQELBQADggEBACuwILDTvaBrdorv2zMsYnZuKvXtknWAf/DTcvF4N5PMOPBNkeHuGfv0VDe6VXpBHiU5G9E2RdU435W7o0kRSn27YcqrxaXGt9m2kArW6e49136+MnFx47jjk0p4T48s6MeaL5JVLJzxYouu1ZOZqlVokwNPO+8bxn6ALumIVUOD1jSBN7Y9pgLUS2rzO5pe5pxS2Ak/eO7Q7M21r1sEuG/uPuWqBFogk+4Z9omKVZdRDbzm9vYUATgEZdlTe2tct3BVBQ2zWbe0R2svIuCs8XzERykvfv1JawxI68I9vN0Dh9vj/xDM6udorfALlhjgQdftmbHovRLpJ1ZSOMIUNGY=
|
|
BIN
vendor/github.com/cloudflare/cfssl/ocsp/testdata/response.der
generated
vendored
BIN
vendor/github.com/cloudflare/cfssl/ocsp/testdata/response.der
generated
vendored
Binary file not shown.
1
vendor/github.com/cloudflare/cfssl/ocsp/testdata/response_broken.pem
generated
vendored
1
vendor/github.com/cloudflare/cfssl/ocsp/testdata/response_broken.pem
generated
vendored
@ -1 +0,0 @@
|
|||||||
MIICGAoBAKCCAhEwggINBgkrBgEFBQcwAQEEggH+OZ4ZSKS2J85Kr9UaI2LAEFKvOM8/hjk8uyp7KnqJ12h8GOhGZAgIBdaADAQH/GA8wMDAxMDEwMTAwMDAwMFqgERgPMDAwMTAxMDEwMDAwMDBaMA0GCSqGSIb3DQEBCwUAA4IBAQCBGs+8UNwUdkEBladnajZIV+sHtmao/mMTIvpyPqnmV2Ab9KfNWlSDSDuMtZYKS4VsEwtbZ+4kKWI8DugE6egjP3o64R7VP2aqrh41IORwccLGVsexILBpxg4h602JbhXM0sxgXoh5WAt9f1oy6PsHAt/XAuJGSo7yMNv3nHKNFwjExmZt21sNLYlWlljjtX92rlo/mBTWKO0js4YRNyeNQhchARbn9oL18jW0yAVqB9a8rees+EippbTfoktFf0cIhnmkiknPZSZ+dN2qHkxiXIujWlymZzUZcqRTNtrmmhlOdt35QSg7Vw8eyw2rl8ZU94zaI5DPWn1QYn0dk7l9
|
|
BIN
vendor/github.com/cloudflare/cfssl/ocsp/testdata/response_mix.pem
generated
vendored
BIN
vendor/github.com/cloudflare/cfssl/ocsp/testdata/response_mix.pem
generated
vendored
Binary file not shown.
13
vendor/github.com/cloudflare/cfssl/ocsp/testdata/server.crt
generated
vendored
13
vendor/github.com/cloudflare/cfssl/ocsp/testdata/server.crt
generated
vendored
@ -1,13 +0,0 @@
|
|||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIICATCCAWoCCQDidF+uNJR6czANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJB
|
|
||||||
VTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0
|
|
||||||
cyBQdHkgTHRkMB4XDTEyMDUwMTIyNTUxN1oXDTEzMDUwMTIyNTUxN1owRTELMAkG
|
|
||||||
A1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0
|
|
||||||
IFdpZGdpdHMgUHR5IEx0ZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtpjl
|
|
||||||
nodhz31kLEJoeLSkRmrv8l7exkGtO0REtIbirj9BBy64ZXVBE7khKGO2cnM8U7yj
|
|
||||||
w7Ntfh+IvCjZVA3d2XqHS3Pjrt4HmU/cGCONE8+NEXoqdzLUDPOix1qDDRBvXs81
|
|
||||||
KAV2qh6CYHZbdqixhDerjvJcD4Nsd7kExEZfHuECAwEAATANBgkqhkiG9w0BAQUF
|
|
||||||
AAOBgQCyOqs7+qpMrYCgL6OamDeCVojLoEp036PsnaYWf2NPmsVXdpYW40Foyyjp
|
|
||||||
iv5otkxO5rxtGPv7o2J1eMBpCuSkydvoz3Ey/QwGqbBwEXQ4xYCgra336gqW2KQt
|
|
||||||
+LnDCkE8f5oBhCIisExc2i8PDvsRsY70g/2gs983ImJjVR8sDw==
|
|
||||||
-----END CERTIFICATE-----
|
|
15
vendor/github.com/cloudflare/cfssl/ocsp/testdata/server.key
generated
vendored
15
vendor/github.com/cloudflare/cfssl/ocsp/testdata/server.key
generated
vendored
@ -1,15 +0,0 @@
|
|||||||
-----BEGIN RSA PRIVATE KEY-----
|
|
||||||
MIICXAIBAAKBgQC2mOWeh2HPfWQsQmh4tKRGau/yXt7GQa07RES0huKuP0EHLrhl
|
|
||||||
dUETuSEoY7ZyczxTvKPDs21+H4i8KNlUDd3ZeodLc+Ou3geZT9wYI40Tz40Reip3
|
|
||||||
MtQM86LHWoMNEG9ezzUoBXaqHoJgdlt2qLGEN6uO8lwPg2x3uQTERl8e4QIDAQAB
|
|
||||||
AoGAVxnsPojZ8X4g8LPk3d9dlXGhb/4tSmk9102jcHH/Y5ssy95Pe6ZJGr1uwbN+
|
|
||||||
7m1l05PikpHeoxEryoW51cyfjDVkXUT0zPp2JC38DUA/0A8qWav/aENM64wg1I0P
|
|
||||||
Dil8FywzZEonRNJst53+9cxFye70ely5br/tWxEp4/MsM1kCQQDqV4Lwn8BXOeKg
|
|
||||||
xOwNmcL+0XPedvSPBSPUoGJCzu12rH6Z+UHXipXsqRNSyQ+KGlur14y0kCh5uiVA
|
|
||||||
jmWYVEEjAkEAx3keAo1nFsVW35EPt5LIbh6L6ty7GrvGRvOVeSd6YLtixMety24k
|
|
||||||
hpt1cEv2xlFnbjbBbMkr9eUiUNpttLT6KwJBANGKaLoSjqEwUFYjX1OV/wdtcGcn
|
|
||||||
BOzx0qUouFQ2xZ0NBrNVbyt1bzPLx0yKHkwF35ybw+Qc1yRpby/3ZB6+j/MCQFLl
|
|
||||||
vtcItOL9uBDJVGLSGYHKKBO/D/MYPlqWOHRVN8KjnXRyF4QHjh5y1OeKalAY3Ict
|
|
||||||
Mk1nfWF/jDdVz2neHGkCQHHBR4Xt1/euDku+14z5aLpphTEQVuRD2vQoeKi/W/CY
|
|
||||||
OgNmKj1DzucnCS6yRCrF8Q0Pn8l054a3Wdbl1gqI/gA=
|
|
||||||
-----END RSA PRIVATE KEY-----
|
|
9
vendor/github.com/cloudflare/cfssl/ocsp/testdata/server_broken.crt
generated
vendored
9
vendor/github.com/cloudflare/cfssl/ocsp/testdata/server_broken.crt
generated
vendored
@ -1,9 +0,0 @@
|
|||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
IFdpZGdpdHMgUHR5IEx0ZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtpjl
|
|
||||||
nodhz31kLEJoeLSkRmrv8l7exkGtO0REtIbirj9BBy64ZXVBE7khKGO2cnM8U7yj
|
|
||||||
w7Ntfh+IvCjZVA3d2XqHS3Pjrt4HmU/cGCONE8+NEXoqdzLUDPOix1qDDRBvXs81
|
|
||||||
KAV2qh6CYHZbdqixhDerjvJcD4Nsd7kExEZfHuECAwEAATANBgkqhkiG9w0BAQUF
|
|
||||||
AAOBgQCyOqs7+qpMrYCgL6OamDeCVojLoEp036PsnaYWf2NPmsVXdpYW40Foyyjp
|
|
||||||
iv5otkxO5rxtGPv7o2J1eMBpCuSkydvoz3Ey/QwGqbBwEXQ4xYCgra336gqW2KQt
|
|
||||||
+LnDCkE8f5oBhCIisExc2i8PDvsRsY70g/2gs983ImJjVR8sDw==
|
|
||||||
-----END CERTIFICATE-----
|
|
8
vendor/github.com/cloudflare/cfssl/ocsp/testdata/server_broken.key
generated
vendored
8
vendor/github.com/cloudflare/cfssl/ocsp/testdata/server_broken.key
generated
vendored
@ -1,8 +0,0 @@
|
|||||||
-----BEGIN RSA PRIVATE KEY-----
|
|
||||||
jmWYVEEjAkEAx3keAo1nFsVW35EPt5LIbh6L6ty7GrvGRvOVeSd6YLtixMety24k
|
|
||||||
hpt1cEv2xlFnbjbBbMkr9eUiUNpttLT6KwJBANGKaLoSjqEwUFYjX1OV/wdtcGcn
|
|
||||||
BOzx0qUouFQ2xZ0NBrNVbyt1bzPLx0yKHkwF35ybw+Qc1yRpby/3ZB6+j/MCQFLl
|
|
||||||
vtcItOL9uBDJVGLSGYHKKBO/D/MYPlqWOHRVN8KjnXRyF4QHjh5y1OeKalAY3Ict
|
|
||||||
Mk1nfWF/jDdVz2neHGkCQHHBR4Xt1/euDku+14z5aLpphTEQVuRD2vQoeKi/W/CY
|
|
||||||
OgNmKj1DzucnCS6yRCrF8Q0Pn8l054a3Wdbl1gqI/gA=
|
|
||||||
-----END RSA PRIVATE KEY-----
|
|
22
vendor/github.com/cloudflare/cfssl/ocsp/testdata/sqlite_ca.pem
generated
vendored
22
vendor/github.com/cloudflare/cfssl/ocsp/testdata/sqlite_ca.pem
generated
vendored
@ -1,22 +0,0 @@
|
|||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIDqjCCApKgAwIBAgIUFqT7NscPhQ5kfZTYNhWTKXVekrswDQYJKoZIhvcNAQEL
|
|
||||||
BQAwbTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCE5ldyBZb3JrMQ8wDQYDVQQHEwZJ
|
|
||||||
dGhhY2ExLDAqBgNVBAoTI1RoZSBCZXN0IE9wZW4tU291cmNlIEhhY2thdGhvbiBU
|
|
||||||
ZWFtMQwwCgYDVQQLEwNXV1cwHhcNMTcwMjExMTQxMDAwWhcNMjIwMjEwMTQxMDAw
|
|
||||||
WjBtMQswCQYDVQQGEwJVUzERMA8GA1UECBMITmV3IFlvcmsxDzANBgNVBAcTBkl0
|
|
||||||
aGFjYTEsMCoGA1UEChMjVGhlIEJlc3QgT3Blbi1Tb3VyY2UgSGFja2F0aG9uIFRl
|
|
||||||
YW0xDDAKBgNVBAsTA1dXVzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
|
|
||||||
ANR66Ky8dBV2FVyDOGXFM4bF63EJxI7PgCKg8yiJsYihwo5wsABpiI66offWsJNV
|
|
||||||
rRKT8QhGohm4V1B/MOpdb3slOYVFXAInjoKyClPYDK3GMkJ8mo6mFysm3q/JqlEl
|
|
||||||
KjvVIb8Yq7cgPAj/MOb4rBJu5+c3sM37CwpUbxCTdPiuVMGYDjVKauloJfTir0HQ
|
|
||||||
RMwREsO6fyzSia4qvfj4ljWGzPtEVrRmzs7LguLr3DkUjXMSq7AI3L+oUdiYR6kV
|
|
||||||
c3rLucMQKRCNGMcU3T8Sq9Pwt2sUeAFNqcXk9E1FqesYwFoEejStU24wpTd4ah0g
|
|
||||||
tL1LyoEYG6etUehrxlRlMJsCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1Ud
|
|
||||||
EwEB/wQFMAMBAf8wHQYDVR0OBBYEFANQ4+9iVQzAZdHhb0fNXtrb3krdMA0GCSqG
|
|
||||||
SIb3DQEBCwUAA4IBAQA4SKVpdJj40xaeyVkHWtrY4O8wB2J7Z6rsUf9jlEySeQaH
|
|
||||||
GWI4LUOKjrU0u/NtuvTybDHyfc1VrdgZmfaukE35VyQ1+xWa/47Q7KISSCH1x0cF
|
|
||||||
L+WdJqKHD0q/tR2uz/fw9AUlV1LkBEeAZclhPxCLv32gLExQrNCBVa7c9Xkq1muB
|
|
||||||
o0ootJF9sTZopqnsMldvMBWOl/9cb2dxPKu3AcNpCm28wt+rwqHIu+Fna9Fe/n+y
|
|
||||||
SmWTaP3l/eiLskFUvmHKSUVwTEPC6kbK9rxKPz7ijQ3h/YuWxxz32L2CpsOfekgT
|
|
||||||
7jER0Y/xxZq7XykdwZ1VKKfZGnsH8mU2rU335Gd1
|
|
||||||
-----END CERTIFICATE-----
|
|
BIN
vendor/github.com/cloudflare/cfssl/ocsp/testdata/sqlite_test.db
generated
vendored
BIN
vendor/github.com/cloudflare/cfssl/ocsp/testdata/sqlite_test.db
generated
vendored
Binary file not shown.
1423
vendor/github.com/cloudflare/cfssl/signer/local/local_test.go
generated
vendored
1423
vendor/github.com/cloudflare/cfssl/signer/local/local_test.go
generated
vendored
File diff suppressed because it is too large
Load Diff
3
vendor/github.com/cloudflare/cfssl/signer/local/testdata/build_inter_pathlen_csrs.sh
generated
vendored
3
vendor/github.com/cloudflare/cfssl/signer/local/testdata/build_inter_pathlen_csrs.sh
generated
vendored
@ -1,3 +0,0 @@
|
|||||||
echo '{ "CN": "Pathlen 0 Issuer", "ca": { "pathlen": 0, "pathlenzero": true } }' | cfssl genkey -initca - | cfssljson -bare inter_pathlen_0
|
|
||||||
echo '{ "CN": "Pathlen 1 Issuer", "ca": { "pathlen": 1 } }' | cfssl genkey -initca - | cfssljson -bare inter_pathlen_1
|
|
||||||
echo '{ "CN": "Pathlen Unspecified", "ca": {} }' | cfssl genkey -initca - | cfssljson -bare inter_pathlen_unspecified
|
|
27
vendor/github.com/cloudflare/cfssl/signer/local/testdata/ca.pem
generated
vendored
27
vendor/github.com/cloudflare/cfssl/signer/local/testdata/ca.pem
generated
vendored
@ -1,27 +0,0 @@
|
|||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIEmzCCA4OgAwIBAgIMAMSvNBgypwaaSQ5iMA0GCSqGSIb3DQEBBQUAMIGMMQsw
|
|
||||||
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
|
|
||||||
YW5jaXNjbzETMBEGA1UEChMKQ0ZTU0wgVEVTVDEbMBkGA1UEAxMSQ0ZTU0wgVEVT
|
|
||||||
VCBSb290IENBMR4wHAYJKoZIhvcNAQkBFg90ZXN0QHRlc3QubG9jYWwwHhcNMTIx
|
|
||||||
MjEyMDIxMDMxWhcNMjIxMDIxMDIxMDMxWjCBjDELMAkGA1UEBhMCVVMxEzARBgNV
|
|
||||||
BAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lzY28xEzARBgNVBAoT
|
|
||||||
CkNGU1NMIFRFU1QxGzAZBgNVBAMTEkNGU1NMIFRFU1QgUm9vdCBDQTEeMBwGCSqG
|
|
||||||
SIb3DQEJARYPdGVzdEB0ZXN0LmxvY2FsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
|
||||||
MIIBCgKCAQEAsRp1xSfIDoD/40Bo4Hls3sFn4dav5NgxbZGpVyGF7dJI9u0eEnL4
|
|
||||||
BUGssPaUFLWC83CZxujUEiEfE0oKX+uOhhGv3+j5xSTNM764m2eSiN53cdZtK05d
|
|
||||||
hwq9uS8LtjKOQeN1mQ5qmiqxBMdjkKgMsVw5lMCgoYKo57kaKFyXzdpNVDzqw+pt
|
|
||||||
HWmuNtDQjK3qT5Ma06mYPmIGYhIZYLY7oJGg9ZEaNR0GIw4zIT5JRsNiaSb5wTLw
|
|
||||||
aa0n/4vLJyVjLJcYmJBvZWj8g+taK+C4INu/jGux+bmsC9hq14tbOaTNAn/NE0qN
|
|
||||||
8oHwcRBEqfOdEYdZkxI5NWPiKNW/Q+AeXQIDAQABo4H6MIH3MB0GA1UdDgQWBBS3
|
|
||||||
0veEuqg51fusEM4p/YuWpBPsvTCBxAYDVR0jBIG8MIG5gBS30veEuqg51fusEM4p
|
|
||||||
/YuWpBPsvaGBkqSBjzCBjDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3Ju
|
|
||||||
aWExFjAUBgNVBAcTDVNhbiBGcmFuY2lzY28xEzARBgNVBAoTCkNGU1NMIFRFU1Qx
|
|
||||||
GzAZBgNVBAMTEkNGU1NMIFRFU1QgUm9vdCBDQTEeMBwGCSqGSIb3DQEJARYPdGVz
|
|
||||||
dEB0ZXN0LmxvY2FsggwAxK80GDKnBppJDmIwDwYDVR0TBAgwBgEB/wIBADANBgkq
|
|
||||||
hkiG9w0BAQUFAAOCAQEAJ7r1EZYDwed6rS0+YKHdkRGRQ5Rz6A9DIVBPXrSMAGj3
|
|
||||||
F5EF2m/GJbhpVbnNJTVlgP9DDyabOZNxzdrCr4cHMkYYnocDdgAodnkw6GZ/GJTc
|
|
||||||
depbVTR4TpihFNzeDEGJePrEwM1DouGswpu97jyuCYZ3z1a60+a+3C1GwWaJ7Aet
|
|
||||||
Uqm+yLTUrMISsfnDPqJdM1NeqW3jiZ4IgcqJkieCCSpag9Xuzrp9q6rjmePvlQkv
|
|
||||||
qz020JGg6VijJ+c6Tf5y0XqbAhkBTqYtVamu9gEth9utn12EhdNjTZMPKMjjgFUd
|
|
||||||
H0N6yOEuQMl4ky7RxZBM0iPyeob6i4z2LEQilgv9MQ==
|
|
||||||
-----END CERTIFICATE-----
|
|
28
vendor/github.com/cloudflare/cfssl/signer/local/testdata/ca_key.pem
generated
vendored
28
vendor/github.com/cloudflare/cfssl/signer/local/testdata/ca_key.pem
generated
vendored
@ -1,28 +0,0 @@
|
|||||||
-----BEGIN PRIVATE KEY-----
|
|
||||||
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCxGnXFJ8gOgP/j
|
|
||||||
QGjgeWzewWfh1q/k2DFtkalXIYXt0kj27R4ScvgFQayw9pQUtYLzcJnG6NQSIR8T
|
|
||||||
Sgpf646GEa/f6PnFJM0zvribZ5KI3ndx1m0rTl2HCr25Lwu2Mo5B43WZDmqaKrEE
|
|
||||||
x2OQqAyxXDmUwKChgqjnuRooXJfN2k1UPOrD6m0daa420NCMrepPkxrTqZg+YgZi
|
|
||||||
EhlgtjugkaD1kRo1HQYjDjMhPklGw2JpJvnBMvBprSf/i8snJWMslxiYkG9laPyD
|
|
||||||
61or4Lgg27+Ma7H5uawL2GrXi1s5pM0Cf80TSo3ygfBxEESp850Rh1mTEjk1Y+Io
|
|
||||||
1b9D4B5dAgMBAAECggEAKHhjcSomDSptTwDo9mLI/h40HudwSlsc8GzYxZBjinUD
|
|
||||||
N2n39T9QbeMUE1xFenX/9qFEgq+xxnLLJx1EQacSapCgIAqdCO/f9HMgvGJumdg8
|
|
||||||
c0cMq1i9Bp7tu+OESZ5D48qWlOM2eQRIb08g8W11eRIaFmPuUPoKnuktkQuXpPJc
|
|
||||||
YbS/+JuA8SDwe6sV0cMCQuS+iHFfeGwWCKrDUkhLwcL3waW3od2XFyOeFFWFhl0h
|
|
||||||
HmM/mWKRuRdqR7hrmArTwFZVkB+o/1ywVYXIv+JQm0eNZ5PKLNJGL2f5oxbMR/JI
|
|
||||||
AoK0bAlJmYaFp96h1KpbPwLEL/0hHSWA7sAyJIgQAQKBgQDaEAZor/w4ZUTekT1+
|
|
||||||
cbId0yA+ikDXQOfXaNCSh9Pex+Psjd5zVVOqyVFJ29daRju3d7rmpN4Cm5V4h0l1
|
|
||||||
/2ad207rjCAnpCHtaddJWNyJzF2IL2IaoCZQRp0k7zOjBGQpoWDTwBaEin5CCv3P
|
|
||||||
kkdQkKz6FDP1xskHSLZr21/QCQKBgQDP6jXutEgGjf3yKpMFk/69EamJdon8clbt
|
|
||||||
hl7cOyWtobnZhdOWVZPe00Oo3Jag2aWgFFsm3EtwnUCnR4d4+fXRKS2LkhfIUZcz
|
|
||||||
cKy17Ileggdd8UGhL4RDrF/En9tJL86WcVkcoOrqLcGB2FLWrVhVpHFK74eLMCH/
|
|
||||||
uc/+ioPItQKBgHYoDsD08s7AGMQcoNx90MyWVLduhFnegoFW+wUa8jOZzieka6/E
|
|
||||||
wVQeR5yksZjpy3vLNYu6M83n7eLkM2rrm/fXGHlLcTTpm7SgEBZfPwivotKjEh5p
|
|
||||||
PrlqucWEk082lutz1RqHz+u7e1Rfzk2F7nx6GDBdeBYpw03eGXJx6QW5AoGBAIJq
|
|
||||||
4puyAEAET1fZNtHX7IGCk7sDXTi6LCbgE57HhzHr8V0t4fQ6CABMuvMwM1gATjEk
|
|
||||||
s6yjoLqqGUUUzDipanViBAy5fiuManC868lN7zkWDTLzQ3ytBqVAee4na/DziP27
|
|
||||||
ae9YTSLJwskE/alloLRP6zTbHUXE0n7LelmrX1DFAoGBAMFLl+Lu+WFgCHxBjn43
|
|
||||||
rHpJbQZQmsFhAMhkN4hsj6dJfAGn2gRLRiVRAika+8QF65xMZiVQWUVSUZADWERi
|
|
||||||
0SXGjzN1wYxO3Qzy3LYwws6fxFAq5lo79eb38yFT2lHdqK3x/QgiDSRVl+R6cExV
|
|
||||||
xQB518/lp2eIeMpglWByDwJX
|
|
||||||
-----END PRIVATE KEY-----
|
|
10
vendor/github.com/cloudflare/cfssl/signer/local/testdata/ecdsa256-inter.csr
generated
vendored
10
vendor/github.com/cloudflare/cfssl/signer/local/testdata/ecdsa256-inter.csr
generated
vendored
@ -1,10 +0,0 @@
|
|||||||
-----BEGIN CERTIFICATE REQUEST-----
|
|
||||||
MIIBezCCASECAQAwgYwxCzAJBgNVBAYTAlVTMRMwEQYDVQQKEwpDbG91ZEZsYXJl
|
|
||||||
MRwwGgYDVQQLExNTeXN0ZW1zIEVuZ2luZWVyaW5nMRYwFAYDVQQHEw1TYW4gRnJh
|
|
||||||
bmNpc2NvMRMwEQYDVQQIEwpDYWxpZm9ybmlhMR0wGwYDVQQDExRjbG91ZGZsYXJl
|
|
||||||
LWludGVyLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLgOKlWwIAIeURde
|
|
||||||
yvDMhgfn6xPp1gn8oUeLmsniBm7I+j84IsVzUso8/MpjMZ9nB8lQUanhv3Kmqcyj
|
|
||||||
HNj+iFegMjAwBgkqhkiG9w0BCQ4xIzAhMB8GA1UdEQQYMBaCFGNsb3VkZmxhcmUt
|
|
||||||
aW50ZXIuY29tMAoGCCqGSM49BAMCA0gAMEUCIEJcy2mn2YyK8lVE+HHmr2OsmdbH
|
|
||||||
4CLDVXFBwxke8ObqAiEAx/il1cDKvQ/I36b4XjBnOX2jcQ5oaCNPFFBE74WQ/ps=
|
|
||||||
-----END CERTIFICATE REQUEST-----
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user