diff --git a/.travis.yml b/.travis.yml
index e61c194..88d9e87 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,7 +1,7 @@
language: go
go:
-- 1.9
+- "1.10"
before_install:
- go get github.com/Kisesy/gscan_quic
diff --git a/config.json b/config.json
index 41b407d..69efedf 100644
--- a/config.json
+++ b/config.json
@@ -68,7 +68,7 @@
// 3: 测试 HTTP 连接
// 4: 验证是否是 NoSuchBucket 错误
// (2.x版默认等级为3, 所以如果lv2搜到的IP不能用, 可以改为 3)
- "Level": 3,
+ "Level": 4,
},
// 暂时只支持 google IP
diff --git a/quic.go b/quic.go
index d2780a6..7091d06 100644
--- a/quic.go
+++ b/quic.go
@@ -11,8 +11,8 @@ import (
"strings"
"time"
- quic "github.com/phuslu/quic-go"
- "github.com/phuslu/quic-go/h2quic"
+ quic "github.com/lucas-clemente/quic-go"
+ "github.com/lucas-clemente/quic-go/h2quic"
)
var errNoSuchBucket = []byte("NoSuchBucket
The specified bucket does not exist.")
@@ -54,7 +54,7 @@ func testQuic(ip string, config *ScanConfig, record *ScanRecord) bool {
// lv1 只会验证证书是否存在
cs := quicSessn.ConnectionState()
- if cs == nil {
+ if !cs.HandshakeComplete {
return false
}
pcs := cs.PeerCertificates
@@ -75,17 +75,16 @@ func testQuic(ip string, config *ScanConfig, record *ScanRecord) bool {
tr := &h2quic.RoundTripper{DisableCompression: true}
defer tr.Close()
- tr.DialAddr = func(hostname string, tlsConfig *tls.Config, config *quic.Config) (quic.Session, error) {
+ tr.Dial = func(network, addr string, tlsCfg *tls.Config, cfg *quic.Config) (quic.Session, error) {
return quicSessn, err
}
// 设置超时
- udpConn.SetReadDeadline(time.Now().Add(config.ScanMaxRTT - time.Since(start)))
hclient := &http.Client{
Transport: tr,
CheckRedirect: func(req *http.Request, via []*http.Request) error {
return http.ErrUseLastResponse
},
- // Timeout: config.ScanMaxRTT - time.Since(start),
+ Timeout: config.ScanMaxRTT - time.Since(start),
}
url := "https://" + config.HTTPVerifyHosts[rand.Intn(len(config.HTTPVerifyHosts))]
req, _ := http.NewRequest(http.MethodGet, url, nil)
diff --git a/scan.go b/scan.go
index b858ff5..f1c93cf 100644
--- a/scan.go
+++ b/scan.go
@@ -62,8 +62,11 @@ func testip(ip string, config *ScanConfig) *ScanRecord {
func testip_worker(ctx context.Context, ch chan string, gcfg *GScanConfig, cfg *ScanConfig, srs *ScanRecords, wg *sync.WaitGroup) {
defer wg.Done()
- ticker := time.NewTimer(cfg.ScanMaxRTT + 100*time.Millisecond)
- defer ticker.Stop()
+ timer := time.NewTimer(cfg.ScanMaxRTT + 100*time.Millisecond)
+ defer timer.Stop()
+
+ ctx, cancal := context.WithCancel(ctx)
+ defer cancal()
for ip := range ch {
srs.IncScanCounter()
@@ -91,11 +94,11 @@ func testip_worker(ctx context.Context, ch chan string, gcfg *GScanConfig, cfg *
done <- struct{}{}
}()
- ticker.Reset(cfg.ScanMaxRTT + 100*time.Millisecond)
+ timer.Reset(cfg.ScanMaxRTT + 100*time.Millisecond)
select {
case <-ctx.Done():
return
- case <-ticker.C:
+ case <-timer.C:
log.Println(ip, "timeout")
case <-done:
}
diff --git a/sni.go b/sni.go
index 2fac788..cf52bec 100644
--- a/sni.go
+++ b/sni.go
@@ -29,7 +29,7 @@ func testSni(ip string, config *ScanConfig, record *ScanRecord) bool {
}
if config.Level > 1 {
pcs := tlsconn.ConnectionState().PeerCertificates
- if pcs == nil || len(pcs) == 0 || pcs[0].Subject.CommonName != serverName {
+ if len(pcs) == 0 || pcs[0].Subject.CommonName != serverName {
tlsconn.Close()
return false
}
diff --git a/tls.go b/tls.go
index 9354ddd..6c7c4c8 100644
--- a/tls.go
+++ b/tls.go
@@ -15,7 +15,7 @@ import (
var (
g2pkp, _ = base64.StdEncoding.DecodeString("MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnCoEd1zYUJE6BqOC4NhQSLyJP/EZcBqIRn7gj8Xxic4h7lr+YQ23MkSJoHQLU09VpM6CYpXu61lfxuEFgBLEXpQ/vFtIOPRT9yTm+5HpFcTP9FMN9Er8n1Tefb6ga2+HwNBQHygwA0DaCHNRbH//OjynNwaOvUsRBOt9JN7m+fwxcfuU1WDzLkqvQtLL6sRqGrLMU90VS4sfyBlhH82dqD5jK4Q1aWWEyBnFRiL4U5W+44BKEMYq7LqXIBHHOZkQBKDwYXqVJYxOUnXitu0IyhT8ziJqs07PRgOXlwN+wLHee69FM8+6PnG33vQlJcINNYmdnfsOEXmJHjfFr45yaQIDAQAB")
g3pkp, _ = base64.StdEncoding.DecodeString("MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAylJL6h7/ziRrqNpyGGjVVl0OSFotNQl2Ws+kyByxqf5TifutNP+IW5+75+gAAdw1c3UDrbOxuaR9KyZ5zhVACu9RuJ8yjHxwhlJLFv5qJ2vmNnpiUNjfmonMCSnrTykUiIALjzgegGoYfB29lzt4fUVJNk9BzaLgdlc8aDF5ZMlu11EeZsOiZCx5wOdlw1aEU1pDbcuaAiDS7xpp0bCdc6LgKmBlUDHP+7MvvxGIQC61SRAPCm7cl/q/LJ8FOQtYVK8GlujFjgEWvKgaTUHFk5GiHqGL8v7BiCRJo0dLxRMB3adXEmliK+v+IO9p+zql8H4p7u2WFvexH6DkkCXgMwIDAQAB")
- g3ecc, _ = base64.StdEncoding.DecodeString("MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEG4ANKJrwlpAPXThRcA3Z4XbkwQvWhj5J/kicXpbBQclS4uyuQ5iSOGKcuCRt8ralqREJXuRsnLZo0sIT680+VQ==")
+ // g3ecc, _ = base64.StdEncoding.DecodeString("MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEG4ANKJrwlpAPXThRcA3Z4XbkwQvWhj5J/kicXpbBQclS4uyuQ5iSOGKcuCRt8ralqREJXuRsnLZo0sIT680+VQ==")
)
func testTls(ip string, config *ScanConfig, record *ScanRecord) bool {
diff --git a/vendor/github.com/bifurcation/mint/LICENSE.md b/vendor/github.com/bifurcation/mint/LICENSE.md
deleted file mode 100644
index 6385812..0000000
--- a/vendor/github.com/bifurcation/mint/LICENSE.md
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2016 Richard Barnes
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/github.com/bifurcation/mint/README.md b/vendor/github.com/bifurcation/mint/README.md
deleted file mode 100644
index 0ac41e0..0000000
--- a/vendor/github.com/bifurcation/mint/README.md
+++ /dev/null
@@ -1,88 +0,0 @@
-![A lock with a mint leaf](https://ipv.sx/mint/mint.svg)
-
-mint - A Minimal TLS 1.3 stack
-==============================
-
-[![Build Status](https://circleci.com/gh/bifurcation/mint.svg)](https://circleci.com/gh/bifurcation/mint)
-
-This project is primarily a learning effort for me to understand the [TLS
-1.3](http://tlswg.github.io/tls13-spec/) protocol. The goal is to arrive at a
-pretty complete implementation of TLS 1.3, with minimal, elegant code that
-demonstrates how things work. Testing is a priority to ensure correctness, but
-otherwise, the quality of the software engineering might not be at a level where
-it makes sense to integrate this with other libraries. Backward compatibility
-is not an objective.
-
-We borrow liberally from the [Go TLS
-library](https://golang.org/pkg/crypto/tls/), especially where TLS 1.3 aligns
-with earlier TLS versions. However, unnecessary parts will be ruthlessly cut
-off.
-
-## Quickstart
-
-Installation is the same as for any other Go package:
-
-```
-go get github.com/bifurcation/mint
-```
-
-The API is pretty much the same as for the TLS module, with `Dial` and `Listen`
-methods wrapping the underlying socket APIs.
-
-```
-conn, err := mint.Dial("tcp", "localhost:4430", &mint.Config{...})
-...
-listener, err := mint.Listen("tcp", "localhost:4430", &mint.Config{...})
-```
-
-Documentation is available on
-[godoc.org](https://godoc.org/github.com/bifurcation/mint)
-
-
-## Interoperability testing
-
-The `mint-client` and `mint-server` executables are included to make it easy to
-do basic interoperability tests with other TLS 1.3 implementations. The steps
-for testing against NSS are as follows.
-
-```
-# Install mint
-go get github.com/bifurcation/mint
-
-# Environment for NSS (you'll probably want a new directory)
-NSS_ROOT=
-mkdir $NSS_ROOT
-cd $NSS_ROOT
-export USE_64=1
-export ENABLE_TLS_1_3=1
-export HOST=localhost
-export DOMSUF=localhost
-
-# Build NSS
-hg clone https://hg.mozilla.org/projects/nss
-hg clone https://hg.mozilla.org/projects/nspr
-cd nss
-make nss_build_all
-
-export PLATFORM=`cat $NSS_ROOT/dist/latest`
-export DYLD_LIBRARY_PATH=$NSS_ROOT/dist/$PLATFORM/lib
-export LD_LIBRARY_PATH=$NSS_ROOT/dist/$PLATFORM/lib
-
-# Run NSS tests (this creates data for the server to use)
-cd tests/ssl_gtests
-./ssl_gtests.sh
-
-# Test with client=mint server=NSS
-cd $NSS_ROOT
-./dist/$PLATFORM/bin/selfserv -d tests_results/security/$HOST.1/ssl_gtests/ -n rsa -p 4430
-# if you get `NSS_Init failed.`, check the path above, particularly around $HOST
-# ...
-go run $GOPATH/src/github.com/bifurcation/mint/bin/mint-client/main.go
-
-# Test with client=NSS server=mint
-go run $GOPATH/src/github.com/bifurcation/mint/bin/mint-server/main.go
-# ...
-cd $NSS_ROOT
-dist/$PLATFORM/bin/tstclnt -d tests_results/security/$HOST/ssl_gtests/ -V tls1.3:tls1.3 -h 127.0.0.1 -p 4430 -o
-```
-
diff --git a/vendor/github.com/bifurcation/mint/alert.go b/vendor/github.com/bifurcation/mint/alert.go
deleted file mode 100644
index 430e455..0000000
--- a/vendor/github.com/bifurcation/mint/alert.go
+++ /dev/null
@@ -1,101 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package mint
-
-import "strconv"
-
-type Alert uint8
-
-const (
- // alert level
- AlertLevelWarning = 1
- AlertLevelError = 2
-)
-
-const (
- AlertCloseNotify Alert = 0
- AlertUnexpectedMessage Alert = 10
- AlertBadRecordMAC Alert = 20
- AlertDecryptionFailed Alert = 21
- AlertRecordOverflow Alert = 22
- AlertDecompressionFailure Alert = 30
- AlertHandshakeFailure Alert = 40
- AlertBadCertificate Alert = 42
- AlertUnsupportedCertificate Alert = 43
- AlertCertificateRevoked Alert = 44
- AlertCertificateExpired Alert = 45
- AlertCertificateUnknown Alert = 46
- AlertIllegalParameter Alert = 47
- AlertUnknownCA Alert = 48
- AlertAccessDenied Alert = 49
- AlertDecodeError Alert = 50
- AlertDecryptError Alert = 51
- AlertProtocolVersion Alert = 70
- AlertInsufficientSecurity Alert = 71
- AlertInternalError Alert = 80
- AlertInappropriateFallback Alert = 86
- AlertUserCanceled Alert = 90
- AlertNoRenegotiation Alert = 100
- AlertMissingExtension Alert = 109
- AlertUnsupportedExtension Alert = 110
- AlertCertificateUnobtainable Alert = 111
- AlertUnrecognizedName Alert = 112
- AlertBadCertificateStatsResponse Alert = 113
- AlertBadCertificateHashValue Alert = 114
- AlertUnknownPSKIdentity Alert = 115
- AlertNoApplicationProtocol Alert = 120
- AlertStatelessRetry Alert = 253
- AlertWouldBlock Alert = 254
- AlertNoAlert Alert = 255
-)
-
-var alertText = map[Alert]string{
- AlertCloseNotify: "close notify",
- AlertUnexpectedMessage: "unexpected message",
- AlertBadRecordMAC: "bad record MAC",
- AlertDecryptionFailed: "decryption failed",
- AlertRecordOverflow: "record overflow",
- AlertDecompressionFailure: "decompression failure",
- AlertHandshakeFailure: "handshake failure",
- AlertBadCertificate: "bad certificate",
- AlertUnsupportedCertificate: "unsupported certificate",
- AlertCertificateRevoked: "revoked certificate",
- AlertCertificateExpired: "expired certificate",
- AlertCertificateUnknown: "unknown certificate",
- AlertIllegalParameter: "illegal parameter",
- AlertUnknownCA: "unknown certificate authority",
- AlertAccessDenied: "access denied",
- AlertDecodeError: "error decoding message",
- AlertDecryptError: "error decrypting message",
- AlertProtocolVersion: "protocol version not supported",
- AlertInsufficientSecurity: "insufficient security level",
- AlertInternalError: "internal error",
- AlertInappropriateFallback: "inappropriate fallback",
- AlertUserCanceled: "user canceled",
- AlertMissingExtension: "missing extension",
- AlertUnsupportedExtension: "unsupported extension",
- AlertCertificateUnobtainable: "certificate unobtainable",
- AlertUnrecognizedName: "unrecognized name",
- AlertBadCertificateStatsResponse: "bad certificate status response",
- AlertBadCertificateHashValue: "bad certificate hash value",
- AlertUnknownPSKIdentity: "unknown PSK identity",
- AlertNoApplicationProtocol: "no application protocol",
- AlertNoRenegotiation: "no renegotiation",
- AlertStatelessRetry: "stateless retry",
- AlertWouldBlock: "would have blocked",
- AlertNoAlert: "no alert",
-}
-
-func (e Alert) String() string {
- s, ok := alertText[e]
- if ok {
- return s
- }
- return "alert(" + strconv.Itoa(int(e)) + ")"
-}
-
-func (e Alert) Error() string {
- return e.String()
-}
diff --git a/vendor/github.com/bifurcation/mint/client-state-machine.go b/vendor/github.com/bifurcation/mint/client-state-machine.go
deleted file mode 100644
index ddf9ee9..0000000
--- a/vendor/github.com/bifurcation/mint/client-state-machine.go
+++ /dev/null
@@ -1,1038 +0,0 @@
-package mint
-
-import (
- "bytes"
- "crypto"
- "hash"
- "time"
-)
-
-// Client State Machine
-//
-// START <----+
-// Send ClientHello | | Recv HelloRetryRequest
-// / v |
-// | WAIT_SH ---+
-// Can | | Recv ServerHello
-// send | V
-// early | WAIT_EE
-// data | | Recv EncryptedExtensions
-// | +--------+--------+
-// | Using | | Using certificate
-// | PSK | v
-// | | WAIT_CERT_CR
-// | | Recv | | Recv CertificateRequest
-// | | Certificate | v
-// | | | WAIT_CERT
-// | | | | Recv Certificate
-// | | v v
-// | | WAIT_CV
-// | | | Recv CertificateVerify
-// | +> WAIT_FINISHED <+
-// | | Recv Finished
-// \ |
-// | [Send EndOfEarlyData]
-// | [Send Certificate [+ CertificateVerify]]
-// | Send Finished
-// Can send v
-// app data --> CONNECTED
-// after
-// here
-//
-// State Instructions
-// START Send(CH); [RekeyOut; SendEarlyData]
-// WAIT_SH Send(CH) || RekeyIn
-// WAIT_EE {}
-// WAIT_CERT_CR {}
-// WAIT_CERT {}
-// WAIT_CV {}
-// WAIT_FINISHED RekeyIn; [Send(EOED);] RekeyOut; [SendCert; SendCV;] SendFin; RekeyOut;
-// CONNECTED StoreTicket || (RekeyIn; [RekeyOut])
-
-type ClientStateStart struct {
- Caps Capabilities
- Opts ConnectionOptions
- Params ConnectionParameters
-
- cookie []byte
- firstClientHello *HandshakeMessage
- helloRetryRequest *HandshakeMessage
- hsCtx HandshakeContext
-}
-
-var _ HandshakeState = &ClientStateStart{}
-
-func (state ClientStateStart) State() State {
- return StateClientStart
-}
-
-func (state ClientStateStart) Next(hr handshakeMessageReader) (HandshakeState, []HandshakeAction, Alert) {
- // key_shares
- offeredDH := map[NamedGroup][]byte{}
- ks := KeyShareExtension{
- HandshakeType: HandshakeTypeClientHello,
- Shares: make([]KeyShareEntry, len(state.Caps.Groups)),
- }
- for i, group := range state.Caps.Groups {
- pub, priv, err := newKeyShare(group)
- if err != nil {
- logf(logTypeHandshake, "[ClientStateStart] Error generating key share [%v]", err)
- return nil, nil, AlertInternalError
- }
-
- ks.Shares[i].Group = group
- ks.Shares[i].KeyExchange = pub
- offeredDH[group] = priv
- }
-
- logf(logTypeHandshake, "opts: %+v", state.Opts)
-
- // supported_versions, supported_groups, signature_algorithms, server_name
- sv := SupportedVersionsExtension{HandshakeType: HandshakeTypeClientHello, Versions: []uint16{supportedVersion}}
- sni := ServerNameExtension(state.Opts.ServerName)
- sg := SupportedGroupsExtension{Groups: state.Caps.Groups}
- sa := SignatureAlgorithmsExtension{Algorithms: state.Caps.SignatureSchemes}
-
- state.Params.ServerName = state.Opts.ServerName
-
- // Application Layer Protocol Negotiation
- var alpn *ALPNExtension
- if (state.Opts.NextProtos != nil) && (len(state.Opts.NextProtos) > 0) {
- alpn = &ALPNExtension{Protocols: state.Opts.NextProtos}
- }
-
- // Construct base ClientHello
- ch := &ClientHelloBody{
- LegacyVersion: wireVersion(state.hsCtx.hIn),
- CipherSuites: state.Caps.CipherSuites,
- }
- _, err := prng.Read(ch.Random[:])
- if err != nil {
- logf(logTypeHandshake, "[ClientStateStart] Error creating ClientHello random [%v]", err)
- return nil, nil, AlertInternalError
- }
- for _, ext := range []ExtensionBody{&sv, &sni, &ks, &sg, &sa} {
- err := ch.Extensions.Add(ext)
- if err != nil {
- logf(logTypeHandshake, "[ClientStateStart] Error adding extension type=[%v] [%v]", ext.Type(), err)
- return nil, nil, AlertInternalError
- }
- }
- // XXX: These optional extensions can't be folded into the above because Go
- // interface-typed values are never reported as nil
- if alpn != nil {
- err := ch.Extensions.Add(alpn)
- if err != nil {
- logf(logTypeHandshake, "[ClientStateStart] Error adding ALPN extension [%v]", err)
- return nil, nil, AlertInternalError
- }
- }
- if state.cookie != nil {
- err := ch.Extensions.Add(&CookieExtension{Cookie: state.cookie})
- if err != nil {
- logf(logTypeHandshake, "[ClientStateStart] Error adding ALPN extension [%v]", err)
- return nil, nil, AlertInternalError
- }
- }
-
- // Run the external extension handler.
- if state.Caps.ExtensionHandler != nil {
- err := state.Caps.ExtensionHandler.Send(HandshakeTypeClientHello, &ch.Extensions)
- if err != nil {
- logf(logTypeHandshake, "[ClientStateStart] Error running external extension sender [%v]", err)
- return nil, nil, AlertInternalError
- }
- }
-
- // Handle PSK and EarlyData just before transmitting, so that we can
- // calculate the PSK binder value
- var psk *PreSharedKeyExtension
- var ed *EarlyDataExtension
- var offeredPSK PreSharedKey
- var earlyHash crypto.Hash
- var earlySecret []byte
- var clientEarlyTrafficKeys keySet
- var clientHello *HandshakeMessage
- if key, ok := state.Caps.PSKs.Get(state.Opts.ServerName); ok {
- offeredPSK = key
-
- // Narrow ciphersuites to ones that match PSK hash
- params, ok := cipherSuiteMap[key.CipherSuite]
- if !ok {
- logf(logTypeHandshake, "[ClientStateStart] PSK for unknown ciphersuite")
- return nil, nil, AlertInternalError
- }
-
- compatibleSuites := []CipherSuite{}
- for _, suite := range ch.CipherSuites {
- if cipherSuiteMap[suite].Hash == params.Hash {
- compatibleSuites = append(compatibleSuites, suite)
- }
- }
- ch.CipherSuites = compatibleSuites
-
- // Signal early data if we're going to do it
- if len(state.Opts.EarlyData) > 0 {
- state.Params.ClientSendingEarlyData = true
- ed = &EarlyDataExtension{}
- err = ch.Extensions.Add(ed)
- if err != nil {
- logf(logTypeHandshake, "Error adding early data extension: %v", err)
- return nil, nil, AlertInternalError
- }
- }
-
- // Signal supported PSK key exchange modes
- if len(state.Caps.PSKModes) == 0 {
- logf(logTypeHandshake, "PSK selected, but no PSKModes")
- return nil, nil, AlertInternalError
- }
- kem := &PSKKeyExchangeModesExtension{KEModes: state.Caps.PSKModes}
- err = ch.Extensions.Add(kem)
- if err != nil {
- logf(logTypeHandshake, "Error adding PSKKeyExchangeModes extension: %v", err)
- return nil, nil, AlertInternalError
- }
-
- // Add the shim PSK extension to the ClientHello
- logf(logTypeHandshake, "Adding PSK extension with id = %x", key.Identity)
- psk = &PreSharedKeyExtension{
- HandshakeType: HandshakeTypeClientHello,
- Identities: []PSKIdentity{
- {
- Identity: key.Identity,
- ObfuscatedTicketAge: uint32(time.Since(key.ReceivedAt)/time.Millisecond) + key.TicketAgeAdd,
- },
- },
- Binders: []PSKBinderEntry{
- // Note: Stub to get the length fields right
- {Binder: bytes.Repeat([]byte{0x00}, params.Hash.Size())},
- },
- }
- ch.Extensions.Add(psk)
-
- // Compute the binder key
- h0 := params.Hash.New().Sum(nil)
- zero := bytes.Repeat([]byte{0}, params.Hash.Size())
-
- earlyHash = params.Hash
- earlySecret = HkdfExtract(params.Hash, zero, key.Key)
- logf(logTypeCrypto, "early secret: [%d] %x", len(earlySecret), earlySecret)
-
- binderLabel := labelExternalBinder
- if key.IsResumption {
- binderLabel = labelResumptionBinder
- }
- binderKey := deriveSecret(params, earlySecret, binderLabel, h0)
- logf(logTypeCrypto, "binder key: [%d] %x", len(binderKey), binderKey)
-
- // Compute the binder value
- trunc, err := ch.Truncated()
- if err != nil {
- logf(logTypeHandshake, "[ClientStateStart] Error marshaling truncated ClientHello [%v]", err)
- return nil, nil, AlertInternalError
- }
-
- truncHash := params.Hash.New()
- truncHash.Write(trunc)
-
- binder := computeFinishedData(params, binderKey, truncHash.Sum(nil))
-
- // Replace the PSK extension
- psk.Binders[0].Binder = binder
- ch.Extensions.Add(psk)
-
- // If we got here, the earlier marshal succeeded (in ch.Truncated()), so
- // this one should too.
- clientHello, _ = state.hsCtx.hOut.HandshakeMessageFromBody(ch)
-
- // Compute early traffic keys
- h := params.Hash.New()
- h.Write(clientHello.Marshal())
- chHash := h.Sum(nil)
-
- earlyTrafficSecret := deriveSecret(params, earlySecret, labelEarlyTrafficSecret, chHash)
- logf(logTypeCrypto, "early traffic secret: [%d] %x", len(earlyTrafficSecret), earlyTrafficSecret)
- clientEarlyTrafficKeys = makeTrafficKeys(params, earlyTrafficSecret)
- } else if len(state.Opts.EarlyData) > 0 {
- logf(logTypeHandshake, "[ClientStateWaitSH] Early data without PSK")
- return nil, nil, AlertInternalError
- } else {
- clientHello, err = state.hsCtx.hOut.HandshakeMessageFromBody(ch)
- if err != nil {
- logf(logTypeHandshake, "[ClientStateStart] Error marshaling ClientHello [%v]", err)
- return nil, nil, AlertInternalError
- }
- }
-
- logf(logTypeHandshake, "[ClientStateStart] -> [ClientStateWaitSH]")
- state.hsCtx.SetVersion(tls12Version) // Everything after this should be 1.2.
- nextState := ClientStateWaitSH{
- Caps: state.Caps,
- Opts: state.Opts,
- Params: state.Params,
- hsCtx: state.hsCtx,
- OfferedDH: offeredDH,
- OfferedPSK: offeredPSK,
-
- earlySecret: earlySecret,
- earlyHash: earlyHash,
-
- firstClientHello: state.firstClientHello,
- helloRetryRequest: state.helloRetryRequest,
- clientHello: clientHello,
- }
-
- toSend := []HandshakeAction{
- QueueHandshakeMessage{clientHello},
- SendQueuedHandshake{},
- }
- if state.Params.ClientSendingEarlyData {
- toSend = append(toSend, []HandshakeAction{
- RekeyOut{epoch: EpochEarlyData, KeySet: clientEarlyTrafficKeys},
- SendEarlyData{},
- }...)
- }
-
- return nextState, toSend, AlertNoAlert
-}
-
-type ClientStateWaitSH struct {
- Caps Capabilities
- Opts ConnectionOptions
- Params ConnectionParameters
- hsCtx HandshakeContext
- OfferedDH map[NamedGroup][]byte
- OfferedPSK PreSharedKey
- PSK []byte
-
- earlySecret []byte
- earlyHash crypto.Hash
-
- firstClientHello *HandshakeMessage
- helloRetryRequest *HandshakeMessage
- clientHello *HandshakeMessage
-}
-
-var _ HandshakeState = &ClientStateWaitSH{}
-
-func (state ClientStateWaitSH) State() State {
- return StateClientWaitSH
-}
-
-func (state ClientStateWaitSH) Next(hr handshakeMessageReader) (HandshakeState, []HandshakeAction, Alert) {
- hm, alert := hr.ReadMessage()
- if alert != AlertNoAlert {
- return nil, nil, alert
- }
-
- if hm == nil || hm.msgType != HandshakeTypeServerHello {
- logf(logTypeHandshake, "[ClientStateWaitSH] Unexpected message")
- return nil, nil, AlertUnexpectedMessage
- }
-
- sh := &ServerHelloBody{}
- if _, err := sh.Unmarshal(hm.body); err != nil {
- logf(logTypeHandshake, "[ClientStateWaitSH] unexpected message")
- return nil, nil, AlertUnexpectedMessage
- }
-
- // Common SH/HRR processing first.
- // 1. Check that sh.version is TLS 1.2
- if sh.Version != tls12Version {
- logf(logTypeHandshake, "[ClientStateWaitSH] illegal legacy version [%v]", sh.Version)
- return nil, nil, AlertIllegalParameter
- }
-
- // 2. Check that it responded with a valid version.
- supportedVersions := SupportedVersionsExtension{HandshakeType: HandshakeTypeServerHello}
- foundSupportedVersions, err := sh.Extensions.Find(&supportedVersions)
- if err != nil {
- logf(logTypeHandshake, "[ClientStateWaitSH] invalid supported_versions extension [%v]", err)
- return nil, nil, AlertDecodeError
- }
- if !foundSupportedVersions {
- logf(logTypeHandshake, "[ClientStateWaitSH] no supported_versions extension")
- return nil, nil, AlertMissingExtension
- }
- if supportedVersions.Versions[0] != supportedVersion {
- logf(logTypeHandshake, "[ClientStateWaitSH] unsupported version [%x]", supportedVersions.Versions[0])
- return nil, nil, AlertProtocolVersion
- }
- // 3. Check that the server provided a supported ciphersuite
- supportedCipherSuite := false
- for _, suite := range state.Caps.CipherSuites {
- supportedCipherSuite = supportedCipherSuite || (suite == sh.CipherSuite)
- }
- if !supportedCipherSuite {
- logf(logTypeHandshake, "[ClientStateWaitSH] Unsupported ciphersuite [%04x]", sh.CipherSuite)
- return nil, nil, AlertHandshakeFailure
- }
-
- // Now check for the sentinel.
-
- if sh.Random == hrrRandomSentinel {
- // This is actually HRR.
- hrr := sh
-
- // Narrow the supported ciphersuites to the server-provided one
- state.Caps.CipherSuites = []CipherSuite{hrr.CipherSuite}
-
- // Handle external extensions.
- if state.Caps.ExtensionHandler != nil {
- err := state.Caps.ExtensionHandler.Receive(HandshakeTypeHelloRetryRequest, &hrr.Extensions)
- if err != nil {
- logf(logTypeHandshake, "[ClientWaitSH] Error running external extension handler [%v]", err)
- return nil, nil, AlertInternalError
- }
- }
-
- // The only thing we know how to respond to in an HRR is the Cookie
- // extension, so if there is either no Cookie extension or anything other
- // than a Cookie extension and SupportedVersions we have to fail.
- serverCookie := new(CookieExtension)
- foundCookie, err := hrr.Extensions.Find(serverCookie)
- if err != nil {
- logf(logTypeHandshake, "[ClientStateWaitSH] Invalid server cookie extension [%v]", err)
- return nil, nil, AlertDecodeError
- }
- if !foundCookie || len(hrr.Extensions) != 2 {
- logf(logTypeHandshake, "[ClientStateWaitSH] No Cookie or extra extensions [%v] [%d]", foundCookie, len(hrr.Extensions))
- return nil, nil, AlertIllegalParameter
- }
-
- // Hash the body into a pseudo-message
- // XXX: Ignoring some errors here
- params := cipherSuiteMap[hrr.CipherSuite]
- h := params.Hash.New()
- h.Write(state.clientHello.Marshal())
- firstClientHello := &HandshakeMessage{
- msgType: HandshakeTypeMessageHash,
- body: h.Sum(nil),
- }
-
- logf(logTypeHandshake, "[ClientStateWaitSH] -> [ClientStateStart]")
- return ClientStateStart{
- Caps: state.Caps,
- Opts: state.Opts,
- hsCtx: state.hsCtx,
- cookie: serverCookie.Cookie,
- firstClientHello: firstClientHello,
- helloRetryRequest: hm,
- }, nil, AlertNoAlert
- }
-
- // This is SH.
- // Handle external extensions.
- if state.Caps.ExtensionHandler != nil {
- err := state.Caps.ExtensionHandler.Receive(HandshakeTypeServerHello, &sh.Extensions)
- if err != nil {
- logf(logTypeHandshake, "[ClientWaitSH] Error running external extension handler [%v]", err)
- return nil, nil, AlertInternalError
- }
- }
-
- // Do PSK or key agreement depending on extensions
- serverPSK := PreSharedKeyExtension{HandshakeType: HandshakeTypeServerHello}
- serverKeyShare := KeyShareExtension{HandshakeType: HandshakeTypeServerHello}
-
- foundExts, err := sh.Extensions.Parse(
- []ExtensionBody{
- &serverPSK,
- &serverKeyShare,
- })
- if err != nil {
- logf(logTypeHandshake, "[ClientWaitSH] Error processing extensions [%v]", err)
- return nil, nil, AlertDecodeError
- }
-
- if foundExts[ExtensionTypePreSharedKey] && (serverPSK.SelectedIdentity == 0) {
- state.Params.UsingPSK = true
- }
-
- var dhSecret []byte
- if foundExts[ExtensionTypeKeyShare] {
- sks := serverKeyShare.Shares[0]
- priv, ok := state.OfferedDH[sks.Group]
- if !ok {
- logf(logTypeHandshake, "[ClientStateWaitSH] Key share for unknown group")
- return nil, nil, AlertIllegalParameter
- }
-
- state.Params.UsingDH = true
- dhSecret, _ = keyAgreement(sks.Group, sks.KeyExchange, priv)
- }
-
- suite := sh.CipherSuite
- state.Params.CipherSuite = suite
-
- params, ok := cipherSuiteMap[suite]
- if !ok {
- logf(logTypeCrypto, "Unsupported ciphersuite [%04x]", suite)
- return nil, nil, AlertHandshakeFailure
- }
-
- // Start up the handshake hash
- handshakeHash := params.Hash.New()
- handshakeHash.Write(state.firstClientHello.Marshal())
- handshakeHash.Write(state.helloRetryRequest.Marshal())
- handshakeHash.Write(state.clientHello.Marshal())
- handshakeHash.Write(hm.Marshal())
-
- // Compute handshake secrets
- zero := bytes.Repeat([]byte{0}, params.Hash.Size())
-
- var earlySecret []byte
- if state.Params.UsingPSK {
- if params.Hash != state.earlyHash {
- logf(logTypeCrypto, "Change of hash between early and normal init early=[%02x] suite=[%04x] hash=[%02x]",
- state.earlyHash, suite, params.Hash)
- }
-
- earlySecret = state.earlySecret
- } else {
- earlySecret = HkdfExtract(params.Hash, zero, zero)
- }
-
- if dhSecret == nil {
- dhSecret = zero
- }
-
- h0 := params.Hash.New().Sum(nil)
- h2 := handshakeHash.Sum(nil)
- preHandshakeSecret := deriveSecret(params, earlySecret, labelDerived, h0)
- handshakeSecret := HkdfExtract(params.Hash, preHandshakeSecret, dhSecret)
- clientHandshakeTrafficSecret := deriveSecret(params, handshakeSecret, labelClientHandshakeTrafficSecret, h2)
- serverHandshakeTrafficSecret := deriveSecret(params, handshakeSecret, labelServerHandshakeTrafficSecret, h2)
- preMasterSecret := deriveSecret(params, handshakeSecret, labelDerived, h0)
- masterSecret := HkdfExtract(params.Hash, preMasterSecret, zero)
-
- logf(logTypeCrypto, "early secret: [%d] %x", len(earlySecret), earlySecret)
- logf(logTypeCrypto, "handshake secret: [%d] %x", len(handshakeSecret), handshakeSecret)
- logf(logTypeCrypto, "client handshake traffic secret: [%d] %x", len(clientHandshakeTrafficSecret), clientHandshakeTrafficSecret)
- logf(logTypeCrypto, "server handshake traffic secret: [%d] %x", len(serverHandshakeTrafficSecret), serverHandshakeTrafficSecret)
- logf(logTypeCrypto, "master secret: [%d] %x", len(masterSecret), masterSecret)
-
- serverHandshakeKeys := makeTrafficKeys(params, serverHandshakeTrafficSecret)
-
- logf(logTypeHandshake, "[ClientStateWaitSH] -> [ClientStateWaitEE]")
- nextState := ClientStateWaitEE{
- Caps: state.Caps,
- Params: state.Params,
- hsCtx: state.hsCtx,
- cryptoParams: params,
- handshakeHash: handshakeHash,
- certificates: state.Caps.Certificates,
- masterSecret: masterSecret,
- clientHandshakeTrafficSecret: clientHandshakeTrafficSecret,
- serverHandshakeTrafficSecret: serverHandshakeTrafficSecret,
- }
- toSend := []HandshakeAction{
- RekeyIn{epoch: EpochHandshakeData, KeySet: serverHandshakeKeys},
- }
- return nextState, toSend, AlertNoAlert
-}
-
-type ClientStateWaitEE struct {
- Caps Capabilities
- AuthCertificate func(chain []CertificateEntry) error
- Params ConnectionParameters
- hsCtx HandshakeContext
- cryptoParams CipherSuiteParams
- handshakeHash hash.Hash
- certificates []*Certificate
- masterSecret []byte
- clientHandshakeTrafficSecret []byte
- serverHandshakeTrafficSecret []byte
-}
-
-var _ HandshakeState = &ClientStateWaitEE{}
-
-func (state ClientStateWaitEE) State() State {
- return StateClientWaitEE
-}
-
-func (state ClientStateWaitEE) Next(hr handshakeMessageReader) (HandshakeState, []HandshakeAction, Alert) {
- hm, alert := hr.ReadMessage()
- if alert != AlertNoAlert {
- return nil, nil, alert
- }
- if hm == nil || hm.msgType != HandshakeTypeEncryptedExtensions {
- logf(logTypeHandshake, "[ClientStateWaitEE] Unexpected message")
- return nil, nil, AlertUnexpectedMessage
- }
-
- ee := EncryptedExtensionsBody{}
- if err := safeUnmarshal(&ee, hm.body); err != nil {
- logf(logTypeHandshake, "[ClientStateWaitEE] Error decoding message: %v", err)
- return nil, nil, AlertDecodeError
- }
-
- // Handle external extensions.
- if state.Caps.ExtensionHandler != nil {
- err := state.Caps.ExtensionHandler.Receive(HandshakeTypeEncryptedExtensions, &ee.Extensions)
- if err != nil {
- logf(logTypeHandshake, "[ClientWaitStateEE] Error running external extension handler [%v]", err)
- return nil, nil, AlertInternalError
- }
- }
-
- serverALPN := &ALPNExtension{}
- serverEarlyData := &EarlyDataExtension{}
-
- foundExts, err := ee.Extensions.Parse(
- []ExtensionBody{
- serverALPN,
- serverEarlyData,
- })
- if err != nil {
- logf(logTypeHandshake, "[ClientStateWaitEE] Error decoding extensions: %v", err)
- return nil, nil, AlertDecodeError
- }
-
- state.Params.UsingEarlyData = foundExts[ExtensionTypeEarlyData]
-
- if foundExts[ExtensionTypeALPN] && len(serverALPN.Protocols) > 0 {
- state.Params.NextProto = serverALPN.Protocols[0]
- }
-
- state.handshakeHash.Write(hm.Marshal())
-
- if state.Params.UsingPSK {
- logf(logTypeHandshake, "[ClientStateWaitEE] -> [ClientStateWaitFinished]")
- nextState := ClientStateWaitFinished{
- Params: state.Params,
- hsCtx: state.hsCtx,
- cryptoParams: state.cryptoParams,
- handshakeHash: state.handshakeHash,
- certificates: state.certificates,
- masterSecret: state.masterSecret,
- clientHandshakeTrafficSecret: state.clientHandshakeTrafficSecret,
- serverHandshakeTrafficSecret: state.serverHandshakeTrafficSecret,
- }
- return nextState, nil, AlertNoAlert
- }
-
- logf(logTypeHandshake, "[ClientStateWaitEE] -> [ClientStateWaitCertCR]")
- nextState := ClientStateWaitCertCR{
- AuthCertificate: state.AuthCertificate,
- Params: state.Params,
- hsCtx: state.hsCtx,
- cryptoParams: state.cryptoParams,
- handshakeHash: state.handshakeHash,
- certificates: state.certificates,
- masterSecret: state.masterSecret,
- clientHandshakeTrafficSecret: state.clientHandshakeTrafficSecret,
- serverHandshakeTrafficSecret: state.serverHandshakeTrafficSecret,
- }
- return nextState, nil, AlertNoAlert
-}
-
-type ClientStateWaitCertCR struct {
- AuthCertificate func(chain []CertificateEntry) error
- Params ConnectionParameters
- hsCtx HandshakeContext
- cryptoParams CipherSuiteParams
- handshakeHash hash.Hash
- certificates []*Certificate
- masterSecret []byte
- clientHandshakeTrafficSecret []byte
- serverHandshakeTrafficSecret []byte
-}
-
-var _ HandshakeState = &ClientStateWaitCertCR{}
-
-func (state ClientStateWaitCertCR) State() State {
- return StateClientWaitCertCR
-}
-
-func (state ClientStateWaitCertCR) Next(hr handshakeMessageReader) (HandshakeState, []HandshakeAction, Alert) {
- hm, alert := hr.ReadMessage()
- if alert != AlertNoAlert {
- return nil, nil, alert
- }
- if hm == nil {
- logf(logTypeHandshake, "[ClientStateWaitCertCR] Unexpected message")
- return nil, nil, AlertUnexpectedMessage
- }
-
- bodyGeneric, err := hm.ToBody()
- if err != nil {
- logf(logTypeHandshake, "[ClientStateWaitCertCR] Error decoding message: %v", err)
- return nil, nil, AlertDecodeError
- }
-
- state.handshakeHash.Write(hm.Marshal())
-
- switch body := bodyGeneric.(type) {
- case *CertificateBody:
- logf(logTypeHandshake, "[ClientStateWaitCertCR] -> [ClientStateWaitCV]")
- nextState := ClientStateWaitCV{
- AuthCertificate: state.AuthCertificate,
- Params: state.Params,
- hsCtx: state.hsCtx,
- cryptoParams: state.cryptoParams,
- handshakeHash: state.handshakeHash,
- certificates: state.certificates,
- serverCertificate: body,
- masterSecret: state.masterSecret,
- clientHandshakeTrafficSecret: state.clientHandshakeTrafficSecret,
- serverHandshakeTrafficSecret: state.serverHandshakeTrafficSecret,
- }
- return nextState, nil, AlertNoAlert
-
- case *CertificateRequestBody:
- // A certificate request in the handshake should have a zero-length context
- if len(body.CertificateRequestContext) > 0 {
- logf(logTypeHandshake, "[ClientStateWaitCertCR] Certificate request with non-empty context: %v", err)
- return nil, nil, AlertIllegalParameter
- }
-
- state.Params.UsingClientAuth = true
-
- logf(logTypeHandshake, "[ClientStateWaitCertCR] -> [ClientStateWaitCert]")
- nextState := ClientStateWaitCert{
- AuthCertificate: state.AuthCertificate,
- Params: state.Params,
- hsCtx: state.hsCtx,
- cryptoParams: state.cryptoParams,
- handshakeHash: state.handshakeHash,
- certificates: state.certificates,
- serverCertificateRequest: body,
- masterSecret: state.masterSecret,
- clientHandshakeTrafficSecret: state.clientHandshakeTrafficSecret,
- serverHandshakeTrafficSecret: state.serverHandshakeTrafficSecret,
- }
- return nextState, nil, AlertNoAlert
- }
-
- return nil, nil, AlertUnexpectedMessage
-}
-
-type ClientStateWaitCert struct {
- AuthCertificate func(chain []CertificateEntry) error
- Params ConnectionParameters
- hsCtx HandshakeContext
- cryptoParams CipherSuiteParams
- handshakeHash hash.Hash
-
- certificates []*Certificate
- serverCertificateRequest *CertificateRequestBody
-
- masterSecret []byte
- clientHandshakeTrafficSecret []byte
- serverHandshakeTrafficSecret []byte
-}
-
-var _ HandshakeState = &ClientStateWaitCert{}
-
-func (state ClientStateWaitCert) State() State {
- return StateClientWaitCert
-}
-
-func (state ClientStateWaitCert) Next(hr handshakeMessageReader) (HandshakeState, []HandshakeAction, Alert) {
- hm, alert := hr.ReadMessage()
- if alert != AlertNoAlert {
- return nil, nil, alert
- }
- if hm == nil || hm.msgType != HandshakeTypeCertificate {
- logf(logTypeHandshake, "[ClientStateWaitCert] Unexpected message")
- return nil, nil, AlertUnexpectedMessage
- }
-
- cert := &CertificateBody{}
- if err := safeUnmarshal(cert, hm.body); err != nil {
- logf(logTypeHandshake, "[ClientStateWaitCert] Error decoding message: %v", err)
- return nil, nil, AlertDecodeError
- }
-
- state.handshakeHash.Write(hm.Marshal())
-
- logf(logTypeHandshake, "[ClientStateWaitCert] -> [ClientStateWaitCV]")
- nextState := ClientStateWaitCV{
- AuthCertificate: state.AuthCertificate,
- Params: state.Params,
- hsCtx: state.hsCtx,
- cryptoParams: state.cryptoParams,
- handshakeHash: state.handshakeHash,
- certificates: state.certificates,
- serverCertificate: cert,
- serverCertificateRequest: state.serverCertificateRequest,
- masterSecret: state.masterSecret,
- clientHandshakeTrafficSecret: state.clientHandshakeTrafficSecret,
- serverHandshakeTrafficSecret: state.serverHandshakeTrafficSecret,
- }
- return nextState, nil, AlertNoAlert
-}
-
-type ClientStateWaitCV struct {
- AuthCertificate func(chain []CertificateEntry) error
- Params ConnectionParameters
- hsCtx HandshakeContext
- cryptoParams CipherSuiteParams
- handshakeHash hash.Hash
-
- certificates []*Certificate
- serverCertificate *CertificateBody
- serverCertificateRequest *CertificateRequestBody
-
- masterSecret []byte
- clientHandshakeTrafficSecret []byte
- serverHandshakeTrafficSecret []byte
-}
-
-var _ HandshakeState = &ClientStateWaitCV{}
-
-func (state ClientStateWaitCV) State() State {
- return StateClientWaitCV
-}
-
-func (state ClientStateWaitCV) Next(hr handshakeMessageReader) (HandshakeState, []HandshakeAction, Alert) {
- hm, alert := hr.ReadMessage()
- if alert != AlertNoAlert {
- return nil, nil, alert
- }
- if hm == nil || hm.msgType != HandshakeTypeCertificateVerify {
- logf(logTypeHandshake, "[ClientStateWaitCV] Unexpected message")
- return nil, nil, AlertUnexpectedMessage
- }
-
- certVerify := CertificateVerifyBody{}
- if err := safeUnmarshal(&certVerify, hm.body); err != nil {
- logf(logTypeHandshake, "[ClientStateWaitCV] Error decoding message: %v", err)
- return nil, nil, AlertDecodeError
- }
-
- hcv := state.handshakeHash.Sum(nil)
- logf(logTypeHandshake, "Handshake Hash to be verified: [%d] %x", len(hcv), hcv)
-
- serverPublicKey := state.serverCertificate.CertificateList[0].CertData.PublicKey
- if err := certVerify.Verify(serverPublicKey, hcv); err != nil {
- logf(logTypeHandshake, "[ClientStateWaitCV] Server signature failed to verify")
- return nil, nil, AlertHandshakeFailure
- }
-
- if state.AuthCertificate != nil {
- err := state.AuthCertificate(state.serverCertificate.CertificateList)
- if err != nil {
- logf(logTypeHandshake, "[ClientStateWaitCV] Application rejected server certificate")
- return nil, nil, AlertBadCertificate
- }
- } else {
- logf(logTypeHandshake, "[ClientStateWaitCV] WARNING: No verification of server certificate")
- }
-
- state.handshakeHash.Write(hm.Marshal())
-
- logf(logTypeHandshake, "[ClientStateWaitCV] -> [ClientStateWaitFinished]")
- nextState := ClientStateWaitFinished{
- Params: state.Params,
- hsCtx: state.hsCtx,
- cryptoParams: state.cryptoParams,
- handshakeHash: state.handshakeHash,
- certificates: state.certificates,
- serverCertificateRequest: state.serverCertificateRequest,
- masterSecret: state.masterSecret,
- clientHandshakeTrafficSecret: state.clientHandshakeTrafficSecret,
- serverHandshakeTrafficSecret: state.serverHandshakeTrafficSecret,
- }
- return nextState, nil, AlertNoAlert
-}
-
-type ClientStateWaitFinished struct {
- Params ConnectionParameters
- hsCtx HandshakeContext
- cryptoParams CipherSuiteParams
- handshakeHash hash.Hash
-
- certificates []*Certificate
- serverCertificateRequest *CertificateRequestBody
-
- masterSecret []byte
- clientHandshakeTrafficSecret []byte
- serverHandshakeTrafficSecret []byte
-}
-
-var _ HandshakeState = &ClientStateWaitFinished{}
-
-func (state ClientStateWaitFinished) State() State {
- return StateClientWaitFinished
-}
-
-func (state ClientStateWaitFinished) Next(hr handshakeMessageReader) (HandshakeState, []HandshakeAction, Alert) {
- hm, alert := hr.ReadMessage()
- if alert != AlertNoAlert {
- return nil, nil, alert
- }
- if hm == nil || hm.msgType != HandshakeTypeFinished {
- logf(logTypeHandshake, "[ClientStateWaitFinished] Unexpected message")
- return nil, nil, AlertUnexpectedMessage
- }
-
- // Verify server's Finished
- h3 := state.handshakeHash.Sum(nil)
- logf(logTypeCrypto, "handshake hash 3 [%d] %x", len(h3), h3)
- logf(logTypeCrypto, "handshake hash for server Finished: [%d] %x", len(h3), h3)
-
- serverFinishedData := computeFinishedData(state.cryptoParams, state.serverHandshakeTrafficSecret, h3)
- logf(logTypeCrypto, "server finished data: [%d] %x", len(serverFinishedData), serverFinishedData)
-
- fin := &FinishedBody{VerifyDataLen: len(serverFinishedData)}
- if err := safeUnmarshal(fin, hm.body); err != nil {
- logf(logTypeHandshake, "[ClientStateWaitFinished] Error decoding message: %v", err)
- return nil, nil, AlertDecodeError
- }
-
- if !bytes.Equal(fin.VerifyData, serverFinishedData) {
- logf(logTypeHandshake, "[ClientStateWaitFinished] Server's Finished failed to verify [%x] != [%x]",
- fin.VerifyData, serverFinishedData)
- return nil, nil, AlertHandshakeFailure
- }
-
- // Update the handshake hash with the Finished
- state.handshakeHash.Write(hm.Marshal())
- logf(logTypeCrypto, "input to handshake hash [%d]: %x", len(hm.Marshal()), hm.Marshal())
- h4 := state.handshakeHash.Sum(nil)
- logf(logTypeCrypto, "handshake hash 4 [%d]: %x", len(h4), h4)
-
- // Compute traffic secrets and keys
- clientTrafficSecret := deriveSecret(state.cryptoParams, state.masterSecret, labelClientApplicationTrafficSecret, h4)
- serverTrafficSecret := deriveSecret(state.cryptoParams, state.masterSecret, labelServerApplicationTrafficSecret, h4)
- logf(logTypeCrypto, "client traffic secret: [%d] %x", len(clientTrafficSecret), clientTrafficSecret)
- logf(logTypeCrypto, "server traffic secret: [%d] %x", len(serverTrafficSecret), serverTrafficSecret)
-
- clientTrafficKeys := makeTrafficKeys(state.cryptoParams, clientTrafficSecret)
- serverTrafficKeys := makeTrafficKeys(state.cryptoParams, serverTrafficSecret)
-
- exporterSecret := deriveSecret(state.cryptoParams, state.masterSecret, labelExporterSecret, h4)
- logf(logTypeCrypto, "client exporter secret: [%d] %x", len(exporterSecret), exporterSecret)
-
- // Assemble client's second flight
- toSend := []HandshakeAction{}
-
- if state.Params.UsingEarlyData {
- // Note: We only send EOED if the server is actually going to use the early
- // data. Otherwise, it will never see it, and the transcripts will
- // mismatch.
- // EOED marshal is infallible
- eoedm, _ := state.hsCtx.hOut.HandshakeMessageFromBody(&EndOfEarlyDataBody{})
- toSend = append(toSend, QueueHandshakeMessage{eoedm})
-
- state.handshakeHash.Write(eoedm.Marshal())
- logf(logTypeCrypto, "input to handshake hash [%d]: %x", len(eoedm.Marshal()), eoedm.Marshal())
- }
-
- clientHandshakeKeys := makeTrafficKeys(state.cryptoParams, state.clientHandshakeTrafficSecret)
- toSend = append(toSend, RekeyOut{epoch: EpochHandshakeData, KeySet: clientHandshakeKeys})
-
- if state.Params.UsingClientAuth {
- // Extract constraints from certicateRequest
- schemes := SignatureAlgorithmsExtension{}
- gotSchemes, err := state.serverCertificateRequest.Extensions.Find(&schemes)
- if err != nil {
- logf(logTypeHandshake, "[ClientStateWaitFinished] WARNING invalid signature_schemes extension [%v]", err)
- return nil, nil, AlertDecodeError
- }
- if !gotSchemes {
- logf(logTypeHandshake, "[ClientStateWaitFinished] WARNING no appropriate certificate found")
- return nil, nil, AlertIllegalParameter
- }
-
- // Select a certificate
- cert, certScheme, err := CertificateSelection(nil, schemes.Algorithms, state.certificates)
- if err != nil {
- // XXX: Signal this to the application layer?
- logf(logTypeHandshake, "[ClientStateWaitFinished] WARNING no appropriate certificate found [%v]", err)
-
- certificate := &CertificateBody{}
- certm, err := state.hsCtx.hOut.HandshakeMessageFromBody(certificate)
- if err != nil {
- logf(logTypeHandshake, "[ClientStateWaitFinished] Error marshaling Certificate [%v]", err)
- return nil, nil, AlertInternalError
- }
-
- toSend = append(toSend, QueueHandshakeMessage{certm})
- state.handshakeHash.Write(certm.Marshal())
- } else {
- // Create and send Certificate, CertificateVerify
- certificate := &CertificateBody{
- CertificateList: make([]CertificateEntry, len(cert.Chain)),
- }
- for i, entry := range cert.Chain {
- certificate.CertificateList[i] = CertificateEntry{CertData: entry}
- }
- certm, err := state.hsCtx.hOut.HandshakeMessageFromBody(certificate)
- if err != nil {
- logf(logTypeHandshake, "[ClientStateWaitFinished] Error marshaling Certificate [%v]", err)
- return nil, nil, AlertInternalError
- }
-
- toSend = append(toSend, QueueHandshakeMessage{certm})
- state.handshakeHash.Write(certm.Marshal())
-
- hcv := state.handshakeHash.Sum(nil)
- logf(logTypeHandshake, "Handshake Hash to be verified: [%d] %x", len(hcv), hcv)
-
- certificateVerify := &CertificateVerifyBody{Algorithm: certScheme}
- logf(logTypeHandshake, "Creating CertVerify: %04x %v", certScheme, state.cryptoParams.Hash)
-
- err = certificateVerify.Sign(cert.PrivateKey, hcv)
- if err != nil {
- logf(logTypeHandshake, "[ClientStateWaitFinished] Error signing CertificateVerify [%v]", err)
- return nil, nil, AlertInternalError
- }
- certvm, err := state.hsCtx.hOut.HandshakeMessageFromBody(certificateVerify)
- if err != nil {
- logf(logTypeHandshake, "[ClientStateWaitFinished] Error marshaling CertificateVerify [%v]", err)
- return nil, nil, AlertInternalError
- }
-
- toSend = append(toSend, QueueHandshakeMessage{certvm})
- state.handshakeHash.Write(certvm.Marshal())
- }
- }
-
- // Compute the client's Finished message
- h5 := state.handshakeHash.Sum(nil)
- logf(logTypeCrypto, "handshake hash for client Finished: [%d] %x", len(h5), h5)
-
- clientFinishedData := computeFinishedData(state.cryptoParams, state.clientHandshakeTrafficSecret, h5)
- logf(logTypeCrypto, "client Finished data: [%d] %x", len(clientFinishedData), clientFinishedData)
-
- fin = &FinishedBody{
- VerifyDataLen: len(clientFinishedData),
- VerifyData: clientFinishedData,
- }
- finm, err := state.hsCtx.hOut.HandshakeMessageFromBody(fin)
- if err != nil {
- logf(logTypeHandshake, "[ClientStateWaitFinished] Error marshaling client Finished [%v]", err)
- return nil, nil, AlertInternalError
- }
-
- // Compute the resumption secret
- state.handshakeHash.Write(finm.Marshal())
- h6 := state.handshakeHash.Sum(nil)
-
- resumptionSecret := deriveSecret(state.cryptoParams, state.masterSecret, labelResumptionSecret, h6)
- logf(logTypeCrypto, "resumption secret: [%d] %x", len(resumptionSecret), resumptionSecret)
-
- toSend = append(toSend, []HandshakeAction{
- QueueHandshakeMessage{finm},
- SendQueuedHandshake{},
- RekeyIn{epoch: EpochApplicationData, KeySet: serverTrafficKeys},
- RekeyOut{epoch: EpochApplicationData, KeySet: clientTrafficKeys},
- }...)
-
- logf(logTypeHandshake, "[ClientStateWaitFinished] -> [StateConnected]")
- nextState := StateConnected{
- Params: state.Params,
- hsCtx: state.hsCtx,
- isClient: true,
- cryptoParams: state.cryptoParams,
- resumptionSecret: resumptionSecret,
- clientTrafficSecret: clientTrafficSecret,
- serverTrafficSecret: serverTrafficSecret,
- exporterSecret: exporterSecret,
- }
- return nextState, toSend, AlertNoAlert
-}
diff --git a/vendor/github.com/bifurcation/mint/common.go b/vendor/github.com/bifurcation/mint/common.go
deleted file mode 100644
index 565d15e..0000000
--- a/vendor/github.com/bifurcation/mint/common.go
+++ /dev/null
@@ -1,252 +0,0 @@
-package mint
-
-import (
- "fmt"
- "strconv"
-)
-
-const (
- supportedVersion uint16 = 0x7f16 // draft-22
- tls12Version uint16 = 0x0303
- tls10Version uint16 = 0x0301
- dtls12WireVersion uint16 = 0xfefd
-)
-
-var (
- // Flags for some minor compat issues
- allowWrongVersionNumber = true
- allowPKCS1 = true
-)
-
-// enum {...} ContentType;
-type RecordType byte
-
-const (
- RecordTypeAlert RecordType = 21
- RecordTypeHandshake RecordType = 22
- RecordTypeApplicationData RecordType = 23
-)
-
-// enum {...} HandshakeType;
-type HandshakeType byte
-
-const (
- // Omitted: *_RESERVED
- HandshakeTypeClientHello HandshakeType = 1
- HandshakeTypeServerHello HandshakeType = 2
- HandshakeTypeNewSessionTicket HandshakeType = 4
- HandshakeTypeEndOfEarlyData HandshakeType = 5
- HandshakeTypeHelloRetryRequest HandshakeType = 6
- HandshakeTypeEncryptedExtensions HandshakeType = 8
- HandshakeTypeCertificate HandshakeType = 11
- HandshakeTypeCertificateRequest HandshakeType = 13
- HandshakeTypeCertificateVerify HandshakeType = 15
- HandshakeTypeServerConfiguration HandshakeType = 17
- HandshakeTypeFinished HandshakeType = 20
- HandshakeTypeKeyUpdate HandshakeType = 24
- HandshakeTypeMessageHash HandshakeType = 254
-)
-
-var hrrRandomSentinel = [32]byte{
- 0xcf, 0x21, 0xad, 0x74, 0xe5, 0x9a, 0x61, 0x11,
- 0xbe, 0x1d, 0x8c, 0x02, 0x1e, 0x65, 0xb8, 0x91,
- 0xc2, 0xa2, 0x11, 0x16, 0x7a, 0xbb, 0x8c, 0x5e,
- 0x07, 0x9e, 0x09, 0xe2, 0xc8, 0xa8, 0x33, 0x9c,
-}
-
-// uint8 CipherSuite[2];
-type CipherSuite uint16
-
-const (
- // XXX: Actually TLS_NULL_WITH_NULL_NULL, but we need a way to label the zero
- // value for this type so that we can detect when a field is set.
- CIPHER_SUITE_UNKNOWN CipherSuite = 0x0000
- TLS_AES_128_GCM_SHA256 CipherSuite = 0x1301
- TLS_AES_256_GCM_SHA384 CipherSuite = 0x1302
- TLS_CHACHA20_POLY1305_SHA256 CipherSuite = 0x1303
- TLS_AES_128_CCM_SHA256 CipherSuite = 0x1304
- TLS_AES_256_CCM_8_SHA256 CipherSuite = 0x1305
-)
-
-func (c CipherSuite) String() string {
- switch c {
- case CIPHER_SUITE_UNKNOWN:
- return "unknown"
- case TLS_AES_128_GCM_SHA256:
- return "TLS_AES_128_GCM_SHA256"
- case TLS_AES_256_GCM_SHA384:
- return "TLS_AES_256_GCM_SHA384"
- case TLS_CHACHA20_POLY1305_SHA256:
- return "TLS_CHACHA20_POLY1305_SHA256"
- case TLS_AES_128_CCM_SHA256:
- return "TLS_AES_128_CCM_SHA256"
- case TLS_AES_256_CCM_8_SHA256:
- return "TLS_AES_256_CCM_8_SHA256"
- }
- // cannot use %x here, since it calls String(), leading to infinite recursion
- return fmt.Sprintf("invalid CipherSuite value: 0x%s", strconv.FormatUint(uint64(c), 16))
-}
-
-// enum {...} SignatureScheme
-type SignatureScheme uint16
-
-const (
- // RSASSA-PKCS1-v1_5 algorithms
- RSA_PKCS1_SHA1 SignatureScheme = 0x0201
- RSA_PKCS1_SHA256 SignatureScheme = 0x0401
- RSA_PKCS1_SHA384 SignatureScheme = 0x0501
- RSA_PKCS1_SHA512 SignatureScheme = 0x0601
- // ECDSA algorithms
- ECDSA_P256_SHA256 SignatureScheme = 0x0403
- ECDSA_P384_SHA384 SignatureScheme = 0x0503
- ECDSA_P521_SHA512 SignatureScheme = 0x0603
- // RSASSA-PSS algorithms
- RSA_PSS_SHA256 SignatureScheme = 0x0804
- RSA_PSS_SHA384 SignatureScheme = 0x0805
- RSA_PSS_SHA512 SignatureScheme = 0x0806
- // EdDSA algorithms
- Ed25519 SignatureScheme = 0x0807
- Ed448 SignatureScheme = 0x0808
-)
-
-// enum {...} ExtensionType
-type ExtensionType uint16
-
-const (
- ExtensionTypeServerName ExtensionType = 0
- ExtensionTypeSupportedGroups ExtensionType = 10
- ExtensionTypeSignatureAlgorithms ExtensionType = 13
- ExtensionTypeALPN ExtensionType = 16
- ExtensionTypeKeyShare ExtensionType = 40
- ExtensionTypePreSharedKey ExtensionType = 41
- ExtensionTypeEarlyData ExtensionType = 42
- ExtensionTypeSupportedVersions ExtensionType = 43
- ExtensionTypeCookie ExtensionType = 44
- ExtensionTypePSKKeyExchangeModes ExtensionType = 45
- ExtensionTypeTicketEarlyDataInfo ExtensionType = 46
-)
-
-// enum {...} NamedGroup
-type NamedGroup uint16
-
-const (
- // Elliptic Curve Groups.
- P256 NamedGroup = 23
- P384 NamedGroup = 24
- P521 NamedGroup = 25
- // ECDH functions.
- X25519 NamedGroup = 29
- X448 NamedGroup = 30
- // Finite field groups.
- FFDHE2048 NamedGroup = 256
- FFDHE3072 NamedGroup = 257
- FFDHE4096 NamedGroup = 258
- FFDHE6144 NamedGroup = 259
- FFDHE8192 NamedGroup = 260
-)
-
-// enum {...} PskKeyExchangeMode;
-type PSKKeyExchangeMode uint8
-
-const (
- PSKModeKE PSKKeyExchangeMode = 0
- PSKModeDHEKE PSKKeyExchangeMode = 1
-)
-
-// enum {
-// update_not_requested(0), update_requested(1), (255)
-// } KeyUpdateRequest;
-type KeyUpdateRequest uint8
-
-const (
- KeyUpdateNotRequested KeyUpdateRequest = 0
- KeyUpdateRequested KeyUpdateRequest = 1
-)
-
-type State uint8
-
-const (
- // states valid for the client
- StateClientStart State = iota
- StateClientWaitSH
- StateClientWaitEE
- StateClientWaitCert
- StateClientWaitCV
- StateClientWaitFinished
- StateClientWaitCertCR
- StateClientConnected
- // states valid for the server
- StateServerStart State = iota
- StateServerRecvdCH
- StateServerNegotiated
- StateServerWaitEOED
- StateServerWaitFlight2
- StateServerWaitCert
- StateServerWaitCV
- StateServerWaitFinished
- StateServerConnected
-)
-
-func (s State) String() string {
- switch s {
- case StateClientStart:
- return "Client START"
- case StateClientWaitSH:
- return "Client WAIT_SH"
- case StateClientWaitEE:
- return "Client WAIT_EE"
- case StateClientWaitCert:
- return "Client WAIT_CERT"
- case StateClientWaitCV:
- return "Client WAIT_CV"
- case StateClientWaitFinished:
- return "Client WAIT_FINISHED"
- case StateClientConnected:
- return "Client CONNECTED"
- case StateServerStart:
- return "Server START"
- case StateServerRecvdCH:
- return "Server RECVD_CH"
- case StateServerNegotiated:
- return "Server NEGOTIATED"
- case StateServerWaitEOED:
- return "Server WAIT_EOED"
- case StateServerWaitFlight2:
- return "Server WAIT_FLIGHT2"
- case StateServerWaitCert:
- return "Server WAIT_CERT"
- case StateServerWaitCV:
- return "Server WAIT_CV"
- case StateServerWaitFinished:
- return "Server WAIT_FINISHED"
- case StateServerConnected:
- return "Server CONNECTED"
- default:
- return fmt.Sprintf("unknown state: %d", s)
- }
-}
-
-// Epochs for DTLS (also used for key phase labelling)
-type Epoch uint16
-
-const (
- EpochClear Epoch = 0
- EpochEarlyData Epoch = 1
- EpochHandshakeData Epoch = 2
- EpochApplicationData Epoch = 3
- EpochUpdate Epoch = 4
-)
-
-func (e Epoch) label() string {
- switch e {
- case EpochClear:
- return "clear"
- case EpochEarlyData:
- return "early data"
- case EpochHandshakeData:
- return "handshake"
- case EpochApplicationData:
- return "application data"
- }
- return "Application data (updated)"
-}
diff --git a/vendor/github.com/bifurcation/mint/conn.go b/vendor/github.com/bifurcation/mint/conn.go
deleted file mode 100644
index acea497..0000000
--- a/vendor/github.com/bifurcation/mint/conn.go
+++ /dev/null
@@ -1,890 +0,0 @@
-package mint
-
-import (
- "crypto"
- "crypto/x509"
- "encoding/hex"
- "errors"
- "fmt"
- "io"
- "net"
- "reflect"
- "sync"
- "time"
-)
-
-var WouldBlock = fmt.Errorf("Would have blocked")
-
-type Certificate struct {
- Chain []*x509.Certificate
- PrivateKey crypto.Signer
-}
-
-type PreSharedKey struct {
- CipherSuite CipherSuite
- IsResumption bool
- Identity []byte
- Key []byte
- NextProto string
- ReceivedAt time.Time
- ExpiresAt time.Time
- TicketAgeAdd uint32
-}
-
-type PreSharedKeyCache interface {
- Get(string) (PreSharedKey, bool)
- Put(string, PreSharedKey)
- Size() int
-}
-
-// A CookieHandler can be used to give the application more fine-grained control over Cookies.
-// Generate receives the Conn as an argument, so the CookieHandler can decide when to send the cookie based on that, and offload state to the client by encoding that into the Cookie.
-// When the client echoes the Cookie, Validate is called. The application can then recover the state from the cookie.
-type CookieHandler interface {
- // Generate a byte string that is sent as a part of a cookie to the client in the HelloRetryRequest
- // If Generate returns nil, mint will not send a HelloRetryRequest.
- Generate(*Conn) ([]byte, error)
- // Validate is called when receiving a ClientHello containing a Cookie.
- // If validation failed, the handshake is aborted.
- Validate(*Conn, []byte) bool
-}
-
-type PSKMapCache map[string]PreSharedKey
-
-func (cache PSKMapCache) Get(key string) (psk PreSharedKey, ok bool) {
- psk, ok = cache[key]
- return
-}
-
-func (cache *PSKMapCache) Put(key string, psk PreSharedKey) {
- (*cache)[key] = psk
-}
-
-func (cache PSKMapCache) Size() int {
- return len(cache)
-}
-
-// Config is the struct used to pass configuration settings to a TLS client or
-// server instance. The settings for client and server are pretty different,
-// but we just throw them all in here.
-type Config struct {
- // Client fields
- ServerName string
-
- // Server fields
- SendSessionTickets bool
- TicketLifetime uint32
- TicketLen int
- EarlyDataLifetime uint32
- AllowEarlyData bool
- // Require the client to echo a cookie.
- RequireCookie bool
- // A CookieHandler can be used to set and validate a cookie.
- // The cookie returned by the CookieHandler will be part of the cookie sent on the wire, and encoded using the CookieProtector.
- // If no CookieHandler is set, mint will always send a cookie.
- // The CookieHandler can be used to decide on a per-connection basis, if a cookie should be sent.
- CookieHandler CookieHandler
- // The CookieProtector is used to encrypt / decrypt cookies.
- // It should make sure that the Cookie cannot be read and tampered with by the client.
- // If non-blocking mode is used, and cookies are required, this field has to be set.
- // In blocking mode, a default cookie protector is used, if this is unused.
- CookieProtector CookieProtector
- RequireClientAuth bool
-
- // Shared fields
- Certificates []*Certificate
- AuthCertificate func(chain []CertificateEntry) error
- CipherSuites []CipherSuite
- Groups []NamedGroup
- SignatureSchemes []SignatureScheme
- NextProtos []string
- PSKs PreSharedKeyCache
- PSKModes []PSKKeyExchangeMode
- NonBlocking bool
- UseDTLS bool
-
- // The same config object can be shared among different connections, so it
- // needs its own mutex
- mutex sync.RWMutex
-}
-
-// Clone returns a shallow clone of c. It is safe to clone a Config that is
-// being used concurrently by a TLS client or server.
-func (c *Config) Clone() *Config {
- c.mutex.Lock()
- defer c.mutex.Unlock()
-
- return &Config{
- ServerName: c.ServerName,
-
- SendSessionTickets: c.SendSessionTickets,
- TicketLifetime: c.TicketLifetime,
- TicketLen: c.TicketLen,
- EarlyDataLifetime: c.EarlyDataLifetime,
- AllowEarlyData: c.AllowEarlyData,
- RequireCookie: c.RequireCookie,
- CookieHandler: c.CookieHandler,
- CookieProtector: c.CookieProtector,
- RequireClientAuth: c.RequireClientAuth,
-
- Certificates: c.Certificates,
- AuthCertificate: c.AuthCertificate,
- CipherSuites: c.CipherSuites,
- Groups: c.Groups,
- SignatureSchemes: c.SignatureSchemes,
- NextProtos: c.NextProtos,
- PSKs: c.PSKs,
- PSKModes: c.PSKModes,
- NonBlocking: c.NonBlocking,
- UseDTLS: c.UseDTLS,
- }
-}
-
-func (c *Config) Init(isClient bool) error {
- c.mutex.Lock()
- defer c.mutex.Unlock()
-
- // Set defaults
- if len(c.CipherSuites) == 0 {
- c.CipherSuites = defaultSupportedCipherSuites
- }
- if len(c.Groups) == 0 {
- c.Groups = defaultSupportedGroups
- }
- if len(c.SignatureSchemes) == 0 {
- c.SignatureSchemes = defaultSignatureSchemes
- }
- if c.TicketLen == 0 {
- c.TicketLen = defaultTicketLen
- }
- if !reflect.ValueOf(c.PSKs).IsValid() {
- c.PSKs = &PSKMapCache{}
- }
- if len(c.PSKModes) == 0 {
- c.PSKModes = defaultPSKModes
- }
-
- // If there is no certificate, generate one
- if !isClient && len(c.Certificates) == 0 {
- logf(logTypeHandshake, "Generating key name=%v", c.ServerName)
- priv, err := newSigningKey(RSA_PSS_SHA256)
- if err != nil {
- return err
- }
-
- cert, err := newSelfSigned(c.ServerName, RSA_PKCS1_SHA256, priv)
- if err != nil {
- return err
- }
-
- c.Certificates = []*Certificate{
- {
- Chain: []*x509.Certificate{cert},
- PrivateKey: priv,
- },
- }
- }
-
- return nil
-}
-
-func (c *Config) ValidForServer() bool {
- return (reflect.ValueOf(c.PSKs).IsValid() && c.PSKs.Size() > 0) ||
- (len(c.Certificates) > 0 &&
- len(c.Certificates[0].Chain) > 0 &&
- c.Certificates[0].PrivateKey != nil)
-}
-
-func (c *Config) ValidForClient() bool {
- return len(c.ServerName) > 0
-}
-
-var (
- defaultSupportedCipherSuites = []CipherSuite{
- TLS_AES_128_GCM_SHA256,
- TLS_AES_256_GCM_SHA384,
- }
-
- defaultSupportedGroups = []NamedGroup{
- P256,
- P384,
- FFDHE2048,
- X25519,
- }
-
- defaultSignatureSchemes = []SignatureScheme{
- RSA_PSS_SHA256,
- RSA_PSS_SHA384,
- RSA_PSS_SHA512,
- ECDSA_P256_SHA256,
- ECDSA_P384_SHA384,
- ECDSA_P521_SHA512,
- }
-
- defaultTicketLen = 16
-
- defaultPSKModes = []PSKKeyExchangeMode{
- PSKModeKE,
- PSKModeDHEKE,
- }
-)
-
-type ConnectionState struct {
- HandshakeState State
- CipherSuite CipherSuiteParams // cipher suite in use (TLS_RSA_WITH_RC4_128_SHA, ...)
- PeerCertificates []*x509.Certificate // certificate chain presented by remote peer TODO(ekr@rtfm.com): implement
- NextProto string // Selected ALPN proto
-}
-
-// Conn implements the net.Conn interface, as with "crypto/tls"
-// * Read, Write, and Close are provided locally
-// * LocalAddr, RemoteAddr, and Set*Deadline are forwarded to the inner Conn
-type Conn struct {
- config *Config
- conn net.Conn
- isClient bool
-
- EarlyData []byte
-
- state StateConnected
- hState HandshakeState
- handshakeMutex sync.Mutex
- handshakeAlert Alert
- handshakeComplete bool
-
- readBuffer []byte
- in, out *RecordLayer
- hsCtx HandshakeContext
-
- extHandler AppExtensionHandler
-}
-
-func NewConn(conn net.Conn, config *Config, isClient bool) *Conn {
- c := &Conn{conn: conn, config: config, isClient: isClient}
- if !config.UseDTLS {
- c.in = NewRecordLayerTLS(c.conn)
- c.out = NewRecordLayerTLS(c.conn)
- c.hsCtx.hIn = NewHandshakeLayerTLS(c.in)
- c.hsCtx.hOut = NewHandshakeLayerTLS(c.out)
- } else {
- c.in = NewRecordLayerDTLS(c.conn)
- c.out = NewRecordLayerDTLS(c.conn)
- c.hsCtx.hIn = NewHandshakeLayerDTLS(c.in)
- c.hsCtx.hOut = NewHandshakeLayerDTLS(c.out)
- }
- c.hsCtx.hIn.nonblocking = c.config.NonBlocking
- return c
-}
-
-// Read up
-func (c *Conn) consumeRecord() error {
- pt, err := c.in.ReadRecord()
- if pt == nil {
- logf(logTypeIO, "extendBuffer returns error %v", err)
- return err
- }
-
- switch pt.contentType {
- case RecordTypeHandshake:
- logf(logTypeHandshake, "Received post-handshake message")
- // We do not support fragmentation of post-handshake handshake messages.
- // TODO: Factor this more elegantly; coalesce with handshakeLayer.ReadMessage()
- start := 0
- headerLen := handshakeHeaderLenTLS
- if c.config.UseDTLS {
- headerLen = handshakeHeaderLenDTLS
- }
- for start < len(pt.fragment) {
- if len(pt.fragment[start:]) < headerLen {
- return fmt.Errorf("Post-handshake handshake message too short for header")
- }
-
- hm := &HandshakeMessage{}
- hm.msgType = HandshakeType(pt.fragment[start])
- hmLen := (int(pt.fragment[start+1]) << 16) + (int(pt.fragment[start+2]) << 8) + int(pt.fragment[start+3])
-
- if len(pt.fragment[start+headerLen:]) < hmLen {
- return fmt.Errorf("Post-handshake handshake message too short for body")
- }
- hm.body = pt.fragment[start+headerLen : start+headerLen+hmLen]
-
- // XXX: If we want to support more advanced cases, e.g., post-handshake
- // authentication, we'll need to allow transitions other than
- // Connected -> Connected
- state, actions, alert := c.state.ProcessMessage(hm)
- if alert != AlertNoAlert {
- logf(logTypeHandshake, "Error in state transition: %v", alert)
- c.sendAlert(alert)
- return io.EOF
- }
-
- for _, action := range actions {
- alert = c.takeAction(action)
- if alert != AlertNoAlert {
- logf(logTypeHandshake, "Error during handshake actions: %v", alert)
- c.sendAlert(alert)
- return io.EOF
- }
- }
-
- var connected bool
- c.state, connected = state.(StateConnected)
- if !connected {
- logf(logTypeHandshake, "Disconnected after state transition: %v", alert)
- c.sendAlert(alert)
- return io.EOF
- }
-
- start += headerLen + hmLen
- }
- case RecordTypeAlert:
- logf(logTypeIO, "extended buffer (for alert): [%d] %x", len(c.readBuffer), c.readBuffer)
- if len(pt.fragment) != 2 {
- c.sendAlert(AlertUnexpectedMessage)
- return io.EOF
- }
- if Alert(pt.fragment[1]) == AlertCloseNotify {
- return io.EOF
- }
-
- switch pt.fragment[0] {
- case AlertLevelWarning:
- // drop on the floor
- case AlertLevelError:
- return Alert(pt.fragment[1])
- default:
- c.sendAlert(AlertUnexpectedMessage)
- return io.EOF
- }
-
- case RecordTypeApplicationData:
- c.readBuffer = append(c.readBuffer, pt.fragment...)
- logf(logTypeIO, "extended buffer: [%d] %x", len(c.readBuffer), c.readBuffer)
- }
-
- return err
-}
-
-// Read application data up to the size of buffer. Handshake and alert records
-// are consumed by the Conn object directly.
-func (c *Conn) Read(buffer []byte) (int, error) {
- if _, connected := c.hState.(StateConnected); !connected && c.config.NonBlocking {
- return 0, errors.New("Read called before the handshake completed")
- }
- logf(logTypeHandshake, "conn.Read with buffer = %d", len(buffer))
- if alert := c.Handshake(); alert != AlertNoAlert {
- return 0, alert
- }
-
- if len(buffer) == 0 {
- return 0, nil
- }
-
- // Lock the input channel
- c.in.Lock()
- defer c.in.Unlock()
- for len(c.readBuffer) == 0 {
- err := c.consumeRecord()
-
- // err can be nil if consumeRecord processed a non app-data
- // record.
- if err != nil {
- if c.config.NonBlocking || err != WouldBlock {
- logf(logTypeIO, "conn.Read returns err=%v", err)
- return 0, err
- }
- }
- }
-
- var read int
- n := len(buffer)
- logf(logTypeIO, "conn.Read input buffer now has len %d", len(c.readBuffer))
- if len(c.readBuffer) <= n {
- buffer = buffer[:len(c.readBuffer)]
- copy(buffer, c.readBuffer)
- read = len(c.readBuffer)
- c.readBuffer = c.readBuffer[:0]
- } else {
- logf(logTypeIO, "read buffer larger than input buffer (%d > %d)", len(c.readBuffer), n)
- copy(buffer[:n], c.readBuffer[:n])
- c.readBuffer = c.readBuffer[n:]
- read = n
- }
-
- logf(logTypeVerbose, "Returning %v", string(buffer))
- return read, nil
-}
-
-// Write application data
-func (c *Conn) Write(buffer []byte) (int, error) {
- // Lock the output channel
- c.out.Lock()
- defer c.out.Unlock()
-
- // Send full-size fragments
- var start int
- sent := 0
- for start = 0; len(buffer)-start >= maxFragmentLen; start += maxFragmentLen {
- err := c.out.WriteRecord(&TLSPlaintext{
- contentType: RecordTypeApplicationData,
- fragment: buffer[start : start+maxFragmentLen],
- })
-
- if err != nil {
- return sent, err
- }
- sent += maxFragmentLen
- }
-
- // Send a final partial fragment if necessary
- if start < len(buffer) {
- err := c.out.WriteRecord(&TLSPlaintext{
- contentType: RecordTypeApplicationData,
- fragment: buffer[start:],
- })
-
- if err != nil {
- return sent, err
- }
- sent += len(buffer[start:])
- }
- return sent, nil
-}
-
-// sendAlert sends a TLS alert message.
-// c.out.Mutex <= L.
-func (c *Conn) sendAlert(err Alert) error {
- c.handshakeMutex.Lock()
- defer c.handshakeMutex.Unlock()
-
- var level int
- switch err {
- case AlertNoRenegotiation, AlertCloseNotify:
- level = AlertLevelWarning
- default:
- level = AlertLevelError
- }
-
- buf := []byte{byte(err), byte(level)}
- c.out.WriteRecord(&TLSPlaintext{
- contentType: RecordTypeAlert,
- fragment: buf,
- })
-
- // close_notify and end_of_early_data are not actually errors
- if level == AlertLevelWarning {
- return &net.OpError{Op: "local error", Err: err}
- }
-
- return c.Close()
-}
-
-// Close closes the connection.
-func (c *Conn) Close() error {
- // XXX crypto/tls has an interlock with Write here. Do we need that?
-
- return c.conn.Close()
-}
-
-// LocalAddr returns the local network address.
-func (c *Conn) LocalAddr() net.Addr {
- return c.conn.LocalAddr()
-}
-
-// RemoteAddr returns the remote network address.
-func (c *Conn) RemoteAddr() net.Addr {
- return c.conn.RemoteAddr()
-}
-
-// SetDeadline sets the read and write deadlines associated with the connection.
-// A zero value for t means Read and Write will not time out.
-// After a Write has timed out, the TLS state is corrupt and all future writes will return the same error.
-func (c *Conn) SetDeadline(t time.Time) error {
- return c.conn.SetDeadline(t)
-}
-
-// SetReadDeadline sets the read deadline on the underlying connection.
-// A zero value for t means Read will not time out.
-func (c *Conn) SetReadDeadline(t time.Time) error {
- return c.conn.SetReadDeadline(t)
-}
-
-// SetWriteDeadline sets the write deadline on the underlying connection.
-// A zero value for t means Write will not time out.
-// After a Write has timed out, the TLS state is corrupt and all future writes will return the same error.
-func (c *Conn) SetWriteDeadline(t time.Time) error {
- return c.conn.SetWriteDeadline(t)
-}
-
-func (c *Conn) takeAction(actionGeneric HandshakeAction) Alert {
- label := "[server]"
- if c.isClient {
- label = "[client]"
- }
-
- switch action := actionGeneric.(type) {
- case QueueHandshakeMessage:
- logf(logTypeHandshake, "%s queuing handshake message type=%v", label, action.Message.msgType)
- err := c.hsCtx.hOut.QueueMessage(action.Message)
- if err != nil {
- logf(logTypeHandshake, "%s Error writing handshake message: %v", label, err)
- return AlertInternalError
- }
-
- case SendQueuedHandshake:
- err := c.hsCtx.hOut.SendQueuedMessages()
- if err != nil {
- logf(logTypeHandshake, "%s Error writing handshake message: %v", label, err)
- return AlertInternalError
- }
- case RekeyIn:
- logf(logTypeHandshake, "%s Rekeying in to %s: %+v", label, action.epoch.label(), action.KeySet)
- err := c.in.Rekey(action.epoch, action.KeySet.cipher, action.KeySet.key, action.KeySet.iv)
- if err != nil {
- logf(logTypeHandshake, "%s Unable to rekey inbound: %v", label, err)
- return AlertInternalError
- }
-
- case RekeyOut:
- logf(logTypeHandshake, "%s Rekeying out to %s: %+v", label, action.epoch.label(), action.KeySet)
- err := c.out.Rekey(action.epoch, action.KeySet.cipher, action.KeySet.key, action.KeySet.iv)
- if err != nil {
- logf(logTypeHandshake, "%s Unable to rekey outbound: %v", label, err)
- return AlertInternalError
- }
-
- case SendEarlyData:
- logf(logTypeHandshake, "%s Sending early data...", label)
- _, err := c.Write(c.EarlyData)
- if err != nil {
- logf(logTypeHandshake, "%s Error writing early data: %v", label, err)
- return AlertInternalError
- }
-
- case ReadPastEarlyData:
- logf(logTypeHandshake, "%s Reading past early data...", label)
- // Scan past all records that fail to decrypt
- _, err := c.in.PeekRecordType(!c.config.NonBlocking)
- if err == nil {
- break
- }
- _, ok := err.(DecryptError)
-
- for ok {
- _, err = c.in.PeekRecordType(!c.config.NonBlocking)
- if err == nil {
- break
- }
- _, ok = err.(DecryptError)
- }
-
- case ReadEarlyData:
- logf(logTypeHandshake, "%s Reading early data...", label)
- t, err := c.in.PeekRecordType(!c.config.NonBlocking)
- if err != nil {
- logf(logTypeHandshake, "%s Error reading record type (1): %v", label, err)
- return AlertInternalError
- }
- logf(logTypeHandshake, "%s Got record type(1): %v", label, t)
-
- for t == RecordTypeApplicationData {
- // Read a record into the buffer. Note that this is safe
- // in blocking mode because we read the record in in
- // PeekRecordType.
- pt, err := c.in.ReadRecord()
- if err != nil {
- logf(logTypeHandshake, "%s Error reading early data record: %v", label, err)
- return AlertInternalError
- }
-
- logf(logTypeHandshake, "%s Read early data: %x", label, pt.fragment)
- c.EarlyData = append(c.EarlyData, pt.fragment...)
-
- t, err = c.in.PeekRecordType(!c.config.NonBlocking)
- if err != nil {
- logf(logTypeHandshake, "%s Error reading record type (2): %v", label, err)
- return AlertInternalError
- }
- logf(logTypeHandshake, "%s Got record type (2): %v", label, t)
- }
- logf(logTypeHandshake, "%s Done reading early data", label)
-
- case StorePSK:
- logf(logTypeHandshake, "%s Storing new session ticket with identity [%x]", label, action.PSK.Identity)
- if c.isClient {
- // Clients look up PSKs based on server name
- c.config.PSKs.Put(c.config.ServerName, action.PSK)
- } else {
- // Servers look them up based on the identity in the extension
- c.config.PSKs.Put(hex.EncodeToString(action.PSK.Identity), action.PSK)
- }
-
- default:
- logf(logTypeHandshake, "%s Unknown actionuction type", label)
- return AlertInternalError
- }
-
- return AlertNoAlert
-}
-
-func (c *Conn) HandshakeSetup() Alert {
- var state HandshakeState
- var actions []HandshakeAction
- var alert Alert
-
- if err := c.config.Init(c.isClient); err != nil {
- logf(logTypeHandshake, "Error initializing config: %v", err)
- return AlertInternalError
- }
-
- // Set things up
- caps := Capabilities{
- CipherSuites: c.config.CipherSuites,
- Groups: c.config.Groups,
- SignatureSchemes: c.config.SignatureSchemes,
- PSKs: c.config.PSKs,
- PSKModes: c.config.PSKModes,
- AllowEarlyData: c.config.AllowEarlyData,
- RequireCookie: c.config.RequireCookie,
- CookieProtector: c.config.CookieProtector,
- CookieHandler: c.config.CookieHandler,
- RequireClientAuth: c.config.RequireClientAuth,
- NextProtos: c.config.NextProtos,
- Certificates: c.config.Certificates,
- ExtensionHandler: c.extHandler,
- }
- opts := ConnectionOptions{
- ServerName: c.config.ServerName,
- NextProtos: c.config.NextProtos,
- EarlyData: c.EarlyData,
- }
-
- if c.isClient {
- state, actions, alert = ClientStateStart{Caps: caps, Opts: opts, hsCtx: c.hsCtx}.Next(nil)
- if alert != AlertNoAlert {
- logf(logTypeHandshake, "Error initializing client state: %v", alert)
- return alert
- }
-
- for _, action := range actions {
- alert = c.takeAction(action)
- if alert != AlertNoAlert {
- logf(logTypeHandshake, "Error during handshake actions: %v", alert)
- return alert
- }
- }
- } else {
- if c.config.RequireCookie && c.config.CookieProtector == nil {
- logf(logTypeHandshake, "RequireCookie set, but no CookieProtector provided. Using default cookie protector. Stateless Retry not possible.")
- if c.config.NonBlocking {
- logf(logTypeHandshake, "Not possible in non-blocking mode.")
- return AlertInternalError
- }
- var err error
- caps.CookieProtector, err = NewDefaultCookieProtector()
- if err != nil {
- logf(logTypeHandshake, "Error initializing cookie source: %v", alert)
- return AlertInternalError
- }
- }
- state = ServerStateStart{Caps: caps, conn: c, hsCtx: c.hsCtx}
- }
-
- c.hState = state
- return AlertNoAlert
-}
-
-type handshakeMessageReader interface {
- ReadMessage() (*HandshakeMessage, Alert)
-}
-
-type handshakeMessageReaderImpl struct {
- hsCtx *HandshakeContext
-}
-
-var _ handshakeMessageReader = &handshakeMessageReaderImpl{}
-
-func (r *handshakeMessageReaderImpl) ReadMessage() (*HandshakeMessage, Alert) {
- hm, err := r.hsCtx.hIn.ReadMessage()
- if err == WouldBlock {
- return nil, AlertWouldBlock
- }
- if err != nil {
- logf(logTypeHandshake, "[client] Error reading message: %v", err)
- return nil, AlertCloseNotify
- }
-
- // Once you have read a message, you no longer need the outgoing queue
- // for DTLS.
- r.hsCtx.hOut.ClearQueuedMessages()
-
- return hm, AlertNoAlert
-}
-
-// Handshake causes a TLS handshake on the connection. The `isClient` member
-// determines whether a client or server handshake is performed. If a
-// handshake has already been performed, then its result will be returned.
-func (c *Conn) Handshake() Alert {
- label := "[server]"
- if c.isClient {
- label = "[client]"
- }
-
- // TODO Lock handshakeMutex
- // TODO Remove CloseNotify hack
- if c.handshakeAlert != AlertNoAlert && c.handshakeAlert != AlertCloseNotify {
- logf(logTypeHandshake, "Pre-existing handshake error: %v", c.handshakeAlert)
- return c.handshakeAlert
- }
- if c.handshakeComplete {
- return AlertNoAlert
- }
-
- if c.hState == nil {
- logf(logTypeHandshake, "%s First time through handshake (or after stateless retry), setting up", label)
- alert := c.HandshakeSetup()
- if alert != AlertNoAlert || (c.isClient && c.config.NonBlocking) {
- return alert
- }
- }
-
- logf(logTypeHandshake, "(Re-)entering handshake, state=%v", c.hState)
- state := c.hState
- _, connected := state.(StateConnected)
-
- hmr := &handshakeMessageReaderImpl{hsCtx: &c.hsCtx}
- for !connected {
- var alert Alert
- var actions []HandshakeAction
- // Advance the state machine
- state, actions, alert = state.Next(hmr)
- if alert == WouldBlock {
- logf(logTypeHandshake, "%s Would block reading message: %s", label, alert)
- return AlertWouldBlock
- }
- if alert == AlertCloseNotify {
- logf(logTypeHandshake, "%s Error reading message: %s", label, alert)
- c.sendAlert(AlertCloseNotify)
- return AlertCloseNotify
- }
- if alert != AlertNoAlert && alert != AlertStatelessRetry {
- logf(logTypeHandshake, "Error in state transition: %v", alert)
- return alert
- }
-
- for index, action := range actions {
- logf(logTypeHandshake, "%s taking next action (%d)", label, index)
- if alert := c.takeAction(action); alert != AlertNoAlert {
- logf(logTypeHandshake, "Error during handshake actions: %v", alert)
- c.sendAlert(alert)
- return alert
- }
- }
-
- c.hState = state
- logf(logTypeHandshake, "state is now %s", c.GetHsState())
- _, connected = state.(StateConnected)
- if connected {
- c.state = state.(StateConnected)
- c.handshakeComplete = true
- }
-
- if c.config.NonBlocking {
- if alert == AlertStatelessRetry {
- return AlertStatelessRetry
- }
- return AlertNoAlert
- }
- }
-
- // Send NewSessionTicket if acting as server
- if !c.isClient && c.config.SendSessionTickets {
- actions, alert := c.state.NewSessionTicket(
- c.config.TicketLen,
- c.config.TicketLifetime,
- c.config.EarlyDataLifetime)
-
- for _, action := range actions {
- alert = c.takeAction(action)
- if alert != AlertNoAlert {
- logf(logTypeHandshake, "Error during handshake actions: %v", alert)
- c.sendAlert(alert)
- return alert
- }
- }
- }
-
- return AlertNoAlert
-}
-
-func (c *Conn) SendKeyUpdate(requestUpdate bool) error {
- if !c.handshakeComplete {
- return fmt.Errorf("Cannot update keys until after handshake")
- }
-
- request := KeyUpdateNotRequested
- if requestUpdate {
- request = KeyUpdateRequested
- }
-
- // Create the key update and update state
- actions, alert := c.state.KeyUpdate(request)
- if alert != AlertNoAlert {
- c.sendAlert(alert)
- return fmt.Errorf("Alert while generating key update: %v", alert)
- }
-
- // Take actions (send key update and rekey)
- for _, action := range actions {
- alert = c.takeAction(action)
- if alert != AlertNoAlert {
- c.sendAlert(alert)
- return fmt.Errorf("Alert during key update actions: %v", alert)
- }
- }
-
- return nil
-}
-
-func (c *Conn) GetHsState() State {
- return c.hState.State()
-}
-
-func (c *Conn) ComputeExporter(label string, context []byte, keyLength int) ([]byte, error) {
- _, connected := c.hState.(StateConnected)
- if !connected {
- return nil, fmt.Errorf("Cannot compute exporter when state is not connected")
- }
-
- if c.state.exporterSecret == nil {
- return nil, fmt.Errorf("Internal error: no exporter secret")
- }
-
- h0 := c.state.cryptoParams.Hash.New().Sum(nil)
- tmpSecret := deriveSecret(c.state.cryptoParams, c.state.exporterSecret, label, h0)
-
- hc := c.state.cryptoParams.Hash.New().Sum(context)
- return HkdfExpandLabel(c.state.cryptoParams.Hash, tmpSecret, "exporter", hc, keyLength), nil
-}
-
-func (c *Conn) State() ConnectionState {
- state := ConnectionState{
- HandshakeState: c.GetHsState(),
- }
-
- if c.handshakeComplete {
- state.CipherSuite = cipherSuiteMap[c.state.Params.CipherSuite]
- state.NextProto = c.state.Params.NextProto
- }
-
- return state
-}
-
-func (c *Conn) SetExtensionHandler(h AppExtensionHandler) error {
- if c.hState != nil {
- return fmt.Errorf("Can't set extension handler after setup")
- }
-
- c.extHandler = h
- return nil
-}
diff --git a/vendor/github.com/bifurcation/mint/cookie-protector.go b/vendor/github.com/bifurcation/mint/cookie-protector.go
deleted file mode 100644
index 73dd80b..0000000
--- a/vendor/github.com/bifurcation/mint/cookie-protector.go
+++ /dev/null
@@ -1,86 +0,0 @@
-package mint
-
-import (
- "crypto/aes"
- "crypto/cipher"
- "crypto/rand"
- "crypto/sha256"
- "fmt"
- "io"
-
- "golang.org/x/crypto/hkdf"
-)
-
-// CookieProtector is used to create and verify a cookie
-type CookieProtector interface {
- // NewToken creates a new token
- NewToken([]byte) ([]byte, error)
- // DecodeToken decodes a token
- DecodeToken([]byte) ([]byte, error)
-}
-
-const cookieSecretSize = 32
-const cookieNonceSize = 32
-
-// The DefaultCookieProtector is a simple implementation for the CookieProtector.
-type DefaultCookieProtector struct {
- secret []byte
-}
-
-var _ CookieProtector = &DefaultCookieProtector{}
-
-// NewDefaultCookieProtector creates a source for source address tokens
-func NewDefaultCookieProtector() (CookieProtector, error) {
- secret := make([]byte, cookieSecretSize)
- if _, err := rand.Read(secret); err != nil {
- return nil, err
- }
- return &DefaultCookieProtector{secret: secret}, nil
-}
-
-// NewToken encodes data into a new token.
-func (s *DefaultCookieProtector) NewToken(data []byte) ([]byte, error) {
- nonce := make([]byte, cookieNonceSize)
- if _, err := rand.Read(nonce); err != nil {
- return nil, err
- }
- aead, aeadNonce, err := s.createAEAD(nonce)
- if err != nil {
- return nil, err
- }
- return append(nonce, aead.Seal(nil, aeadNonce, data, nil)...), nil
-}
-
-// DecodeToken decodes a token.
-func (s *DefaultCookieProtector) DecodeToken(p []byte) ([]byte, error) {
- if len(p) < cookieNonceSize {
- return nil, fmt.Errorf("Token too short: %d", len(p))
- }
- nonce := p[:cookieNonceSize]
- aead, aeadNonce, err := s.createAEAD(nonce)
- if err != nil {
- return nil, err
- }
- return aead.Open(nil, aeadNonce, p[cookieNonceSize:], nil)
-}
-
-func (s *DefaultCookieProtector) createAEAD(nonce []byte) (cipher.AEAD, []byte, error) {
- h := hkdf.New(sha256.New, s.secret, nonce, []byte("mint cookie source"))
- key := make([]byte, 32) // use a 32 byte key, in order to select AES-256
- if _, err := io.ReadFull(h, key); err != nil {
- return nil, nil, err
- }
- aeadNonce := make([]byte, 12)
- if _, err := io.ReadFull(h, aeadNonce); err != nil {
- return nil, nil, err
- }
- c, err := aes.NewCipher(key)
- if err != nil {
- return nil, nil, err
- }
- aead, err := cipher.NewGCM(c)
- if err != nil {
- return nil, nil, err
- }
- return aead, aeadNonce, nil
-}
diff --git a/vendor/github.com/bifurcation/mint/crypto.go b/vendor/github.com/bifurcation/mint/crypto.go
deleted file mode 100644
index 60d3437..0000000
--- a/vendor/github.com/bifurcation/mint/crypto.go
+++ /dev/null
@@ -1,654 +0,0 @@
-package mint
-
-import (
- "bytes"
- "crypto"
- "crypto/aes"
- "crypto/cipher"
- "crypto/ecdsa"
- "crypto/elliptic"
- "crypto/hmac"
- "crypto/rand"
- "crypto/rsa"
- "crypto/x509"
- "crypto/x509/pkix"
- "encoding/asn1"
- "fmt"
- "math/big"
- "time"
-
- "golang.org/x/crypto/curve25519"
-
- // Blank includes to ensure hash support
- _ "crypto/sha1"
- _ "crypto/sha256"
- _ "crypto/sha512"
-)
-
-var prng = rand.Reader
-
-type aeadFactory func(key []byte) (cipher.AEAD, error)
-
-type CipherSuiteParams struct {
- Suite CipherSuite
- Cipher aeadFactory // Cipher factory
- Hash crypto.Hash // Hash function
- KeyLen int // Key length in octets
- IvLen int // IV length in octets
-}
-
-type signatureAlgorithm uint8
-
-const (
- signatureAlgorithmUnknown = iota
- signatureAlgorithmRSA_PKCS1
- signatureAlgorithmRSA_PSS
- signatureAlgorithmECDSA
-)
-
-var (
- hashMap = map[SignatureScheme]crypto.Hash{
- RSA_PKCS1_SHA1: crypto.SHA1,
- RSA_PKCS1_SHA256: crypto.SHA256,
- RSA_PKCS1_SHA384: crypto.SHA384,
- RSA_PKCS1_SHA512: crypto.SHA512,
- ECDSA_P256_SHA256: crypto.SHA256,
- ECDSA_P384_SHA384: crypto.SHA384,
- ECDSA_P521_SHA512: crypto.SHA512,
- RSA_PSS_SHA256: crypto.SHA256,
- RSA_PSS_SHA384: crypto.SHA384,
- RSA_PSS_SHA512: crypto.SHA512,
- }
-
- sigMap = map[SignatureScheme]signatureAlgorithm{
- RSA_PKCS1_SHA1: signatureAlgorithmRSA_PKCS1,
- RSA_PKCS1_SHA256: signatureAlgorithmRSA_PKCS1,
- RSA_PKCS1_SHA384: signatureAlgorithmRSA_PKCS1,
- RSA_PKCS1_SHA512: signatureAlgorithmRSA_PKCS1,
- ECDSA_P256_SHA256: signatureAlgorithmECDSA,
- ECDSA_P384_SHA384: signatureAlgorithmECDSA,
- ECDSA_P521_SHA512: signatureAlgorithmECDSA,
- RSA_PSS_SHA256: signatureAlgorithmRSA_PSS,
- RSA_PSS_SHA384: signatureAlgorithmRSA_PSS,
- RSA_PSS_SHA512: signatureAlgorithmRSA_PSS,
- }
-
- curveMap = map[SignatureScheme]NamedGroup{
- ECDSA_P256_SHA256: P256,
- ECDSA_P384_SHA384: P384,
- ECDSA_P521_SHA512: P521,
- }
-
- newAESGCM = func(key []byte) (cipher.AEAD, error) {
- block, err := aes.NewCipher(key)
- if err != nil {
- return nil, err
- }
-
- // TLS always uses 12-byte nonces
- return cipher.NewGCMWithNonceSize(block, 12)
- }
-
- cipherSuiteMap = map[CipherSuite]CipherSuiteParams{
- TLS_AES_128_GCM_SHA256: {
- Suite: TLS_AES_128_GCM_SHA256,
- Cipher: newAESGCM,
- Hash: crypto.SHA256,
- KeyLen: 16,
- IvLen: 12,
- },
- TLS_AES_256_GCM_SHA384: {
- Suite: TLS_AES_256_GCM_SHA384,
- Cipher: newAESGCM,
- Hash: crypto.SHA384,
- KeyLen: 32,
- IvLen: 12,
- },
- }
-
- x509AlgMap = map[SignatureScheme]x509.SignatureAlgorithm{
- RSA_PKCS1_SHA1: x509.SHA1WithRSA,
- RSA_PKCS1_SHA256: x509.SHA256WithRSA,
- RSA_PKCS1_SHA384: x509.SHA384WithRSA,
- RSA_PKCS1_SHA512: x509.SHA512WithRSA,
- ECDSA_P256_SHA256: x509.ECDSAWithSHA256,
- ECDSA_P384_SHA384: x509.ECDSAWithSHA384,
- ECDSA_P521_SHA512: x509.ECDSAWithSHA512,
- }
-
- defaultRSAKeySize = 2048
-)
-
-func curveFromNamedGroup(group NamedGroup) (crv elliptic.Curve) {
- switch group {
- case P256:
- crv = elliptic.P256()
- case P384:
- crv = elliptic.P384()
- case P521:
- crv = elliptic.P521()
- }
- return
-}
-
-func namedGroupFromECDSAKey(key *ecdsa.PublicKey) (g NamedGroup) {
- switch key.Curve.Params().Name {
- case elliptic.P256().Params().Name:
- g = P256
- case elliptic.P384().Params().Name:
- g = P384
- case elliptic.P521().Params().Name:
- g = P521
- }
- return
-}
-
-func keyExchangeSizeFromNamedGroup(group NamedGroup) (size int) {
- size = 0
- switch group {
- case X25519:
- size = 32
- case P256:
- size = 65
- case P384:
- size = 97
- case P521:
- size = 133
- case FFDHE2048:
- size = 256
- case FFDHE3072:
- size = 384
- case FFDHE4096:
- size = 512
- case FFDHE6144:
- size = 768
- case FFDHE8192:
- size = 1024
- }
- return
-}
-
-func primeFromNamedGroup(group NamedGroup) (p *big.Int) {
- switch group {
- case FFDHE2048:
- p = finiteFieldPrime2048
- case FFDHE3072:
- p = finiteFieldPrime3072
- case FFDHE4096:
- p = finiteFieldPrime4096
- case FFDHE6144:
- p = finiteFieldPrime6144
- case FFDHE8192:
- p = finiteFieldPrime8192
- }
- return
-}
-
-func schemeValidForKey(alg SignatureScheme, key crypto.Signer) bool {
- sigType := sigMap[alg]
- switch key.(type) {
- case *rsa.PrivateKey:
- return sigType == signatureAlgorithmRSA_PKCS1 || sigType == signatureAlgorithmRSA_PSS
- case *ecdsa.PrivateKey:
- return sigType == signatureAlgorithmECDSA
- default:
- return false
- }
-}
-
-func ffdheKeyShareFromPrime(p *big.Int) (priv, pub *big.Int, err error) {
- primeLen := len(p.Bytes())
- for {
- // g = 2 for all ffdhe groups
- priv, err = rand.Int(prng, p)
- if err != nil {
- return
- }
-
- pub = big.NewInt(0)
- pub.Exp(big.NewInt(2), priv, p)
-
- if len(pub.Bytes()) == primeLen {
- return
- }
- }
-}
-
-func newKeyShare(group NamedGroup) (pub []byte, priv []byte, err error) {
- switch group {
- case P256, P384, P521:
- var x, y *big.Int
- crv := curveFromNamedGroup(group)
- priv, x, y, err = elliptic.GenerateKey(crv, prng)
- if err != nil {
- return
- }
-
- pub = elliptic.Marshal(crv, x, y)
- return
-
- case FFDHE2048, FFDHE3072, FFDHE4096, FFDHE6144, FFDHE8192:
- p := primeFromNamedGroup(group)
- x, X, err2 := ffdheKeyShareFromPrime(p)
- if err2 != nil {
- err = err2
- return
- }
-
- priv = x.Bytes()
- pubBytes := X.Bytes()
-
- numBytes := keyExchangeSizeFromNamedGroup(group)
-
- pub = make([]byte, numBytes)
- copy(pub[numBytes-len(pubBytes):], pubBytes)
-
- return
-
- case X25519:
- var private, public [32]byte
- _, err = prng.Read(private[:])
- if err != nil {
- return
- }
-
- curve25519.ScalarBaseMult(&public, &private)
- priv = private[:]
- pub = public[:]
- return
-
- default:
- return nil, nil, fmt.Errorf("tls.newkeyshare: Unsupported group %v", group)
- }
-}
-
-func keyAgreement(group NamedGroup, pub []byte, priv []byte) ([]byte, error) {
- switch group {
- case P256, P384, P521:
- if len(pub) != keyExchangeSizeFromNamedGroup(group) {
- return nil, fmt.Errorf("tls.keyagreement: Wrong public key size")
- }
-
- crv := curveFromNamedGroup(group)
- pubX, pubY := elliptic.Unmarshal(crv, pub)
- x, _ := crv.Params().ScalarMult(pubX, pubY, priv)
- xBytes := x.Bytes()
-
- numBytes := len(crv.Params().P.Bytes())
-
- ret := make([]byte, numBytes)
- copy(ret[numBytes-len(xBytes):], xBytes)
-
- return ret, nil
-
- case FFDHE2048, FFDHE3072, FFDHE4096, FFDHE6144, FFDHE8192:
- numBytes := keyExchangeSizeFromNamedGroup(group)
- if len(pub) != numBytes {
- return nil, fmt.Errorf("tls.keyagreement: Wrong public key size")
- }
- p := primeFromNamedGroup(group)
- x := big.NewInt(0).SetBytes(priv)
- Y := big.NewInt(0).SetBytes(pub)
- ZBytes := big.NewInt(0).Exp(Y, x, p).Bytes()
-
- ret := make([]byte, numBytes)
- copy(ret[numBytes-len(ZBytes):], ZBytes)
-
- return ret, nil
-
- case X25519:
- if len(pub) != keyExchangeSizeFromNamedGroup(group) {
- return nil, fmt.Errorf("tls.keyagreement: Wrong public key size")
- }
-
- var private, public, ret [32]byte
- copy(private[:], priv)
- copy(public[:], pub)
- curve25519.ScalarMult(&ret, &private, &public)
-
- return ret[:], nil
-
- default:
- return nil, fmt.Errorf("tls.keyagreement: Unsupported group %v", group)
- }
-}
-
-func newSigningKey(sig SignatureScheme) (crypto.Signer, error) {
- switch sig {
- case RSA_PKCS1_SHA1, RSA_PKCS1_SHA256,
- RSA_PKCS1_SHA384, RSA_PKCS1_SHA512,
- RSA_PSS_SHA256, RSA_PSS_SHA384,
- RSA_PSS_SHA512:
- return rsa.GenerateKey(prng, defaultRSAKeySize)
- case ECDSA_P256_SHA256:
- return ecdsa.GenerateKey(elliptic.P256(), prng)
- case ECDSA_P384_SHA384:
- return ecdsa.GenerateKey(elliptic.P384(), prng)
- case ECDSA_P521_SHA512:
- return ecdsa.GenerateKey(elliptic.P521(), prng)
- default:
- return nil, fmt.Errorf("tls.newsigningkey: Unsupported signature algorithm [%04x]", sig)
- }
-}
-
-func newSelfSigned(name string, alg SignatureScheme, priv crypto.Signer) (*x509.Certificate, error) {
- sigAlg, ok := x509AlgMap[alg]
- if !ok {
- return nil, fmt.Errorf("tls.selfsigned: Unknown signature algorithm [%04x]", alg)
- }
- if len(name) == 0 {
- return nil, fmt.Errorf("tls.selfsigned: No name provided")
- }
-
- serial, err := rand.Int(rand.Reader, big.NewInt(0xA0A0A0A0))
- if err != nil {
- return nil, err
- }
-
- template := &x509.Certificate{
- SerialNumber: serial,
- NotBefore: time.Now(),
- NotAfter: time.Now().AddDate(0, 0, 1),
- SignatureAlgorithm: sigAlg,
- Subject: pkix.Name{CommonName: name},
- DNSNames: []string{name},
- KeyUsage: x509.KeyUsageDigitalSignature | x509.KeyUsageKeyAgreement | x509.KeyUsageKeyEncipherment,
- ExtKeyUsage: []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth},
- }
- der, err := x509.CreateCertificate(prng, template, template, priv.Public(), priv)
- if err != nil {
- return nil, err
- }
-
- // It is safe to ignore the error here because we're parsing known-good data
- cert, _ := x509.ParseCertificate(der)
- return cert, nil
-}
-
-// XXX(rlb): Copied from crypto/x509
-type ecdsaSignature struct {
- R, S *big.Int
-}
-
-func sign(alg SignatureScheme, privateKey crypto.Signer, sigInput []byte) ([]byte, error) {
- var opts crypto.SignerOpts
-
- hash := hashMap[alg]
- if hash == crypto.SHA1 {
- return nil, fmt.Errorf("tls.crypt.sign: Use of SHA-1 is forbidden")
- }
-
- sigType := sigMap[alg]
- var realInput []byte
- switch key := privateKey.(type) {
- case *rsa.PrivateKey:
- switch {
- case allowPKCS1 && sigType == signatureAlgorithmRSA_PKCS1:
- logf(logTypeCrypto, "signing with PKCS1, hashSize=[%d]", hash.Size())
- opts = hash
- case !allowPKCS1 && sigType == signatureAlgorithmRSA_PKCS1:
- fallthrough
- case sigType == signatureAlgorithmRSA_PSS:
- logf(logTypeCrypto, "signing with PSS, hashSize=[%d]", hash.Size())
- opts = &rsa.PSSOptions{SaltLength: hash.Size(), Hash: hash}
- default:
- return nil, fmt.Errorf("tls.crypto.sign: Unsupported algorithm for RSA key")
- }
-
- h := hash.New()
- h.Write(sigInput)
- realInput = h.Sum(nil)
- case *ecdsa.PrivateKey:
- if sigType != signatureAlgorithmECDSA {
- return nil, fmt.Errorf("tls.crypto.sign: Unsupported algorithm for ECDSA key")
- }
-
- algGroup := curveMap[alg]
- keyGroup := namedGroupFromECDSAKey(key.Public().(*ecdsa.PublicKey))
- if algGroup != keyGroup {
- return nil, fmt.Errorf("tls.crypto.sign: Unsupported hash/curve combination")
- }
-
- h := hash.New()
- h.Write(sigInput)
- realInput = h.Sum(nil)
- default:
- return nil, fmt.Errorf("tls.crypto.sign: Unsupported private key type")
- }
-
- sig, err := privateKey.Sign(prng, realInput, opts)
- logf(logTypeCrypto, "signature: %x", sig)
- return sig, err
-}
-
-func verify(alg SignatureScheme, publicKey crypto.PublicKey, sigInput []byte, sig []byte) error {
- hash := hashMap[alg]
-
- if hash == crypto.SHA1 {
- return fmt.Errorf("tls.crypt.sign: Use of SHA-1 is forbidden")
- }
-
- sigType := sigMap[alg]
- switch pub := publicKey.(type) {
- case *rsa.PublicKey:
- switch {
- case allowPKCS1 && sigType == signatureAlgorithmRSA_PKCS1:
- logf(logTypeCrypto, "verifying with PKCS1, hashSize=[%d]", hash.Size())
-
- h := hash.New()
- h.Write(sigInput)
- realInput := h.Sum(nil)
- return rsa.VerifyPKCS1v15(pub, hash, realInput, sig)
- case !allowPKCS1 && sigType == signatureAlgorithmRSA_PKCS1:
- fallthrough
- case sigType == signatureAlgorithmRSA_PSS:
- logf(logTypeCrypto, "verifying with PSS, hashSize=[%d]", hash.Size())
- opts := &rsa.PSSOptions{SaltLength: hash.Size(), Hash: hash}
-
- h := hash.New()
- h.Write(sigInput)
- realInput := h.Sum(nil)
- return rsa.VerifyPSS(pub, hash, realInput, sig, opts)
- default:
- return fmt.Errorf("tls.verify: Unsupported algorithm for RSA key")
- }
-
- case *ecdsa.PublicKey:
- if sigType != signatureAlgorithmECDSA {
- return fmt.Errorf("tls.verify: Unsupported algorithm for ECDSA key")
- }
-
- if curveMap[alg] != namedGroupFromECDSAKey(pub) {
- return fmt.Errorf("tls.verify: Unsupported curve for ECDSA key")
- }
-
- ecdsaSig := new(ecdsaSignature)
- if rest, err := asn1.Unmarshal(sig, ecdsaSig); err != nil {
- return err
- } else if len(rest) != 0 {
- return fmt.Errorf("tls.verify: trailing data after ECDSA signature")
- }
- if ecdsaSig.R.Sign() <= 0 || ecdsaSig.S.Sign() <= 0 {
- return fmt.Errorf("tls.verify: ECDSA signature contained zero or negative values")
- }
-
- h := hash.New()
- h.Write(sigInput)
- realInput := h.Sum(nil)
- if !ecdsa.Verify(pub, realInput, ecdsaSig.R, ecdsaSig.S) {
- return fmt.Errorf("tls.verify: ECDSA verification failure")
- }
- return nil
- default:
- return fmt.Errorf("tls.verify: Unsupported key type")
- }
-}
-
-// 0
-// |
-// v
-// PSK -> HKDF-Extract = Early Secret
-// |
-// +-----> Derive-Secret(.,
-// | "ext binder" |
-// | "res binder",
-// | "")
-// | = binder_key
-// |
-// +-----> Derive-Secret(., "c e traffic",
-// | ClientHello)
-// | = client_early_traffic_secret
-// |
-// +-----> Derive-Secret(., "e exp master",
-// | ClientHello)
-// | = early_exporter_master_secret
-// v
-// Derive-Secret(., "derived", "")
-// |
-// v
-// (EC)DHE -> HKDF-Extract = Handshake Secret
-// |
-// +-----> Derive-Secret(., "c hs traffic",
-// | ClientHello...ServerHello)
-// | = client_handshake_traffic_secret
-// |
-// +-----> Derive-Secret(., "s hs traffic",
-// | ClientHello...ServerHello)
-// | = server_handshake_traffic_secret
-// v
-// Derive-Secret(., "derived", "")
-// |
-// v
-// 0 -> HKDF-Extract = Master Secret
-// |
-// +-----> Derive-Secret(., "c ap traffic",
-// | ClientHello...server Finished)
-// | = client_application_traffic_secret_0
-// |
-// +-----> Derive-Secret(., "s ap traffic",
-// | ClientHello...server Finished)
-// | = server_application_traffic_secret_0
-// |
-// +-----> Derive-Secret(., "exp master",
-// | ClientHello...server Finished)
-// | = exporter_master_secret
-// |
-// +-----> Derive-Secret(., "res master",
-// ClientHello...client Finished)
-// = resumption_master_secret
-
-// From RFC 5869
-// PRK = HMAC-Hash(salt, IKM)
-func HkdfExtract(hash crypto.Hash, saltIn, input []byte) []byte {
- salt := saltIn
-
- // if [salt is] not provided, it is set to a string of HashLen zeros
- if salt == nil {
- salt = bytes.Repeat([]byte{0}, hash.Size())
- }
-
- h := hmac.New(hash.New, salt)
- h.Write(input)
- out := h.Sum(nil)
-
- logf(logTypeCrypto, "HKDF Extract:\n")
- logf(logTypeCrypto, "Salt [%d]: %x\n", len(salt), salt)
- logf(logTypeCrypto, "Input [%d]: %x\n", len(input), input)
- logf(logTypeCrypto, "Output [%d]: %x\n", len(out), out)
-
- return out
-}
-
-const (
- labelExternalBinder = "ext binder"
- labelResumptionBinder = "res binder"
- labelEarlyTrafficSecret = "c e traffic"
- labelEarlyExporterSecret = "e exp master"
- labelClientHandshakeTrafficSecret = "c hs traffic"
- labelServerHandshakeTrafficSecret = "s hs traffic"
- labelClientApplicationTrafficSecret = "c ap traffic"
- labelServerApplicationTrafficSecret = "s ap traffic"
- labelExporterSecret = "exp master"
- labelResumptionSecret = "res master"
- labelDerived = "derived"
- labelFinished = "finished"
- labelResumption = "resumption"
-)
-
-// struct HkdfLabel {
-// uint16 length;
-// opaque label<9..255>;
-// opaque hash_value<0..255>;
-// };
-func hkdfEncodeLabel(labelIn string, hashValue []byte, outLen int) []byte {
- label := "tls13 " + labelIn
-
- labelLen := len(label)
- hashLen := len(hashValue)
- hkdfLabel := make([]byte, 2+1+labelLen+1+hashLen)
- hkdfLabel[0] = byte(outLen >> 8)
- hkdfLabel[1] = byte(outLen)
- hkdfLabel[2] = byte(labelLen)
- copy(hkdfLabel[3:3+labelLen], []byte(label))
- hkdfLabel[3+labelLen] = byte(hashLen)
- copy(hkdfLabel[3+labelLen+1:], hashValue)
-
- return hkdfLabel
-}
-
-func HkdfExpand(hash crypto.Hash, prk, info []byte, outLen int) []byte {
- out := []byte{}
- T := []byte{}
- i := byte(1)
- for len(out) < outLen {
- block := append(T, info...)
- block = append(block, i)
-
- h := hmac.New(hash.New, prk)
- h.Write(block)
-
- T = h.Sum(nil)
- out = append(out, T...)
- i++
- }
- return out[:outLen]
-}
-
-func HkdfExpandLabel(hash crypto.Hash, secret []byte, label string, hashValue []byte, outLen int) []byte {
- info := hkdfEncodeLabel(label, hashValue, outLen)
- derived := HkdfExpand(hash, secret, info, outLen)
-
- logf(logTypeCrypto, "HKDF Expand: label=[tls13 ] + '%s',requested length=%d\n", label, outLen)
- logf(logTypeCrypto, "PRK [%d]: %x\n", len(secret), secret)
- logf(logTypeCrypto, "Hash [%d]: %x\n", len(hashValue), hashValue)
- logf(logTypeCrypto, "Info [%d]: %x\n", len(info), info)
- logf(logTypeCrypto, "Derived key [%d]: %x\n", len(derived), derived)
-
- return derived
-}
-
-func deriveSecret(params CipherSuiteParams, secret []byte, label string, messageHash []byte) []byte {
- return HkdfExpandLabel(params.Hash, secret, label, messageHash, params.Hash.Size())
-}
-
-func computeFinishedData(params CipherSuiteParams, baseKey []byte, input []byte) []byte {
- macKey := HkdfExpandLabel(params.Hash, baseKey, labelFinished, []byte{}, params.Hash.Size())
- mac := hmac.New(params.Hash.New, macKey)
- mac.Write(input)
- return mac.Sum(nil)
-}
-
-type keySet struct {
- cipher aeadFactory
- key []byte
- iv []byte
-}
-
-func makeTrafficKeys(params CipherSuiteParams, secret []byte) keySet {
- logf(logTypeCrypto, "making traffic keys: secret=%x", secret)
- return keySet{
- cipher: params.Cipher,
- key: HkdfExpandLabel(params.Hash, secret, "key", []byte{}, params.KeyLen),
- iv: HkdfExpandLabel(params.Hash, secret, "iv", []byte{}, params.IvLen),
- }
-}
diff --git a/vendor/github.com/bifurcation/mint/dtls.go b/vendor/github.com/bifurcation/mint/dtls.go
deleted file mode 100644
index df4f1aa..0000000
--- a/vendor/github.com/bifurcation/mint/dtls.go
+++ /dev/null
@@ -1,28 +0,0 @@
-package mint
-
-import (
- "fmt"
-)
-
-// This file is a placeholder. DTLS-specific stuff (timer management,
-// ACKs, retransmits, etc. will eventually go here.
-const (
- initialMtu = 1200
-)
-
-func wireVersion(h *HandshakeLayer) uint16 {
- if h.datagram {
- return dtls12WireVersion
- }
- return tls12Version
-}
-
-func dtlsConvertVersion(version uint16) uint16 {
- if version == tls12Version {
- return dtls12WireVersion
- }
- if version == tls10Version {
- return 0xfeff
- }
- panic(fmt.Sprintf("Internal error, unexpected version=%d", version))
-}
diff --git a/vendor/github.com/bifurcation/mint/extensions.go b/vendor/github.com/bifurcation/mint/extensions.go
deleted file mode 100644
index 07cb16c..0000000
--- a/vendor/github.com/bifurcation/mint/extensions.go
+++ /dev/null
@@ -1,626 +0,0 @@
-package mint
-
-import (
- "bytes"
- "fmt"
- "github.com/bifurcation/mint/syntax"
-)
-
-type ExtensionBody interface {
- Type() ExtensionType
- Marshal() ([]byte, error)
- Unmarshal(data []byte) (int, error)
-}
-
-// struct {
-// ExtensionType extension_type;
-// opaque extension_data<0..2^16-1>;
-// } Extension;
-type Extension struct {
- ExtensionType ExtensionType
- ExtensionData []byte `tls:"head=2"`
-}
-
-func (ext Extension) Marshal() ([]byte, error) {
- return syntax.Marshal(ext)
-}
-
-func (ext *Extension) Unmarshal(data []byte) (int, error) {
- return syntax.Unmarshal(data, ext)
-}
-
-type ExtensionList []Extension
-
-type extensionListInner struct {
- List []Extension `tls:"head=2"`
-}
-
-func (el ExtensionList) Marshal() ([]byte, error) {
- return syntax.Marshal(extensionListInner{el})
-}
-
-func (el *ExtensionList) Unmarshal(data []byte) (int, error) {
- var list extensionListInner
- read, err := syntax.Unmarshal(data, &list)
- if err != nil {
- return 0, err
- }
-
- *el = list.List
- return read, nil
-}
-
-func (el *ExtensionList) Add(src ExtensionBody) error {
- data, err := src.Marshal()
- if err != nil {
- return err
- }
-
- if el == nil {
- el = new(ExtensionList)
- }
-
- // If one already exists with this type, replace it
- for i := range *el {
- if (*el)[i].ExtensionType == src.Type() {
- (*el)[i].ExtensionData = data
- return nil
- }
- }
-
- // Otherwise append
- *el = append(*el, Extension{
- ExtensionType: src.Type(),
- ExtensionData: data,
- })
- return nil
-}
-
-func (el ExtensionList) Parse(dsts []ExtensionBody) (map[ExtensionType]bool, error) {
- found := make(map[ExtensionType]bool)
-
- for _, dst := range dsts {
- for _, ext := range el {
- if ext.ExtensionType == dst.Type() {
- if found[dst.Type()] {
- return nil, fmt.Errorf("Duplicate extension of type [%v]", dst.Type())
- }
-
- err := safeUnmarshal(dst, ext.ExtensionData)
- if err != nil {
- return nil, err
- }
-
- found[dst.Type()] = true
- }
- }
- }
-
- return found, nil
-}
-
-func (el ExtensionList) Find(dst ExtensionBody) (bool, error) {
- for _, ext := range el {
- if ext.ExtensionType == dst.Type() {
- err := safeUnmarshal(dst, ext.ExtensionData)
- if err != nil {
- return true, err
- }
- return true, nil
- }
- }
- return false, nil
-}
-
-// struct {
-// NameType name_type;
-// select (name_type) {
-// case host_name: HostName;
-// } name;
-// } ServerName;
-//
-// enum {
-// host_name(0), (255)
-// } NameType;
-//
-// opaque HostName<1..2^16-1>;
-//
-// struct {
-// ServerName server_name_list<1..2^16-1>
-// } ServerNameList;
-//
-// But we only care about the case where there's a single DNS hostname. We
-// will never create anything else, and throw if we receive something else
-//
-// 2 1 2
-// | listLen | NameType | nameLen | name |
-type ServerNameExtension string
-
-type serverNameInner struct {
- NameType uint8
- HostName []byte `tls:"head=2,min=1"`
-}
-
-type serverNameListInner struct {
- ServerNameList []serverNameInner `tls:"head=2,min=1"`
-}
-
-func (sni ServerNameExtension) Type() ExtensionType {
- return ExtensionTypeServerName
-}
-
-func (sni ServerNameExtension) Marshal() ([]byte, error) {
- list := serverNameListInner{
- ServerNameList: []serverNameInner{{
- NameType: 0x00, // host_name
- HostName: []byte(sni),
- }},
- }
-
- return syntax.Marshal(list)
-}
-
-func (sni *ServerNameExtension) Unmarshal(data []byte) (int, error) {
- var list serverNameListInner
- read, err := syntax.Unmarshal(data, &list)
- if err != nil {
- return 0, err
- }
-
- // Syntax requires at least one entry
- // Entries beyond the first are ignored
- if nameType := list.ServerNameList[0].NameType; nameType != 0x00 {
- return 0, fmt.Errorf("tls.servername: Unsupported name type [%x]", nameType)
- }
-
- *sni = ServerNameExtension(list.ServerNameList[0].HostName)
- return read, nil
-}
-
-// struct {
-// NamedGroup group;
-// opaque key_exchange<1..2^16-1>;
-// } KeyShareEntry;
-//
-// struct {
-// select (Handshake.msg_type) {
-// case client_hello:
-// KeyShareEntry client_shares<0..2^16-1>;
-//
-// case hello_retry_request:
-// NamedGroup selected_group;
-//
-// case server_hello:
-// KeyShareEntry server_share;
-// };
-// } KeyShare;
-type KeyShareEntry struct {
- Group NamedGroup
- KeyExchange []byte `tls:"head=2,min=1"`
-}
-
-func (kse KeyShareEntry) SizeValid() bool {
- return len(kse.KeyExchange) == keyExchangeSizeFromNamedGroup(kse.Group)
-}
-
-type KeyShareExtension struct {
- HandshakeType HandshakeType
- SelectedGroup NamedGroup
- Shares []KeyShareEntry
-}
-
-type KeyShareClientHelloInner struct {
- ClientShares []KeyShareEntry `tls:"head=2,min=0"`
-}
-type KeyShareHelloRetryInner struct {
- SelectedGroup NamedGroup
-}
-type KeyShareServerHelloInner struct {
- ServerShare KeyShareEntry
-}
-
-func (ks KeyShareExtension) Type() ExtensionType {
- return ExtensionTypeKeyShare
-}
-
-func (ks KeyShareExtension) Marshal() ([]byte, error) {
- switch ks.HandshakeType {
- case HandshakeTypeClientHello:
- for _, share := range ks.Shares {
- if !share.SizeValid() {
- return nil, fmt.Errorf("tls.keyshare: Key share has wrong size for group")
- }
- }
- return syntax.Marshal(KeyShareClientHelloInner{ks.Shares})
-
- case HandshakeTypeHelloRetryRequest:
- if len(ks.Shares) > 0 {
- return nil, fmt.Errorf("tls.keyshare: Key shares not allowed for HelloRetryRequest")
- }
-
- return syntax.Marshal(KeyShareHelloRetryInner{ks.SelectedGroup})
-
- case HandshakeTypeServerHello:
- if len(ks.Shares) != 1 {
- return nil, fmt.Errorf("tls.keyshare: Server must send exactly one key share")
- }
-
- if !ks.Shares[0].SizeValid() {
- return nil, fmt.Errorf("tls.keyshare: Key share has wrong size for group")
- }
-
- return syntax.Marshal(KeyShareServerHelloInner{ks.Shares[0]})
-
- default:
- return nil, fmt.Errorf("tls.keyshare: Handshake type not allowed")
- }
-}
-
-func (ks *KeyShareExtension) Unmarshal(data []byte) (int, error) {
- switch ks.HandshakeType {
- case HandshakeTypeClientHello:
- var inner KeyShareClientHelloInner
- read, err := syntax.Unmarshal(data, &inner)
- if err != nil {
- return 0, err
- }
-
- for _, share := range inner.ClientShares {
- if !share.SizeValid() {
- return 0, fmt.Errorf("tls.keyshare: Key share has wrong size for group")
- }
- }
-
- ks.Shares = inner.ClientShares
- return read, nil
-
- case HandshakeTypeHelloRetryRequest:
- var inner KeyShareHelloRetryInner
- read, err := syntax.Unmarshal(data, &inner)
- if err != nil {
- return 0, err
- }
-
- ks.SelectedGroup = inner.SelectedGroup
- return read, nil
-
- case HandshakeTypeServerHello:
- var inner KeyShareServerHelloInner
- read, err := syntax.Unmarshal(data, &inner)
- if err != nil {
- return 0, err
- }
-
- if !inner.ServerShare.SizeValid() {
- return 0, fmt.Errorf("tls.keyshare: Key share has wrong size for group")
- }
-
- ks.Shares = []KeyShareEntry{inner.ServerShare}
- return read, nil
-
- default:
- return 0, fmt.Errorf("tls.keyshare: Handshake type not allowed")
- }
-}
-
-// struct {
-// NamedGroup named_group_list<2..2^16-1>;
-// } NamedGroupList;
-type SupportedGroupsExtension struct {
- Groups []NamedGroup `tls:"head=2,min=2"`
-}
-
-func (sg SupportedGroupsExtension) Type() ExtensionType {
- return ExtensionTypeSupportedGroups
-}
-
-func (sg SupportedGroupsExtension) Marshal() ([]byte, error) {
- return syntax.Marshal(sg)
-}
-
-func (sg *SupportedGroupsExtension) Unmarshal(data []byte) (int, error) {
- return syntax.Unmarshal(data, sg)
-}
-
-// struct {
-// SignatureScheme supported_signature_algorithms<2..2^16-2>;
-// } SignatureSchemeList
-type SignatureAlgorithmsExtension struct {
- Algorithms []SignatureScheme `tls:"head=2,min=2"`
-}
-
-func (sa SignatureAlgorithmsExtension) Type() ExtensionType {
- return ExtensionTypeSignatureAlgorithms
-}
-
-func (sa SignatureAlgorithmsExtension) Marshal() ([]byte, error) {
- return syntax.Marshal(sa)
-}
-
-func (sa *SignatureAlgorithmsExtension) Unmarshal(data []byte) (int, error) {
- return syntax.Unmarshal(data, sa)
-}
-
-// struct {
-// opaque identity<1..2^16-1>;
-// uint32 obfuscated_ticket_age;
-// } PskIdentity;
-//
-// opaque PskBinderEntry<32..255>;
-//
-// struct {
-// select (Handshake.msg_type) {
-// case client_hello:
-// PskIdentity identities<7..2^16-1>;
-// PskBinderEntry binders<33..2^16-1>;
-//
-// case server_hello:
-// uint16 selected_identity;
-// };
-//
-// } PreSharedKeyExtension;
-type PSKIdentity struct {
- Identity []byte `tls:"head=2,min=1"`
- ObfuscatedTicketAge uint32
-}
-
-type PSKBinderEntry struct {
- Binder []byte `tls:"head=1,min=32"`
-}
-
-type PreSharedKeyExtension struct {
- HandshakeType HandshakeType
- Identities []PSKIdentity
- Binders []PSKBinderEntry
- SelectedIdentity uint16
-}
-
-type preSharedKeyClientInner struct {
- Identities []PSKIdentity `tls:"head=2,min=7"`
- Binders []PSKBinderEntry `tls:"head=2,min=33"`
-}
-
-type preSharedKeyServerInner struct {
- SelectedIdentity uint16
-}
-
-func (psk PreSharedKeyExtension) Type() ExtensionType {
- return ExtensionTypePreSharedKey
-}
-
-func (psk PreSharedKeyExtension) Marshal() ([]byte, error) {
- switch psk.HandshakeType {
- case HandshakeTypeClientHello:
- return syntax.Marshal(preSharedKeyClientInner{
- Identities: psk.Identities,
- Binders: psk.Binders,
- })
-
- case HandshakeTypeServerHello:
- if len(psk.Identities) > 0 || len(psk.Binders) > 0 {
- return nil, fmt.Errorf("tls.presharedkey: Server can only provide an index")
- }
- return syntax.Marshal(preSharedKeyServerInner{psk.SelectedIdentity})
-
- default:
- return nil, fmt.Errorf("tls.presharedkey: Handshake type not supported")
- }
-}
-
-func (psk *PreSharedKeyExtension) Unmarshal(data []byte) (int, error) {
- switch psk.HandshakeType {
- case HandshakeTypeClientHello:
- var inner preSharedKeyClientInner
- read, err := syntax.Unmarshal(data, &inner)
- if err != nil {
- return 0, err
- }
-
- if len(inner.Identities) != len(inner.Binders) {
- return 0, fmt.Errorf("Lengths of identities and binders not equal")
- }
-
- psk.Identities = inner.Identities
- psk.Binders = inner.Binders
- return read, nil
-
- case HandshakeTypeServerHello:
- var inner preSharedKeyServerInner
- read, err := syntax.Unmarshal(data, &inner)
- if err != nil {
- return 0, err
- }
-
- psk.SelectedIdentity = inner.SelectedIdentity
- return read, nil
-
- default:
- return 0, fmt.Errorf("tls.presharedkey: Handshake type not supported")
- }
-}
-
-func (psk PreSharedKeyExtension) HasIdentity(id []byte) ([]byte, bool) {
- for i, localID := range psk.Identities {
- if bytes.Equal(localID.Identity, id) {
- return psk.Binders[i].Binder, true
- }
- }
- return nil, false
-}
-
-// enum { psk_ke(0), psk_dhe_ke(1), (255) } PskKeyExchangeMode;
-//
-// struct {
-// PskKeyExchangeMode ke_modes<1..255>;
-// } PskKeyExchangeModes;
-type PSKKeyExchangeModesExtension struct {
- KEModes []PSKKeyExchangeMode `tls:"head=1,min=1"`
-}
-
-func (pkem PSKKeyExchangeModesExtension) Type() ExtensionType {
- return ExtensionTypePSKKeyExchangeModes
-}
-
-func (pkem PSKKeyExchangeModesExtension) Marshal() ([]byte, error) {
- return syntax.Marshal(pkem)
-}
-
-func (pkem *PSKKeyExchangeModesExtension) Unmarshal(data []byte) (int, error) {
- return syntax.Unmarshal(data, pkem)
-}
-
-// struct {
-// } EarlyDataIndication;
-
-type EarlyDataExtension struct{}
-
-func (ed EarlyDataExtension) Type() ExtensionType {
- return ExtensionTypeEarlyData
-}
-
-func (ed EarlyDataExtension) Marshal() ([]byte, error) {
- return []byte{}, nil
-}
-
-func (ed *EarlyDataExtension) Unmarshal(data []byte) (int, error) {
- return 0, nil
-}
-
-// struct {
-// uint32 max_early_data_size;
-// } TicketEarlyDataInfo;
-
-type TicketEarlyDataInfoExtension struct {
- MaxEarlyDataSize uint32
-}
-
-func (tedi TicketEarlyDataInfoExtension) Type() ExtensionType {
- return ExtensionTypeTicketEarlyDataInfo
-}
-
-func (tedi TicketEarlyDataInfoExtension) Marshal() ([]byte, error) {
- return syntax.Marshal(tedi)
-}
-
-func (tedi *TicketEarlyDataInfoExtension) Unmarshal(data []byte) (int, error) {
- return syntax.Unmarshal(data, tedi)
-}
-
-// opaque ProtocolName<1..2^8-1>;
-//
-// struct {
-// ProtocolName protocol_name_list<2..2^16-1>
-// } ProtocolNameList;
-type ALPNExtension struct {
- Protocols []string
-}
-
-type protocolNameInner struct {
- Name []byte `tls:"head=1,min=1"`
-}
-
-type alpnExtensionInner struct {
- Protocols []protocolNameInner `tls:"head=2,min=2"`
-}
-
-func (alpn ALPNExtension) Type() ExtensionType {
- return ExtensionTypeALPN
-}
-
-func (alpn ALPNExtension) Marshal() ([]byte, error) {
- protocols := make([]protocolNameInner, len(alpn.Protocols))
- for i, protocol := range alpn.Protocols {
- protocols[i] = protocolNameInner{[]byte(protocol)}
- }
- return syntax.Marshal(alpnExtensionInner{protocols})
-}
-
-func (alpn *ALPNExtension) Unmarshal(data []byte) (int, error) {
- var inner alpnExtensionInner
- read, err := syntax.Unmarshal(data, &inner)
-
- if err != nil {
- return 0, err
- }
-
- alpn.Protocols = make([]string, len(inner.Protocols))
- for i, protocol := range inner.Protocols {
- alpn.Protocols[i] = string(protocol.Name)
- }
- return read, nil
-}
-
-// struct {
-// ProtocolVersion versions<2..254>;
-// } SupportedVersions;
-type SupportedVersionsExtension struct {
- HandshakeType HandshakeType
- Versions []uint16
-}
-
-type SupportedVersionsClientHelloInner struct {
- Versions []uint16 `tls:"head=1,min=2,max=254"`
-}
-
-type SupportedVersionsServerHelloInner struct {
- Version uint16
-}
-
-func (sv SupportedVersionsExtension) Type() ExtensionType {
- return ExtensionTypeSupportedVersions
-}
-
-func (sv SupportedVersionsExtension) Marshal() ([]byte, error) {
- switch sv.HandshakeType {
- case HandshakeTypeClientHello:
- return syntax.Marshal(SupportedVersionsClientHelloInner{sv.Versions})
- case HandshakeTypeServerHello, HandshakeTypeHelloRetryRequest:
- return syntax.Marshal(SupportedVersionsServerHelloInner{sv.Versions[0]})
- default:
- return nil, fmt.Errorf("tls.supported_versions: Handshake type not allowed")
- }
-}
-
-func (sv *SupportedVersionsExtension) Unmarshal(data []byte) (int, error) {
- switch sv.HandshakeType {
- case HandshakeTypeClientHello:
- var inner SupportedVersionsClientHelloInner
- read, err := syntax.Unmarshal(data, &inner)
- if err != nil {
- return 0, err
- }
- sv.Versions = inner.Versions
- return read, nil
-
- case HandshakeTypeServerHello, HandshakeTypeHelloRetryRequest:
- var inner SupportedVersionsServerHelloInner
- read, err := syntax.Unmarshal(data, &inner)
- if err != nil {
- return 0, err
- }
- sv.Versions = []uint16{inner.Version}
- return read, nil
-
- default:
- return 0, fmt.Errorf("tls.supported_versions: Handshake type not allowed")
- }
-}
-
-// struct {
-// opaque cookie<1..2^16-1>;
-// } Cookie;
-type CookieExtension struct {
- Cookie []byte `tls:"head=2,min=1"`
-}
-
-func (c CookieExtension) Type() ExtensionType {
- return ExtensionTypeCookie
-}
-
-func (c CookieExtension) Marshal() ([]byte, error) {
- return syntax.Marshal(c)
-}
-
-func (c *CookieExtension) Unmarshal(data []byte) (int, error) {
- return syntax.Unmarshal(data, c)
-}
diff --git a/vendor/github.com/bifurcation/mint/ffdhe.go b/vendor/github.com/bifurcation/mint/ffdhe.go
deleted file mode 100644
index 59d1f7f..0000000
--- a/vendor/github.com/bifurcation/mint/ffdhe.go
+++ /dev/null
@@ -1,147 +0,0 @@
-package mint
-
-import (
- "encoding/hex"
- "math/big"
-)
-
-var (
- finiteFieldPrime2048hex = "FFFFFFFFFFFFFFFFADF85458A2BB4A9AAFDC5620273D3CF1" +
- "D8B9C583CE2D3695A9E13641146433FBCC939DCE249B3EF9" +
- "7D2FE363630C75D8F681B202AEC4617AD3DF1ED5D5FD6561" +
- "2433F51F5F066ED0856365553DED1AF3B557135E7F57C935" +
- "984F0C70E0E68B77E2A689DAF3EFE8721DF158A136ADE735" +
- "30ACCA4F483A797ABC0AB182B324FB61D108A94BB2C8E3FB" +
- "B96ADAB760D7F4681D4F42A3DE394DF4AE56EDE76372BB19" +
- "0B07A7C8EE0A6D709E02FCE1CDF7E2ECC03404CD28342F61" +
- "9172FE9CE98583FF8E4F1232EEF28183C3FE3B1B4C6FAD73" +
- "3BB5FCBC2EC22005C58EF1837D1683B2C6F34A26C1B2EFFA" +
- "886B423861285C97FFFFFFFFFFFFFFFF"
- finiteFieldPrime2048bytes, _ = hex.DecodeString(finiteFieldPrime2048hex)
- finiteFieldPrime2048 = big.NewInt(0).SetBytes(finiteFieldPrime2048bytes)
-
- finiteFieldPrime3072hex = "FFFFFFFFFFFFFFFFADF85458A2BB4A9AAFDC5620273D3CF1" +
- "D8B9C583CE2D3695A9E13641146433FBCC939DCE249B3EF9" +
- "7D2FE363630C75D8F681B202AEC4617AD3DF1ED5D5FD6561" +
- "2433F51F5F066ED0856365553DED1AF3B557135E7F57C935" +
- "984F0C70E0E68B77E2A689DAF3EFE8721DF158A136ADE735" +
- "30ACCA4F483A797ABC0AB182B324FB61D108A94BB2C8E3FB" +
- "B96ADAB760D7F4681D4F42A3DE394DF4AE56EDE76372BB19" +
- "0B07A7C8EE0A6D709E02FCE1CDF7E2ECC03404CD28342F61" +
- "9172FE9CE98583FF8E4F1232EEF28183C3FE3B1B4C6FAD73" +
- "3BB5FCBC2EC22005C58EF1837D1683B2C6F34A26C1B2EFFA" +
- "886B4238611FCFDCDE355B3B6519035BBC34F4DEF99C0238" +
- "61B46FC9D6E6C9077AD91D2691F7F7EE598CB0FAC186D91C" +
- "AEFE130985139270B4130C93BC437944F4FD4452E2D74DD3" +
- "64F2E21E71F54BFF5CAE82AB9C9DF69EE86D2BC522363A0D" +
- "ABC521979B0DEADA1DBF9A42D5C4484E0ABCD06BFA53DDEF" +
- "3C1B20EE3FD59D7C25E41D2B66C62E37FFFFFFFFFFFFFFFF"
- finiteFieldPrime3072bytes, _ = hex.DecodeString(finiteFieldPrime3072hex)
- finiteFieldPrime3072 = big.NewInt(0).SetBytes(finiteFieldPrime3072bytes)
-
- finiteFieldPrime4096hex = "FFFFFFFFFFFFFFFFADF85458A2BB4A9AAFDC5620273D3CF1" +
- "D8B9C583CE2D3695A9E13641146433FBCC939DCE249B3EF9" +
- "7D2FE363630C75D8F681B202AEC4617AD3DF1ED5D5FD6561" +
- "2433F51F5F066ED0856365553DED1AF3B557135E7F57C935" +
- "984F0C70E0E68B77E2A689DAF3EFE8721DF158A136ADE735" +
- "30ACCA4F483A797ABC0AB182B324FB61D108A94BB2C8E3FB" +
- "B96ADAB760D7F4681D4F42A3DE394DF4AE56EDE76372BB19" +
- "0B07A7C8EE0A6D709E02FCE1CDF7E2ECC03404CD28342F61" +
- "9172FE9CE98583FF8E4F1232EEF28183C3FE3B1B4C6FAD73" +
- "3BB5FCBC2EC22005C58EF1837D1683B2C6F34A26C1B2EFFA" +
- "886B4238611FCFDCDE355B3B6519035BBC34F4DEF99C0238" +
- "61B46FC9D6E6C9077AD91D2691F7F7EE598CB0FAC186D91C" +
- "AEFE130985139270B4130C93BC437944F4FD4452E2D74DD3" +
- "64F2E21E71F54BFF5CAE82AB9C9DF69EE86D2BC522363A0D" +
- "ABC521979B0DEADA1DBF9A42D5C4484E0ABCD06BFA53DDEF" +
- "3C1B20EE3FD59D7C25E41D2B669E1EF16E6F52C3164DF4FB" +
- "7930E9E4E58857B6AC7D5F42D69F6D187763CF1D55034004" +
- "87F55BA57E31CC7A7135C886EFB4318AED6A1E012D9E6832" +
- "A907600A918130C46DC778F971AD0038092999A333CB8B7A" +
- "1A1DB93D7140003C2A4ECEA9F98D0ACC0A8291CDCEC97DCF" +
- "8EC9B55A7F88A46B4DB5A851F44182E1C68A007E5E655F6A" +
- "FFFFFFFFFFFFFFFF"
- finiteFieldPrime4096bytes, _ = hex.DecodeString(finiteFieldPrime4096hex)
- finiteFieldPrime4096 = big.NewInt(0).SetBytes(finiteFieldPrime4096bytes)
-
- finiteFieldPrime6144hex = "FFFFFFFFFFFFFFFFADF85458A2BB4A9AAFDC5620273D3CF1" +
- "D8B9C583CE2D3695A9E13641146433FBCC939DCE249B3EF9" +
- "7D2FE363630C75D8F681B202AEC4617AD3DF1ED5D5FD6561" +
- "2433F51F5F066ED0856365553DED1AF3B557135E7F57C935" +
- "984F0C70E0E68B77E2A689DAF3EFE8721DF158A136ADE735" +
- "30ACCA4F483A797ABC0AB182B324FB61D108A94BB2C8E3FB" +
- "B96ADAB760D7F4681D4F42A3DE394DF4AE56EDE76372BB19" +
- "0B07A7C8EE0A6D709E02FCE1CDF7E2ECC03404CD28342F61" +
- "9172FE9CE98583FF8E4F1232EEF28183C3FE3B1B4C6FAD73" +
- "3BB5FCBC2EC22005C58EF1837D1683B2C6F34A26C1B2EFFA" +
- "886B4238611FCFDCDE355B3B6519035BBC34F4DEF99C0238" +
- "61B46FC9D6E6C9077AD91D2691F7F7EE598CB0FAC186D91C" +
- "AEFE130985139270B4130C93BC437944F4FD4452E2D74DD3" +
- "64F2E21E71F54BFF5CAE82AB9C9DF69EE86D2BC522363A0D" +
- "ABC521979B0DEADA1DBF9A42D5C4484E0ABCD06BFA53DDEF" +
- "3C1B20EE3FD59D7C25E41D2B669E1EF16E6F52C3164DF4FB" +
- "7930E9E4E58857B6AC7D5F42D69F6D187763CF1D55034004" +
- "87F55BA57E31CC7A7135C886EFB4318AED6A1E012D9E6832" +
- "A907600A918130C46DC778F971AD0038092999A333CB8B7A" +
- "1A1DB93D7140003C2A4ECEA9F98D0ACC0A8291CDCEC97DCF" +
- "8EC9B55A7F88A46B4DB5A851F44182E1C68A007E5E0DD902" +
- "0BFD64B645036C7A4E677D2C38532A3A23BA4442CAF53EA6" +
- "3BB454329B7624C8917BDD64B1C0FD4CB38E8C334C701C3A" +
- "CDAD0657FCCFEC719B1F5C3E4E46041F388147FB4CFDB477" +
- "A52471F7A9A96910B855322EDB6340D8A00EF092350511E3" +
- "0ABEC1FFF9E3A26E7FB29F8C183023C3587E38DA0077D9B4" +
- "763E4E4B94B2BBC194C6651E77CAF992EEAAC0232A281BF6" +
- "B3A739C1226116820AE8DB5847A67CBEF9C9091B462D538C" +
- "D72B03746AE77F5E62292C311562A846505DC82DB854338A" +
- "E49F5235C95B91178CCF2DD5CACEF403EC9D1810C6272B04" +
- "5B3B71F9DC6B80D63FDD4A8E9ADB1E6962A69526D43161C1" +
- "A41D570D7938DAD4A40E329CD0E40E65FFFFFFFFFFFFFFFF"
- finiteFieldPrime6144bytes, _ = hex.DecodeString(finiteFieldPrime6144hex)
- finiteFieldPrime6144 = big.NewInt(0).SetBytes(finiteFieldPrime6144bytes)
-
- finiteFieldPrime8192hex = "FFFFFFFFFFFFFFFFADF85458A2BB4A9AAFDC5620273D3CF1" +
- "D8B9C583CE2D3695A9E13641146433FBCC939DCE249B3EF9" +
- "7D2FE363630C75D8F681B202AEC4617AD3DF1ED5D5FD6561" +
- "2433F51F5F066ED0856365553DED1AF3B557135E7F57C935" +
- "984F0C70E0E68B77E2A689DAF3EFE8721DF158A136ADE735" +
- "30ACCA4F483A797ABC0AB182B324FB61D108A94BB2C8E3FB" +
- "B96ADAB760D7F4681D4F42A3DE394DF4AE56EDE76372BB19" +
- "0B07A7C8EE0A6D709E02FCE1CDF7E2ECC03404CD28342F61" +
- "9172FE9CE98583FF8E4F1232EEF28183C3FE3B1B4C6FAD73" +
- "3BB5FCBC2EC22005C58EF1837D1683B2C6F34A26C1B2EFFA" +
- "886B4238611FCFDCDE355B3B6519035BBC34F4DEF99C0238" +
- "61B46FC9D6E6C9077AD91D2691F7F7EE598CB0FAC186D91C" +
- "AEFE130985139270B4130C93BC437944F4FD4452E2D74DD3" +
- "64F2E21E71F54BFF5CAE82AB9C9DF69EE86D2BC522363A0D" +
- "ABC521979B0DEADA1DBF9A42D5C4484E0ABCD06BFA53DDEF" +
- "3C1B20EE3FD59D7C25E41D2B669E1EF16E6F52C3164DF4FB" +
- "7930E9E4E58857B6AC7D5F42D69F6D187763CF1D55034004" +
- "87F55BA57E31CC7A7135C886EFB4318AED6A1E012D9E6832" +
- "A907600A918130C46DC778F971AD0038092999A333CB8B7A" +
- "1A1DB93D7140003C2A4ECEA9F98D0ACC0A8291CDCEC97DCF" +
- "8EC9B55A7F88A46B4DB5A851F44182E1C68A007E5E0DD902" +
- "0BFD64B645036C7A4E677D2C38532A3A23BA4442CAF53EA6" +
- "3BB454329B7624C8917BDD64B1C0FD4CB38E8C334C701C3A" +
- "CDAD0657FCCFEC719B1F5C3E4E46041F388147FB4CFDB477" +
- "A52471F7A9A96910B855322EDB6340D8A00EF092350511E3" +
- "0ABEC1FFF9E3A26E7FB29F8C183023C3587E38DA0077D9B4" +
- "763E4E4B94B2BBC194C6651E77CAF992EEAAC0232A281BF6" +
- "B3A739C1226116820AE8DB5847A67CBEF9C9091B462D538C" +
- "D72B03746AE77F5E62292C311562A846505DC82DB854338A" +
- "E49F5235C95B91178CCF2DD5CACEF403EC9D1810C6272B04" +
- "5B3B71F9DC6B80D63FDD4A8E9ADB1E6962A69526D43161C1" +
- "A41D570D7938DAD4A40E329CCFF46AAA36AD004CF600C838" +
- "1E425A31D951AE64FDB23FCEC9509D43687FEB69EDD1CC5E" +
- "0B8CC3BDF64B10EF86B63142A3AB8829555B2F747C932665" +
- "CB2C0F1CC01BD70229388839D2AF05E454504AC78B758282" +
- "2846C0BA35C35F5C59160CC046FD8251541FC68C9C86B022" +
- "BB7099876A460E7451A8A93109703FEE1C217E6C3826E52C" +
- "51AA691E0E423CFC99E9E31650C1217B624816CDAD9A95F9" +
- "D5B8019488D9C0A0A1FE3075A577E23183F81D4A3F2FA457" +
- "1EFC8CE0BA8A4FE8B6855DFE72B0A66EDED2FBABFBE58A30" +
- "FAFABE1C5D71A87E2F741EF8C1FE86FEA6BBFDE530677F0D" +
- "97D11D49F7A8443D0822E506A9F4614E011E2A94838FF88C" +
- "D68C8BB7C5C6424CFFFFFFFFFFFFFFFF"
- finiteFieldPrime8192bytes, _ = hex.DecodeString(finiteFieldPrime8192hex)
- finiteFieldPrime8192 = big.NewInt(0).SetBytes(finiteFieldPrime8192bytes)
-)
diff --git a/vendor/github.com/bifurcation/mint/frame-reader.go b/vendor/github.com/bifurcation/mint/frame-reader.go
deleted file mode 100644
index 54f40ce..0000000
--- a/vendor/github.com/bifurcation/mint/frame-reader.go
+++ /dev/null
@@ -1,98 +0,0 @@
-// Read a generic "framed" packet consisting of a header and a
-// This is used for both TLS Records and TLS Handshake Messages
-package mint
-
-type framing interface {
- headerLen() int
- defaultReadLen() int
- frameLen(hdr []byte) (int, error)
-}
-
-const (
- kFrameReaderHdr = 0
- kFrameReaderBody = 1
-)
-
-type frameNextAction func(f *frameReader) error
-
-type frameReader struct {
- details framing
- state uint8
- header []byte
- body []byte
- working []byte
- writeOffset int
- remainder []byte
-}
-
-func newFrameReader(d framing) *frameReader {
- hdr := make([]byte, d.headerLen())
- return &frameReader{
- d,
- kFrameReaderHdr,
- hdr,
- nil,
- hdr,
- 0,
- nil,
- }
-}
-
-func dup(a []byte) []byte {
- r := make([]byte, len(a))
- copy(r, a)
- return r
-}
-
-func (f *frameReader) needed() int {
- tmp := (len(f.working) - f.writeOffset) - len(f.remainder)
- if tmp < 0 {
- return 0
- }
- return tmp
-}
-
-func (f *frameReader) addChunk(in []byte) {
- // Append to the buffer.
- logf(logTypeFrameReader, "Appending %v", len(in))
- f.remainder = append(f.remainder, in...)
-}
-
-func (f *frameReader) process() (hdr []byte, body []byte, err error) {
- for f.needed() == 0 {
- logf(logTypeFrameReader, "%v bytes needed for next block", len(f.working)-f.writeOffset)
- // Fill out our working block
- copied := copy(f.working[f.writeOffset:], f.remainder)
- f.remainder = f.remainder[copied:]
- f.writeOffset += copied
- if f.writeOffset < len(f.working) {
- logf(logTypeVerbose, "Read would have blocked 1")
- return nil, nil, WouldBlock
- }
- // Reset the write offset, because we are now full.
- f.writeOffset = 0
-
- // We have read a full frame
- if f.state == kFrameReaderBody {
- logf(logTypeFrameReader, "Returning frame hdr=%#x len=%d buffered=%d", f.header, len(f.body), len(f.remainder))
- f.state = kFrameReaderHdr
- f.working = f.header
- return dup(f.header), dup(f.body), nil
- }
-
- // We have read the header
- bodyLen, err := f.details.frameLen(f.header)
- if err != nil {
- return nil, nil, err
- }
- logf(logTypeFrameReader, "Processed header, body len = %v", bodyLen)
-
- f.body = make([]byte, bodyLen)
- f.working = f.body
- f.writeOffset = 0
- f.state = kFrameReaderBody
- }
-
- logf(logTypeVerbose, "Read would have blocked 2")
- return nil, nil, WouldBlock
-}
diff --git a/vendor/github.com/bifurcation/mint/handshake-layer.go b/vendor/github.com/bifurcation/mint/handshake-layer.go
deleted file mode 100644
index 888c5f3..0000000
--- a/vendor/github.com/bifurcation/mint/handshake-layer.go
+++ /dev/null
@@ -1,495 +0,0 @@
-package mint
-
-import (
- "fmt"
- "io"
- "net"
-)
-
-const (
- handshakeHeaderLenTLS = 4 // handshake message header length
- handshakeHeaderLenDTLS = 12 // handshake message header length
- maxHandshakeMessageLen = 1 << 24 // max handshake message length
-)
-
-// struct {
-// HandshakeType msg_type; /* handshake type */
-// uint24 length; /* bytes in message */
-// select (HandshakeType) {
-// ...
-// } body;
-// } Handshake;
-//
-// We do the select{...} part in a different layer, so we treat the
-// actual message body as opaque:
-//
-// struct {
-// HandshakeType msg_type;
-// opaque msg<0..2^24-1>
-// } Handshake;
-//
-type HandshakeMessage struct {
- msgType HandshakeType
- seq uint32
- body []byte
- datagram bool
- offset uint32 // Used for DTLS
- length uint32
- records []uint64 // Used for DTLS
- cipher *cipherState
-}
-
-// Note: This could be done with the `syntax` module, using the simplified
-// syntax as discussed above. However, since this is so simple, there's not
-// much benefit to doing so.
-// When datagram is set, we marshal this as a whole DTLS record.
-func (hm *HandshakeMessage) Marshal() []byte {
- if hm == nil {
- return []byte{}
- }
-
- fragLen := len(hm.body)
- var data []byte
-
- if hm.datagram {
- data = make([]byte, handshakeHeaderLenDTLS+fragLen)
- } else {
- data = make([]byte, handshakeHeaderLenTLS+fragLen)
- }
- tmp := data
- tmp = encodeUint(uint64(hm.msgType), 1, tmp)
- tmp = encodeUint(uint64(hm.length), 3, tmp)
- if hm.datagram {
- tmp = encodeUint(uint64(hm.seq), 2, tmp)
- tmp = encodeUint(uint64(hm.offset), 3, tmp)
- tmp = encodeUint(uint64(fragLen), 3, tmp)
- }
- copy(tmp, hm.body)
- return data
-}
-
-func (hm HandshakeMessage) ToBody() (HandshakeMessageBody, error) {
- logf(logTypeHandshake, "HandshakeMessage.toBody [%d] [%x]", hm.msgType, hm.body)
-
- var body HandshakeMessageBody
- switch hm.msgType {
- case HandshakeTypeClientHello:
- body = new(ClientHelloBody)
- case HandshakeTypeServerHello:
- body = new(ServerHelloBody)
- case HandshakeTypeEncryptedExtensions:
- body = new(EncryptedExtensionsBody)
- case HandshakeTypeCertificate:
- body = new(CertificateBody)
- case HandshakeTypeCertificateRequest:
- body = new(CertificateRequestBody)
- case HandshakeTypeCertificateVerify:
- body = new(CertificateVerifyBody)
- case HandshakeTypeFinished:
- body = &FinishedBody{VerifyDataLen: len(hm.body)}
- case HandshakeTypeNewSessionTicket:
- body = new(NewSessionTicketBody)
- case HandshakeTypeKeyUpdate:
- body = new(KeyUpdateBody)
- case HandshakeTypeEndOfEarlyData:
- body = new(EndOfEarlyDataBody)
- default:
- return body, fmt.Errorf("tls.handshakemessage: Unsupported body type")
- }
-
- err := safeUnmarshal(body, hm.body)
- return body, err
-}
-
-func (h *HandshakeLayer) HandshakeMessageFromBody(body HandshakeMessageBody) (*HandshakeMessage, error) {
- data, err := body.Marshal()
- if err != nil {
- return nil, err
- }
-
- m := &HandshakeMessage{
- msgType: body.Type(),
- body: data,
- seq: h.msgSeq,
- datagram: h.datagram,
- length: uint32(len(data)),
- }
- h.msgSeq++
- return m, nil
-}
-
-type HandshakeLayer struct {
- nonblocking bool // Should we operate in nonblocking mode
- conn *RecordLayer // Used for reading/writing records
- frame *frameReader // The buffered frame reader
- datagram bool // Is this DTLS?
- msgSeq uint32 // The DTLS message sequence number
- queued []*HandshakeMessage // In/out queue
- sent []*HandshakeMessage // Sent messages for DTLS
- maxFragmentLen int
-}
-
-type handshakeLayerFrameDetails struct {
- datagram bool
-}
-
-func (d handshakeLayerFrameDetails) headerLen() int {
- if d.datagram {
- return handshakeHeaderLenDTLS
- }
- return handshakeHeaderLenTLS
-}
-
-func (d handshakeLayerFrameDetails) defaultReadLen() int {
- return d.headerLen() + maxFragmentLen
-}
-
-func (d handshakeLayerFrameDetails) frameLen(hdr []byte) (int, error) {
- logf(logTypeIO, "Header=%x", hdr)
- // The length of this fragment (as opposed to the message)
- // is always the last three bytes for both TLS and DTLS
- val, _ := decodeUint(hdr[len(hdr)-3:], 3)
- return int(val), nil
-}
-
-func NewHandshakeLayerTLS(r *RecordLayer) *HandshakeLayer {
- h := HandshakeLayer{}
- h.conn = r
- h.datagram = false
- h.frame = newFrameReader(&handshakeLayerFrameDetails{false})
- h.maxFragmentLen = maxFragmentLen
- return &h
-}
-
-func NewHandshakeLayerDTLS(r *RecordLayer) *HandshakeLayer {
- h := HandshakeLayer{}
- h.conn = r
- h.datagram = true
- h.frame = newFrameReader(&handshakeLayerFrameDetails{true})
- h.maxFragmentLen = initialMtu // Not quite right
- return &h
-}
-
-func (h *HandshakeLayer) readRecord() error {
- logf(logTypeVerbose, "Trying to read record")
- pt, err := h.conn.ReadRecord()
- if err != nil {
- return err
- }
-
- if pt.contentType != RecordTypeHandshake &&
- pt.contentType != RecordTypeAlert {
- return fmt.Errorf("tls.handshakelayer: Unexpected record type %d", pt.contentType)
- }
-
- if pt.contentType == RecordTypeAlert {
- logf(logTypeIO, "read alert %v", pt.fragment[1])
- if len(pt.fragment) < 2 {
- h.sendAlert(AlertUnexpectedMessage)
- return io.EOF
- }
- return Alert(pt.fragment[1])
- }
-
- h.frame.addChunk(pt.fragment)
-
- return nil
-}
-
-// sendAlert sends a TLS alert message.
-func (h *HandshakeLayer) sendAlert(err Alert) error {
- tmp := make([]byte, 2)
- tmp[0] = AlertLevelError
- tmp[1] = byte(err)
- h.conn.WriteRecord(&TLSPlaintext{
- contentType: RecordTypeAlert,
- fragment: tmp},
- )
-
- // closeNotify is a special case in that it isn't an error:
- if err != AlertCloseNotify {
- return &net.OpError{Op: "local error", Err: err}
- }
- return nil
-}
-
-func (h *HandshakeLayer) noteMessageDelivered(seq uint32) {
- h.msgSeq = seq + 1
- var i int
- var m *HandshakeMessage
- for i, m = range h.queued {
- if m.seq > seq {
- break
- }
- }
- h.queued = h.queued[i:]
-}
-
-func (h *HandshakeLayer) newFragmentReceived(hm *HandshakeMessage) (*HandshakeMessage, error) {
- if hm.seq < h.msgSeq {
- return nil, WouldBlock
- }
-
- if hm.seq == h.msgSeq && hm.offset == 0 && hm.length == uint32(len(hm.body)) {
- // TODO(ekr@rtfm.com): Check the length?
- // This is complete.
- h.noteMessageDelivered(hm.seq)
- return hm, nil
- }
-
- // Now insert sorted.
- var i int
- for i = 0; i < len(h.queued); i++ {
- f := h.queued[i]
- if hm.seq < f.seq {
- break
- }
- if hm.offset < f.offset {
- break
- }
- }
- tmp := make([]*HandshakeMessage, 0, len(h.queued)+1)
- tmp = append(tmp, h.queued[:i]...)
- tmp = append(tmp, hm)
- tmp = append(tmp, h.queued[i:]...)
- h.queued = tmp
-
- return h.checkMessageAvailable()
-}
-
-func (h *HandshakeLayer) checkMessageAvailable() (*HandshakeMessage, error) {
- if len(h.queued) == 0 {
- return nil, WouldBlock
- }
-
- hm := h.queued[0]
- if hm.seq != h.msgSeq {
- return nil, WouldBlock
- }
-
- if hm.seq == h.msgSeq && hm.offset == 0 && hm.length == uint32(len(hm.body)) {
- // TODO(ekr@rtfm.com): Check the length?
- // This is complete.
- h.noteMessageDelivered(hm.seq)
- return hm, nil
- }
-
- // OK, this at least might complete the message.
- end := uint32(0)
- buf := make([]byte, hm.length)
-
- for _, f := range h.queued {
- // Out of fragments
- if f.seq > hm.seq {
- break
- }
-
- if f.length != uint32(len(buf)) {
- return nil, fmt.Errorf("Mismatched DTLS length")
- }
-
- if f.offset > end {
- break
- }
-
- if f.offset+uint32(len(f.body)) > end {
- // OK, this is adding something we don't know about
- copy(buf[f.offset:], f.body)
- end = f.offset + uint32(len(f.body))
- if end == hm.length {
- h2 := *hm
- h2.offset = 0
- h2.body = buf
- h.noteMessageDelivered(hm.seq)
- return &h2, nil
- }
- }
-
- }
-
- return nil, WouldBlock
-}
-
-func (h *HandshakeLayer) ReadMessage() (*HandshakeMessage, error) {
- var hdr, body []byte
- var err error
-
- hm, err := h.checkMessageAvailable()
- if err == nil {
- return hm, err
- }
- if err != WouldBlock {
- return nil, err
- }
- for {
- logf(logTypeVerbose, "ReadMessage() buffered=%v", len(h.frame.remainder))
- if h.frame.needed() > 0 {
- logf(logTypeVerbose, "Trying to read a new record")
- err = h.readRecord()
-
- if err != nil && (h.nonblocking || err != WouldBlock) {
- return nil, err
- }
- }
-
- hdr, body, err = h.frame.process()
- if err == nil {
- break
- }
- if err != nil && (h.nonblocking || err != WouldBlock) {
- return nil, err
- }
- }
-
- logf(logTypeHandshake, "read handshake message")
-
- hm = &HandshakeMessage{}
- hm.msgType = HandshakeType(hdr[0])
- hm.datagram = h.datagram
- hm.body = make([]byte, len(body))
- copy(hm.body, body)
- logf(logTypeHandshake, "Read message with type: %v", hm.msgType)
- if h.datagram {
- tmp, hdr := decodeUint(hdr[1:], 3)
- hm.length = uint32(tmp)
- tmp, hdr = decodeUint(hdr, 2)
- hm.seq = uint32(tmp)
- tmp, hdr = decodeUint(hdr, 3)
- hm.offset = uint32(tmp)
-
- return h.newFragmentReceived(hm)
- }
-
- hm.length = uint32(len(body))
- return hm, nil
-}
-
-func (h *HandshakeLayer) QueueMessage(hm *HandshakeMessage) error {
- hm.cipher = h.conn.cipher
- h.queued = append(h.queued, hm)
- return nil
-}
-
-func (h *HandshakeLayer) SendQueuedMessages() error {
- logf(logTypeHandshake, "Sending outgoing messages")
- err := h.WriteMessages(h.queued)
- h.ClearQueuedMessages() // This isn't going to work for DTLS, but we'll
- // get there.
- return err
-}
-
-func (h *HandshakeLayer) ClearQueuedMessages() {
- logf(logTypeHandshake, "Clearing outgoing hs message queue")
- h.queued = nil
-}
-
-func (h *HandshakeLayer) writeFragment(hm *HandshakeMessage, start int, room int) (int, error) {
- var buf []byte
-
- // Figure out if we're going to want the full header or just
- // the body
- hdrlen := 0
- if hm.datagram {
- hdrlen = handshakeHeaderLenDTLS
- } else if start == 0 {
- hdrlen = handshakeHeaderLenTLS
- }
-
- // Compute the amount of body we can fit in
- room -= hdrlen
- if room == 0 {
- // This works because we are doing one record per
- // message
- panic("Too short max fragment len")
- }
- bodylen := len(hm.body) - start
- if bodylen > room {
- bodylen = room
- }
- body := hm.body[start : start+bodylen]
-
- // Encode the data.
- if hdrlen > 0 {
- hm2 := *hm
- hm2.offset = uint32(start)
- hm2.body = body
- buf = hm2.Marshal()
- } else {
- buf = body
- }
-
- return start + bodylen, h.conn.writeRecordWithPadding(
- &TLSPlaintext{
- contentType: RecordTypeHandshake,
- fragment: buf,
- },
- hm.cipher, 0)
-}
-
-func (h *HandshakeLayer) WriteMessage(hm *HandshakeMessage) error {
- start := int(0)
-
- if len(hm.body) > maxHandshakeMessageLen {
- return fmt.Errorf("Tried to write a handshake message that's too long")
- }
-
- // Always make one pass through to allow EOED (which is empty).
- for {
- var err error
- start, err = h.writeFragment(hm, start, h.maxFragmentLen)
- if err != nil {
- return err
- }
- if start >= len(hm.body) {
- break
- }
- }
-
- return nil
-}
-
-func (h *HandshakeLayer) WriteMessages(hms []*HandshakeMessage) error {
- for _, hm := range hms {
- logf(logTypeHandshake, "WriteMessage [%d] %x", hm.msgType, hm.body)
-
- err := h.WriteMessage(hm)
- if err != nil {
- return err
- }
- }
- return nil
-}
-
-func encodeUint(v uint64, size int, out []byte) []byte {
- for i := size - 1; i >= 0; i-- {
- out[i] = byte(v & 0xff)
- v >>= 8
- }
- return out[size:]
-}
-
-func decodeUint(in []byte, size int) (uint64, []byte) {
- val := uint64(0)
-
- for i := 0; i < size; i++ {
- val <<= 8
- val += uint64(in[i])
- }
- return val, in[size:]
-}
-
-type marshalledPDU interface {
- Marshal() ([]byte, error)
- Unmarshal(data []byte) (int, error)
-}
-
-func safeUnmarshal(pdu marshalledPDU, data []byte) error {
- read, err := pdu.Unmarshal(data)
- if err != nil {
- return err
- }
- if len(data) != read {
- return fmt.Errorf("Invalid encoding: Extra data not consumed")
- }
- return nil
-}
diff --git a/vendor/github.com/bifurcation/mint/handshake-messages.go b/vendor/github.com/bifurcation/mint/handshake-messages.go
deleted file mode 100644
index 5a229f1..0000000
--- a/vendor/github.com/bifurcation/mint/handshake-messages.go
+++ /dev/null
@@ -1,481 +0,0 @@
-package mint
-
-import (
- "bytes"
- "crypto"
- "crypto/x509"
- "encoding/binary"
- "fmt"
-
- "github.com/bifurcation/mint/syntax"
-)
-
-type HandshakeMessageBody interface {
- Type() HandshakeType
- Marshal() ([]byte, error)
- Unmarshal(data []byte) (int, error)
-}
-
-// struct {
-// ProtocolVersion legacy_version = 0x0303; /* TLS v1.2 */
-// Random random;
-// opaque legacy_session_id<0..32>;
-// CipherSuite cipher_suites<2..2^16-2>;
-// opaque legacy_compression_methods<1..2^8-1>;
-// Extension extensions<0..2^16-1>;
-// } ClientHello;
-type ClientHelloBody struct {
- LegacyVersion uint16
- Random [32]byte
- LegacySessionID []byte
- CipherSuites []CipherSuite
- Extensions ExtensionList
-}
-
-type clientHelloBodyInnerTLS struct {
- LegacyVersion uint16
- Random [32]byte
- LegacySessionID []byte `tls:"head=1,max=32"`
- CipherSuites []CipherSuite `tls:"head=2,min=2"`
- LegacyCompressionMethods []byte `tls:"head=1,min=1"`
- Extensions []Extension `tls:"head=2"`
-}
-
-type clientHelloBodyInnerDTLS struct {
- LegacyVersion uint16
- Random [32]byte
- LegacySessionID []byte `tls:"head=1,max=32"`
- EmptyCookie uint8
- CipherSuites []CipherSuite `tls:"head=2,min=2"`
- LegacyCompressionMethods []byte `tls:"head=1,min=1"`
- Extensions []Extension `tls:"head=2"`
-}
-
-func (ch ClientHelloBody) Type() HandshakeType {
- return HandshakeTypeClientHello
-}
-
-func (ch ClientHelloBody) Marshal() ([]byte, error) {
- if ch.LegacyVersion == tls12Version {
- return syntax.Marshal(clientHelloBodyInnerTLS{
- LegacyVersion: ch.LegacyVersion,
- Random: ch.Random,
- LegacySessionID: []byte{},
- CipherSuites: ch.CipherSuites,
- LegacyCompressionMethods: []byte{0},
- Extensions: ch.Extensions,
- })
- } else {
- return syntax.Marshal(clientHelloBodyInnerDTLS{
- LegacyVersion: ch.LegacyVersion,
- Random: ch.Random,
- LegacySessionID: []byte{},
- CipherSuites: ch.CipherSuites,
- LegacyCompressionMethods: []byte{0},
- Extensions: ch.Extensions,
- })
- }
-
-}
-
-func (ch *ClientHelloBody) Unmarshal(data []byte) (int, error) {
- var read int
- var err error
-
- // Note that this might be 0, in which case we do TLS. That
- // makes the tests easier.
- if ch.LegacyVersion != dtls12WireVersion {
- var inner clientHelloBodyInnerTLS
- read, err = syntax.Unmarshal(data, &inner)
- if err != nil {
- return 0, err
- }
-
- if len(inner.LegacyCompressionMethods) != 1 || inner.LegacyCompressionMethods[0] != 0 {
- return 0, fmt.Errorf("tls.clienthello: Invalid compression method")
- }
-
- ch.LegacyVersion = inner.LegacyVersion
- ch.Random = inner.Random
- ch.LegacySessionID = inner.LegacySessionID
- ch.CipherSuites = inner.CipherSuites
- ch.Extensions = inner.Extensions
- } else {
- var inner clientHelloBodyInnerDTLS
- read, err = syntax.Unmarshal(data, &inner)
- if err != nil {
- return 0, err
- }
-
- if inner.EmptyCookie != 0 {
- return 0, fmt.Errorf("tls.clienthello: Invalid cookie")
- }
-
- if len(inner.LegacyCompressionMethods) != 1 || inner.LegacyCompressionMethods[0] != 0 {
- return 0, fmt.Errorf("tls.clienthello: Invalid compression method")
- }
-
- ch.LegacyVersion = inner.LegacyVersion
- ch.Random = inner.Random
- ch.LegacySessionID = inner.LegacySessionID
- ch.CipherSuites = inner.CipherSuites
- ch.Extensions = inner.Extensions
- }
- return read, nil
-}
-
-// TODO: File a spec bug to clarify this
-func (ch ClientHelloBody) Truncated() ([]byte, error) {
- if len(ch.Extensions) == 0 {
- return nil, fmt.Errorf("tls.clienthello.truncate: No extensions")
- }
-
- pskExt := ch.Extensions[len(ch.Extensions)-1]
- if pskExt.ExtensionType != ExtensionTypePreSharedKey {
- return nil, fmt.Errorf("tls.clienthello.truncate: Last extension is not PSK")
- }
-
- body, err := ch.Marshal()
- if err != nil {
- return nil, err
- }
- chm := &HandshakeMessage{
- msgType: ch.Type(),
- body: body,
- length: uint32(len(body)),
- }
- chData := chm.Marshal()
-
- psk := PreSharedKeyExtension{
- HandshakeType: HandshakeTypeClientHello,
- }
- _, err = psk.Unmarshal(pskExt.ExtensionData)
- if err != nil {
- return nil, err
- }
-
- // Marshal just the binders so that we know how much to truncate
- binders := struct {
- Binders []PSKBinderEntry `tls:"head=2,min=33"`
- }{Binders: psk.Binders}
- binderData, _ := syntax.Marshal(binders)
- binderLen := len(binderData)
-
- chLen := len(chData)
- return chData[:chLen-binderLen], nil
-}
-
-// struct {
-// ProtocolVersion legacy_version = 0x0303; /* TLS v1.2 */
-// Random random;
-// opaque legacy_session_id_echo<0..32>;
-// CipherSuite cipher_suite;
-// uint8 legacy_compression_method = 0;
-// Extension extensions<6..2^16-1>;
-// } ServerHello;
-type ServerHelloBody struct {
- Version uint16
- Random [32]byte
- LegacySessionID []byte `tls:"head=1,max=32"`
- CipherSuite CipherSuite
- LegacyCompressionMethod uint8
- Extensions ExtensionList `tls:"head=2"`
-}
-
-func (sh ServerHelloBody) Type() HandshakeType {
- return HandshakeTypeServerHello
-}
-
-func (sh ServerHelloBody) Marshal() ([]byte, error) {
- return syntax.Marshal(sh)
-}
-
-func (sh *ServerHelloBody) Unmarshal(data []byte) (int, error) {
- return syntax.Unmarshal(data, sh)
-}
-
-// struct {
-// opaque verify_data[verify_data_length];
-// } Finished;
-//
-// verifyDataLen is not a field in the TLS struct, but we add it here so
-// that calling code can tell us how much data to expect when we marshal /
-// unmarshal. (We could add this to the marshal/unmarshal methods, but let's
-// try to keep the signature consistent for now.)
-//
-// For similar reasons, we don't use the `syntax` module here, because this
-// struct doesn't map well to standard TLS presentation language concepts.
-//
-// TODO: File a spec bug
-type FinishedBody struct {
- VerifyDataLen int
- VerifyData []byte
-}
-
-func (fin FinishedBody) Type() HandshakeType {
- return HandshakeTypeFinished
-}
-
-func (fin FinishedBody) Marshal() ([]byte, error) {
- if len(fin.VerifyData) != fin.VerifyDataLen {
- return nil, fmt.Errorf("tls.finished: data length mismatch")
- }
-
- body := make([]byte, len(fin.VerifyData))
- copy(body, fin.VerifyData)
- return body, nil
-}
-
-func (fin *FinishedBody) Unmarshal(data []byte) (int, error) {
- if len(data) < fin.VerifyDataLen {
- return 0, fmt.Errorf("tls.finished: Malformed finished; too short")
- }
-
- fin.VerifyData = make([]byte, fin.VerifyDataLen)
- copy(fin.VerifyData, data[:fin.VerifyDataLen])
- return fin.VerifyDataLen, nil
-}
-
-// struct {
-// Extension extensions<0..2^16-1>;
-// } EncryptedExtensions;
-//
-// Marshal() and Unmarshal() are handled by ExtensionList
-type EncryptedExtensionsBody struct {
- Extensions ExtensionList `tls:"head=2"`
-}
-
-func (ee EncryptedExtensionsBody) Type() HandshakeType {
- return HandshakeTypeEncryptedExtensions
-}
-
-func (ee EncryptedExtensionsBody) Marshal() ([]byte, error) {
- return syntax.Marshal(ee)
-}
-
-func (ee *EncryptedExtensionsBody) Unmarshal(data []byte) (int, error) {
- return syntax.Unmarshal(data, ee)
-}
-
-// opaque ASN1Cert<1..2^24-1>;
-//
-// struct {
-// ASN1Cert cert_data;
-// Extension extensions<0..2^16-1>
-// } CertificateEntry;
-//
-// struct {
-// opaque certificate_request_context<0..2^8-1>;
-// CertificateEntry certificate_list<0..2^24-1>;
-// } Certificate;
-type CertificateEntry struct {
- CertData *x509.Certificate
- Extensions ExtensionList
-}
-
-type CertificateBody struct {
- CertificateRequestContext []byte
- CertificateList []CertificateEntry
-}
-
-type certificateEntryInner struct {
- CertData []byte `tls:"head=3,min=1"`
- Extensions ExtensionList `tls:"head=2"`
-}
-
-type certificateBodyInner struct {
- CertificateRequestContext []byte `tls:"head=1"`
- CertificateList []certificateEntryInner `tls:"head=3"`
-}
-
-func (c CertificateBody) Type() HandshakeType {
- return HandshakeTypeCertificate
-}
-
-func (c CertificateBody) Marshal() ([]byte, error) {
- inner := certificateBodyInner{
- CertificateRequestContext: c.CertificateRequestContext,
- CertificateList: make([]certificateEntryInner, len(c.CertificateList)),
- }
-
- for i, entry := range c.CertificateList {
- inner.CertificateList[i] = certificateEntryInner{
- CertData: entry.CertData.Raw,
- Extensions: entry.Extensions,
- }
- }
-
- return syntax.Marshal(inner)
-}
-
-func (c *CertificateBody) Unmarshal(data []byte) (int, error) {
- inner := certificateBodyInner{}
- read, err := syntax.Unmarshal(data, &inner)
- if err != nil {
- return read, err
- }
-
- c.CertificateRequestContext = inner.CertificateRequestContext
- c.CertificateList = make([]CertificateEntry, len(inner.CertificateList))
-
- for i, entry := range inner.CertificateList {
- c.CertificateList[i].CertData, err = x509.ParseCertificate(entry.CertData)
- if err != nil {
- return 0, fmt.Errorf("tls:certificate: Certificate failed to parse: %v", err)
- }
-
- c.CertificateList[i].Extensions = entry.Extensions
- }
-
- return read, nil
-}
-
-// struct {
-// SignatureScheme algorithm;
-// opaque signature<0..2^16-1>;
-// } CertificateVerify;
-type CertificateVerifyBody struct {
- Algorithm SignatureScheme
- Signature []byte `tls:"head=2"`
-}
-
-func (cv CertificateVerifyBody) Type() HandshakeType {
- return HandshakeTypeCertificateVerify
-}
-
-func (cv CertificateVerifyBody) Marshal() ([]byte, error) {
- return syntax.Marshal(cv)
-}
-
-func (cv *CertificateVerifyBody) Unmarshal(data []byte) (int, error) {
- return syntax.Unmarshal(data, cv)
-}
-
-func (cv *CertificateVerifyBody) EncodeSignatureInput(data []byte) []byte {
- // TODO: Change context for client auth
- // TODO: Put this in a const
- const context = "TLS 1.3, server CertificateVerify"
- sigInput := bytes.Repeat([]byte{0x20}, 64)
- sigInput = append(sigInput, []byte(context)...)
- sigInput = append(sigInput, []byte{0}...)
- sigInput = append(sigInput, data...)
- return sigInput
-}
-
-func (cv *CertificateVerifyBody) Sign(privateKey crypto.Signer, handshakeHash []byte) (err error) {
- sigInput := cv.EncodeSignatureInput(handshakeHash)
- cv.Signature, err = sign(cv.Algorithm, privateKey, sigInput)
- logf(logTypeHandshake, "Signed: alg=[%04x] sigInput=[%x], sig=[%x]", cv.Algorithm, sigInput, cv.Signature)
- return
-}
-
-func (cv *CertificateVerifyBody) Verify(publicKey crypto.PublicKey, handshakeHash []byte) error {
- sigInput := cv.EncodeSignatureInput(handshakeHash)
- logf(logTypeHandshake, "About to verify: alg=[%04x] sigInput=[%x], sig=[%x]", cv.Algorithm, sigInput, cv.Signature)
- return verify(cv.Algorithm, publicKey, sigInput, cv.Signature)
-}
-
-// struct {
-// opaque certificate_request_context<0..2^8-1>;
-// Extension extensions<2..2^16-1>;
-// } CertificateRequest;
-type CertificateRequestBody struct {
- CertificateRequestContext []byte `tls:"head=1"`
- Extensions ExtensionList `tls:"head=2"`
-}
-
-func (cr CertificateRequestBody) Type() HandshakeType {
- return HandshakeTypeCertificateRequest
-}
-
-func (cr CertificateRequestBody) Marshal() ([]byte, error) {
- return syntax.Marshal(cr)
-}
-
-func (cr *CertificateRequestBody) Unmarshal(data []byte) (int, error) {
- return syntax.Unmarshal(data, cr)
-}
-
-// struct {
-// uint32 ticket_lifetime;
-// uint32 ticket_age_add;
-// opaque ticket_nonce<1..255>;
-// opaque ticket<1..2^16-1>;
-// Extension extensions<0..2^16-2>;
-// } NewSessionTicket;
-type NewSessionTicketBody struct {
- TicketLifetime uint32
- TicketAgeAdd uint32
- TicketNonce []byte `tls:"head=1,min=1"`
- Ticket []byte `tls:"head=2,min=1"`
- Extensions ExtensionList `tls:"head=2"`
-}
-
-const ticketNonceLen = 16
-
-func NewSessionTicket(ticketLen int, ticketLifetime uint32) (*NewSessionTicketBody, error) {
- buf := make([]byte, 4+ticketNonceLen+ticketLen)
- _, err := prng.Read(buf)
- if err != nil {
- return nil, err
- }
-
- tkt := &NewSessionTicketBody{
- TicketLifetime: ticketLifetime,
- TicketAgeAdd: binary.BigEndian.Uint32(buf[:4]),
- TicketNonce: buf[4 : 4+ticketNonceLen],
- Ticket: buf[4+ticketNonceLen:],
- }
-
- return tkt, err
-}
-
-func (tkt NewSessionTicketBody) Type() HandshakeType {
- return HandshakeTypeNewSessionTicket
-}
-
-func (tkt NewSessionTicketBody) Marshal() ([]byte, error) {
- return syntax.Marshal(tkt)
-}
-
-func (tkt *NewSessionTicketBody) Unmarshal(data []byte) (int, error) {
- return syntax.Unmarshal(data, tkt)
-}
-
-// enum {
-// update_not_requested(0), update_requested(1), (255)
-// } KeyUpdateRequest;
-//
-// struct {
-// KeyUpdateRequest request_update;
-// } KeyUpdate;
-type KeyUpdateBody struct {
- KeyUpdateRequest KeyUpdateRequest
-}
-
-func (ku KeyUpdateBody) Type() HandshakeType {
- return HandshakeTypeKeyUpdate
-}
-
-func (ku KeyUpdateBody) Marshal() ([]byte, error) {
- return syntax.Marshal(ku)
-}
-
-func (ku *KeyUpdateBody) Unmarshal(data []byte) (int, error) {
- return syntax.Unmarshal(data, ku)
-}
-
-// struct {} EndOfEarlyData;
-type EndOfEarlyDataBody struct{}
-
-func (eoed EndOfEarlyDataBody) Type() HandshakeType {
- return HandshakeTypeEndOfEarlyData
-}
-
-func (eoed EndOfEarlyDataBody) Marshal() ([]byte, error) {
- return []byte{}, nil
-}
-
-func (eoed *EndOfEarlyDataBody) Unmarshal(data []byte) (int, error) {
- return 0, nil
-}
diff --git a/vendor/github.com/bifurcation/mint/log.go b/vendor/github.com/bifurcation/mint/log.go
deleted file mode 100644
index 2fba90d..0000000
--- a/vendor/github.com/bifurcation/mint/log.go
+++ /dev/null
@@ -1,55 +0,0 @@
-package mint
-
-import (
- "fmt"
- "log"
- "os"
- "strings"
-)
-
-// We use this environment variable to control logging. It should be a
-// comma-separated list of log tags (see below) or "*" to enable all logging.
-const logConfigVar = "MINT_LOG"
-
-// Pre-defined log types
-const (
- logTypeCrypto = "crypto"
- logTypeHandshake = "handshake"
- logTypeNegotiation = "negotiation"
- logTypeIO = "io"
- logTypeFrameReader = "frame"
- logTypeVerbose = "verbose"
-)
-
-var (
- logFunction = log.Printf
- logAll = false
- logSettings = map[string]bool{}
-)
-
-func init() {
- parseLogEnv(os.Environ())
-}
-
-func parseLogEnv(env []string) {
- for _, stmt := range env {
- if strings.HasPrefix(stmt, logConfigVar+"=") {
- val := stmt[len(logConfigVar)+1:]
-
- if val == "*" {
- logAll = true
- } else {
- for _, t := range strings.Split(val, ",") {
- logSettings[t] = true
- }
- }
- }
- }
-}
-
-func logf(tag string, format string, args ...interface{}) {
- if logAll || logSettings[tag] {
- fullFormat := fmt.Sprintf("[%s] %s", tag, format)
- logFunction(fullFormat, args...)
- }
-}
diff --git a/vendor/github.com/bifurcation/mint/mint.svg b/vendor/github.com/bifurcation/mint/mint.svg
deleted file mode 100644
index ae32703..0000000
--- a/vendor/github.com/bifurcation/mint/mint.svg
+++ /dev/null
@@ -1,101 +0,0 @@
-
-
-
-
diff --git a/vendor/github.com/bifurcation/mint/negotiation.go b/vendor/github.com/bifurcation/mint/negotiation.go
deleted file mode 100644
index 4697bbc..0000000
--- a/vendor/github.com/bifurcation/mint/negotiation.go
+++ /dev/null
@@ -1,217 +0,0 @@
-package mint
-
-import (
- "bytes"
- "encoding/hex"
- "fmt"
- "time"
-)
-
-func VersionNegotiation(offered, supported []uint16) (bool, uint16) {
- for _, offeredVersion := range offered {
- for _, supportedVersion := range supported {
- logf(logTypeHandshake, "[server] version offered by client [%04x] <> [%04x]", offeredVersion, supportedVersion)
- if offeredVersion == supportedVersion {
- // XXX: Should probably be highest supported version, but for now, we
- // only support one version, so it doesn't really matter.
- return true, offeredVersion
- }
- }
- }
-
- return false, 0
-}
-
-func DHNegotiation(keyShares []KeyShareEntry, groups []NamedGroup) (bool, NamedGroup, []byte, []byte) {
- for _, share := range keyShares {
- for _, group := range groups {
- if group != share.Group {
- continue
- }
-
- pub, priv, err := newKeyShare(share.Group)
- if err != nil {
- // If we encounter an error, just keep looking
- continue
- }
-
- dhSecret, err := keyAgreement(share.Group, share.KeyExchange, priv)
- if err != nil {
- // If we encounter an error, just keep looking
- continue
- }
-
- return true, group, pub, dhSecret
- }
- }
-
- return false, 0, nil, nil
-}
-
-const (
- ticketAgeTolerance uint32 = 5 * 1000 // five seconds in milliseconds
-)
-
-func PSKNegotiation(identities []PSKIdentity, binders []PSKBinderEntry, context []byte, psks PreSharedKeyCache) (bool, int, *PreSharedKey, CipherSuiteParams, error) {
- logf(logTypeNegotiation, "Negotiating PSK offered=[%d] supported=[%d]", len(identities), psks.Size())
- for i, id := range identities {
- identityHex := hex.EncodeToString(id.Identity)
-
- psk, ok := psks.Get(identityHex)
- if !ok {
- logf(logTypeNegotiation, "No PSK for identity %x", identityHex)
- continue
- }
-
- // For resumption, make sure the ticket age is correct
- if psk.IsResumption {
- extTicketAge := id.ObfuscatedTicketAge - psk.TicketAgeAdd
- knownTicketAge := uint32(time.Since(psk.ReceivedAt) / time.Millisecond)
- ticketAgeDelta := knownTicketAge - extTicketAge
- if knownTicketAge < extTicketAge {
- ticketAgeDelta = extTicketAge - knownTicketAge
- }
- if ticketAgeDelta > ticketAgeTolerance {
- logf(logTypeNegotiation, "WARNING potential replay [%x]", psk.Identity)
- logf(logTypeNegotiation, "Ticket age exceeds tolerance |%d - %d| = [%d] > [%d]",
- extTicketAge, knownTicketAge, ticketAgeDelta, ticketAgeTolerance)
- return false, 0, nil, CipherSuiteParams{}, fmt.Errorf("WARNING Potential replay for identity %x", psk.Identity)
- }
- }
-
- params, ok := cipherSuiteMap[psk.CipherSuite]
- if !ok {
- err := fmt.Errorf("tls.cryptoinit: Unsupported ciphersuite from PSK [%04x]", psk.CipherSuite)
- return false, 0, nil, CipherSuiteParams{}, err
- }
-
- // Compute binder
- binderLabel := labelExternalBinder
- if psk.IsResumption {
- binderLabel = labelResumptionBinder
- }
-
- h0 := params.Hash.New().Sum(nil)
- zero := bytes.Repeat([]byte{0}, params.Hash.Size())
- earlySecret := HkdfExtract(params.Hash, zero, psk.Key)
- binderKey := deriveSecret(params, earlySecret, binderLabel, h0)
-
- // context = ClientHello[truncated]
- // context = ClientHello1 + HelloRetryRequest + ClientHello2[truncated]
- ctxHash := params.Hash.New()
- ctxHash.Write(context)
-
- binder := computeFinishedData(params, binderKey, ctxHash.Sum(nil))
- if !bytes.Equal(binder, binders[i].Binder) {
- logf(logTypeNegotiation, "Binder check failed for identity %x; [%x] != [%x]", psk.Identity, binder, binders[i].Binder)
- return false, 0, nil, CipherSuiteParams{}, fmt.Errorf("Binder check failed identity %x", psk.Identity)
- }
-
- logf(logTypeNegotiation, "Using PSK with identity %x", psk.Identity)
- return true, i, &psk, params, nil
- }
-
- logf(logTypeNegotiation, "Failed to find a usable PSK")
- return false, 0, nil, CipherSuiteParams{}, nil
-}
-
-func PSKModeNegotiation(canDoDH, canDoPSK bool, modes []PSKKeyExchangeMode) (bool, bool) {
- logf(logTypeNegotiation, "Negotiating PSK modes [%v] [%v] [%+v]", canDoDH, canDoPSK, modes)
- dhAllowed := false
- dhRequired := true
- for _, mode := range modes {
- dhAllowed = dhAllowed || (mode == PSKModeDHEKE)
- dhRequired = dhRequired && (mode == PSKModeDHEKE)
- }
-
- // Use PSK if we can meet DH requirement and modes were provided
- usingPSK := canDoPSK && (!dhRequired || canDoDH) && (len(modes) > 0)
-
- // Use DH if allowed
- usingDH := canDoDH && (dhAllowed || !usingPSK)
-
- logf(logTypeNegotiation, "Results of PSK mode negotiation: usingDH=[%v] usingPSK=[%v]", usingDH, usingPSK)
- return usingDH, usingPSK
-}
-
-func CertificateSelection(serverName *string, signatureSchemes []SignatureScheme, certs []*Certificate) (*Certificate, SignatureScheme, error) {
- // Select for server name if provided
- candidates := certs
- if serverName != nil {
- candidatesByName := []*Certificate{}
- for _, cert := range certs {
- for _, name := range cert.Chain[0].DNSNames {
- if len(*serverName) > 0 && name == *serverName {
- candidatesByName = append(candidatesByName, cert)
- }
- }
- }
-
- if len(candidatesByName) == 0 {
- return nil, 0, fmt.Errorf("No certificates available for server name: %s", *serverName)
- }
-
- candidates = candidatesByName
- }
-
- // Select for signature scheme
- for _, cert := range candidates {
- for _, scheme := range signatureSchemes {
- if !schemeValidForKey(scheme, cert.PrivateKey) {
- continue
- }
-
- return cert, scheme, nil
- }
- }
-
- return nil, 0, fmt.Errorf("No certificates compatible with signature schemes")
-}
-
-func EarlyDataNegotiation(usingPSK, gotEarlyData, allowEarlyData bool) bool {
- usingEarlyData := gotEarlyData && usingPSK && allowEarlyData
- logf(logTypeNegotiation, "Early data negotiation (%v, %v, %v) => %v", usingPSK, gotEarlyData, allowEarlyData, usingEarlyData)
- return usingEarlyData
-}
-
-func CipherSuiteNegotiation(psk *PreSharedKey, offered, supported []CipherSuite) (CipherSuite, error) {
- for _, s1 := range offered {
- if psk != nil {
- if s1 == psk.CipherSuite {
- return s1, nil
- }
- continue
- }
-
- for _, s2 := range supported {
- if s1 == s2 {
- return s1, nil
- }
- }
- }
-
- return 0, fmt.Errorf("No overlap between offered and supproted ciphersuites (psk? [%v])", psk != nil)
-}
-
-func ALPNNegotiation(psk *PreSharedKey, offered, supported []string) (string, error) {
- for _, p1 := range offered {
- if psk != nil {
- if p1 != psk.NextProto {
- continue
- }
- }
-
- for _, p2 := range supported {
- if p1 == p2 {
- return p1, nil
- }
- }
- }
-
- // If the client offers ALPN on resumption, it must match the earlier one
- var err error
- if psk != nil && psk.IsResumption && (len(offered) > 0) {
- err = fmt.Errorf("ALPN for PSK not provided")
- }
- return "", err
-}
diff --git a/vendor/github.com/bifurcation/mint/record-layer.go b/vendor/github.com/bifurcation/mint/record-layer.go
deleted file mode 100644
index 761a868..0000000
--- a/vendor/github.com/bifurcation/mint/record-layer.go
+++ /dev/null
@@ -1,393 +0,0 @@
-package mint
-
-import (
- "bytes"
- "crypto/cipher"
- "fmt"
- "io"
- "sync"
-)
-
-const (
- sequenceNumberLen = 8 // sequence number length
- recordHeaderLenTLS = 5 // record header length (TLS)
- recordHeaderLenDTLS = 13 // record header length (DTLS)
- maxFragmentLen = 1 << 14 // max number of bytes in a record
-)
-
-type DecryptError string
-
-func (err DecryptError) Error() string {
- return string(err)
-}
-
-// struct {
-// ContentType type;
-// ProtocolVersion record_version [0301 for CH, 0303 for others]
-// uint16 length;
-// opaque fragment[TLSPlaintext.length];
-// } TLSPlaintext;
-type TLSPlaintext struct {
- // Omitted: record_version (static)
- // Omitted: length (computed from fragment)
- contentType RecordType
- fragment []byte
-}
-
-type cipherState struct {
- epoch Epoch // DTLS epoch
- ivLength int // Length of the seq and nonce fields
- seq []byte // Zero-padded sequence number
- iv []byte // Buffer for the IV
- cipher cipher.AEAD // AEAD cipher
-}
-
-type RecordLayer struct {
- sync.Mutex
-
- version uint16 // The current version number
- conn io.ReadWriter // The underlying connection
- frame *frameReader // The buffered frame reader
- nextData []byte // The next record to send
- cachedRecord *TLSPlaintext // Last record read, cached to enable "peek"
- cachedError error // Error on the last record read
-
- cipher *cipherState
- datagram bool
-}
-
-type recordLayerFrameDetails struct {
- datagram bool
-}
-
-func (d recordLayerFrameDetails) headerLen() int {
- if d.datagram {
- return recordHeaderLenDTLS
- }
- return recordHeaderLenTLS
-}
-
-func (d recordLayerFrameDetails) defaultReadLen() int {
- return d.headerLen() + maxFragmentLen
-}
-
-func (d recordLayerFrameDetails) frameLen(hdr []byte) (int, error) {
- return (int(hdr[d.headerLen()-2]) << 8) | int(hdr[d.headerLen()-1]), nil
-}
-
-func newCipherStateNull() *cipherState {
- return &cipherState{EpochClear, 0, bytes.Repeat([]byte{0}, sequenceNumberLen), nil, nil}
-}
-
-func newCipherStateAead(epoch Epoch, factory aeadFactory, key []byte, iv []byte) (*cipherState, error) {
- cipher, err := factory(key)
- if err != nil {
- return nil, err
- }
-
- return &cipherState{epoch, len(iv), bytes.Repeat([]byte{0}, sequenceNumberLen), iv, cipher}, nil
-}
-
-func NewRecordLayerTLS(conn io.ReadWriter) *RecordLayer {
- r := RecordLayer{}
- r.conn = conn
- r.frame = newFrameReader(recordLayerFrameDetails{false})
- r.cipher = newCipherStateNull()
- r.version = tls10Version
- return &r
-}
-
-func NewRecordLayerDTLS(conn io.ReadWriter) *RecordLayer {
- r := RecordLayer{}
- r.conn = conn
- r.frame = newFrameReader(recordLayerFrameDetails{true})
- r.cipher = newCipherStateNull()
- r.datagram = true
- return &r
-}
-
-func (r *RecordLayer) SetVersion(v uint16) {
- r.version = v
-}
-
-func (r *RecordLayer) Rekey(epoch Epoch, factory aeadFactory, key []byte, iv []byte) error {
- cipher, err := newCipherStateAead(epoch, factory, key, iv)
- if err != nil {
- return err
- }
- r.cipher = cipher
- return nil
-}
-
-func (c *cipherState) formatSeq(datagram bool) []byte {
- seq := append([]byte{}, c.seq...)
- if datagram {
- seq[0] = byte(c.epoch >> 8)
- seq[1] = byte(c.epoch & 0xff)
- }
- return seq
-}
-
-func (c *cipherState) computeNonce(seq []byte) []byte {
- nonce := make([]byte, len(c.iv))
- copy(nonce, c.iv)
-
- offset := len(c.iv) - len(seq)
- for i, b := range seq {
- nonce[i+offset] ^= b
- }
-
- return nonce
-}
-
-func (c *cipherState) incrementSequenceNumber() {
- var i int
- for i = len(c.seq) - 1; i >= 0; i-- {
- c.seq[i]++
- if c.seq[i] != 0 {
- break
- }
- }
-
- if i < 0 {
- // Not allowed to let sequence number wrap.
- // Instead, must renegotiate before it does.
- // Not likely enough to bother.
- // TODO(ekr@rtfm.com): Check for DTLS here
- // because the limit is sooner.
- panic("TLS: sequence number wraparound")
- }
-}
-
-func (c *cipherState) overhead() int {
- if c.cipher == nil {
- return 0
- }
- return c.cipher.Overhead()
-}
-
-func (r *RecordLayer) encrypt(cipher *cipherState, seq []byte, pt *TLSPlaintext, padLen int) *TLSPlaintext {
- logf(logTypeIO, "Encrypt seq=[%x]", seq)
- // Expand the fragment to hold contentType, padding, and overhead
- originalLen := len(pt.fragment)
- plaintextLen := originalLen + 1 + padLen
- ciphertextLen := plaintextLen + cipher.overhead()
-
- // Assemble the revised plaintext
- out := &TLSPlaintext{
-
- contentType: RecordTypeApplicationData,
- fragment: make([]byte, ciphertextLen),
- }
- copy(out.fragment, pt.fragment)
- out.fragment[originalLen] = byte(pt.contentType)
- for i := 1; i <= padLen; i++ {
- out.fragment[originalLen+i] = 0
- }
-
- // Encrypt the fragment
- payload := out.fragment[:plaintextLen]
- cipher.cipher.Seal(payload[:0], cipher.computeNonce(seq), payload, nil)
- return out
-}
-
-func (r *RecordLayer) decrypt(pt *TLSPlaintext, seq []byte) (*TLSPlaintext, int, error) {
- logf(logTypeIO, "Decrypt seq=[%x]", seq)
- if len(pt.fragment) < r.cipher.overhead() {
- msg := fmt.Sprintf("tls.record.decrypt: Record too short [%d] < [%d]", len(pt.fragment), r.cipher.overhead())
- return nil, 0, DecryptError(msg)
- }
-
- decryptLen := len(pt.fragment) - r.cipher.overhead()
- out := &TLSPlaintext{
- contentType: pt.contentType,
- fragment: make([]byte, decryptLen),
- }
-
- // Decrypt
- _, err := r.cipher.cipher.Open(out.fragment[:0], r.cipher.computeNonce(seq), pt.fragment, nil)
- if err != nil {
- logf(logTypeIO, "AEAD decryption failure [%x]", pt)
- return nil, 0, DecryptError("tls.record.decrypt: AEAD decrypt failed")
- }
-
- // Find the padding boundary
- padLen := 0
- for ; padLen < decryptLen+1 && out.fragment[decryptLen-padLen-1] == 0; padLen++ {
- }
-
- // Transfer the content type
- newLen := decryptLen - padLen - 1
- out.contentType = RecordType(out.fragment[newLen])
-
- // Truncate the message to remove contentType, padding, overhead
- out.fragment = out.fragment[:newLen]
- return out, padLen, nil
-}
-
-func (r *RecordLayer) PeekRecordType(block bool) (RecordType, error) {
- var pt *TLSPlaintext
- var err error
-
- for {
- pt, err = r.nextRecord()
- if err == nil {
- break
- }
- if !block || err != WouldBlock {
- return 0, err
- }
- }
- return pt.contentType, nil
-}
-
-func (r *RecordLayer) ReadRecord() (*TLSPlaintext, error) {
- pt, err := r.nextRecord()
-
- // Consume the cached record if there was one
- r.cachedRecord = nil
- r.cachedError = nil
-
- return pt, err
-}
-
-func (r *RecordLayer) nextRecord() (*TLSPlaintext, error) {
- cipher := r.cipher
- if r.cachedRecord != nil {
- logf(logTypeIO, "Returning cached record")
- return r.cachedRecord, r.cachedError
- }
-
- // Loop until one of three things happens:
- //
- // 1. We get a frame
- // 2. We try to read off the socket and get nothing, in which case
- // return WouldBlock
- // 3. We get an error.
- err := WouldBlock
- var header, body []byte
-
- for err != nil {
- if r.frame.needed() > 0 {
- buf := make([]byte, r.frame.details.headerLen()+maxFragmentLen)
- n, err := r.conn.Read(buf)
- if err != nil {
- logf(logTypeIO, "Error reading, %v", err)
- return nil, err
- }
-
- if n == 0 {
- return nil, WouldBlock
- }
-
- logf(logTypeIO, "Read %v bytes", n)
-
- buf = buf[:n]
- r.frame.addChunk(buf)
- }
-
- header, body, err = r.frame.process()
- // Loop around on WouldBlock to see if some
- // data is now available.
- if err != nil && err != WouldBlock {
- return nil, err
- }
- }
-
- pt := &TLSPlaintext{}
- // Validate content type
- switch RecordType(header[0]) {
- default:
- return nil, fmt.Errorf("tls.record: Unknown content type %02x", header[0])
- case RecordTypeAlert, RecordTypeHandshake, RecordTypeApplicationData:
- pt.contentType = RecordType(header[0])
- }
-
- // Validate version
- if !allowWrongVersionNumber && (header[1] != 0x03 || header[2] != 0x01) {
- return nil, fmt.Errorf("tls.record: Invalid version %02x%02x", header[1], header[2])
- }
-
- // Validate size < max
- size := (int(header[len(header)-2]) << 8) + int(header[len(header)-1])
-
- if size > maxFragmentLen+256 {
- return nil, fmt.Errorf("tls.record: Ciphertext size too big")
- }
-
- pt.fragment = make([]byte, size)
- copy(pt.fragment, body)
-
- // Attempt to decrypt fragment
- if cipher.cipher != nil {
- seq := cipher.seq
- if r.datagram {
- seq = header[3:11]
- }
- // TODO(ekr@rtfm.com): Handle the wrong epoch.
- // TODO(ekr@rtfm.com): Handle duplicates.
- logf(logTypeIO, "RecordLayer.ReadRecord epoch=[%s] seq=[%x] [%d] ciphertext=[%x]", cipher.epoch.label(), seq, pt.contentType, pt.fragment)
- pt, _, err = r.decrypt(pt, seq)
- if err != nil {
- logf(logTypeIO, "Decryption failed")
- return nil, err
- }
- }
-
- // Check that plaintext length is not too long
- if len(pt.fragment) > maxFragmentLen {
- return nil, fmt.Errorf("tls.record: Plaintext size too big")
- }
-
- logf(logTypeIO, "RecordLayer.ReadRecord [%d] [%x]", pt.contentType, pt.fragment)
-
- r.cachedRecord = pt
- cipher.incrementSequenceNumber()
- return pt, nil
-}
-
-func (r *RecordLayer) WriteRecord(pt *TLSPlaintext) error {
- return r.writeRecordWithPadding(pt, r.cipher, 0)
-}
-
-func (r *RecordLayer) WriteRecordWithPadding(pt *TLSPlaintext, padLen int) error {
- return r.writeRecordWithPadding(pt, r.cipher, padLen)
-}
-
-func (r *RecordLayer) writeRecordWithPadding(pt *TLSPlaintext, cipher *cipherState, padLen int) error {
- seq := cipher.formatSeq(r.datagram)
-
- if cipher.cipher != nil {
- logf(logTypeIO, "RecordLayer.WriteRecord epoch=[%s] seq=[%x] [%d] plaintext=[%x]", cipher.epoch.label(), cipher.seq, pt.contentType, pt.fragment)
- pt = r.encrypt(cipher, seq, pt, padLen)
- } else if padLen > 0 {
- return fmt.Errorf("tls.record: Padding can only be done on encrypted records")
- }
-
- if len(pt.fragment) > maxFragmentLen {
- return fmt.Errorf("tls.record: Record size too big")
- }
-
- length := len(pt.fragment)
- var header []byte
-
- if !r.datagram {
- header = []byte{byte(pt.contentType),
- byte(r.version >> 8), byte(r.version & 0xff),
- byte(length >> 8), byte(length)}
- } else {
- version := dtlsConvertVersion(r.version)
- header = []byte{byte(pt.contentType),
- byte(version >> 8), byte(version & 0xff),
- seq[0], seq[1], seq[2], seq[3],
- seq[4], seq[5], seq[6], seq[7],
- byte(length >> 8), byte(length)}
- }
- record := append(header, pt.fragment...)
-
- logf(logTypeIO, "RecordLayer.WriteRecord epoch=[%s] seq=[%x] [%d] ciphertext=[%x]", cipher.epoch.label(), cipher.seq, pt.contentType, pt.fragment)
-
- cipher.incrementSequenceNumber()
- _, err := r.conn.Write(record)
- return err
-}
diff --git a/vendor/github.com/bifurcation/mint/server-state-machine.go b/vendor/github.com/bifurcation/mint/server-state-machine.go
deleted file mode 100644
index 6c2d7b3..0000000
--- a/vendor/github.com/bifurcation/mint/server-state-machine.go
+++ /dev/null
@@ -1,1090 +0,0 @@
-package mint
-
-import (
- "bytes"
- "fmt"
- "hash"
- "reflect"
-
- "github.com/bifurcation/mint/syntax"
-)
-
-// Server State Machine
-//
-// START <-----+
-// Recv ClientHello | | Send HelloRetryRequest
-// v |
-// RECVD_CH ----+
-// | Select parameters
-// | Send ServerHello
-// v
-// NEGOTIATED
-// | Send EncryptedExtensions
-// | [Send CertificateRequest]
-// Can send | [Send Certificate + CertificateVerify]
-// app data --> | Send Finished
-// after +--------+--------+
-// here No 0-RTT | | 0-RTT
-// | v
-// | WAIT_EOED <---+
-// | Recv | | | Recv
-// | EndOfEarlyData | | | early data
-// | | +-----+
-// +> WAIT_FLIGHT2 <-+
-// |
-// +--------+--------+
-// No auth | | Client auth
-// | |
-// | v
-// | WAIT_CERT
-// | Recv | | Recv Certificate
-// | empty | v
-// | Certificate | WAIT_CV
-// | | | Recv
-// | v | CertificateVerify
-// +-> WAIT_FINISHED <---+
-// | Recv Finished
-// v
-// CONNECTED
-//
-// NB: Not using state RECVD_CH
-//
-// State Instructions
-// START {}
-// NEGOTIATED Send(SH); [RekeyIn;] RekeyOut; Send(EE); [Send(CertReq);] [Send(Cert); Send(CV)]
-// WAIT_EOED RekeyIn;
-// WAIT_FLIGHT2 {}
-// WAIT_CERT_CR {}
-// WAIT_CERT {}
-// WAIT_CV {}
-// WAIT_FINISHED RekeyIn; RekeyOut;
-// CONNECTED StoreTicket || (RekeyIn; [RekeyOut])
-
-// A cookie can be sent to the client in a HRR.
-type cookie struct {
- // The CipherSuite that was selected when the client sent the first ClientHello
- CipherSuite CipherSuite
- ClientHelloHash []byte `tls:"head=2"`
-
- // The ApplicationCookie can be provided by the application (by setting a Config.CookieHandler)
- ApplicationCookie []byte `tls:"head=2"`
-}
-
-type ServerStateStart struct {
- Caps Capabilities
- conn *Conn
- hsCtx HandshakeContext
-}
-
-var _ HandshakeState = &ServerStateStart{}
-
-func (state ServerStateStart) State() State {
- return StateServerStart
-}
-
-func (state ServerStateStart) Next(hr handshakeMessageReader) (HandshakeState, []HandshakeAction, Alert) {
- hm, alert := hr.ReadMessage()
- if alert != AlertNoAlert {
- return nil, nil, alert
- }
- if hm == nil || hm.msgType != HandshakeTypeClientHello {
- logf(logTypeHandshake, "[ServerStateStart] unexpected message")
- return nil, nil, AlertUnexpectedMessage
- }
-
- ch := &ClientHelloBody{LegacyVersion: wireVersion(state.hsCtx.hIn)}
- if err := safeUnmarshal(ch, hm.body); err != nil {
- logf(logTypeHandshake, "[ServerStateStart] Error decoding message: %v", err)
- return nil, nil, AlertDecodeError
- }
-
- // We are strict about these things because we only support 1.3
- if ch.LegacyVersion != wireVersion(state.hsCtx.hIn) {
- logf(logTypeHandshake, "[ServerStateStart] Invalid version number: %v", ch.LegacyVersion)
- return nil, nil, AlertDecodeError
- }
-
- clientHello := hm
- connParams := ConnectionParameters{}
-
- supportedVersions := &SupportedVersionsExtension{HandshakeType: HandshakeTypeClientHello}
- serverName := new(ServerNameExtension)
- supportedGroups := new(SupportedGroupsExtension)
- signatureAlgorithms := new(SignatureAlgorithmsExtension)
- clientKeyShares := &KeyShareExtension{HandshakeType: HandshakeTypeClientHello}
- clientPSK := &PreSharedKeyExtension{HandshakeType: HandshakeTypeClientHello}
- clientEarlyData := &EarlyDataExtension{}
- clientALPN := new(ALPNExtension)
- clientPSKModes := new(PSKKeyExchangeModesExtension)
- clientCookie := new(CookieExtension)
-
- // Handle external extensions.
- if state.Caps.ExtensionHandler != nil {
- err := state.Caps.ExtensionHandler.Receive(HandshakeTypeClientHello, &ch.Extensions)
- if err != nil {
- logf(logTypeHandshake, "[ServerStateStart] Error running external extension handler [%v]", err)
- return nil, nil, AlertInternalError
- }
- }
-
- foundExts, err := ch.Extensions.Parse(
- []ExtensionBody{
- supportedVersions,
- serverName,
- supportedGroups,
- signatureAlgorithms,
- clientEarlyData,
- clientKeyShares,
- clientPSK,
- clientALPN,
- clientPSKModes,
- clientCookie,
- })
-
- if err != nil {
- logf(logTypeHandshake, "[ServerStateStart] Error parsing extensions [%v]", err)
- return nil, nil, AlertDecodeError
- }
-
- clientSentCookie := len(clientCookie.Cookie) > 0
-
- if foundExts[ExtensionTypeServerName] {
- connParams.ServerName = string(*serverName)
- }
-
- // If the client didn't send supportedVersions or doesn't support 1.3,
- // then we're done here.
- if !foundExts[ExtensionTypeSupportedVersions] {
- logf(logTypeHandshake, "[ServerStateStart] Client did not send supported_versions")
- return nil, nil, AlertProtocolVersion
- }
- versionOK, _ := VersionNegotiation(supportedVersions.Versions, []uint16{supportedVersion})
- if !versionOK {
- logf(logTypeHandshake, "[ServerStateStart] Client does not support the same version")
- return nil, nil, AlertProtocolVersion
- }
-
- // The client sent a cookie. So this is probably the second ClientHello (sent as a response to a HRR)
- var firstClientHello *HandshakeMessage
- var initialCipherSuite CipherSuiteParams // the cipher suite that was negotiated when sending the HelloRetryRequest
- if clientSentCookie {
- plainCookie, err := state.Caps.CookieProtector.DecodeToken(clientCookie.Cookie)
- if err != nil {
- logf(logTypeHandshake, fmt.Sprintf("[ServerStateStart] Error decoding token [%v]", err))
- return nil, nil, AlertDecryptError
- }
- cookie := &cookie{}
- if rb, err := syntax.Unmarshal(plainCookie, cookie); err != nil && rb != len(plainCookie) { // this should never happen
- logf(logTypeHandshake, fmt.Sprintf("[ServerStateStart] Error unmarshaling cookie [%v]", err))
- return nil, nil, AlertInternalError
- }
- // restore the hash of initial ClientHello from the cookie
- firstClientHello = &HandshakeMessage{
- msgType: HandshakeTypeMessageHash,
- body: cookie.ClientHelloHash,
- }
- // have the application validate its part of the cookie
- if state.Caps.CookieHandler != nil && !state.Caps.CookieHandler.Validate(state.conn, cookie.ApplicationCookie) {
- logf(logTypeHandshake, "[ServerStateStart] Cookie mismatch")
- return nil, nil, AlertAccessDenied
- }
- var ok bool
- initialCipherSuite, ok = cipherSuiteMap[cookie.CipherSuite]
- if !ok {
- logf(logTypeHandshake, fmt.Sprintf("[ServerStateStart] Cookie contained invalid cipher suite: %#x", cookie.CipherSuite))
- return nil, nil, AlertInternalError
- }
- }
-
- if len(ch.LegacySessionID) != 0 && len(ch.LegacySessionID) != 32 {
- logf(logTypeHandshake, "[ServerStateStart] invalid session ID")
- return nil, nil, AlertIllegalParameter
- }
-
- // Figure out if we can do DH
- canDoDH, dhGroup, dhPublic, dhSecret := DHNegotiation(clientKeyShares.Shares, state.Caps.Groups)
-
- // Figure out if we can do PSK
- var canDoPSK bool
- var selectedPSK int
- var params CipherSuiteParams
- var psk *PreSharedKey
- if len(clientPSK.Identities) > 0 {
- contextBase := []byte{}
- if clientSentCookie {
- contextBase = append(contextBase, firstClientHello.Marshal()...)
- // fill in the cookie sent by the client. Needed to calculate the correct hash
- cookieExt := &CookieExtension{Cookie: clientCookie.Cookie}
- hrr, err := state.generateHRR(params.Suite,
- ch.LegacySessionID, cookieExt)
- if err != nil {
- return nil, nil, AlertInternalError
- }
- contextBase = append(contextBase, hrr.Marshal()...)
- }
- chTrunc, err := ch.Truncated()
- if err != nil {
- logf(logTypeHandshake, "[ServerStateStart] Error computing truncated ClientHello [%v]", err)
- return nil, nil, AlertDecodeError
- }
- context := append(contextBase, chTrunc...)
-
- canDoPSK, selectedPSK, psk, params, err = PSKNegotiation(clientPSK.Identities, clientPSK.Binders, context, state.Caps.PSKs)
- if err != nil {
- logf(logTypeHandshake, "[ServerStateStart] Error in PSK negotiation [%v]", err)
- return nil, nil, AlertInternalError
- }
- if clientSentCookie && initialCipherSuite.Suite != params.Suite {
- logf(logTypeHandshake, "[ServerStateStart] Would have selected a different CipherSuite after receiving the client's Cookie")
- return nil, nil, AlertInternalError
- }
- }
-
- // Figure out if we actually should do DH / PSK
- connParams.UsingDH, connParams.UsingPSK = PSKModeNegotiation(canDoDH, canDoPSK, clientPSKModes.KEModes)
-
- // Select a ciphersuite
- connParams.CipherSuite, err = CipherSuiteNegotiation(psk, ch.CipherSuites, state.Caps.CipherSuites)
- if err != nil {
- logf(logTypeHandshake, "[ServerStateStart] No common ciphersuite found [%v]", err)
- return nil, nil, AlertHandshakeFailure
- }
- if clientSentCookie && initialCipherSuite.Suite != connParams.CipherSuite {
- logf(logTypeHandshake, "[ServerStateStart] Would have selected a different CipherSuite after receiving the client's Cookie")
- return nil, nil, AlertInternalError
- }
-
- var helloRetryRequest *HandshakeMessage
- if state.Caps.RequireCookie {
- // Send a cookie if required
- // NB: Need to do this here because it's after ciphersuite selection, which
- // has to be after PSK selection.
- var shouldSendHRR bool
- var cookieExt *CookieExtension
- if !clientSentCookie { // this is the first ClientHello that we receive
- var appCookie []byte
- if state.Caps.CookieHandler == nil { // if Config.RequireCookie is set, but no CookieHandler was provided, we definitely need to send a cookie
- shouldSendHRR = true
- } else { // if the CookieHandler was set, we just send a cookie when the application provides one
- var err error
- appCookie, err = state.Caps.CookieHandler.Generate(state.conn)
- if err != nil {
- logf(logTypeHandshake, "[ServerStateStart] Error generating cookie [%v]", err)
- return nil, nil, AlertInternalError
- }
- shouldSendHRR = appCookie != nil
- }
- if shouldSendHRR {
- params := cipherSuiteMap[connParams.CipherSuite]
- h := params.Hash.New()
- h.Write(clientHello.Marshal())
- plainCookie, err := syntax.Marshal(cookie{
- CipherSuite: connParams.CipherSuite,
- ClientHelloHash: h.Sum(nil),
- ApplicationCookie: appCookie,
- })
- if err != nil {
- logf(logTypeHandshake, "[ServerStateStart] Error marshalling cookie [%v]", err)
- return nil, nil, AlertInternalError
- }
- cookieData, err := state.Caps.CookieProtector.NewToken(plainCookie)
- if err != nil {
- logf(logTypeHandshake, "[ServerStateStart] Error encoding cookie [%v]", err)
- return nil, nil, AlertInternalError
- }
- cookieExt = &CookieExtension{Cookie: cookieData}
- }
- } else {
- cookieExt = &CookieExtension{Cookie: clientCookie.Cookie}
- }
-
- // Generate a HRR. We will need it in both of the two cases:
- // 1. We need to send a Cookie. Then this HRR will be sent on the wire
- // 2. We need to validate a cookie. Then we need its hash
- // Ignoring errors because everything here is newly constructed, so there
- // shouldn't be marshal errors
- if shouldSendHRR || clientSentCookie {
- helloRetryRequest, err = state.generateHRR(connParams.CipherSuite,
- ch.LegacySessionID, cookieExt)
- if err != nil {
- return nil, nil, AlertInternalError
- }
- }
-
- if shouldSendHRR {
- toSend := []HandshakeAction{
- QueueHandshakeMessage{helloRetryRequest},
- SendQueuedHandshake{},
- }
- logf(logTypeHandshake, "[ServerStateStart] -> [ServerStateStart]")
- return state, toSend, AlertStatelessRetry
- }
- }
-
- // If we've got no entropy to make keys from, fail
- if !connParams.UsingDH && !connParams.UsingPSK {
- logf(logTypeHandshake, "[ServerStateStart] Neither DH nor PSK negotiated")
- return nil, nil, AlertHandshakeFailure
- }
-
- var pskSecret []byte
- var cert *Certificate
- var certScheme SignatureScheme
- if connParams.UsingPSK {
- pskSecret = psk.Key
- } else {
- psk = nil
-
- // If we're not using a PSK mode, then we need to have certain extensions
- if !(foundExts[ExtensionTypeServerName] &&
- foundExts[ExtensionTypeSupportedGroups] &&
- foundExts[ExtensionTypeSignatureAlgorithms]) {
- logf(logTypeHandshake, "[ServerStateStart] Insufficient extensions (%v)", foundExts)
- return nil, nil, AlertMissingExtension
- }
-
- // Select a certificate
- name := string(*serverName)
- var err error
- cert, certScheme, err = CertificateSelection(&name, signatureAlgorithms.Algorithms, state.Caps.Certificates)
- if err != nil {
- logf(logTypeHandshake, "[ServerStateStart] No appropriate certificate found [%v]", err)
- return nil, nil, AlertAccessDenied
- }
- }
-
- if !connParams.UsingDH {
- dhSecret = nil
- }
-
- // Figure out if we're going to do early data
- var clientEarlyTrafficSecret []byte
- connParams.ClientSendingEarlyData = foundExts[ExtensionTypeEarlyData]
- connParams.UsingEarlyData = EarlyDataNegotiation(connParams.UsingPSK, foundExts[ExtensionTypeEarlyData], state.Caps.AllowEarlyData)
- if connParams.UsingEarlyData {
- h := params.Hash.New()
- h.Write(clientHello.Marshal())
- chHash := h.Sum(nil)
-
- zero := bytes.Repeat([]byte{0}, params.Hash.Size())
- earlySecret := HkdfExtract(params.Hash, zero, pskSecret)
- clientEarlyTrafficSecret = deriveSecret(params, earlySecret, labelEarlyTrafficSecret, chHash)
- }
-
- // Select a next protocol
- connParams.NextProto, err = ALPNNegotiation(psk, clientALPN.Protocols, state.Caps.NextProtos)
- if err != nil {
- logf(logTypeHandshake, "[ServerStateStart] No common application-layer protocol found [%v]", err)
- return nil, nil, AlertNoApplicationProtocol
- }
-
- logf(logTypeHandshake, "[ServerStateStart] -> [ServerStateNegotiated]")
- state.hsCtx.SetVersion(tls12Version) // Everything after this should be 1.2.
- return ServerStateNegotiated{
- Caps: state.Caps,
- Params: connParams,
- hsCtx: state.hsCtx,
- dhGroup: dhGroup,
- dhPublic: dhPublic,
- dhSecret: dhSecret,
- pskSecret: pskSecret,
- selectedPSK: selectedPSK,
- cert: cert,
- certScheme: certScheme,
- legacySessionId: ch.LegacySessionID,
- clientEarlyTrafficSecret: clientEarlyTrafficSecret,
-
- firstClientHello: firstClientHello,
- helloRetryRequest: helloRetryRequest,
- clientHello: clientHello,
- }, nil, AlertNoAlert
-}
-
-func (state *ServerStateStart) generateHRR(cs CipherSuite, legacySessionId []byte,
- cookieExt *CookieExtension) (*HandshakeMessage, error) {
- var helloRetryRequest *HandshakeMessage
- hrr := &ServerHelloBody{
- Version: tls12Version,
- Random: hrrRandomSentinel,
- CipherSuite: cs,
- LegacySessionID: legacySessionId,
- LegacyCompressionMethod: 0,
- }
-
- sv := &SupportedVersionsExtension{
- HandshakeType: HandshakeTypeServerHello,
- Versions: []uint16{supportedVersion},
- }
-
- if err := hrr.Extensions.Add(sv); err != nil {
- logf(logTypeHandshake, "[ServerStateStart] Error adding SupportedVersion [%v]", err)
- return nil, err
- }
-
- if err := hrr.Extensions.Add(cookieExt); err != nil {
- logf(logTypeHandshake, "[ServerStateStart] Error adding CookieExtension [%v]", err)
- return nil, err
- }
- // Run the external extension handler.
- if state.Caps.ExtensionHandler != nil {
- err := state.Caps.ExtensionHandler.Send(HandshakeTypeHelloRetryRequest, &hrr.Extensions)
- if err != nil {
- logf(logTypeHandshake, "[ServerStateStart] Error running external extension sender [%v]", err)
- return nil, err
- }
- }
- helloRetryRequest, err := state.hsCtx.hOut.HandshakeMessageFromBody(hrr)
- if err != nil {
- logf(logTypeHandshake, "[ServerStateStart] Error marshaling HRR [%v]", err)
- return nil, err
- }
- return helloRetryRequest, nil
-}
-
-type ServerStateNegotiated struct {
- Caps Capabilities
- Params ConnectionParameters
- hsCtx HandshakeContext
- dhGroup NamedGroup
- dhPublic []byte
- dhSecret []byte
- pskSecret []byte
- clientEarlyTrafficSecret []byte
- selectedPSK int
- cert *Certificate
- certScheme SignatureScheme
- legacySessionId []byte
- firstClientHello *HandshakeMessage
- helloRetryRequest *HandshakeMessage
- clientHello *HandshakeMessage
-}
-
-var _ HandshakeState = &ServerStateNegotiated{}
-
-func (state ServerStateNegotiated) State() State {
- return StateServerNegotiated
-}
-
-func (state ServerStateNegotiated) Next(_ handshakeMessageReader) (HandshakeState, []HandshakeAction, Alert) {
- // Create the ServerHello
- sh := &ServerHelloBody{
- Version: tls12Version,
- CipherSuite: state.Params.CipherSuite,
- LegacySessionID: state.legacySessionId,
- LegacyCompressionMethod: 0,
- }
- if _, err := prng.Read(sh.Random[:]); err != nil {
- logf(logTypeHandshake, "[ServerStateNegotiated] Error creating server random [%v]", err)
- return nil, nil, AlertInternalError
- }
-
- err := sh.Extensions.Add(&SupportedVersionsExtension{
- HandshakeType: HandshakeTypeServerHello,
- Versions: []uint16{supportedVersion},
- })
- if err != nil {
- logf(logTypeHandshake, "[ServerStateNegotiated] Error adding supported_versions extension [%v]", err)
- return nil, nil, AlertInternalError
- }
- if state.Params.UsingDH {
- logf(logTypeHandshake, "[ServerStateNegotiated] sending DH extension")
- err := sh.Extensions.Add(&KeyShareExtension{
- HandshakeType: HandshakeTypeServerHello,
- Shares: []KeyShareEntry{{Group: state.dhGroup, KeyExchange: state.dhPublic}},
- })
- if err != nil {
- logf(logTypeHandshake, "[ServerStateNegotiated] Error adding key_shares extension [%v]", err)
- return nil, nil, AlertInternalError
- }
- }
- if state.Params.UsingPSK {
- logf(logTypeHandshake, "[ServerStateNegotiated] sending PSK extension")
- err := sh.Extensions.Add(&PreSharedKeyExtension{
- HandshakeType: HandshakeTypeServerHello,
- SelectedIdentity: uint16(state.selectedPSK),
- })
- if err != nil {
- logf(logTypeHandshake, "[ServerStateNegotiated] Error adding PSK extension [%v]", err)
- return nil, nil, AlertInternalError
- }
- }
-
- // Run the external extension handler.
- if state.Caps.ExtensionHandler != nil {
- err := state.Caps.ExtensionHandler.Send(HandshakeTypeServerHello, &sh.Extensions)
- if err != nil {
- logf(logTypeHandshake, "[ServerStateNegotiated] Error running external extension sender [%v]", err)
- return nil, nil, AlertInternalError
- }
- }
-
- serverHello, err := state.hsCtx.hOut.HandshakeMessageFromBody(sh)
- if err != nil {
- logf(logTypeHandshake, "[ServerStateNegotiated] Error marshaling ServerHello [%v]", err)
- return nil, nil, AlertInternalError
- }
-
- // Look up crypto params
- params, ok := cipherSuiteMap[sh.CipherSuite]
- if !ok {
- logf(logTypeCrypto, "Unsupported ciphersuite [%04x]", sh.CipherSuite)
- return nil, nil, AlertHandshakeFailure
- }
-
- // Start up the handshake hash
- handshakeHash := params.Hash.New()
- handshakeHash.Write(state.firstClientHello.Marshal())
- handshakeHash.Write(state.helloRetryRequest.Marshal())
- handshakeHash.Write(state.clientHello.Marshal())
- handshakeHash.Write(serverHello.Marshal())
-
- // Compute handshake secrets
- zero := bytes.Repeat([]byte{0}, params.Hash.Size())
-
- var earlySecret []byte
- if state.Params.UsingPSK {
- earlySecret = HkdfExtract(params.Hash, zero, state.pskSecret)
- } else {
- earlySecret = HkdfExtract(params.Hash, zero, zero)
- }
-
- if state.dhSecret == nil {
- state.dhSecret = zero
- }
-
- h0 := params.Hash.New().Sum(nil)
- h2 := handshakeHash.Sum(nil)
- preHandshakeSecret := deriveSecret(params, earlySecret, labelDerived, h0)
- handshakeSecret := HkdfExtract(params.Hash, preHandshakeSecret, state.dhSecret)
- clientHandshakeTrafficSecret := deriveSecret(params, handshakeSecret, labelClientHandshakeTrafficSecret, h2)
- serverHandshakeTrafficSecret := deriveSecret(params, handshakeSecret, labelServerHandshakeTrafficSecret, h2)
- preMasterSecret := deriveSecret(params, handshakeSecret, labelDerived, h0)
- masterSecret := HkdfExtract(params.Hash, preMasterSecret, zero)
-
- logf(logTypeCrypto, "early secret (init!): [%d] %x", len(earlySecret), earlySecret)
- logf(logTypeCrypto, "handshake secret: [%d] %x", len(handshakeSecret), handshakeSecret)
- logf(logTypeCrypto, "client handshake traffic secret: [%d] %x", len(clientHandshakeTrafficSecret), clientHandshakeTrafficSecret)
- logf(logTypeCrypto, "server handshake traffic secret: [%d] %x", len(serverHandshakeTrafficSecret), serverHandshakeTrafficSecret)
- logf(logTypeCrypto, "master secret: [%d] %x", len(masterSecret), masterSecret)
-
- clientHandshakeKeys := makeTrafficKeys(params, clientHandshakeTrafficSecret)
- serverHandshakeKeys := makeTrafficKeys(params, serverHandshakeTrafficSecret)
-
- // Send an EncryptedExtensions message (even if it's empty)
- eeList := ExtensionList{}
- if state.Params.NextProto != "" {
- logf(logTypeHandshake, "[server] sending ALPN extension")
- err = eeList.Add(&ALPNExtension{Protocols: []string{state.Params.NextProto}})
- if err != nil {
- logf(logTypeHandshake, "[ServerStateNegotiated] Error adding ALPN to EncryptedExtensions [%v]", err)
- return nil, nil, AlertInternalError
- }
- }
- if state.Params.UsingEarlyData {
- logf(logTypeHandshake, "[server] sending EDI extension")
- err = eeList.Add(&EarlyDataExtension{})
- if err != nil {
- logf(logTypeHandshake, "[ServerStateNegotiated] Error adding EDI to EncryptedExtensions [%v]", err)
- return nil, nil, AlertInternalError
- }
- }
- ee := &EncryptedExtensionsBody{eeList}
-
- // Run the external extension handler.
- if state.Caps.ExtensionHandler != nil {
- err := state.Caps.ExtensionHandler.Send(HandshakeTypeEncryptedExtensions, &ee.Extensions)
- if err != nil {
- logf(logTypeHandshake, "[ServerStateNegotiated] Error running external extension sender [%v]", err)
- return nil, nil, AlertInternalError
- }
- }
-
- eem, err := state.hsCtx.hOut.HandshakeMessageFromBody(ee)
- if err != nil {
- logf(logTypeHandshake, "[ServerStateNegotiated] Error marshaling EncryptedExtensions [%v]", err)
- return nil, nil, AlertInternalError
- }
-
- handshakeHash.Write(eem.Marshal())
-
- toSend := []HandshakeAction{
- QueueHandshakeMessage{serverHello},
- RekeyOut{epoch: EpochHandshakeData, KeySet: serverHandshakeKeys},
- QueueHandshakeMessage{eem},
- }
-
- // Authenticate with a certificate if required
- if !state.Params.UsingPSK {
- // Send a CertificateRequest message if we want client auth
- if state.Caps.RequireClientAuth {
- state.Params.UsingClientAuth = true
-
- // XXX: We don't support sending any constraints besides a list of
- // supported signature algorithms
- cr := &CertificateRequestBody{}
- schemes := &SignatureAlgorithmsExtension{Algorithms: state.Caps.SignatureSchemes}
- err := cr.Extensions.Add(schemes)
- if err != nil {
- logf(logTypeHandshake, "[ServerStateNegotiated] Error adding supported schemes to CertificateRequest [%v]", err)
- return nil, nil, AlertInternalError
- }
-
- crm, err := state.hsCtx.hOut.HandshakeMessageFromBody(cr)
- if err != nil {
- logf(logTypeHandshake, "[ServerStateNegotiated] Error marshaling CertificateRequest [%v]", err)
- return nil, nil, AlertInternalError
- }
- //TODO state.state.serverCertificateRequest = cr
-
- toSend = append(toSend, QueueHandshakeMessage{crm})
- handshakeHash.Write(crm.Marshal())
- }
-
- // Create and send Certificate, CertificateVerify
- certificate := &CertificateBody{
- CertificateList: make([]CertificateEntry, len(state.cert.Chain)),
- }
- for i, entry := range state.cert.Chain {
- certificate.CertificateList[i] = CertificateEntry{CertData: entry}
- }
- certm, err := state.hsCtx.hOut.HandshakeMessageFromBody(certificate)
- if err != nil {
- logf(logTypeHandshake, "[ServerStateNegotiated] Error marshaling Certificate [%v]", err)
- return nil, nil, AlertInternalError
- }
-
- toSend = append(toSend, QueueHandshakeMessage{certm})
- handshakeHash.Write(certm.Marshal())
-
- certificateVerify := &CertificateVerifyBody{Algorithm: state.certScheme}
- logf(logTypeHandshake, "Creating CertVerify: %04x %v", state.certScheme, params.Hash)
-
- hcv := handshakeHash.Sum(nil)
- logf(logTypeHandshake, "Handshake Hash to be verified: [%d] %x", len(hcv), hcv)
-
- err = certificateVerify.Sign(state.cert.PrivateKey, hcv)
- if err != nil {
- logf(logTypeHandshake, "[ServerStateNegotiated] Error signing CertificateVerify [%v]", err)
- return nil, nil, AlertInternalError
- }
- certvm, err := state.hsCtx.hOut.HandshakeMessageFromBody(certificateVerify)
- if err != nil {
- logf(logTypeHandshake, "[ServerStateNegotiated] Error marshaling CertificateVerify [%v]", err)
- return nil, nil, AlertInternalError
- }
-
- toSend = append(toSend, QueueHandshakeMessage{certvm})
- handshakeHash.Write(certvm.Marshal())
- }
-
- // Compute secrets resulting from the server's first flight
- h3 := handshakeHash.Sum(nil)
- logf(logTypeCrypto, "handshake hash 3 [%d] %x", len(h3), h3)
- logf(logTypeCrypto, "handshake hash for server Finished: [%d] %x", len(h3), h3)
-
- serverFinishedData := computeFinishedData(params, serverHandshakeTrafficSecret, h3)
- logf(logTypeCrypto, "server finished data: [%d] %x", len(serverFinishedData), serverFinishedData)
-
- // Assemble the Finished message
- fin := &FinishedBody{
- VerifyDataLen: len(serverFinishedData),
- VerifyData: serverFinishedData,
- }
- finm, _ := state.hsCtx.hOut.HandshakeMessageFromBody(fin)
-
- toSend = append(toSend, QueueHandshakeMessage{finm})
- handshakeHash.Write(finm.Marshal())
- toSend = append(toSend, SendQueuedHandshake{})
-
- // Compute traffic secrets
- h4 := handshakeHash.Sum(nil)
- logf(logTypeCrypto, "handshake hash 4 [%d] %x", len(h4), h4)
- logf(logTypeCrypto, "handshake hash for server Finished: [%d] %x", len(h4), h4)
-
- clientTrafficSecret := deriveSecret(params, masterSecret, labelClientApplicationTrafficSecret, h4)
- serverTrafficSecret := deriveSecret(params, masterSecret, labelServerApplicationTrafficSecret, h4)
- logf(logTypeCrypto, "client traffic secret: [%d] %x", len(clientTrafficSecret), clientTrafficSecret)
- logf(logTypeCrypto, "server traffic secret: [%d] %x", len(serverTrafficSecret), serverTrafficSecret)
-
- serverTrafficKeys := makeTrafficKeys(params, serverTrafficSecret)
- toSend = append(toSend, RekeyOut{epoch: EpochApplicationData, KeySet: serverTrafficKeys})
-
- exporterSecret := deriveSecret(params, masterSecret, labelExporterSecret, h4)
- logf(logTypeCrypto, "server exporter secret: [%d] %x", len(exporterSecret), exporterSecret)
-
- if state.Params.UsingEarlyData {
- clientEarlyTrafficKeys := makeTrafficKeys(params, state.clientEarlyTrafficSecret)
-
- logf(logTypeHandshake, "[ServerStateNegotiated] -> [ServerStateWaitEOED]")
- nextState := ServerStateWaitEOED{
- AuthCertificate: state.Caps.AuthCertificate,
- Params: state.Params,
- hsCtx: state.hsCtx,
- cryptoParams: params,
- handshakeHash: handshakeHash,
- masterSecret: masterSecret,
- clientHandshakeTrafficSecret: clientHandshakeTrafficSecret,
- clientTrafficSecret: clientTrafficSecret,
- serverTrafficSecret: serverTrafficSecret,
- exporterSecret: exporterSecret,
- }
- toSend = append(toSend, []HandshakeAction{
- RekeyIn{epoch: EpochEarlyData, KeySet: clientEarlyTrafficKeys},
- ReadEarlyData{},
- }...)
- return nextState, toSend, AlertNoAlert
- }
-
- logf(logTypeHandshake, "[ServerStateNegotiated] -> [ServerStateWaitFlight2]")
- toSend = append(toSend, []HandshakeAction{
- RekeyIn{epoch: EpochHandshakeData, KeySet: clientHandshakeKeys},
- ReadPastEarlyData{},
- }...)
- waitFlight2 := ServerStateWaitFlight2{
- AuthCertificate: state.Caps.AuthCertificate,
- Params: state.Params,
- hsCtx: state.hsCtx,
- cryptoParams: params,
- handshakeHash: handshakeHash,
- masterSecret: masterSecret,
- clientHandshakeTrafficSecret: clientHandshakeTrafficSecret,
- clientTrafficSecret: clientTrafficSecret,
- serverTrafficSecret: serverTrafficSecret,
- exporterSecret: exporterSecret,
- }
- return waitFlight2, toSend, AlertNoAlert
-}
-
-type ServerStateWaitEOED struct {
- AuthCertificate func(chain []CertificateEntry) error
- Params ConnectionParameters
- hsCtx HandshakeContext
- cryptoParams CipherSuiteParams
- masterSecret []byte
- clientHandshakeTrafficSecret []byte
- handshakeHash hash.Hash
- clientTrafficSecret []byte
- serverTrafficSecret []byte
- exporterSecret []byte
-}
-
-var _ HandshakeState = &ServerStateWaitEOED{}
-
-func (state ServerStateWaitEOED) State() State {
- return StateServerWaitEOED
-}
-
-func (state ServerStateWaitEOED) Next(hr handshakeMessageReader) (HandshakeState, []HandshakeAction, Alert) {
- hm, alert := hr.ReadMessage()
- if alert != AlertNoAlert {
- return nil, nil, alert
- }
- if hm == nil || hm.msgType != HandshakeTypeEndOfEarlyData {
- logf(logTypeHandshake, "[ServerStateWaitEOED] Unexpected message")
- return nil, nil, AlertUnexpectedMessage
- }
-
- if len(hm.body) > 0 {
- logf(logTypeHandshake, "[ServerStateWaitEOED] Error decoding message [len > 0]")
- return nil, nil, AlertDecodeError
- }
-
- state.handshakeHash.Write(hm.Marshal())
-
- clientHandshakeKeys := makeTrafficKeys(state.cryptoParams, state.clientHandshakeTrafficSecret)
-
- logf(logTypeHandshake, "[ServerStateWaitEOED] -> [ServerStateWaitFlight2]")
- toSend := []HandshakeAction{
- RekeyIn{epoch: EpochHandshakeData, KeySet: clientHandshakeKeys},
- }
- waitFlight2 := ServerStateWaitFlight2{
- AuthCertificate: state.AuthCertificate,
- Params: state.Params,
- hsCtx: state.hsCtx,
- cryptoParams: state.cryptoParams,
- handshakeHash: state.handshakeHash,
- masterSecret: state.masterSecret,
- clientHandshakeTrafficSecret: state.clientHandshakeTrafficSecret,
- clientTrafficSecret: state.clientTrafficSecret,
- serverTrafficSecret: state.serverTrafficSecret,
- exporterSecret: state.exporterSecret,
- }
- return waitFlight2, toSend, AlertNoAlert
-}
-
-type ServerStateWaitFlight2 struct {
- AuthCertificate func(chain []CertificateEntry) error
- Params ConnectionParameters
- hsCtx HandshakeContext
- cryptoParams CipherSuiteParams
- masterSecret []byte
- clientHandshakeTrafficSecret []byte
- handshakeHash hash.Hash
- clientTrafficSecret []byte
- serverTrafficSecret []byte
- exporterSecret []byte
-}
-
-var _ HandshakeState = &ServerStateWaitFlight2{}
-
-func (state ServerStateWaitFlight2) State() State {
- return StateServerWaitFlight2
-}
-
-func (state ServerStateWaitFlight2) Next(_ handshakeMessageReader) (HandshakeState, []HandshakeAction, Alert) {
- if state.Params.UsingClientAuth {
- logf(logTypeHandshake, "[ServerStateWaitFlight2] -> [ServerStateWaitCert]")
- nextState := ServerStateWaitCert{
- AuthCertificate: state.AuthCertificate,
- Params: state.Params,
- hsCtx: state.hsCtx,
- cryptoParams: state.cryptoParams,
- handshakeHash: state.handshakeHash,
- masterSecret: state.masterSecret,
- clientHandshakeTrafficSecret: state.clientHandshakeTrafficSecret,
- clientTrafficSecret: state.clientTrafficSecret,
- serverTrafficSecret: state.serverTrafficSecret,
- exporterSecret: state.exporterSecret,
- }
- return nextState, nil, AlertNoAlert
- }
-
- logf(logTypeHandshake, "[ServerStateWaitFlight2] -> [ServerStateWaitFinished]")
- nextState := ServerStateWaitFinished{
- Params: state.Params,
- hsCtx: state.hsCtx,
- cryptoParams: state.cryptoParams,
- masterSecret: state.masterSecret,
- clientHandshakeTrafficSecret: state.clientHandshakeTrafficSecret,
- handshakeHash: state.handshakeHash,
- clientTrafficSecret: state.clientTrafficSecret,
- serverTrafficSecret: state.serverTrafficSecret,
- exporterSecret: state.exporterSecret,
- }
- return nextState, nil, AlertNoAlert
-}
-
-type ServerStateWaitCert struct {
- AuthCertificate func(chain []CertificateEntry) error
- Params ConnectionParameters
- hsCtx HandshakeContext
- cryptoParams CipherSuiteParams
- masterSecret []byte
- clientHandshakeTrafficSecret []byte
- handshakeHash hash.Hash
- clientTrafficSecret []byte
- serverTrafficSecret []byte
- exporterSecret []byte
-}
-
-var _ HandshakeState = &ServerStateWaitCert{}
-
-func (state ServerStateWaitCert) State() State {
- return StateServerWaitCert
-}
-
-func (state ServerStateWaitCert) Next(hr handshakeMessageReader) (HandshakeState, []HandshakeAction, Alert) {
- hm, alert := hr.ReadMessage()
- if alert != AlertNoAlert {
- return nil, nil, alert
- }
- if hm == nil || hm.msgType != HandshakeTypeCertificate {
- logf(logTypeHandshake, "[ServerStateWaitCert] Unexpected message")
- return nil, nil, AlertUnexpectedMessage
- }
-
- cert := &CertificateBody{}
- if err := safeUnmarshal(cert, hm.body); err != nil {
- logf(logTypeHandshake, "[ServerStateWaitCert] Unexpected message")
- return nil, nil, AlertDecodeError
- }
-
- state.handshakeHash.Write(hm.Marshal())
-
- if len(cert.CertificateList) == 0 {
- logf(logTypeHandshake, "[ServerStateWaitCert] WARNING client did not provide a certificate")
-
- logf(logTypeHandshake, "[ServerStateWaitCert] -> [ServerStateWaitFinished]")
- nextState := ServerStateWaitFinished{
- Params: state.Params,
- hsCtx: state.hsCtx,
- cryptoParams: state.cryptoParams,
- masterSecret: state.masterSecret,
- clientHandshakeTrafficSecret: state.clientHandshakeTrafficSecret,
- handshakeHash: state.handshakeHash,
- clientTrafficSecret: state.clientTrafficSecret,
- serverTrafficSecret: state.serverTrafficSecret,
- exporterSecret: state.exporterSecret,
- }
- return nextState, nil, AlertNoAlert
- }
-
- logf(logTypeHandshake, "[ServerStateWaitCert] -> [ServerStateWaitCV]")
- nextState := ServerStateWaitCV{
- AuthCertificate: state.AuthCertificate,
- Params: state.Params,
- hsCtx: state.hsCtx,
- cryptoParams: state.cryptoParams,
- masterSecret: state.masterSecret,
- clientHandshakeTrafficSecret: state.clientHandshakeTrafficSecret,
- handshakeHash: state.handshakeHash,
- clientTrafficSecret: state.clientTrafficSecret,
- serverTrafficSecret: state.serverTrafficSecret,
- clientCertificate: cert,
- exporterSecret: state.exporterSecret,
- }
- return nextState, nil, AlertNoAlert
-}
-
-type ServerStateWaitCV struct {
- AuthCertificate func(chain []CertificateEntry) error
- Params ConnectionParameters
- hsCtx HandshakeContext
- cryptoParams CipherSuiteParams
-
- masterSecret []byte
- clientHandshakeTrafficSecret []byte
-
- handshakeHash hash.Hash
- clientTrafficSecret []byte
- serverTrafficSecret []byte
- exporterSecret []byte
-
- clientCertificate *CertificateBody
-}
-
-var _ HandshakeState = &ServerStateWaitCV{}
-
-func (state ServerStateWaitCV) State() State {
- return StateServerWaitCV
-}
-
-func (state ServerStateWaitCV) Next(hr handshakeMessageReader) (HandshakeState, []HandshakeAction, Alert) {
- hm, alert := hr.ReadMessage()
- if alert != AlertNoAlert {
- return nil, nil, alert
- }
- if hm == nil || hm.msgType != HandshakeTypeCertificateVerify {
- logf(logTypeHandshake, "[ServerStateWaitCV] Unexpected message [%+v] [%s]", hm, reflect.TypeOf(hm))
- return nil, nil, AlertUnexpectedMessage
- }
-
- certVerify := &CertificateVerifyBody{}
- if err := safeUnmarshal(certVerify, hm.body); err != nil {
- logf(logTypeHandshake, "[ServerStateWaitCert] Error decoding message %v", err)
- return nil, nil, AlertDecodeError
- }
-
- // Verify client signature over handshake hash
- hcv := state.handshakeHash.Sum(nil)
- logf(logTypeHandshake, "Handshake Hash to be verified: [%d] %x", len(hcv), hcv)
-
- clientPublicKey := state.clientCertificate.CertificateList[0].CertData.PublicKey
- if err := certVerify.Verify(clientPublicKey, hcv); err != nil {
- logf(logTypeHandshake, "[ServerStateWaitCV] Failure in client auth verification [%v]", err)
- return nil, nil, AlertHandshakeFailure
- }
-
- if state.AuthCertificate != nil {
- err := state.AuthCertificate(state.clientCertificate.CertificateList)
- if err != nil {
- logf(logTypeHandshake, "[ServerStateWaitCV] Application rejected client certificate")
- return nil, nil, AlertBadCertificate
- }
- } else {
- logf(logTypeHandshake, "[ServerStateWaitCV] WARNING: No verification of client certificate")
- }
-
- // If it passes, record the certificateVerify in the transcript hash
- state.handshakeHash.Write(hm.Marshal())
-
- logf(logTypeHandshake, "[ServerStateWaitCV] -> [ServerStateWaitFinished]")
- nextState := ServerStateWaitFinished{
- Params: state.Params,
- hsCtx: state.hsCtx,
- cryptoParams: state.cryptoParams,
- masterSecret: state.masterSecret,
- clientHandshakeTrafficSecret: state.clientHandshakeTrafficSecret,
- handshakeHash: state.handshakeHash,
- clientTrafficSecret: state.clientTrafficSecret,
- serverTrafficSecret: state.serverTrafficSecret,
- exporterSecret: state.exporterSecret,
- }
- return nextState, nil, AlertNoAlert
-}
-
-type ServerStateWaitFinished struct {
- Params ConnectionParameters
- hsCtx HandshakeContext
- cryptoParams CipherSuiteParams
-
- masterSecret []byte
- clientHandshakeTrafficSecret []byte
-
- handshakeHash hash.Hash
- clientTrafficSecret []byte
- serverTrafficSecret []byte
- exporterSecret []byte
-}
-
-var _ HandshakeState = &ServerStateWaitFinished{}
-
-func (state ServerStateWaitFinished) State() State {
- return StateServerWaitFinished
-}
-
-func (state ServerStateWaitFinished) Next(hr handshakeMessageReader) (HandshakeState, []HandshakeAction, Alert) {
- hm, alert := hr.ReadMessage()
- if alert != AlertNoAlert {
- return nil, nil, alert
- }
- if hm == nil || hm.msgType != HandshakeTypeFinished {
- logf(logTypeHandshake, "[ServerStateWaitFinished] Unexpected message")
- return nil, nil, AlertUnexpectedMessage
- }
-
- fin := &FinishedBody{VerifyDataLen: state.cryptoParams.Hash.Size()}
- if err := safeUnmarshal(fin, hm.body); err != nil {
- logf(logTypeHandshake, "[ServerStateWaitFinished] Error decoding message %v", err)
- return nil, nil, AlertDecodeError
- }
-
- // Verify client Finished data
- h5 := state.handshakeHash.Sum(nil)
- logf(logTypeCrypto, "handshake hash for client Finished: [%d] %x", len(h5), h5)
-
- clientFinishedData := computeFinishedData(state.cryptoParams, state.clientHandshakeTrafficSecret, h5)
- logf(logTypeCrypto, "client Finished data: [%d] %x", len(clientFinishedData), clientFinishedData)
-
- if !bytes.Equal(fin.VerifyData, clientFinishedData) {
- logf(logTypeHandshake, "[ServerStateWaitFinished] Client's Finished failed to verify")
- return nil, nil, AlertHandshakeFailure
- }
-
- // Compute the resumption secret
- state.handshakeHash.Write(hm.Marshal())
- h6 := state.handshakeHash.Sum(nil)
- logf(logTypeCrypto, "handshake hash 6 [%d]: %x", len(h6), h6)
-
- resumptionSecret := deriveSecret(state.cryptoParams, state.masterSecret, labelResumptionSecret, h6)
- logf(logTypeCrypto, "resumption secret: [%d] %x", len(resumptionSecret), resumptionSecret)
-
- // Compute client traffic keys
- clientTrafficKeys := makeTrafficKeys(state.cryptoParams, state.clientTrafficSecret)
-
- logf(logTypeHandshake, "[ServerStateWaitFinished] -> [StateConnected]")
- nextState := StateConnected{
- Params: state.Params,
- hsCtx: state.hsCtx,
- isClient: false,
- cryptoParams: state.cryptoParams,
- resumptionSecret: resumptionSecret,
- clientTrafficSecret: state.clientTrafficSecret,
- serverTrafficSecret: state.serverTrafficSecret,
- exporterSecret: state.exporterSecret,
- }
- toSend := []HandshakeAction{
- RekeyIn{epoch: EpochApplicationData, KeySet: clientTrafficKeys},
- }
- return nextState, toSend, AlertNoAlert
-}
diff --git a/vendor/github.com/bifurcation/mint/state-machine.go b/vendor/github.com/bifurcation/mint/state-machine.go
deleted file mode 100644
index f3d3593..0000000
--- a/vendor/github.com/bifurcation/mint/state-machine.go
+++ /dev/null
@@ -1,262 +0,0 @@
-package mint
-
-import (
- "time"
-)
-
-// Marker interface for actions that an implementation should take based on
-// state transitions.
-type HandshakeAction interface{}
-
-type QueueHandshakeMessage struct {
- Message *HandshakeMessage
-}
-
-type SendQueuedHandshake struct{}
-
-type SendEarlyData struct{}
-
-type ReadEarlyData struct{}
-
-type ReadPastEarlyData struct{}
-
-type RekeyIn struct {
- epoch Epoch
- KeySet keySet
-}
-
-type RekeyOut struct {
- epoch Epoch
- KeySet keySet
-}
-
-type StorePSK struct {
- PSK PreSharedKey
-}
-
-type HandshakeState interface {
- Next(handshakeMessageReader) (HandshakeState, []HandshakeAction, Alert)
- State() State
-}
-
-type AppExtensionHandler interface {
- Send(hs HandshakeType, el *ExtensionList) error
- Receive(hs HandshakeType, el *ExtensionList) error
-}
-
-// Capabilities objects represent the capabilities of a TLS client or server,
-// as an input to TLS negotiation
-type Capabilities struct {
- // For both client and server
- CipherSuites []CipherSuite
- Groups []NamedGroup
- SignatureSchemes []SignatureScheme
- PSKs PreSharedKeyCache
- Certificates []*Certificate
- AuthCertificate func(chain []CertificateEntry) error
- ExtensionHandler AppExtensionHandler
- UseDTLS bool
- // For client
- PSKModes []PSKKeyExchangeMode
-
- // For server
- NextProtos []string
- AllowEarlyData bool
- RequireCookie bool
- CookieProtector CookieProtector
- CookieHandler CookieHandler
- RequireClientAuth bool
-}
-
-// ConnectionOptions objects represent per-connection settings for a client
-// initiating a connection
-type ConnectionOptions struct {
- ServerName string
- NextProtos []string
- EarlyData []byte
-}
-
-// ConnectionParameters objects represent the parameters negotiated for a
-// connection.
-type ConnectionParameters struct {
- UsingPSK bool
- UsingDH bool
- ClientSendingEarlyData bool
- UsingEarlyData bool
- UsingClientAuth bool
-
- CipherSuite CipherSuite
- ServerName string
- NextProto string
-}
-
-// Working state for the handshake.
-type HandshakeContext struct {
- hIn, hOut *HandshakeLayer
-}
-
-func (hc *HandshakeContext) SetVersion(version uint16) {
- if hc.hIn.conn != nil {
- hc.hIn.conn.SetVersion(version)
- }
- if hc.hOut.conn != nil {
- hc.hOut.conn.SetVersion(version)
- }
-}
-
-// StateConnected is symmetric between client and server
-type StateConnected struct {
- Params ConnectionParameters
- hsCtx HandshakeContext
- isClient bool
- cryptoParams CipherSuiteParams
- resumptionSecret []byte
- clientTrafficSecret []byte
- serverTrafficSecret []byte
- exporterSecret []byte
-}
-
-var _ HandshakeState = &StateConnected{}
-
-func (state StateConnected) State() State {
- if state.isClient {
- return StateClientConnected
- }
- return StateServerConnected
-}
-
-func (state *StateConnected) KeyUpdate(request KeyUpdateRequest) ([]HandshakeAction, Alert) {
- var trafficKeys keySet
- if state.isClient {
- state.clientTrafficSecret = HkdfExpandLabel(state.cryptoParams.Hash, state.clientTrafficSecret,
- labelClientApplicationTrafficSecret, []byte{}, state.cryptoParams.Hash.Size())
- trafficKeys = makeTrafficKeys(state.cryptoParams, state.clientTrafficSecret)
- } else {
- state.serverTrafficSecret = HkdfExpandLabel(state.cryptoParams.Hash, state.serverTrafficSecret,
- labelServerApplicationTrafficSecret, []byte{}, state.cryptoParams.Hash.Size())
- trafficKeys = makeTrafficKeys(state.cryptoParams, state.serverTrafficSecret)
- }
-
- kum, err := state.hsCtx.hOut.HandshakeMessageFromBody(&KeyUpdateBody{KeyUpdateRequest: request})
- if err != nil {
- logf(logTypeHandshake, "[StateConnected] Error marshaling key update message: %v", err)
- return nil, AlertInternalError
- }
-
- toSend := []HandshakeAction{
- QueueHandshakeMessage{kum},
- SendQueuedHandshake{},
- RekeyOut{epoch: EpochUpdate, KeySet: trafficKeys},
- }
- return toSend, AlertNoAlert
-}
-
-func (state *StateConnected) NewSessionTicket(length int, lifetime, earlyDataLifetime uint32) ([]HandshakeAction, Alert) {
- tkt, err := NewSessionTicket(length, lifetime)
- if err != nil {
- logf(logTypeHandshake, "[StateConnected] Error generating NewSessionTicket: %v", err)
- return nil, AlertInternalError
- }
-
- err = tkt.Extensions.Add(&TicketEarlyDataInfoExtension{earlyDataLifetime})
- if err != nil {
- logf(logTypeHandshake, "[StateConnected] Error adding extension to NewSessionTicket: %v", err)
- return nil, AlertInternalError
- }
-
- resumptionKey := HkdfExpandLabel(state.cryptoParams.Hash, state.resumptionSecret,
- labelResumption, tkt.TicketNonce, state.cryptoParams.Hash.Size())
-
- newPSK := PreSharedKey{
- CipherSuite: state.cryptoParams.Suite,
- IsResumption: true,
- Identity: tkt.Ticket,
- Key: resumptionKey,
- NextProto: state.Params.NextProto,
- ReceivedAt: time.Now(),
- ExpiresAt: time.Now().Add(time.Duration(tkt.TicketLifetime) * time.Second),
- TicketAgeAdd: tkt.TicketAgeAdd,
- }
-
- tktm, err := state.hsCtx.hOut.HandshakeMessageFromBody(tkt)
- if err != nil {
- logf(logTypeHandshake, "[StateConnected] Error marshaling NewSessionTicket: %v", err)
- return nil, AlertInternalError
- }
-
- toSend := []HandshakeAction{
- StorePSK{newPSK},
- QueueHandshakeMessage{tktm},
- SendQueuedHandshake{},
- }
- return toSend, AlertNoAlert
-}
-
-// Next does nothing for this state.
-func (state StateConnected) Next(hr handshakeMessageReader) (HandshakeState, []HandshakeAction, Alert) {
- return state, nil, AlertNoAlert
-}
-
-func (state StateConnected) ProcessMessage(hm *HandshakeMessage) (HandshakeState, []HandshakeAction, Alert) {
- if hm == nil {
- logf(logTypeHandshake, "[StateConnected] Unexpected message")
- return nil, nil, AlertUnexpectedMessage
- }
-
- bodyGeneric, err := hm.ToBody()
- if err != nil {
- logf(logTypeHandshake, "[StateConnected] Error decoding message: %v", err)
- return nil, nil, AlertDecodeError
- }
-
- switch body := bodyGeneric.(type) {
- case *KeyUpdateBody:
- var trafficKeys keySet
- if !state.isClient {
- state.clientTrafficSecret = HkdfExpandLabel(state.cryptoParams.Hash, state.clientTrafficSecret,
- labelClientApplicationTrafficSecret, []byte{}, state.cryptoParams.Hash.Size())
- trafficKeys = makeTrafficKeys(state.cryptoParams, state.clientTrafficSecret)
- } else {
- state.serverTrafficSecret = HkdfExpandLabel(state.cryptoParams.Hash, state.serverTrafficSecret,
- labelServerApplicationTrafficSecret, []byte{}, state.cryptoParams.Hash.Size())
- trafficKeys = makeTrafficKeys(state.cryptoParams, state.serverTrafficSecret)
- }
-
- toSend := []HandshakeAction{RekeyIn{epoch: EpochUpdate, KeySet: trafficKeys}}
-
- // If requested, roll outbound keys and send a KeyUpdate
- if body.KeyUpdateRequest == KeyUpdateRequested {
- logf(logTypeHandshake, "Received key update, update requested", body.KeyUpdateRequest)
- moreToSend, alert := state.KeyUpdate(KeyUpdateNotRequested)
- if alert != AlertNoAlert {
- return nil, nil, alert
- }
- toSend = append(toSend, moreToSend...)
- }
- return state, toSend, AlertNoAlert
- case *NewSessionTicketBody:
- // XXX: Allow NewSessionTicket in both directions?
- if !state.isClient {
- return nil, nil, AlertUnexpectedMessage
- }
-
- resumptionKey := HkdfExpandLabel(state.cryptoParams.Hash, state.resumptionSecret,
- labelResumption, body.TicketNonce, state.cryptoParams.Hash.Size())
- psk := PreSharedKey{
- CipherSuite: state.cryptoParams.Suite,
- IsResumption: true,
- Identity: body.Ticket,
- Key: resumptionKey,
- NextProto: state.Params.NextProto,
- ReceivedAt: time.Now(),
- ExpiresAt: time.Now().Add(time.Duration(body.TicketLifetime) * time.Second),
- TicketAgeAdd: body.TicketAgeAdd,
- }
-
- toSend := []HandshakeAction{StorePSK{psk}}
- return state, toSend, AlertNoAlert
- }
-
- logf(logTypeHandshake, "[StateConnected] Unexpected message type %v", hm.msgType)
- return nil, nil, AlertUnexpectedMessage
-}
diff --git a/vendor/github.com/bifurcation/mint/syntax/README.md b/vendor/github.com/bifurcation/mint/syntax/README.md
deleted file mode 100644
index dbf4ec2..0000000
--- a/vendor/github.com/bifurcation/mint/syntax/README.md
+++ /dev/null
@@ -1,74 +0,0 @@
-TLS Syntax
-==========
-
-TLS defines [its own syntax](https://tlswg.github.io/tls13-spec/#rfc.section.3)
-for describing structures used in that protocol. To facilitate experimentation
-with TLS in Go, this module maps that syntax to the Go structure syntax, taking
-advantage of Go's type annotations to encode non-type information carried in the
-TLS presentation format.
-
-For example, in the TLS specification, a ClientHello message has the following
-structure:
-
-~~~~~
-uint16 ProtocolVersion;
-opaque Random[32];
-uint8 CipherSuite[2];
-enum { ... (65535)} ExtensionType;
-
-struct {
- ExtensionType extension_type;
- opaque extension_data<0..2^16-1>;
-} Extension;
-
-struct {
- ProtocolVersion legacy_version = 0x0303; /* TLS v1.2 */
- Random random;
- opaque legacy_session_id<0..32>;
- CipherSuite cipher_suites<2..2^16-2>;
- opaque legacy_compression_methods<1..2^8-1>;
- Extension extensions<0..2^16-1>;
-} ClientHello;
-~~~~~
-
-This maps to the following Go type definitions:
-
-~~~~~
-type protocolVersion uint16
-type random [32]byte
-type cipherSuite uint16 // or [2]byte
-type extensionType uint16
-
-type extension struct {
- ExtensionType extensionType
- ExtensionData []byte `tls:"head=2"`
-}
-
-type clientHello struct {
- LegacyVersion protocolVersion
- Random random
- LegacySessionID []byte `tls:"head=1,max=32"`
- CipherSuites []cipherSuite `tls:"head=2,min=2"`
- LegacyCompressionMethods []byte `tls:"head=1,min=1"`
- Extensions []extension `tls:"head=2"`
-}
-~~~~~
-
-Then you can just declare, marshal, and unmarshal structs just like you would
-with, say JSON.
-
-The available annotations right now are all related to vectors:
-
-* `head`: The number of bytes of length to use as a "header"
-* `min`: The minimum length of the vector, in bytes
-* `max`: The maximum length of the vector, in bytes
-
-## Not supported
-
-* The `select()` syntax for creating alternate version of the same struct (see,
- e.g., the KeyShare extension)
-
-* The backreference syntax for array lengths or select parameters, as in `opaque
- fragment[TLSPlaintext.length]`. Note, however, that in cases where the length
- immediately preceds the array, these can be reframed as vectors with
- appropriate sizes.
diff --git a/vendor/github.com/bifurcation/mint/syntax/decode.go b/vendor/github.com/bifurcation/mint/syntax/decode.go
deleted file mode 100644
index 92c036f..0000000
--- a/vendor/github.com/bifurcation/mint/syntax/decode.go
+++ /dev/null
@@ -1,310 +0,0 @@
-package syntax
-
-import (
- "bytes"
- "fmt"
- "reflect"
- "runtime"
-)
-
-func Unmarshal(data []byte, v interface{}) (int, error) {
- // Check for well-formedness.
- // Avoids filling out half a data structure
- // before discovering a JSON syntax error.
- d := decodeState{}
- d.Write(data)
- return d.unmarshal(v)
-}
-
-// Unmarshaler is the interface implemented by types that can
-// unmarshal a TLS description of themselves. Note that unlike the
-// JSON unmarshaler interface, it is not known a priori how much of
-// the input data will be consumed. So the Unmarshaler must state
-// how much of the input data it consumed.
-type Unmarshaler interface {
- UnmarshalTLS([]byte) (int, error)
-}
-
-// These are the options that can be specified in the struct tag. Right now,
-// all of them apply to variable-length vectors and nothing else
-type decOpts struct {
- head uint // length of length in bytes
- min uint // minimum size in bytes
- max uint // maximum size in bytes
- varint bool // whether to decode as a varint
-}
-
-type decodeState struct {
- bytes.Buffer
-}
-
-func (d *decodeState) unmarshal(v interface{}) (read int, err error) {
- defer func() {
- if r := recover(); r != nil {
- if _, ok := r.(runtime.Error); ok {
- panic(r)
- }
- if s, ok := r.(string); ok {
- panic(s)
- }
- err = r.(error)
- }
- }()
-
- rv := reflect.ValueOf(v)
- if rv.Kind() != reflect.Ptr || rv.IsNil() {
- return 0, fmt.Errorf("Invalid unmarshal target (non-pointer or nil)")
- }
-
- read = d.value(rv)
- return read, nil
-}
-
-func (e *decodeState) value(v reflect.Value) int {
- return valueDecoder(v)(e, v, decOpts{})
-}
-
-type decoderFunc func(e *decodeState, v reflect.Value, opts decOpts) int
-
-func valueDecoder(v reflect.Value) decoderFunc {
- return typeDecoder(v.Type().Elem())
-}
-
-func typeDecoder(t reflect.Type) decoderFunc {
- // Note: Omits the caching / wait-group things that encoding/json uses
- return newTypeDecoder(t)
-}
-
-var (
- unmarshalerType = reflect.TypeOf(new(Unmarshaler)).Elem()
-)
-
-func newTypeDecoder(t reflect.Type) decoderFunc {
- if t.Kind() != reflect.Ptr && reflect.PtrTo(t).Implements(unmarshalerType) {
- return unmarshalerDecoder
- }
-
- switch t.Kind() {
- case reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
- return uintDecoder
- case reflect.Array:
- return newArrayDecoder(t)
- case reflect.Slice:
- return newSliceDecoder(t)
- case reflect.Struct:
- return newStructDecoder(t)
- case reflect.Ptr:
- return newPointerDecoder(t)
- default:
- panic(fmt.Errorf("Unsupported type (%s)", t))
- }
-}
-
-///// Specific decoders below
-
-func unmarshalerDecoder(d *decodeState, v reflect.Value, opts decOpts) int {
- um, ok := v.Interface().(Unmarshaler)
- if !ok {
- panic(fmt.Errorf("Non-Unmarshaler passed to unmarshalerEncoder"))
- }
-
- read, err := um.UnmarshalTLS(d.Bytes())
- if err != nil {
- panic(err)
- }
-
- if read > d.Len() {
- panic(fmt.Errorf("Invalid return value from UnmarshalTLS"))
- }
-
- d.Next(read)
- return read
-}
-
-//////////
-
-func uintDecoder(d *decodeState, v reflect.Value, opts decOpts) int {
- if opts.varint {
- return varintDecoder(d, v, opts)
- }
-
- uintLen := int(v.Elem().Type().Size())
- buf := d.Next(uintLen)
- if len(buf) != uintLen {
- panic(fmt.Errorf("Insufficient data to read uint"))
- }
-
- return setUintFromBuffer(v, buf)
-}
-
-func varintDecoder(d *decodeState, v reflect.Value, opts decOpts) int {
- // Read the first octet and decide the size of the presented varint
- first := d.Next(1)
- if len(first) != 1 {
- panic(fmt.Errorf("Insufficient data to read varint length"))
- }
-
- uintLen := int(v.Elem().Type().Size())
- twoBits := uint(first[0] >> 6)
- varintLen := 1 << twoBits
-
- if uintLen < varintLen {
- panic(fmt.Errorf("Uint too small to fit varint: %d < %d"))
- }
-
- rest := d.Next(varintLen - 1)
- if len(rest) != varintLen-1 {
- panic(fmt.Errorf("Insufficient data to read varint"))
- }
-
- buf := append(first, rest...)
- buf[0] &= 0x3f
- return setUintFromBuffer(v, buf)
-}
-
-func setUintFromBuffer(v reflect.Value, buf []byte) int {
- val := uint64(0)
- for _, b := range buf {
- val = (val << 8) + uint64(b)
- }
-
- v.Elem().SetUint(val)
- return len(buf)
-}
-
-//////////
-
-type arrayDecoder struct {
- elemDec decoderFunc
-}
-
-func (ad *arrayDecoder) decode(d *decodeState, v reflect.Value, opts decOpts) int {
- n := v.Elem().Type().Len()
- read := 0
- for i := 0; i < n; i += 1 {
- read += ad.elemDec(d, v.Elem().Index(i).Addr(), opts)
- }
- return read
-}
-
-func newArrayDecoder(t reflect.Type) decoderFunc {
- dec := &arrayDecoder{typeDecoder(t.Elem())}
- return dec.decode
-}
-
-//////////
-
-type sliceDecoder struct {
- elementType reflect.Type
- elementDec decoderFunc
-}
-
-func (sd *sliceDecoder) decode(d *decodeState, v reflect.Value, opts decOpts) int {
- if opts.head == 0 {
- panic(fmt.Errorf("Cannot decode a slice without a header length"))
- }
-
- lengthBytes := d.Next(int(opts.head))
- if len(lengthBytes) != int(opts.head) {
- panic(fmt.Errorf("Not enough data to read header"))
- }
-
- length := uint(0)
- for _, b := range lengthBytes {
- length = (length << 8) + uint(b)
- }
-
- if opts.max > 0 && length > opts.max {
- panic(fmt.Errorf("Length of vector exceeds declared max"))
- }
- if length < opts.min {
- panic(fmt.Errorf("Length of vector below declared min"))
- }
-
- data := d.Next(int(length))
- if len(data) != int(length) {
- panic(fmt.Errorf("Available data less than declared length [%d < %d]", len(data), length))
- }
-
- elemBuf := &decodeState{}
- elemBuf.Write(data)
- elems := []reflect.Value{}
- read := int(opts.head)
- for elemBuf.Len() > 0 {
- elem := reflect.New(sd.elementType)
- read += sd.elementDec(elemBuf, elem, opts)
- elems = append(elems, elem)
- }
-
- v.Elem().Set(reflect.MakeSlice(v.Elem().Type(), len(elems), len(elems)))
- for i := 0; i < len(elems); i += 1 {
- v.Elem().Index(i).Set(elems[i].Elem())
- }
- return read
-}
-
-func newSliceDecoder(t reflect.Type) decoderFunc {
- dec := &sliceDecoder{
- elementType: t.Elem(),
- elementDec: typeDecoder(t.Elem()),
- }
- return dec.decode
-}
-
-//////////
-
-type structDecoder struct {
- fieldOpts []decOpts
- fieldDecs []decoderFunc
-}
-
-func (sd *structDecoder) decode(d *decodeState, v reflect.Value, opts decOpts) int {
- read := 0
- for i := range sd.fieldDecs {
- read += sd.fieldDecs[i](d, v.Elem().Field(i).Addr(), sd.fieldOpts[i])
- }
- return read
-}
-
-func newStructDecoder(t reflect.Type) decoderFunc {
- n := t.NumField()
- sd := structDecoder{
- fieldOpts: make([]decOpts, n),
- fieldDecs: make([]decoderFunc, n),
- }
-
- for i := 0; i < n; i += 1 {
- f := t.Field(i)
-
- tag := f.Tag.Get("tls")
- tagOpts := parseTag(tag)
-
- sd.fieldOpts[i] = decOpts{
- head: tagOpts["head"],
- max: tagOpts["max"],
- min: tagOpts["min"],
- varint: tagOpts[varintOption] > 0,
- }
-
- sd.fieldDecs[i] = typeDecoder(f.Type)
- }
-
- return sd.decode
-}
-
-//////////
-
-type pointerDecoder struct {
- base decoderFunc
-}
-
-func (pd *pointerDecoder) decode(d *decodeState, v reflect.Value, opts decOpts) int {
- v.Elem().Set(reflect.New(v.Elem().Type().Elem()))
- return pd.base(d, v.Elem(), opts)
-}
-
-func newPointerDecoder(t reflect.Type) decoderFunc {
- baseDecoder := typeDecoder(t.Elem())
- pd := pointerDecoder{base: baseDecoder}
- return pd.decode
-}
diff --git a/vendor/github.com/bifurcation/mint/syntax/encode.go b/vendor/github.com/bifurcation/mint/syntax/encode.go
deleted file mode 100644
index 6328393..0000000
--- a/vendor/github.com/bifurcation/mint/syntax/encode.go
+++ /dev/null
@@ -1,266 +0,0 @@
-package syntax
-
-import (
- "bytes"
- "fmt"
- "reflect"
- "runtime"
-)
-
-func Marshal(v interface{}) ([]byte, error) {
- e := &encodeState{}
- err := e.marshal(v, encOpts{})
- if err != nil {
- return nil, err
- }
- return e.Bytes(), nil
-}
-
-// Marshaler is the interface implemented by types that
-// have a defined TLS encoding.
-type Marshaler interface {
- MarshalTLS() ([]byte, error)
-}
-
-// These are the options that can be specified in the struct tag. Right now,
-// all of them apply to variable-length vectors and nothing else
-type encOpts struct {
- head uint // length of length in bytes
- min uint // minimum size in bytes
- max uint // maximum size in bytes
- varint bool // whether to encode as a varint
-}
-
-type encodeState struct {
- bytes.Buffer
-}
-
-func (e *encodeState) marshal(v interface{}, opts encOpts) (err error) {
- defer func() {
- if r := recover(); r != nil {
- if _, ok := r.(runtime.Error); ok {
- panic(r)
- }
- if s, ok := r.(string); ok {
- panic(s)
- }
- err = r.(error)
- }
- }()
- e.reflectValue(reflect.ValueOf(v), opts)
- return nil
-}
-
-func (e *encodeState) reflectValue(v reflect.Value, opts encOpts) {
- valueEncoder(v)(e, v, opts)
-}
-
-type encoderFunc func(e *encodeState, v reflect.Value, opts encOpts)
-
-func valueEncoder(v reflect.Value) encoderFunc {
- if !v.IsValid() {
- panic(fmt.Errorf("Cannot encode an invalid value"))
- }
- return typeEncoder(v.Type())
-}
-
-func typeEncoder(t reflect.Type) encoderFunc {
- // Note: Omits the caching / wait-group things that encoding/json uses
- return newTypeEncoder(t)
-}
-
-var (
- marshalerType = reflect.TypeOf(new(Marshaler)).Elem()
-)
-
-func newTypeEncoder(t reflect.Type) encoderFunc {
- if t.Implements(marshalerType) {
- return marshalerEncoder
- }
-
- switch t.Kind() {
- case reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
- return uintEncoder
- case reflect.Array:
- return newArrayEncoder(t)
- case reflect.Slice:
- return newSliceEncoder(t)
- case reflect.Struct:
- return newStructEncoder(t)
- case reflect.Ptr:
- return newPointerEncoder(t)
- default:
- panic(fmt.Errorf("Unsupported type (%s)", t))
- }
-}
-
-///// Specific encoders below
-
-func marshalerEncoder(e *encodeState, v reflect.Value, opts encOpts) {
- if v.Kind() == reflect.Ptr && v.IsNil() {
- panic(fmt.Errorf("Cannot encode nil pointer"))
- }
-
- m, ok := v.Interface().(Marshaler)
- if !ok {
- panic(fmt.Errorf("Non-Marshaler passed to marshalerEncoder"))
- }
-
- b, err := m.MarshalTLS()
- if err == nil {
- _, err = e.Write(b)
- }
-
- if err != nil {
- panic(err)
- }
-}
-
-//////////
-
-func uintEncoder(e *encodeState, v reflect.Value, opts encOpts) {
- if opts.varint {
- varintEncoder(e, v, opts)
- return
- }
-
- writeUint(e, v.Uint(), int(v.Type().Size()))
-}
-
-func varintEncoder(e *encodeState, v reflect.Value, opts encOpts) {
- u := v.Uint()
- if (u >> 62) > 0 {
- panic(fmt.Errorf("uint value is too big for varint"))
- }
-
- var varintLen int
- for _, len := range []uint{1, 2, 4, 8} {
- if u < (uint64(1) << (8*len - 2)) {
- varintLen = int(len)
- break
- }
- }
-
- twoBits := map[int]uint64{1: 0x00, 2: 0x01, 4: 0x02, 8: 0x03}[varintLen]
- shift := uint(8*varintLen - 2)
- writeUint(e, u|(twoBits<> uint(8*(len-i-1)))
- }
- e.Write(data)
-}
-
-//////////
-
-type arrayEncoder struct {
- elemEnc encoderFunc
-}
-
-func (ae *arrayEncoder) encode(e *encodeState, v reflect.Value, opts encOpts) {
- n := v.Len()
- for i := 0; i < n; i += 1 {
- ae.elemEnc(e, v.Index(i), opts)
- }
-}
-
-func newArrayEncoder(t reflect.Type) encoderFunc {
- enc := &arrayEncoder{typeEncoder(t.Elem())}
- return enc.encode
-}
-
-//////////
-
-type sliceEncoder struct {
- ae *arrayEncoder
-}
-
-func (se *sliceEncoder) encode(e *encodeState, v reflect.Value, opts encOpts) {
- if opts.head == 0 {
- panic(fmt.Errorf("Cannot encode a slice without a header length"))
- }
-
- arrayState := &encodeState{}
- se.ae.encode(arrayState, v, opts)
-
- n := uint(arrayState.Len())
- if opts.max > 0 && n > opts.max {
- panic(fmt.Errorf("Encoded length more than max [%d > %d]", n, opts.max))
- }
- if n>>(8*opts.head) > 0 {
- panic(fmt.Errorf("Encoded length too long for header length [%d, %d]", n, opts.head))
- }
- if n < opts.min {
- panic(fmt.Errorf("Encoded length less than min [%d < %d]", n, opts.min))
- }
-
- for i := int(opts.head - 1); i >= 0; i -= 1 {
- e.WriteByte(byte(n >> (8 * uint(i))))
- }
- e.Write(arrayState.Bytes())
-}
-
-func newSliceEncoder(t reflect.Type) encoderFunc {
- enc := &sliceEncoder{&arrayEncoder{typeEncoder(t.Elem())}}
- return enc.encode
-}
-
-//////////
-
-type structEncoder struct {
- fieldOpts []encOpts
- fieldEncs []encoderFunc
-}
-
-func (se *structEncoder) encode(e *encodeState, v reflect.Value, opts encOpts) {
- for i := range se.fieldEncs {
- se.fieldEncs[i](e, v.Field(i), se.fieldOpts[i])
- }
-}
-
-func newStructEncoder(t reflect.Type) encoderFunc {
- n := t.NumField()
- se := structEncoder{
- fieldOpts: make([]encOpts, n),
- fieldEncs: make([]encoderFunc, n),
- }
-
- for i := 0; i < n; i += 1 {
- f := t.Field(i)
- tag := f.Tag.Get("tls")
- tagOpts := parseTag(tag)
-
- se.fieldOpts[i] = encOpts{
- head: tagOpts["head"],
- max: tagOpts["max"],
- min: tagOpts["min"],
- varint: tagOpts[varintOption] > 0,
- }
- se.fieldEncs[i] = typeEncoder(f.Type)
- }
-
- return se.encode
-}
-
-//////////
-
-type pointerEncoder struct {
- base encoderFunc
-}
-
-func (pe pointerEncoder) encode(e *encodeState, v reflect.Value, opts encOpts) {
- if v.IsNil() {
- panic(fmt.Errorf("Cannot marshal a struct containing a nil pointer"))
- }
-
- pe.base(e, v.Elem(), opts)
-}
-
-func newPointerEncoder(t reflect.Type) encoderFunc {
- baseEncoder := typeEncoder(t.Elem())
- pe := pointerEncoder{base: baseEncoder}
- return pe.encode
-}
diff --git a/vendor/github.com/bifurcation/mint/syntax/tags.go b/vendor/github.com/bifurcation/mint/syntax/tags.go
deleted file mode 100644
index 1bb3718..0000000
--- a/vendor/github.com/bifurcation/mint/syntax/tags.go
+++ /dev/null
@@ -1,40 +0,0 @@
-package syntax
-
-import (
- "strconv"
- "strings"
-)
-
-// `tls:"head=2,min=2,max=255,varint"`
-
-type tagOptions map[string]uint
-
-var (
- varintOption = "varint"
-)
-
-// parseTag parses a struct field's "tls" tag as a comma-separated list of
-// name=value pairs, where the values MUST be unsigned integers
-func parseTag(tag string) tagOptions {
- opts := tagOptions{}
- for _, token := range strings.Split(tag, ",") {
- if token == varintOption {
- opts[varintOption] = 1
- continue
- }
-
- parts := strings.Split(token, "=")
- if len(parts[0]) == 0 {
- continue
- }
-
- if len(parts) == 1 {
- continue
- }
-
- if val, err := strconv.Atoi(parts[1]); err == nil && val >= 0 {
- opts[parts[0]] = uint(val)
- }
- }
- return opts
-}
diff --git a/vendor/github.com/bifurcation/mint/tls.go b/vendor/github.com/bifurcation/mint/tls.go
deleted file mode 100644
index 4d22869..0000000
--- a/vendor/github.com/bifurcation/mint/tls.go
+++ /dev/null
@@ -1,179 +0,0 @@
-package mint
-
-// XXX(rlb): This file is borrowed pretty much wholesale from crypto/tls
-
-import (
- "errors"
- "net"
- "strings"
- "time"
-)
-
-// Server returns a new TLS server side connection
-// using conn as the underlying transport.
-// The configuration config must be non-nil and must include
-// at least one certificate or else set GetCertificate.
-func Server(conn net.Conn, config *Config) *Conn {
- return NewConn(conn, config, false)
-}
-
-// Client returns a new TLS client side connection
-// using conn as the underlying transport.
-// The config cannot be nil: users must set either ServerName or
-// InsecureSkipVerify in the config.
-func Client(conn net.Conn, config *Config) *Conn {
- return NewConn(conn, config, true)
-}
-
-// A listener implements a network listener (net.Listener) for TLS connections.
-type Listener struct {
- net.Listener
- config *Config
-}
-
-// Accept waits for and returns the next incoming TLS connection.
-// The returned connection c is a *tls.Conn.
-func (l *Listener) Accept() (c net.Conn, err error) {
- c, err = l.Listener.Accept()
- if err != nil {
- return
- }
- server := Server(c, l.config)
- err = server.Handshake()
- if err == AlertNoAlert {
- err = nil
- }
- c = server
- return
-}
-
-// NewListener creates a Listener which accepts connections from an inner
-// Listener and wraps each connection with Server.
-// The configuration config must be non-nil and must include
-// at least one certificate or else set GetCertificate.
-func NewListener(inner net.Listener, config *Config) (net.Listener, error) {
- if config != nil && config.NonBlocking {
- return nil, errors.New("listening not possible in non-blocking mode")
- }
- l := new(Listener)
- l.Listener = inner
- l.config = config
- return l, nil
-}
-
-// Listen creates a TLS listener accepting connections on the
-// given network address using net.Listen.
-// The configuration config must be non-nil and must include
-// at least one certificate or else set GetCertificate.
-func Listen(network, laddr string, config *Config) (net.Listener, error) {
- if config == nil || !config.ValidForServer() {
- return nil, errors.New("tls: neither Certificates nor GetCertificate set in Config")
- }
- l, err := net.Listen(network, laddr)
- if err != nil {
- return nil, err
- }
- return NewListener(l, config)
-}
-
-type TimeoutError struct{}
-
-func (TimeoutError) Error() string { return "tls: DialWithDialer timed out" }
-func (TimeoutError) Timeout() bool { return true }
-func (TimeoutError) Temporary() bool { return true }
-
-// DialWithDialer connects to the given network address using dialer.Dial and
-// then initiates a TLS handshake, returning the resulting TLS connection. Any
-// timeout or deadline given in the dialer apply to connection and TLS
-// handshake as a whole.
-//
-// DialWithDialer interprets a nil configuration as equivalent to the zero
-// configuration; see the documentation of Config for the defaults.
-func DialWithDialer(dialer *net.Dialer, network, addr string, config *Config) (*Conn, error) {
- if config != nil && config.NonBlocking {
- return nil, errors.New("dialing not possible in non-blocking mode")
- }
-
- // We want the Timeout and Deadline values from dialer to cover the
- // whole process: TCP connection and TLS handshake. This means that we
- // also need to start our own timers now.
- timeout := dialer.Timeout
-
- if !dialer.Deadline.IsZero() {
- deadlineTimeout := dialer.Deadline.Sub(time.Now())
- if timeout == 0 || deadlineTimeout < timeout {
- timeout = deadlineTimeout
- }
- }
-
- var errChannel chan error
-
- if timeout != 0 {
- errChannel = make(chan error, 2)
- time.AfterFunc(timeout, func() {
- errChannel <- TimeoutError{}
- })
- }
-
- rawConn, err := dialer.Dial(network, addr)
- if err != nil {
- return nil, err
- }
-
- colonPos := strings.LastIndex(addr, ":")
- if colonPos == -1 {
- colonPos = len(addr)
- }
- hostname := addr[:colonPos]
-
- if config == nil {
- config = &Config{}
- } else {
- config = config.Clone()
- }
-
- // If no ServerName is set, infer the ServerName
- // from the hostname we're connecting to.
- if config.ServerName == "" {
- config.ServerName = hostname
-
- }
-
- // Set up DTLS as needed.
- config.UseDTLS = (network == "udp")
-
- conn := Client(rawConn, config)
-
- if timeout == 0 {
- err = conn.Handshake()
- if err == AlertNoAlert {
- err = nil
- }
- } else {
- go func() {
- errChannel <- conn.Handshake()
- }()
-
- err = <-errChannel
- if err == AlertNoAlert {
- err = nil
- }
- }
-
- if err != nil {
- rawConn.Close()
- return nil, err
- }
-
- return conn, nil
-}
-
-// Dial connects to the given network address using net.Dial
-// and then initiates a TLS handshake, returning the resulting
-// TLS connection.
-// Dial interprets a nil configuration as equivalent to
-// the zero configuration; see the documentation of Config
-// for the defaults.
-func Dial(network, addr string, config *Config) (*Conn, error) {
- return DialWithDialer(new(net.Dialer), network, addr, config)
-}
diff --git a/vendor/github.com/lucas-clemente/aes12/LICENSE b/vendor/github.com/lucas-clemente/aes12/LICENSE
deleted file mode 100644
index 2c08ae2..0000000
--- a/vendor/github.com/lucas-clemente/aes12/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2016 Lucas Clemente
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/vendor/github.com/lucas-clemente/aes12/Readme.md b/vendor/github.com/lucas-clemente/aes12/Readme.md
deleted file mode 100644
index ef4e316..0000000
--- a/vendor/github.com/lucas-clemente/aes12/Readme.md
+++ /dev/null
@@ -1,28 +0,0 @@
-# aes12
-
-This package modifies the AES-GCM implementation from Go's standard library to use 12 byte tag sizes. It is not intended for a general audience, and used in [quic-go](https://github.com/lucas-clemente/quic-go).
-
-To make use of the in-place encryption / decryption feature, the `dst` parameter to `Seal` and `Open` should be 16 bytes longer than plaintext, not 12.
-
-Command for testing:
-
-```
-go test . --bench=. && GOARCH=386 go test . --bench=.
-```
-
-The output (on my machine):
-
-```
-BenchmarkAESGCMSeal1K-8 3000000 467 ns/op 2192.37 MB/s
-BenchmarkAESGCMOpen1K-8 3000000 416 ns/op 2456.72 MB/s
-BenchmarkAESGCMSeal8K-8 500000 2742 ns/op 2986.53 MB/s
-BenchmarkAESGCMOpen8K-8 500000 2791 ns/op 2934.65 MB/s
-PASS
-ok github.com/lucas-clemente/aes12 6.383s
-BenchmarkAESGCMSeal1K-8 50000 35233 ns/op 29.06 MB/s
-BenchmarkAESGCMOpen1K-8 50000 34529 ns/op 29.66 MB/s
-BenchmarkAESGCMSeal8K-8 5000 262678 ns/op 31.19 MB/s
-BenchmarkAESGCMOpen8K-8 5000 267296 ns/op 30.65 MB/s
-PASS
-ok github.com/lucas-clemente/aes12 6.972s
-```
diff --git a/vendor/github.com/lucas-clemente/aes12/aes_gcm.go b/vendor/github.com/lucas-clemente/aes12/aes_gcm.go
deleted file mode 100644
index 21f2b23..0000000
--- a/vendor/github.com/lucas-clemente/aes12/aes_gcm.go
+++ /dev/null
@@ -1,148 +0,0 @@
-// Copyright 2015 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build amd64
-
-package aes12
-
-import "crypto/subtle"
-
-// The following functions are defined in gcm_amd64.s.
-func hasGCMAsm() bool
-
-//go:noescape
-func aesEncBlock(dst, src *[16]byte, ks []uint32)
-
-//go:noescape
-func gcmAesInit(productTable *[256]byte, ks []uint32)
-
-//go:noescape
-func gcmAesData(productTable *[256]byte, data []byte, T *[16]byte)
-
-//go:noescape
-func gcmAesEnc(productTable *[256]byte, dst, src []byte, ctr, T *[16]byte, ks []uint32)
-
-//go:noescape
-func gcmAesDec(productTable *[256]byte, dst, src []byte, ctr, T *[16]byte, ks []uint32)
-
-//go:noescape
-func gcmAesFinish(productTable *[256]byte, tagMask, T *[16]byte, pLen, dLen uint64)
-
-// aesCipherGCM implements crypto/cipher.gcmAble so that crypto/cipher.NewGCM
-// will use the optimised implementation in this file when possible. Instances
-// of this type only exist when hasGCMAsm returns true.
-type aesCipherGCM struct {
- aesCipherAsm
-}
-
-// Assert that aesCipherGCM implements the gcmAble interface.
-var _ gcmAble = (*aesCipherGCM)(nil)
-
-// NewGCM returns the AES cipher wrapped in Galois Counter Mode. This is only
-// called by crypto/cipher.NewGCM via the gcmAble interface.
-func (c *aesCipherGCM) NewGCM(nonceSize int) (AEAD, error) {
- g := &gcmAsm{ks: c.enc, nonceSize: nonceSize}
- gcmAesInit(&g.productTable, g.ks)
- return g, nil
-}
-
-type gcmAsm struct {
- // ks is the key schedule, the length of which depends on the size of
- // the AES key.
- ks []uint32
- // productTable contains pre-computed multiples of the binary-field
- // element used in GHASH.
- productTable [256]byte
- // nonceSize contains the expected size of the nonce, in bytes.
- nonceSize int
-}
-
-func (g *gcmAsm) NonceSize() int {
- return g.nonceSize
-}
-
-func (*gcmAsm) Overhead() int {
- return gcmTagSize
-}
-
-// Seal encrypts and authenticates plaintext. See the AEAD interface for
-// details.
-func (g *gcmAsm) Seal(dst, nonce, plaintext, data []byte) []byte {
- if len(nonce) != g.nonceSize {
- panic("cipher: incorrect nonce length given to GCM")
- }
-
- var counter, tagMask [gcmBlockSize]byte
-
- if len(nonce) == gcmStandardNonceSize {
- // Init counter to nonce||1
- copy(counter[:], nonce)
- counter[gcmBlockSize-1] = 1
- } else {
- // Otherwise counter = GHASH(nonce)
- gcmAesData(&g.productTable, nonce, &counter)
- gcmAesFinish(&g.productTable, &tagMask, &counter, uint64(len(nonce)), uint64(0))
- }
-
- aesEncBlock(&tagMask, &counter, g.ks)
-
- var tagOut [16]byte
- gcmAesData(&g.productTable, data, &tagOut)
-
- ret, out := sliceForAppend(dst, len(plaintext)+gcmTagSize)
- if len(plaintext) > 0 {
- gcmAesEnc(&g.productTable, out, plaintext, &counter, &tagOut, g.ks)
- }
- gcmAesFinish(&g.productTable, &tagMask, &tagOut, uint64(len(plaintext)), uint64(len(data)))
- copy(out[len(plaintext):], tagOut[:gcmTagSize])
-
- return ret
-}
-
-// Open authenticates and decrypts ciphertext. See the AEAD interface
-// for details.
-func (g *gcmAsm) Open(dst, nonce, ciphertext, data []byte) ([]byte, error) {
- if len(nonce) != g.nonceSize {
- panic("cipher: incorrect nonce length given to GCM")
- }
-
- if len(ciphertext) < gcmTagSize {
- return nil, errOpen
- }
- tag := ciphertext[len(ciphertext)-gcmTagSize:]
- ciphertext = ciphertext[:len(ciphertext)-gcmTagSize]
-
- // See GCM spec, section 7.1.
- var counter, tagMask [gcmBlockSize]byte
-
- if len(nonce) == gcmStandardNonceSize {
- // Init counter to nonce||1
- copy(counter[:], nonce)
- counter[gcmBlockSize-1] = 1
- } else {
- // Otherwise counter = GHASH(nonce)
- gcmAesData(&g.productTable, nonce, &counter)
- gcmAesFinish(&g.productTable, &tagMask, &counter, uint64(len(nonce)), uint64(0))
- }
-
- aesEncBlock(&tagMask, &counter, g.ks)
-
- var expectedTag [16]byte
- gcmAesData(&g.productTable, data, &expectedTag)
-
- ret, out := sliceForAppend(dst, len(ciphertext))
- if len(ciphertext) > 0 {
- gcmAesDec(&g.productTable, out, ciphertext, &counter, &expectedTag, g.ks)
- }
- gcmAesFinish(&g.productTable, &tagMask, &expectedTag, uint64(len(ciphertext)), uint64(len(data)))
-
- if subtle.ConstantTimeCompare(expectedTag[:12], tag) != 1 {
- for i := range out {
- out[i] = 0
- }
- return nil, errOpen
- }
-
- return ret, nil
-}
diff --git a/vendor/github.com/lucas-clemente/aes12/asm_amd64.s b/vendor/github.com/lucas-clemente/aes12/asm_amd64.s
deleted file mode 100644
index b257998..0000000
--- a/vendor/github.com/lucas-clemente/aes12/asm_amd64.s
+++ /dev/null
@@ -1,285 +0,0 @@
-// Copyright 2012 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-#include "textflag.h"
-
-// func hasAsm() bool
-// returns whether AES-NI is supported
-TEXT ·hasAsm(SB),NOSPLIT,$0
- XORQ AX, AX
- INCL AX
- CPUID
- SHRQ $25, CX
- ANDQ $1, CX
- MOVB CX, ret+0(FP)
- RET
-
-// func encryptBlockAsm(nr int, xk *uint32, dst, src *byte)
-TEXT ·encryptBlockAsm(SB),NOSPLIT,$0
- MOVQ nr+0(FP), CX
- MOVQ xk+8(FP), AX
- MOVQ dst+16(FP), DX
- MOVQ src+24(FP), BX
- MOVUPS 0(AX), X1
- MOVUPS 0(BX), X0
- ADDQ $16, AX
- PXOR X1, X0
- SUBQ $12, CX
- JE Lenc196
- JB Lenc128
-Lenc256:
- MOVUPS 0(AX), X1
- AESENC X1, X0
- MOVUPS 16(AX), X1
- AESENC X1, X0
- ADDQ $32, AX
-Lenc196:
- MOVUPS 0(AX), X1
- AESENC X1, X0
- MOVUPS 16(AX), X1
- AESENC X1, X0
- ADDQ $32, AX
-Lenc128:
- MOVUPS 0(AX), X1
- AESENC X1, X0
- MOVUPS 16(AX), X1
- AESENC X1, X0
- MOVUPS 32(AX), X1
- AESENC X1, X0
- MOVUPS 48(AX), X1
- AESENC X1, X0
- MOVUPS 64(AX), X1
- AESENC X1, X0
- MOVUPS 80(AX), X1
- AESENC X1, X0
- MOVUPS 96(AX), X1
- AESENC X1, X0
- MOVUPS 112(AX), X1
- AESENC X1, X0
- MOVUPS 128(AX), X1
- AESENC X1, X0
- MOVUPS 144(AX), X1
- AESENCLAST X1, X0
- MOVUPS X0, 0(DX)
- RET
-
-// func decryptBlockAsm(nr int, xk *uint32, dst, src *byte)
-TEXT ·decryptBlockAsm(SB),NOSPLIT,$0
- MOVQ nr+0(FP), CX
- MOVQ xk+8(FP), AX
- MOVQ dst+16(FP), DX
- MOVQ src+24(FP), BX
- MOVUPS 0(AX), X1
- MOVUPS 0(BX), X0
- ADDQ $16, AX
- PXOR X1, X0
- SUBQ $12, CX
- JE Ldec196
- JB Ldec128
-Ldec256:
- MOVUPS 0(AX), X1
- AESDEC X1, X0
- MOVUPS 16(AX), X1
- AESDEC X1, X0
- ADDQ $32, AX
-Ldec196:
- MOVUPS 0(AX), X1
- AESDEC X1, X0
- MOVUPS 16(AX), X1
- AESDEC X1, X0
- ADDQ $32, AX
-Ldec128:
- MOVUPS 0(AX), X1
- AESDEC X1, X0
- MOVUPS 16(AX), X1
- AESDEC X1, X0
- MOVUPS 32(AX), X1
- AESDEC X1, X0
- MOVUPS 48(AX), X1
- AESDEC X1, X0
- MOVUPS 64(AX), X1
- AESDEC X1, X0
- MOVUPS 80(AX), X1
- AESDEC X1, X0
- MOVUPS 96(AX), X1
- AESDEC X1, X0
- MOVUPS 112(AX), X1
- AESDEC X1, X0
- MOVUPS 128(AX), X1
- AESDEC X1, X0
- MOVUPS 144(AX), X1
- AESDECLAST X1, X0
- MOVUPS X0, 0(DX)
- RET
-
-// func expandKeyAsm(nr int, key *byte, enc, dec *uint32) {
-// Note that round keys are stored in uint128 format, not uint32
-TEXT ·expandKeyAsm(SB),NOSPLIT,$0
- MOVQ nr+0(FP), CX
- MOVQ key+8(FP), AX
- MOVQ enc+16(FP), BX
- MOVQ dec+24(FP), DX
- MOVUPS (AX), X0
- // enc
- MOVUPS X0, (BX)
- ADDQ $16, BX
- PXOR X4, X4 // _expand_key_* expect X4 to be zero
- CMPL CX, $12
- JE Lexp_enc196
- JB Lexp_enc128
-Lexp_enc256:
- MOVUPS 16(AX), X2
- MOVUPS X2, (BX)
- ADDQ $16, BX
- AESKEYGENASSIST $0x01, X2, X1
- CALL _expand_key_256a<>(SB)
- AESKEYGENASSIST $0x01, X0, X1
- CALL _expand_key_256b<>(SB)
- AESKEYGENASSIST $0x02, X2, X1
- CALL _expand_key_256a<>(SB)
- AESKEYGENASSIST $0x02, X0, X1
- CALL _expand_key_256b<>(SB)
- AESKEYGENASSIST $0x04, X2, X1
- CALL _expand_key_256a<>(SB)
- AESKEYGENASSIST $0x04, X0, X1
- CALL _expand_key_256b<>(SB)
- AESKEYGENASSIST $0x08, X2, X1
- CALL _expand_key_256a<>(SB)
- AESKEYGENASSIST $0x08, X0, X1
- CALL _expand_key_256b<>(SB)
- AESKEYGENASSIST $0x10, X2, X1
- CALL _expand_key_256a<>(SB)
- AESKEYGENASSIST $0x10, X0, X1
- CALL _expand_key_256b<>(SB)
- AESKEYGENASSIST $0x20, X2, X1
- CALL _expand_key_256a<>(SB)
- AESKEYGENASSIST $0x20, X0, X1
- CALL _expand_key_256b<>(SB)
- AESKEYGENASSIST $0x40, X2, X1
- CALL _expand_key_256a<>(SB)
- JMP Lexp_dec
-Lexp_enc196:
- MOVQ 16(AX), X2
- AESKEYGENASSIST $0x01, X2, X1
- CALL _expand_key_192a<>(SB)
- AESKEYGENASSIST $0x02, X2, X1
- CALL _expand_key_192b<>(SB)
- AESKEYGENASSIST $0x04, X2, X1
- CALL _expand_key_192a<>(SB)
- AESKEYGENASSIST $0x08, X2, X1
- CALL _expand_key_192b<>(SB)
- AESKEYGENASSIST $0x10, X2, X1
- CALL _expand_key_192a<>(SB)
- AESKEYGENASSIST $0x20, X2, X1
- CALL _expand_key_192b<>(SB)
- AESKEYGENASSIST $0x40, X2, X1
- CALL _expand_key_192a<>(SB)
- AESKEYGENASSIST $0x80, X2, X1
- CALL _expand_key_192b<>(SB)
- JMP Lexp_dec
-Lexp_enc128:
- AESKEYGENASSIST $0x01, X0, X1
- CALL _expand_key_128<>(SB)
- AESKEYGENASSIST $0x02, X0, X1
- CALL _expand_key_128<>(SB)
- AESKEYGENASSIST $0x04, X0, X1
- CALL _expand_key_128<>(SB)
- AESKEYGENASSIST $0x08, X0, X1
- CALL _expand_key_128<>(SB)
- AESKEYGENASSIST $0x10, X0, X1
- CALL _expand_key_128<>(SB)
- AESKEYGENASSIST $0x20, X0, X1
- CALL _expand_key_128<>(SB)
- AESKEYGENASSIST $0x40, X0, X1
- CALL _expand_key_128<>(SB)
- AESKEYGENASSIST $0x80, X0, X1
- CALL _expand_key_128<>(SB)
- AESKEYGENASSIST $0x1b, X0, X1
- CALL _expand_key_128<>(SB)
- AESKEYGENASSIST $0x36, X0, X1
- CALL _expand_key_128<>(SB)
-Lexp_dec:
- // dec
- SUBQ $16, BX
- MOVUPS (BX), X1
- MOVUPS X1, (DX)
- DECQ CX
-Lexp_dec_loop:
- MOVUPS -16(BX), X1
- AESIMC X1, X0
- MOVUPS X0, 16(DX)
- SUBQ $16, BX
- ADDQ $16, DX
- DECQ CX
- JNZ Lexp_dec_loop
- MOVUPS -16(BX), X0
- MOVUPS X0, 16(DX)
- RET
-
-TEXT _expand_key_128<>(SB),NOSPLIT,$0
- PSHUFD $0xff, X1, X1
- SHUFPS $0x10, X0, X4
- PXOR X4, X0
- SHUFPS $0x8c, X0, X4
- PXOR X4, X0
- PXOR X1, X0
- MOVUPS X0, (BX)
- ADDQ $16, BX
- RET
-
-TEXT _expand_key_192a<>(SB),NOSPLIT,$0
- PSHUFD $0x55, X1, X1
- SHUFPS $0x10, X0, X4
- PXOR X4, X0
- SHUFPS $0x8c, X0, X4
- PXOR X4, X0
- PXOR X1, X0
-
- MOVAPS X2, X5
- MOVAPS X2, X6
- PSLLDQ $0x4, X5
- PSHUFD $0xff, X0, X3
- PXOR X3, X2
- PXOR X5, X2
-
- MOVAPS X0, X1
- SHUFPS $0x44, X0, X6
- MOVUPS X6, (BX)
- SHUFPS $0x4e, X2, X1
- MOVUPS X1, 16(BX)
- ADDQ $32, BX
- RET
-
-TEXT _expand_key_192b<>(SB),NOSPLIT,$0
- PSHUFD $0x55, X1, X1
- SHUFPS $0x10, X0, X4
- PXOR X4, X0
- SHUFPS $0x8c, X0, X4
- PXOR X4, X0
- PXOR X1, X0
-
- MOVAPS X2, X5
- PSLLDQ $0x4, X5
- PSHUFD $0xff, X0, X3
- PXOR X3, X2
- PXOR X5, X2
-
- MOVUPS X0, (BX)
- ADDQ $16, BX
- RET
-
-TEXT _expand_key_256a<>(SB),NOSPLIT,$0
- JMP _expand_key_128<>(SB)
-
-TEXT _expand_key_256b<>(SB),NOSPLIT,$0
- PSHUFD $0xaa, X1, X1
- SHUFPS $0x10, X2, X4
- PXOR X4, X2
- SHUFPS $0x8c, X2, X4
- PXOR X4, X2
- PXOR X1, X2
-
- MOVUPS X2, (BX)
- ADDQ $16, BX
- RET
diff --git a/vendor/github.com/lucas-clemente/aes12/block.go b/vendor/github.com/lucas-clemente/aes12/block.go
deleted file mode 100644
index 1f29dda..0000000
--- a/vendor/github.com/lucas-clemente/aes12/block.go
+++ /dev/null
@@ -1,176 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// This Go implementation is derived in part from the reference
-// ANSI C implementation, which carries the following notice:
-//
-// rijndael-alg-fst.c
-//
-// @version 3.0 (December 2000)
-//
-// Optimised ANSI C code for the Rijndael cipher (now AES)
-//
-// @author Vincent Rijmen
-// @author Antoon Bosselaers
-// @author Paulo Barreto
-//
-// This code is hereby placed in the public domain.
-//
-// THIS SOFTWARE IS PROVIDED BY THE AUTHORS ''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 AUTHORS 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.
-//
-// See FIPS 197 for specification, and see Daemen and Rijmen's Rijndael submission
-// for implementation details.
-// http://www.csrc.nist.gov/publications/fips/fips197/fips-197.pdf
-// http://csrc.nist.gov/archive/aes/rijndael/Rijndael-ammended.pdf
-
-package aes12
-
-// Encrypt one block from src into dst, using the expanded key xk.
-func encryptBlockGo(xk []uint32, dst, src []byte) {
- var s0, s1, s2, s3, t0, t1, t2, t3 uint32
-
- s0 = uint32(src[0])<<24 | uint32(src[1])<<16 | uint32(src[2])<<8 | uint32(src[3])
- s1 = uint32(src[4])<<24 | uint32(src[5])<<16 | uint32(src[6])<<8 | uint32(src[7])
- s2 = uint32(src[8])<<24 | uint32(src[9])<<16 | uint32(src[10])<<8 | uint32(src[11])
- s3 = uint32(src[12])<<24 | uint32(src[13])<<16 | uint32(src[14])<<8 | uint32(src[15])
-
- // First round just XORs input with key.
- s0 ^= xk[0]
- s1 ^= xk[1]
- s2 ^= xk[2]
- s3 ^= xk[3]
-
- // Middle rounds shuffle using tables.
- // Number of rounds is set by length of expanded key.
- nr := len(xk)/4 - 2 // - 2: one above, one more below
- k := 4
- for r := 0; r < nr; r++ {
- t0 = xk[k+0] ^ te0[uint8(s0>>24)] ^ te1[uint8(s1>>16)] ^ te2[uint8(s2>>8)] ^ te3[uint8(s3)]
- t1 = xk[k+1] ^ te0[uint8(s1>>24)] ^ te1[uint8(s2>>16)] ^ te2[uint8(s3>>8)] ^ te3[uint8(s0)]
- t2 = xk[k+2] ^ te0[uint8(s2>>24)] ^ te1[uint8(s3>>16)] ^ te2[uint8(s0>>8)] ^ te3[uint8(s1)]
- t3 = xk[k+3] ^ te0[uint8(s3>>24)] ^ te1[uint8(s0>>16)] ^ te2[uint8(s1>>8)] ^ te3[uint8(s2)]
- k += 4
- s0, s1, s2, s3 = t0, t1, t2, t3
- }
-
- // Last round uses s-box directly and XORs to produce output.
- s0 = uint32(sbox0[t0>>24])<<24 | uint32(sbox0[t1>>16&0xff])<<16 | uint32(sbox0[t2>>8&0xff])<<8 | uint32(sbox0[t3&0xff])
- s1 = uint32(sbox0[t1>>24])<<24 | uint32(sbox0[t2>>16&0xff])<<16 | uint32(sbox0[t3>>8&0xff])<<8 | uint32(sbox0[t0&0xff])
- s2 = uint32(sbox0[t2>>24])<<24 | uint32(sbox0[t3>>16&0xff])<<16 | uint32(sbox0[t0>>8&0xff])<<8 | uint32(sbox0[t1&0xff])
- s3 = uint32(sbox0[t3>>24])<<24 | uint32(sbox0[t0>>16&0xff])<<16 | uint32(sbox0[t1>>8&0xff])<<8 | uint32(sbox0[t2&0xff])
-
- s0 ^= xk[k+0]
- s1 ^= xk[k+1]
- s2 ^= xk[k+2]
- s3 ^= xk[k+3]
-
- dst[0], dst[1], dst[2], dst[3] = byte(s0>>24), byte(s0>>16), byte(s0>>8), byte(s0)
- dst[4], dst[5], dst[6], dst[7] = byte(s1>>24), byte(s1>>16), byte(s1>>8), byte(s1)
- dst[8], dst[9], dst[10], dst[11] = byte(s2>>24), byte(s2>>16), byte(s2>>8), byte(s2)
- dst[12], dst[13], dst[14], dst[15] = byte(s3>>24), byte(s3>>16), byte(s3>>8), byte(s3)
-}
-
-// Decrypt one block from src into dst, using the expanded key xk.
-func decryptBlockGo(xk []uint32, dst, src []byte) {
- var s0, s1, s2, s3, t0, t1, t2, t3 uint32
-
- s0 = uint32(src[0])<<24 | uint32(src[1])<<16 | uint32(src[2])<<8 | uint32(src[3])
- s1 = uint32(src[4])<<24 | uint32(src[5])<<16 | uint32(src[6])<<8 | uint32(src[7])
- s2 = uint32(src[8])<<24 | uint32(src[9])<<16 | uint32(src[10])<<8 | uint32(src[11])
- s3 = uint32(src[12])<<24 | uint32(src[13])<<16 | uint32(src[14])<<8 | uint32(src[15])
-
- // First round just XORs input with key.
- s0 ^= xk[0]
- s1 ^= xk[1]
- s2 ^= xk[2]
- s3 ^= xk[3]
-
- // Middle rounds shuffle using tables.
- // Number of rounds is set by length of expanded key.
- nr := len(xk)/4 - 2 // - 2: one above, one more below
- k := 4
- for r := 0; r < nr; r++ {
- t0 = xk[k+0] ^ td0[uint8(s0>>24)] ^ td1[uint8(s3>>16)] ^ td2[uint8(s2>>8)] ^ td3[uint8(s1)]
- t1 = xk[k+1] ^ td0[uint8(s1>>24)] ^ td1[uint8(s0>>16)] ^ td2[uint8(s3>>8)] ^ td3[uint8(s2)]
- t2 = xk[k+2] ^ td0[uint8(s2>>24)] ^ td1[uint8(s1>>16)] ^ td2[uint8(s0>>8)] ^ td3[uint8(s3)]
- t3 = xk[k+3] ^ td0[uint8(s3>>24)] ^ td1[uint8(s2>>16)] ^ td2[uint8(s1>>8)] ^ td3[uint8(s0)]
- k += 4
- s0, s1, s2, s3 = t0, t1, t2, t3
- }
-
- // Last round uses s-box directly and XORs to produce output.
- s0 = uint32(sbox1[t0>>24])<<24 | uint32(sbox1[t3>>16&0xff])<<16 | uint32(sbox1[t2>>8&0xff])<<8 | uint32(sbox1[t1&0xff])
- s1 = uint32(sbox1[t1>>24])<<24 | uint32(sbox1[t0>>16&0xff])<<16 | uint32(sbox1[t3>>8&0xff])<<8 | uint32(sbox1[t2&0xff])
- s2 = uint32(sbox1[t2>>24])<<24 | uint32(sbox1[t1>>16&0xff])<<16 | uint32(sbox1[t0>>8&0xff])<<8 | uint32(sbox1[t3&0xff])
- s3 = uint32(sbox1[t3>>24])<<24 | uint32(sbox1[t2>>16&0xff])<<16 | uint32(sbox1[t1>>8&0xff])<<8 | uint32(sbox1[t0&0xff])
-
- s0 ^= xk[k+0]
- s1 ^= xk[k+1]
- s2 ^= xk[k+2]
- s3 ^= xk[k+3]
-
- dst[0], dst[1], dst[2], dst[3] = byte(s0>>24), byte(s0>>16), byte(s0>>8), byte(s0)
- dst[4], dst[5], dst[6], dst[7] = byte(s1>>24), byte(s1>>16), byte(s1>>8), byte(s1)
- dst[8], dst[9], dst[10], dst[11] = byte(s2>>24), byte(s2>>16), byte(s2>>8), byte(s2)
- dst[12], dst[13], dst[14], dst[15] = byte(s3>>24), byte(s3>>16), byte(s3>>8), byte(s3)
-}
-
-// Apply sbox0 to each byte in w.
-func subw(w uint32) uint32 {
- return uint32(sbox0[w>>24])<<24 |
- uint32(sbox0[w>>16&0xff])<<16 |
- uint32(sbox0[w>>8&0xff])<<8 |
- uint32(sbox0[w&0xff])
-}
-
-// Rotate
-func rotw(w uint32) uint32 { return w<<8 | w>>24 }
-
-// Key expansion algorithm. See FIPS-197, Figure 11.
-// Their rcon[i] is our powx[i-1] << 24.
-func expandKeyGo(key []byte, enc, dec []uint32) {
- // Encryption key setup.
- var i int
- nk := len(key) / 4
- for i = 0; i < nk; i++ {
- enc[i] = uint32(key[4*i])<<24 | uint32(key[4*i+1])<<16 | uint32(key[4*i+2])<<8 | uint32(key[4*i+3])
- }
- for ; i < len(enc); i++ {
- t := enc[i-1]
- if i%nk == 0 {
- t = subw(rotw(t)) ^ (uint32(powx[i/nk-1]) << 24)
- } else if nk > 6 && i%nk == 4 {
- t = subw(t)
- }
- enc[i] = enc[i-nk] ^ t
- }
-
- // Derive decryption key from encryption key.
- // Reverse the 4-word round key sets from enc to produce dec.
- // All sets but the first and last get the MixColumn transform applied.
- if dec == nil {
- return
- }
- n := len(enc)
- for i := 0; i < n; i += 4 {
- ei := n - i - 4
- for j := 0; j < 4; j++ {
- x := enc[ei+j]
- if i > 0 && i+4 < n {
- x = td0[sbox0[x>>24]] ^ td1[sbox0[x>>16&0xff]] ^ td2[sbox0[x>>8&0xff]] ^ td3[sbox0[x&0xff]]
- }
- dec[i+j] = x
- }
- }
-}
diff --git a/vendor/github.com/lucas-clemente/aes12/cipher.go b/vendor/github.com/lucas-clemente/aes12/cipher.go
deleted file mode 100644
index a9b8e54..0000000
--- a/vendor/github.com/lucas-clemente/aes12/cipher.go
+++ /dev/null
@@ -1,68 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package aes12
-
-import "strconv"
-
-// The AES block size in bytes.
-const BlockSize = 16
-
-// A cipher is an instance of AES encryption using a particular key.
-type aesCipher struct {
- enc []uint32
- dec []uint32
-}
-
-type KeySizeError int
-
-func (k KeySizeError) Error() string {
- return "crypto/aes: invalid key size " + strconv.Itoa(int(k))
-}
-
-// NewCipher creates and returns a new Block.
-// The key argument should be the AES key,
-// either 16, 24, or 32 bytes to select
-// AES-128, AES-192, or AES-256.
-func NewCipher(key []byte) (Block, error) {
- k := len(key)
- switch k {
- default:
- return nil, KeySizeError(k)
- case 16, 24, 32:
- break
- }
- return newCipher(key)
-}
-
-// newCipherGeneric creates and returns a new Block
-// implemented in pure Go.
-func newCipherGeneric(key []byte) (Block, error) {
- n := len(key) + 28
- c := aesCipher{make([]uint32, n), make([]uint32, n)}
- expandKeyGo(key, c.enc, c.dec)
- return &c, nil
-}
-
-func (c *aesCipher) BlockSize() int { return BlockSize }
-
-func (c *aesCipher) Encrypt(dst, src []byte) {
- if len(src) < BlockSize {
- panic("crypto/aes: input not full block")
- }
- if len(dst) < BlockSize {
- panic("crypto/aes: output not full block")
- }
- encryptBlockGo(c.enc, dst, src)
-}
-
-func (c *aesCipher) Decrypt(dst, src []byte) {
- if len(src) < BlockSize {
- panic("crypto/aes: input not full block")
- }
- if len(dst) < BlockSize {
- panic("crypto/aes: output not full block")
- }
- decryptBlockGo(c.dec, dst, src)
-}
diff --git a/vendor/github.com/lucas-clemente/aes12/cipher_2.go b/vendor/github.com/lucas-clemente/aes12/cipher_2.go
deleted file mode 100644
index ae2f520..0000000
--- a/vendor/github.com/lucas-clemente/aes12/cipher_2.go
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright 2010 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// package aes12 implements standard block cipher modes that can be wrapped
-// around low-level block cipher implementations.
-// See http://csrc.nist.gov/groups/ST/toolkit/BCM/current_modes.html
-// and NIST Special Publication 800-38A.
-package aes12
-
-// A Block represents an implementation of block cipher
-// using a given key. It provides the capability to encrypt
-// or decrypt individual blocks. The mode implementations
-// extend that capability to streams of blocks.
-type Block interface {
- // BlockSize returns the cipher's block size.
- BlockSize() int
-
- // Encrypt encrypts the first block in src into dst.
- // Dst and src may point at the same memory.
- Encrypt(dst, src []byte)
-
- // Decrypt decrypts the first block in src into dst.
- // Dst and src may point at the same memory.
- Decrypt(dst, src []byte)
-}
-
-// A Stream represents a stream cipher.
-type Stream interface {
- // XORKeyStream XORs each byte in the given slice with a byte from the
- // cipher's key stream. Dst and src may point to the same memory.
- // If len(dst) < len(src), XORKeyStream should panic. It is acceptable
- // to pass a dst bigger than src, and in that case, XORKeyStream will
- // only update dst[:len(src)] and will not touch the rest of dst.
- XORKeyStream(dst, src []byte)
-}
-
-// A BlockMode represents a block cipher running in a block-based mode (CBC,
-// ECB etc).
-type BlockMode interface {
- // BlockSize returns the mode's block size.
- BlockSize() int
-
- // CryptBlocks encrypts or decrypts a number of blocks. The length of
- // src must be a multiple of the block size. Dst and src may point to
- // the same memory.
- CryptBlocks(dst, src []byte)
-}
-
-// Utility routines
-
-func dup(p []byte) []byte {
- q := make([]byte, len(p))
- copy(q, p)
- return q
-}
diff --git a/vendor/github.com/lucas-clemente/aes12/cipher_amd64.go b/vendor/github.com/lucas-clemente/aes12/cipher_amd64.go
deleted file mode 100644
index cd0544f..0000000
--- a/vendor/github.com/lucas-clemente/aes12/cipher_amd64.go
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright 2012 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package aes12
-
-// defined in asm_amd64.s
-func hasAsm() bool
-func encryptBlockAsm(nr int, xk *uint32, dst, src *byte)
-func decryptBlockAsm(nr int, xk *uint32, dst, src *byte)
-func expandKeyAsm(nr int, key *byte, enc *uint32, dec *uint32)
-
-type aesCipherAsm struct {
- aesCipher
-}
-
-var useAsm = hasAsm()
-
-func newCipher(key []byte) (Block, error) {
- if !useAsm {
- return newCipherGeneric(key)
- }
- n := len(key) + 28
- c := aesCipherAsm{aesCipher{make([]uint32, n), make([]uint32, n)}}
- rounds := 10
- switch len(key) {
- case 128 / 8:
- rounds = 10
- case 192 / 8:
- rounds = 12
- case 256 / 8:
- rounds = 14
- }
- expandKeyAsm(rounds, &key[0], &c.enc[0], &c.dec[0])
- if hasGCMAsm() {
- return &aesCipherGCM{c}, nil
- }
-
- return &c, nil
-}
-
-func (c *aesCipherAsm) BlockSize() int { return BlockSize }
-
-func (c *aesCipherAsm) Encrypt(dst, src []byte) {
- if len(src) < BlockSize {
- panic("crypto/aes: input not full block")
- }
- if len(dst) < BlockSize {
- panic("crypto/aes: output not full block")
- }
- encryptBlockAsm(len(c.enc)/4-1, &c.enc[0], &dst[0], &src[0])
-}
-
-func (c *aesCipherAsm) Decrypt(dst, src []byte) {
- if len(src) < BlockSize {
- panic("crypto/aes: input not full block")
- }
- if len(dst) < BlockSize {
- panic("crypto/aes: output not full block")
- }
- decryptBlockAsm(len(c.dec)/4-1, &c.dec[0], &dst[0], &src[0])
-}
-
-// expandKey is used by BenchmarkExpand to ensure that the asm implementation
-// of key expansion is used for the benchmark when it is available.
-func expandKey(key []byte, enc, dec []uint32) {
- if useAsm {
- rounds := 10 // rounds needed for AES128
- switch len(key) {
- case 192 / 8:
- rounds = 12
- case 256 / 8:
- rounds = 14
- }
- expandKeyAsm(rounds, &key[0], &enc[0], &dec[0])
- } else {
- expandKeyGo(key, enc, dec)
- }
-}
diff --git a/vendor/github.com/lucas-clemente/aes12/cipher_generic.go b/vendor/github.com/lucas-clemente/aes12/cipher_generic.go
deleted file mode 100644
index 6861677..0000000
--- a/vendor/github.com/lucas-clemente/aes12/cipher_generic.go
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright 2012 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build !amd64
-
-package aes12
-
-// newCipher calls the newCipherGeneric function
-// directly. Platforms with hardware accelerated
-// implementations of AES should implement their
-// own version of newCipher (which may then call
-// newCipherGeneric if needed).
-func newCipher(key []byte) (Block, error) {
- return newCipherGeneric(key)
-}
-
-// expandKey is used by BenchmarkExpand and should
-// call an assembly implementation if one is available.
-func expandKey(key []byte, enc, dec []uint32) {
- expandKeyGo(key, enc, dec)
-}
diff --git a/vendor/github.com/lucas-clemente/aes12/const.go b/vendor/github.com/lucas-clemente/aes12/const.go
deleted file mode 100644
index 40296fa..0000000
--- a/vendor/github.com/lucas-clemente/aes12/const.go
+++ /dev/null
@@ -1,358 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// package aes12 implements AES encryption (formerly Rijndael), as defined in
-// U.S. Federal Information Processing Standards Publication 197.
-package aes12
-
-// This file contains AES constants - 8720 bytes of initialized data.
-
-// http://www.csrc.nist.gov/publications/fips/fips197/fips-197.pdf
-
-// AES is based on the mathematical behavior of binary polynomials
-// (polynomials over GF(2)) modulo the irreducible polynomial x⁸ + x⁴ + x³ + x + 1.
-// Addition of these binary polynomials corresponds to binary xor.
-// Reducing mod poly corresponds to binary xor with poly every
-// time a 0x100 bit appears.
-const poly = 1<<8 | 1<<4 | 1<<3 | 1<<1 | 1<<0 // x⁸ + x⁴ + x³ + x + 1
-
-// Powers of x mod poly in GF(2).
-var powx = [16]byte{
- 0x01,
- 0x02,
- 0x04,
- 0x08,
- 0x10,
- 0x20,
- 0x40,
- 0x80,
- 0x1b,
- 0x36,
- 0x6c,
- 0xd8,
- 0xab,
- 0x4d,
- 0x9a,
- 0x2f,
-}
-
-// FIPS-197 Figure 7. S-box substitution values in hexadecimal format.
-var sbox0 = [256]byte{
- 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76,
- 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0,
- 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15,
- 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75,
- 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84,
- 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf,
- 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8,
- 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2,
- 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73,
- 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb,
- 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79,
- 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08,
- 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a,
- 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e,
- 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf,
- 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16,
-}
-
-// FIPS-197 Figure 14. Inverse S-box substitution values in hexadecimal format.
-var sbox1 = [256]byte{
- 0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb,
- 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb,
- 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e,
- 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25,
- 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92,
- 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84,
- 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06,
- 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b,
- 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73,
- 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e,
- 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b,
- 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4,
- 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f,
- 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef,
- 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61,
- 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d,
-}
-
-// Lookup tables for encryption.
-// These can be recomputed by adapting the tests in aes_test.go.
-
-var te0 = [256]uint32{
- 0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d, 0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554,
- 0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d, 0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a,
- 0x8fcaca45, 0x1f82829d, 0x89c9c940, 0xfa7d7d87, 0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b,
- 0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea, 0x239c9cbf, 0x53a4a4f7, 0xe4727296, 0x9bc0c05b,
- 0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a, 0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f,
- 0x6834345c, 0x51a5a5f4, 0xd1e5e534, 0xf9f1f108, 0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f,
- 0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e, 0x30181828, 0x379696a1, 0x0a05050f, 0x2f9a9ab5,
- 0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d, 0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f,
- 0x1209091b, 0x1d83839e, 0x582c2c74, 0x341a1a2e, 0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb,
- 0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce, 0x5229297b, 0xdde3e33e, 0x5e2f2f71, 0x13848497,
- 0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c, 0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed,
- 0xd46a6abe, 0x8dcbcb46, 0x67bebed9, 0x7239394b, 0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a,
- 0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16, 0x864343c5, 0x9a4d4dd7, 0x66333355, 0x11858594,
- 0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81, 0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3,
- 0xa25151f3, 0x5da3a3fe, 0x804040c0, 0x058f8f8a, 0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504,
- 0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163, 0x20101030, 0xe5ffff1a, 0xfdf3f30e, 0xbfd2d26d,
- 0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f, 0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739,
- 0x93c4c457, 0x55a7a7f2, 0xfc7e7e82, 0x7a3d3d47, 0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395,
- 0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f, 0x44222266, 0x542a2a7e, 0x3b9090ab, 0x0b888883,
- 0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c, 0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76,
- 0xdbe0e03b, 0x64323256, 0x743a3a4e, 0x140a0a1e, 0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4,
- 0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6, 0x399191a8, 0x319595a4, 0xd3e4e437, 0xf279798b,
- 0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7, 0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0,
- 0xd86c6cb4, 0xac5656fa, 0xf3f4f407, 0xcfeaea25, 0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818,
- 0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72, 0x381c1c24, 0x57a6a6f1, 0x73b4b4c7, 0x97c6c651,
- 0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21, 0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85,
- 0xe0707090, 0x7c3e3e42, 0x71b5b5c4, 0xcc6666aa, 0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12,
- 0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0, 0x17868691, 0x99c1c158, 0x3a1d1d27, 0x279e9eb9,
- 0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133, 0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7,
- 0x2d9b9bb6, 0x3c1e1e22, 0x15878792, 0xc9e9e920, 0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a,
- 0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17, 0x65bfbfda, 0xd7e6e631, 0x844242c6, 0xd06868b8,
- 0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11, 0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a,
-}
-var te1 = [256]uint32{
- 0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b, 0x0dfff2f2, 0xbdd66b6b, 0xb1de6f6f, 0x5491c5c5,
- 0x50603030, 0x03020101, 0xa9ce6767, 0x7d562b2b, 0x19e7fefe, 0x62b5d7d7, 0xe64dabab, 0x9aec7676,
- 0x458fcaca, 0x9d1f8282, 0x4089c9c9, 0x87fa7d7d, 0x15effafa, 0xebb25959, 0xc98e4747, 0x0bfbf0f0,
- 0xec41adad, 0x67b3d4d4, 0xfd5fa2a2, 0xea45afaf, 0xbf239c9c, 0xf753a4a4, 0x96e47272, 0x5b9bc0c0,
- 0xc275b7b7, 0x1ce1fdfd, 0xae3d9393, 0x6a4c2626, 0x5a6c3636, 0x417e3f3f, 0x02f5f7f7, 0x4f83cccc,
- 0x5c683434, 0xf451a5a5, 0x34d1e5e5, 0x08f9f1f1, 0x93e27171, 0x73abd8d8, 0x53623131, 0x3f2a1515,
- 0x0c080404, 0x5295c7c7, 0x65462323, 0x5e9dc3c3, 0x28301818, 0xa1379696, 0x0f0a0505, 0xb52f9a9a,
- 0x090e0707, 0x36241212, 0x9b1b8080, 0x3ddfe2e2, 0x26cdebeb, 0x694e2727, 0xcd7fb2b2, 0x9fea7575,
- 0x1b120909, 0x9e1d8383, 0x74582c2c, 0x2e341a1a, 0x2d361b1b, 0xb2dc6e6e, 0xeeb45a5a, 0xfb5ba0a0,
- 0xf6a45252, 0x4d763b3b, 0x61b7d6d6, 0xce7db3b3, 0x7b522929, 0x3edde3e3, 0x715e2f2f, 0x97138484,
- 0xf5a65353, 0x68b9d1d1, 0x00000000, 0x2cc1eded, 0x60402020, 0x1fe3fcfc, 0xc879b1b1, 0xedb65b5b,
- 0xbed46a6a, 0x468dcbcb, 0xd967bebe, 0x4b723939, 0xde944a4a, 0xd4984c4c, 0xe8b05858, 0x4a85cfcf,
- 0x6bbbd0d0, 0x2ac5efef, 0xe54faaaa, 0x16edfbfb, 0xc5864343, 0xd79a4d4d, 0x55663333, 0x94118585,
- 0xcf8a4545, 0x10e9f9f9, 0x06040202, 0x81fe7f7f, 0xf0a05050, 0x44783c3c, 0xba259f9f, 0xe34ba8a8,
- 0xf3a25151, 0xfe5da3a3, 0xc0804040, 0x8a058f8f, 0xad3f9292, 0xbc219d9d, 0x48703838, 0x04f1f5f5,
- 0xdf63bcbc, 0xc177b6b6, 0x75afdada, 0x63422121, 0x30201010, 0x1ae5ffff, 0x0efdf3f3, 0x6dbfd2d2,
- 0x4c81cdcd, 0x14180c0c, 0x35261313, 0x2fc3ecec, 0xe1be5f5f, 0xa2359797, 0xcc884444, 0x392e1717,
- 0x5793c4c4, 0xf255a7a7, 0x82fc7e7e, 0x477a3d3d, 0xacc86464, 0xe7ba5d5d, 0x2b321919, 0x95e67373,
- 0xa0c06060, 0x98198181, 0xd19e4f4f, 0x7fa3dcdc, 0x66442222, 0x7e542a2a, 0xab3b9090, 0x830b8888,
- 0xca8c4646, 0x29c7eeee, 0xd36bb8b8, 0x3c281414, 0x79a7dede, 0xe2bc5e5e, 0x1d160b0b, 0x76addbdb,
- 0x3bdbe0e0, 0x56643232, 0x4e743a3a, 0x1e140a0a, 0xdb924949, 0x0a0c0606, 0x6c482424, 0xe4b85c5c,
- 0x5d9fc2c2, 0x6ebdd3d3, 0xef43acac, 0xa6c46262, 0xa8399191, 0xa4319595, 0x37d3e4e4, 0x8bf27979,
- 0x32d5e7e7, 0x438bc8c8, 0x596e3737, 0xb7da6d6d, 0x8c018d8d, 0x64b1d5d5, 0xd29c4e4e, 0xe049a9a9,
- 0xb4d86c6c, 0xfaac5656, 0x07f3f4f4, 0x25cfeaea, 0xafca6565, 0x8ef47a7a, 0xe947aeae, 0x18100808,
- 0xd56fbaba, 0x88f07878, 0x6f4a2525, 0x725c2e2e, 0x24381c1c, 0xf157a6a6, 0xc773b4b4, 0x5197c6c6,
- 0x23cbe8e8, 0x7ca1dddd, 0x9ce87474, 0x213e1f1f, 0xdd964b4b, 0xdc61bdbd, 0x860d8b8b, 0x850f8a8a,
- 0x90e07070, 0x427c3e3e, 0xc471b5b5, 0xaacc6666, 0xd8904848, 0x05060303, 0x01f7f6f6, 0x121c0e0e,
- 0xa3c26161, 0x5f6a3535, 0xf9ae5757, 0xd069b9b9, 0x91178686, 0x5899c1c1, 0x273a1d1d, 0xb9279e9e,
- 0x38d9e1e1, 0x13ebf8f8, 0xb32b9898, 0x33221111, 0xbbd26969, 0x70a9d9d9, 0x89078e8e, 0xa7339494,
- 0xb62d9b9b, 0x223c1e1e, 0x92158787, 0x20c9e9e9, 0x4987cece, 0xffaa5555, 0x78502828, 0x7aa5dfdf,
- 0x8f038c8c, 0xf859a1a1, 0x80098989, 0x171a0d0d, 0xda65bfbf, 0x31d7e6e6, 0xc6844242, 0xb8d06868,
- 0xc3824141, 0xb0299999, 0x775a2d2d, 0x111e0f0f, 0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616,
-}
-var te2 = [256]uint32{
- 0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b, 0xf20dfff2, 0x6bbdd66b, 0x6fb1de6f, 0xc55491c5,
- 0x30506030, 0x01030201, 0x67a9ce67, 0x2b7d562b, 0xfe19e7fe, 0xd762b5d7, 0xabe64dab, 0x769aec76,
- 0xca458fca, 0x829d1f82, 0xc94089c9, 0x7d87fa7d, 0xfa15effa, 0x59ebb259, 0x47c98e47, 0xf00bfbf0,
- 0xadec41ad, 0xd467b3d4, 0xa2fd5fa2, 0xafea45af, 0x9cbf239c, 0xa4f753a4, 0x7296e472, 0xc05b9bc0,
- 0xb7c275b7, 0xfd1ce1fd, 0x93ae3d93, 0x266a4c26, 0x365a6c36, 0x3f417e3f, 0xf702f5f7, 0xcc4f83cc,
- 0x345c6834, 0xa5f451a5, 0xe534d1e5, 0xf108f9f1, 0x7193e271, 0xd873abd8, 0x31536231, 0x153f2a15,
- 0x040c0804, 0xc75295c7, 0x23654623, 0xc35e9dc3, 0x18283018, 0x96a13796, 0x050f0a05, 0x9ab52f9a,
- 0x07090e07, 0x12362412, 0x809b1b80, 0xe23ddfe2, 0xeb26cdeb, 0x27694e27, 0xb2cd7fb2, 0x759fea75,
- 0x091b1209, 0x839e1d83, 0x2c74582c, 0x1a2e341a, 0x1b2d361b, 0x6eb2dc6e, 0x5aeeb45a, 0xa0fb5ba0,
- 0x52f6a452, 0x3b4d763b, 0xd661b7d6, 0xb3ce7db3, 0x297b5229, 0xe33edde3, 0x2f715e2f, 0x84971384,
- 0x53f5a653, 0xd168b9d1, 0x00000000, 0xed2cc1ed, 0x20604020, 0xfc1fe3fc, 0xb1c879b1, 0x5bedb65b,
- 0x6abed46a, 0xcb468dcb, 0xbed967be, 0x394b7239, 0x4ade944a, 0x4cd4984c, 0x58e8b058, 0xcf4a85cf,
- 0xd06bbbd0, 0xef2ac5ef, 0xaae54faa, 0xfb16edfb, 0x43c58643, 0x4dd79a4d, 0x33556633, 0x85941185,
- 0x45cf8a45, 0xf910e9f9, 0x02060402, 0x7f81fe7f, 0x50f0a050, 0x3c44783c, 0x9fba259f, 0xa8e34ba8,
- 0x51f3a251, 0xa3fe5da3, 0x40c08040, 0x8f8a058f, 0x92ad3f92, 0x9dbc219d, 0x38487038, 0xf504f1f5,
- 0xbcdf63bc, 0xb6c177b6, 0xda75afda, 0x21634221, 0x10302010, 0xff1ae5ff, 0xf30efdf3, 0xd26dbfd2,
- 0xcd4c81cd, 0x0c14180c, 0x13352613, 0xec2fc3ec, 0x5fe1be5f, 0x97a23597, 0x44cc8844, 0x17392e17,
- 0xc45793c4, 0xa7f255a7, 0x7e82fc7e, 0x3d477a3d, 0x64acc864, 0x5de7ba5d, 0x192b3219, 0x7395e673,
- 0x60a0c060, 0x81981981, 0x4fd19e4f, 0xdc7fa3dc, 0x22664422, 0x2a7e542a, 0x90ab3b90, 0x88830b88,
- 0x46ca8c46, 0xee29c7ee, 0xb8d36bb8, 0x143c2814, 0xde79a7de, 0x5ee2bc5e, 0x0b1d160b, 0xdb76addb,
- 0xe03bdbe0, 0x32566432, 0x3a4e743a, 0x0a1e140a, 0x49db9249, 0x060a0c06, 0x246c4824, 0x5ce4b85c,
- 0xc25d9fc2, 0xd36ebdd3, 0xacef43ac, 0x62a6c462, 0x91a83991, 0x95a43195, 0xe437d3e4, 0x798bf279,
- 0xe732d5e7, 0xc8438bc8, 0x37596e37, 0x6db7da6d, 0x8d8c018d, 0xd564b1d5, 0x4ed29c4e, 0xa9e049a9,
- 0x6cb4d86c, 0x56faac56, 0xf407f3f4, 0xea25cfea, 0x65afca65, 0x7a8ef47a, 0xaee947ae, 0x08181008,
- 0xbad56fba, 0x7888f078, 0x256f4a25, 0x2e725c2e, 0x1c24381c, 0xa6f157a6, 0xb4c773b4, 0xc65197c6,
- 0xe823cbe8, 0xdd7ca1dd, 0x749ce874, 0x1f213e1f, 0x4bdd964b, 0xbddc61bd, 0x8b860d8b, 0x8a850f8a,
- 0x7090e070, 0x3e427c3e, 0xb5c471b5, 0x66aacc66, 0x48d89048, 0x03050603, 0xf601f7f6, 0x0e121c0e,
- 0x61a3c261, 0x355f6a35, 0x57f9ae57, 0xb9d069b9, 0x86911786, 0xc15899c1, 0x1d273a1d, 0x9eb9279e,
- 0xe138d9e1, 0xf813ebf8, 0x98b32b98, 0x11332211, 0x69bbd269, 0xd970a9d9, 0x8e89078e, 0x94a73394,
- 0x9bb62d9b, 0x1e223c1e, 0x87921587, 0xe920c9e9, 0xce4987ce, 0x55ffaa55, 0x28785028, 0xdf7aa5df,
- 0x8c8f038c, 0xa1f859a1, 0x89800989, 0x0d171a0d, 0xbfda65bf, 0xe631d7e6, 0x42c68442, 0x68b8d068,
- 0x41c38241, 0x99b02999, 0x2d775a2d, 0x0f111e0f, 0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16,
-}
-var te3 = [256]uint32{
- 0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6, 0xf2f20dff, 0x6b6bbdd6, 0x6f6fb1de, 0xc5c55491,
- 0x30305060, 0x01010302, 0x6767a9ce, 0x2b2b7d56, 0xfefe19e7, 0xd7d762b5, 0xababe64d, 0x76769aec,
- 0xcaca458f, 0x82829d1f, 0xc9c94089, 0x7d7d87fa, 0xfafa15ef, 0x5959ebb2, 0x4747c98e, 0xf0f00bfb,
- 0xadadec41, 0xd4d467b3, 0xa2a2fd5f, 0xafafea45, 0x9c9cbf23, 0xa4a4f753, 0x727296e4, 0xc0c05b9b,
- 0xb7b7c275, 0xfdfd1ce1, 0x9393ae3d, 0x26266a4c, 0x36365a6c, 0x3f3f417e, 0xf7f702f5, 0xcccc4f83,
- 0x34345c68, 0xa5a5f451, 0xe5e534d1, 0xf1f108f9, 0x717193e2, 0xd8d873ab, 0x31315362, 0x15153f2a,
- 0x04040c08, 0xc7c75295, 0x23236546, 0xc3c35e9d, 0x18182830, 0x9696a137, 0x05050f0a, 0x9a9ab52f,
- 0x0707090e, 0x12123624, 0x80809b1b, 0xe2e23ddf, 0xebeb26cd, 0x2727694e, 0xb2b2cd7f, 0x75759fea,
- 0x09091b12, 0x83839e1d, 0x2c2c7458, 0x1a1a2e34, 0x1b1b2d36, 0x6e6eb2dc, 0x5a5aeeb4, 0xa0a0fb5b,
- 0x5252f6a4, 0x3b3b4d76, 0xd6d661b7, 0xb3b3ce7d, 0x29297b52, 0xe3e33edd, 0x2f2f715e, 0x84849713,
- 0x5353f5a6, 0xd1d168b9, 0x00000000, 0xeded2cc1, 0x20206040, 0xfcfc1fe3, 0xb1b1c879, 0x5b5bedb6,
- 0x6a6abed4, 0xcbcb468d, 0xbebed967, 0x39394b72, 0x4a4ade94, 0x4c4cd498, 0x5858e8b0, 0xcfcf4a85,
- 0xd0d06bbb, 0xefef2ac5, 0xaaaae54f, 0xfbfb16ed, 0x4343c586, 0x4d4dd79a, 0x33335566, 0x85859411,
- 0x4545cf8a, 0xf9f910e9, 0x02020604, 0x7f7f81fe, 0x5050f0a0, 0x3c3c4478, 0x9f9fba25, 0xa8a8e34b,
- 0x5151f3a2, 0xa3a3fe5d, 0x4040c080, 0x8f8f8a05, 0x9292ad3f, 0x9d9dbc21, 0x38384870, 0xf5f504f1,
- 0xbcbcdf63, 0xb6b6c177, 0xdada75af, 0x21216342, 0x10103020, 0xffff1ae5, 0xf3f30efd, 0xd2d26dbf,
- 0xcdcd4c81, 0x0c0c1418, 0x13133526, 0xecec2fc3, 0x5f5fe1be, 0x9797a235, 0x4444cc88, 0x1717392e,
- 0xc4c45793, 0xa7a7f255, 0x7e7e82fc, 0x3d3d477a, 0x6464acc8, 0x5d5de7ba, 0x19192b32, 0x737395e6,
- 0x6060a0c0, 0x81819819, 0x4f4fd19e, 0xdcdc7fa3, 0x22226644, 0x2a2a7e54, 0x9090ab3b, 0x8888830b,
- 0x4646ca8c, 0xeeee29c7, 0xb8b8d36b, 0x14143c28, 0xdede79a7, 0x5e5ee2bc, 0x0b0b1d16, 0xdbdb76ad,
- 0xe0e03bdb, 0x32325664, 0x3a3a4e74, 0x0a0a1e14, 0x4949db92, 0x06060a0c, 0x24246c48, 0x5c5ce4b8,
- 0xc2c25d9f, 0xd3d36ebd, 0xacacef43, 0x6262a6c4, 0x9191a839, 0x9595a431, 0xe4e437d3, 0x79798bf2,
- 0xe7e732d5, 0xc8c8438b, 0x3737596e, 0x6d6db7da, 0x8d8d8c01, 0xd5d564b1, 0x4e4ed29c, 0xa9a9e049,
- 0x6c6cb4d8, 0x5656faac, 0xf4f407f3, 0xeaea25cf, 0x6565afca, 0x7a7a8ef4, 0xaeaee947, 0x08081810,
- 0xbabad56f, 0x787888f0, 0x25256f4a, 0x2e2e725c, 0x1c1c2438, 0xa6a6f157, 0xb4b4c773, 0xc6c65197,
- 0xe8e823cb, 0xdddd7ca1, 0x74749ce8, 0x1f1f213e, 0x4b4bdd96, 0xbdbddc61, 0x8b8b860d, 0x8a8a850f,
- 0x707090e0, 0x3e3e427c, 0xb5b5c471, 0x6666aacc, 0x4848d890, 0x03030506, 0xf6f601f7, 0x0e0e121c,
- 0x6161a3c2, 0x35355f6a, 0x5757f9ae, 0xb9b9d069, 0x86869117, 0xc1c15899, 0x1d1d273a, 0x9e9eb927,
- 0xe1e138d9, 0xf8f813eb, 0x9898b32b, 0x11113322, 0x6969bbd2, 0xd9d970a9, 0x8e8e8907, 0x9494a733,
- 0x9b9bb62d, 0x1e1e223c, 0x87879215, 0xe9e920c9, 0xcece4987, 0x5555ffaa, 0x28287850, 0xdfdf7aa5,
- 0x8c8c8f03, 0xa1a1f859, 0x89898009, 0x0d0d171a, 0xbfbfda65, 0xe6e631d7, 0x4242c684, 0x6868b8d0,
- 0x4141c382, 0x9999b029, 0x2d2d775a, 0x0f0f111e, 0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c,
-}
-
-// Lookup tables for decryption.
-// These can be recomputed by adapting the tests in aes_test.go.
-
-var td0 = [256]uint32{
- 0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96, 0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393,
- 0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25, 0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f,
- 0xdeb15a49, 0x25ba1b67, 0x45ea0e98, 0x5dfec0e1, 0xc32f7502, 0x814cf012, 0x8d4697a3, 0x6bd3f9c6,
- 0x038f5fe7, 0x15929c95, 0xbf6d7aeb, 0x955259da, 0xd4be832d, 0x587421d3, 0x49e06929, 0x8ec9c844,
- 0x75c2896a, 0xf48e7978, 0x99583e6b, 0x27b971dd, 0xbee14fb6, 0xf088ad17, 0xc920ac66, 0x7dce3ab4,
- 0x63df4a18, 0xe51a3182, 0x97513360, 0x62537f45, 0xb16477e0, 0xbb6bae84, 0xfe81a01c, 0xf9082b94,
- 0x70486858, 0x8f45fd19, 0x94de6c87, 0x527bf8b7, 0xab73d323, 0x724b02e2, 0xe31f8f57, 0x6655ab2a,
- 0xb2eb2807, 0x2fb5c203, 0x86c57b9a, 0xd33708a5, 0x302887f2, 0x23bfa5b2, 0x02036aba, 0xed16825c,
- 0x8acf1c2b, 0xa779b492, 0xf307f2f0, 0x4e69e2a1, 0x65daf4cd, 0x0605bed5, 0xd134621f, 0xc4a6fe8a,
- 0x342e539d, 0xa2f355a0, 0x058ae132, 0xa4f6eb75, 0x0b83ec39, 0x4060efaa, 0x5e719f06, 0xbd6e1051,
- 0x3e218af9, 0x96dd063d, 0xdd3e05ae, 0x4de6bd46, 0x91548db5, 0x71c45d05, 0x0406d46f, 0x605015ff,
- 0x1998fb24, 0xd6bde997, 0x894043cc, 0x67d99e77, 0xb0e842bd, 0x07898b88, 0xe7195b38, 0x79c8eedb,
- 0xa17c0a47, 0x7c420fe9, 0xf8841ec9, 0x00000000, 0x09808683, 0x322bed48, 0x1e1170ac, 0x6c5a724e,
- 0xfd0efffb, 0x0f853856, 0x3daed51e, 0x362d3927, 0x0a0fd964, 0x685ca621, 0x9b5b54d1, 0x24362e3a,
- 0x0c0a67b1, 0x9357e70f, 0xb4ee96d2, 0x1b9b919e, 0x80c0c54f, 0x61dc20a2, 0x5a774b69, 0x1c121a16,
- 0xe293ba0a, 0xc0a02ae5, 0x3c22e043, 0x121b171d, 0x0e090d0b, 0xf28bc7ad, 0x2db6a8b9, 0x141ea9c8,
- 0x57f11985, 0xaf75074c, 0xee99ddbb, 0xa37f60fd, 0xf701269f, 0x5c72f5bc, 0x44663bc5, 0x5bfb7e34,
- 0x8b432976, 0xcb23c6dc, 0xb6edfc68, 0xb8e4f163, 0xd731dcca, 0x42638510, 0x13972240, 0x84c61120,
- 0x854a247d, 0xd2bb3df8, 0xaef93211, 0xc729a16d, 0x1d9e2f4b, 0xdcb230f3, 0x0d8652ec, 0x77c1e3d0,
- 0x2bb3166c, 0xa970b999, 0x119448fa, 0x47e96422, 0xa8fc8cc4, 0xa0f03f1a, 0x567d2cd8, 0x223390ef,
- 0x87494ec7, 0xd938d1c1, 0x8ccaa2fe, 0x98d40b36, 0xa6f581cf, 0xa57ade28, 0xdab78e26, 0x3fadbfa4,
- 0x2c3a9de4, 0x5078920d, 0x6a5fcc9b, 0x547e4662, 0xf68d13c2, 0x90d8b8e8, 0x2e39f75e, 0x82c3aff5,
- 0x9f5d80be, 0x69d0937c, 0x6fd52da9, 0xcf2512b3, 0xc8ac993b, 0x10187da7, 0xe89c636e, 0xdb3bbb7b,
- 0xcd267809, 0x6e5918f4, 0xec9ab701, 0x834f9aa8, 0xe6956e65, 0xaaffe67e, 0x21bccf08, 0xef15e8e6,
- 0xbae79bd9, 0x4a6f36ce, 0xea9f09d4, 0x29b07cd6, 0x31a4b2af, 0x2a3f2331, 0xc6a59430, 0x35a266c0,
- 0x744ebc37, 0xfc82caa6, 0xe090d0b0, 0x33a7d815, 0xf104984a, 0x41ecdaf7, 0x7fcd500e, 0x1791f62f,
- 0x764dd68d, 0x43efb04d, 0xccaa4d54, 0xe49604df, 0x9ed1b5e3, 0x4c6a881b, 0xc12c1fb8, 0x4665517f,
- 0x9d5eea04, 0x018c355d, 0xfa877473, 0xfb0b412e, 0xb3671d5a, 0x92dbd252, 0xe9105633, 0x6dd64713,
- 0x9ad7618c, 0x37a10c7a, 0x59f8148e, 0xeb133c89, 0xcea927ee, 0xb761c935, 0xe11ce5ed, 0x7a47b13c,
- 0x9cd2df59, 0x55f2733f, 0x1814ce79, 0x73c737bf, 0x53f7cdea, 0x5ffdaa5b, 0xdf3d6f14, 0x7844db86,
- 0xcaaff381, 0xb968c43e, 0x3824342c, 0xc2a3405f, 0x161dc372, 0xbce2250c, 0x283c498b, 0xff0d9541,
- 0x39a80171, 0x080cb3de, 0xd8b4e49c, 0x6456c190, 0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742,
-}
-var td1 = [256]uint32{
- 0x5051f4a7, 0x537e4165, 0xc31a17a4, 0x963a275e, 0xcb3bab6b, 0xf11f9d45, 0xabacfa58, 0x934be303,
- 0x552030fa, 0xf6ad766d, 0x9188cc76, 0x25f5024c, 0xfc4fe5d7, 0xd7c52acb, 0x80263544, 0x8fb562a3,
- 0x49deb15a, 0x6725ba1b, 0x9845ea0e, 0xe15dfec0, 0x02c32f75, 0x12814cf0, 0xa38d4697, 0xc66bd3f9,
- 0xe7038f5f, 0x9515929c, 0xebbf6d7a, 0xda955259, 0x2dd4be83, 0xd3587421, 0x2949e069, 0x448ec9c8,
- 0x6a75c289, 0x78f48e79, 0x6b99583e, 0xdd27b971, 0xb6bee14f, 0x17f088ad, 0x66c920ac, 0xb47dce3a,
- 0x1863df4a, 0x82e51a31, 0x60975133, 0x4562537f, 0xe0b16477, 0x84bb6bae, 0x1cfe81a0, 0x94f9082b,
- 0x58704868, 0x198f45fd, 0x8794de6c, 0xb7527bf8, 0x23ab73d3, 0xe2724b02, 0x57e31f8f, 0x2a6655ab,
- 0x07b2eb28, 0x032fb5c2, 0x9a86c57b, 0xa5d33708, 0xf2302887, 0xb223bfa5, 0xba02036a, 0x5ced1682,
- 0x2b8acf1c, 0x92a779b4, 0xf0f307f2, 0xa14e69e2, 0xcd65daf4, 0xd50605be, 0x1fd13462, 0x8ac4a6fe,
- 0x9d342e53, 0xa0a2f355, 0x32058ae1, 0x75a4f6eb, 0x390b83ec, 0xaa4060ef, 0x065e719f, 0x51bd6e10,
- 0xf93e218a, 0x3d96dd06, 0xaedd3e05, 0x464de6bd, 0xb591548d, 0x0571c45d, 0x6f0406d4, 0xff605015,
- 0x241998fb, 0x97d6bde9, 0xcc894043, 0x7767d99e, 0xbdb0e842, 0x8807898b, 0x38e7195b, 0xdb79c8ee,
- 0x47a17c0a, 0xe97c420f, 0xc9f8841e, 0x00000000, 0x83098086, 0x48322bed, 0xac1e1170, 0x4e6c5a72,
- 0xfbfd0eff, 0x560f8538, 0x1e3daed5, 0x27362d39, 0x640a0fd9, 0x21685ca6, 0xd19b5b54, 0x3a24362e,
- 0xb10c0a67, 0x0f9357e7, 0xd2b4ee96, 0x9e1b9b91, 0x4f80c0c5, 0xa261dc20, 0x695a774b, 0x161c121a,
- 0x0ae293ba, 0xe5c0a02a, 0x433c22e0, 0x1d121b17, 0x0b0e090d, 0xadf28bc7, 0xb92db6a8, 0xc8141ea9,
- 0x8557f119, 0x4caf7507, 0xbbee99dd, 0xfda37f60, 0x9ff70126, 0xbc5c72f5, 0xc544663b, 0x345bfb7e,
- 0x768b4329, 0xdccb23c6, 0x68b6edfc, 0x63b8e4f1, 0xcad731dc, 0x10426385, 0x40139722, 0x2084c611,
- 0x7d854a24, 0xf8d2bb3d, 0x11aef932, 0x6dc729a1, 0x4b1d9e2f, 0xf3dcb230, 0xec0d8652, 0xd077c1e3,
- 0x6c2bb316, 0x99a970b9, 0xfa119448, 0x2247e964, 0xc4a8fc8c, 0x1aa0f03f, 0xd8567d2c, 0xef223390,
- 0xc787494e, 0xc1d938d1, 0xfe8ccaa2, 0x3698d40b, 0xcfa6f581, 0x28a57ade, 0x26dab78e, 0xa43fadbf,
- 0xe42c3a9d, 0x0d507892, 0x9b6a5fcc, 0x62547e46, 0xc2f68d13, 0xe890d8b8, 0x5e2e39f7, 0xf582c3af,
- 0xbe9f5d80, 0x7c69d093, 0xa96fd52d, 0xb3cf2512, 0x3bc8ac99, 0xa710187d, 0x6ee89c63, 0x7bdb3bbb,
- 0x09cd2678, 0xf46e5918, 0x01ec9ab7, 0xa8834f9a, 0x65e6956e, 0x7eaaffe6, 0x0821bccf, 0xe6ef15e8,
- 0xd9bae79b, 0xce4a6f36, 0xd4ea9f09, 0xd629b07c, 0xaf31a4b2, 0x312a3f23, 0x30c6a594, 0xc035a266,
- 0x37744ebc, 0xa6fc82ca, 0xb0e090d0, 0x1533a7d8, 0x4af10498, 0xf741ecda, 0x0e7fcd50, 0x2f1791f6,
- 0x8d764dd6, 0x4d43efb0, 0x54ccaa4d, 0xdfe49604, 0xe39ed1b5, 0x1b4c6a88, 0xb8c12c1f, 0x7f466551,
- 0x049d5eea, 0x5d018c35, 0x73fa8774, 0x2efb0b41, 0x5ab3671d, 0x5292dbd2, 0x33e91056, 0x136dd647,
- 0x8c9ad761, 0x7a37a10c, 0x8e59f814, 0x89eb133c, 0xeecea927, 0x35b761c9, 0xede11ce5, 0x3c7a47b1,
- 0x599cd2df, 0x3f55f273, 0x791814ce, 0xbf73c737, 0xea53f7cd, 0x5b5ffdaa, 0x14df3d6f, 0x867844db,
- 0x81caaff3, 0x3eb968c4, 0x2c382434, 0x5fc2a340, 0x72161dc3, 0x0cbce225, 0x8b283c49, 0x41ff0d95,
- 0x7139a801, 0xde080cb3, 0x9cd8b4e4, 0x906456c1, 0x617bcb84, 0x70d532b6, 0x74486c5c, 0x42d0b857,
-}
-var td2 = [256]uint32{
- 0xa75051f4, 0x65537e41, 0xa4c31a17, 0x5e963a27, 0x6bcb3bab, 0x45f11f9d, 0x58abacfa, 0x03934be3,
- 0xfa552030, 0x6df6ad76, 0x769188cc, 0x4c25f502, 0xd7fc4fe5, 0xcbd7c52a, 0x44802635, 0xa38fb562,
- 0x5a49deb1, 0x1b6725ba, 0x0e9845ea, 0xc0e15dfe, 0x7502c32f, 0xf012814c, 0x97a38d46, 0xf9c66bd3,
- 0x5fe7038f, 0x9c951592, 0x7aebbf6d, 0x59da9552, 0x832dd4be, 0x21d35874, 0x692949e0, 0xc8448ec9,
- 0x896a75c2, 0x7978f48e, 0x3e6b9958, 0x71dd27b9, 0x4fb6bee1, 0xad17f088, 0xac66c920, 0x3ab47dce,
- 0x4a1863df, 0x3182e51a, 0x33609751, 0x7f456253, 0x77e0b164, 0xae84bb6b, 0xa01cfe81, 0x2b94f908,
- 0x68587048, 0xfd198f45, 0x6c8794de, 0xf8b7527b, 0xd323ab73, 0x02e2724b, 0x8f57e31f, 0xab2a6655,
- 0x2807b2eb, 0xc2032fb5, 0x7b9a86c5, 0x08a5d337, 0x87f23028, 0xa5b223bf, 0x6aba0203, 0x825ced16,
- 0x1c2b8acf, 0xb492a779, 0xf2f0f307, 0xe2a14e69, 0xf4cd65da, 0xbed50605, 0x621fd134, 0xfe8ac4a6,
- 0x539d342e, 0x55a0a2f3, 0xe132058a, 0xeb75a4f6, 0xec390b83, 0xefaa4060, 0x9f065e71, 0x1051bd6e,
- 0x8af93e21, 0x063d96dd, 0x05aedd3e, 0xbd464de6, 0x8db59154, 0x5d0571c4, 0xd46f0406, 0x15ff6050,
- 0xfb241998, 0xe997d6bd, 0x43cc8940, 0x9e7767d9, 0x42bdb0e8, 0x8b880789, 0x5b38e719, 0xeedb79c8,
- 0x0a47a17c, 0x0fe97c42, 0x1ec9f884, 0x00000000, 0x86830980, 0xed48322b, 0x70ac1e11, 0x724e6c5a,
- 0xfffbfd0e, 0x38560f85, 0xd51e3dae, 0x3927362d, 0xd9640a0f, 0xa621685c, 0x54d19b5b, 0x2e3a2436,
- 0x67b10c0a, 0xe70f9357, 0x96d2b4ee, 0x919e1b9b, 0xc54f80c0, 0x20a261dc, 0x4b695a77, 0x1a161c12,
- 0xba0ae293, 0x2ae5c0a0, 0xe0433c22, 0x171d121b, 0x0d0b0e09, 0xc7adf28b, 0xa8b92db6, 0xa9c8141e,
- 0x198557f1, 0x074caf75, 0xddbbee99, 0x60fda37f, 0x269ff701, 0xf5bc5c72, 0x3bc54466, 0x7e345bfb,
- 0x29768b43, 0xc6dccb23, 0xfc68b6ed, 0xf163b8e4, 0xdccad731, 0x85104263, 0x22401397, 0x112084c6,
- 0x247d854a, 0x3df8d2bb, 0x3211aef9, 0xa16dc729, 0x2f4b1d9e, 0x30f3dcb2, 0x52ec0d86, 0xe3d077c1,
- 0x166c2bb3, 0xb999a970, 0x48fa1194, 0x642247e9, 0x8cc4a8fc, 0x3f1aa0f0, 0x2cd8567d, 0x90ef2233,
- 0x4ec78749, 0xd1c1d938, 0xa2fe8cca, 0x0b3698d4, 0x81cfa6f5, 0xde28a57a, 0x8e26dab7, 0xbfa43fad,
- 0x9de42c3a, 0x920d5078, 0xcc9b6a5f, 0x4662547e, 0x13c2f68d, 0xb8e890d8, 0xf75e2e39, 0xaff582c3,
- 0x80be9f5d, 0x937c69d0, 0x2da96fd5, 0x12b3cf25, 0x993bc8ac, 0x7da71018, 0x636ee89c, 0xbb7bdb3b,
- 0x7809cd26, 0x18f46e59, 0xb701ec9a, 0x9aa8834f, 0x6e65e695, 0xe67eaaff, 0xcf0821bc, 0xe8e6ef15,
- 0x9bd9bae7, 0x36ce4a6f, 0x09d4ea9f, 0x7cd629b0, 0xb2af31a4, 0x23312a3f, 0x9430c6a5, 0x66c035a2,
- 0xbc37744e, 0xcaa6fc82, 0xd0b0e090, 0xd81533a7, 0x984af104, 0xdaf741ec, 0x500e7fcd, 0xf62f1791,
- 0xd68d764d, 0xb04d43ef, 0x4d54ccaa, 0x04dfe496, 0xb5e39ed1, 0x881b4c6a, 0x1fb8c12c, 0x517f4665,
- 0xea049d5e, 0x355d018c, 0x7473fa87, 0x412efb0b, 0x1d5ab367, 0xd25292db, 0x5633e910, 0x47136dd6,
- 0x618c9ad7, 0x0c7a37a1, 0x148e59f8, 0x3c89eb13, 0x27eecea9, 0xc935b761, 0xe5ede11c, 0xb13c7a47,
- 0xdf599cd2, 0x733f55f2, 0xce791814, 0x37bf73c7, 0xcdea53f7, 0xaa5b5ffd, 0x6f14df3d, 0xdb867844,
- 0xf381caaf, 0xc43eb968, 0x342c3824, 0x405fc2a3, 0xc372161d, 0x250cbce2, 0x498b283c, 0x9541ff0d,
- 0x017139a8, 0xb3de080c, 0xe49cd8b4, 0xc1906456, 0x84617bcb, 0xb670d532, 0x5c74486c, 0x5742d0b8,
-}
-var td3 = [256]uint32{
- 0xf4a75051, 0x4165537e, 0x17a4c31a, 0x275e963a, 0xab6bcb3b, 0x9d45f11f, 0xfa58abac, 0xe303934b,
- 0x30fa5520, 0x766df6ad, 0xcc769188, 0x024c25f5, 0xe5d7fc4f, 0x2acbd7c5, 0x35448026, 0x62a38fb5,
- 0xb15a49de, 0xba1b6725, 0xea0e9845, 0xfec0e15d, 0x2f7502c3, 0x4cf01281, 0x4697a38d, 0xd3f9c66b,
- 0x8f5fe703, 0x929c9515, 0x6d7aebbf, 0x5259da95, 0xbe832dd4, 0x7421d358, 0xe0692949, 0xc9c8448e,
- 0xc2896a75, 0x8e7978f4, 0x583e6b99, 0xb971dd27, 0xe14fb6be, 0x88ad17f0, 0x20ac66c9, 0xce3ab47d,
- 0xdf4a1863, 0x1a3182e5, 0x51336097, 0x537f4562, 0x6477e0b1, 0x6bae84bb, 0x81a01cfe, 0x082b94f9,
- 0x48685870, 0x45fd198f, 0xde6c8794, 0x7bf8b752, 0x73d323ab, 0x4b02e272, 0x1f8f57e3, 0x55ab2a66,
- 0xeb2807b2, 0xb5c2032f, 0xc57b9a86, 0x3708a5d3, 0x2887f230, 0xbfa5b223, 0x036aba02, 0x16825ced,
- 0xcf1c2b8a, 0x79b492a7, 0x07f2f0f3, 0x69e2a14e, 0xdaf4cd65, 0x05bed506, 0x34621fd1, 0xa6fe8ac4,
- 0x2e539d34, 0xf355a0a2, 0x8ae13205, 0xf6eb75a4, 0x83ec390b, 0x60efaa40, 0x719f065e, 0x6e1051bd,
- 0x218af93e, 0xdd063d96, 0x3e05aedd, 0xe6bd464d, 0x548db591, 0xc45d0571, 0x06d46f04, 0x5015ff60,
- 0x98fb2419, 0xbde997d6, 0x4043cc89, 0xd99e7767, 0xe842bdb0, 0x898b8807, 0x195b38e7, 0xc8eedb79,
- 0x7c0a47a1, 0x420fe97c, 0x841ec9f8, 0x00000000, 0x80868309, 0x2bed4832, 0x1170ac1e, 0x5a724e6c,
- 0x0efffbfd, 0x8538560f, 0xaed51e3d, 0x2d392736, 0x0fd9640a, 0x5ca62168, 0x5b54d19b, 0x362e3a24,
- 0x0a67b10c, 0x57e70f93, 0xee96d2b4, 0x9b919e1b, 0xc0c54f80, 0xdc20a261, 0x774b695a, 0x121a161c,
- 0x93ba0ae2, 0xa02ae5c0, 0x22e0433c, 0x1b171d12, 0x090d0b0e, 0x8bc7adf2, 0xb6a8b92d, 0x1ea9c814,
- 0xf1198557, 0x75074caf, 0x99ddbbee, 0x7f60fda3, 0x01269ff7, 0x72f5bc5c, 0x663bc544, 0xfb7e345b,
- 0x4329768b, 0x23c6dccb, 0xedfc68b6, 0xe4f163b8, 0x31dccad7, 0x63851042, 0x97224013, 0xc6112084,
- 0x4a247d85, 0xbb3df8d2, 0xf93211ae, 0x29a16dc7, 0x9e2f4b1d, 0xb230f3dc, 0x8652ec0d, 0xc1e3d077,
- 0xb3166c2b, 0x70b999a9, 0x9448fa11, 0xe9642247, 0xfc8cc4a8, 0xf03f1aa0, 0x7d2cd856, 0x3390ef22,
- 0x494ec787, 0x38d1c1d9, 0xcaa2fe8c, 0xd40b3698, 0xf581cfa6, 0x7ade28a5, 0xb78e26da, 0xadbfa43f,
- 0x3a9de42c, 0x78920d50, 0x5fcc9b6a, 0x7e466254, 0x8d13c2f6, 0xd8b8e890, 0x39f75e2e, 0xc3aff582,
- 0x5d80be9f, 0xd0937c69, 0xd52da96f, 0x2512b3cf, 0xac993bc8, 0x187da710, 0x9c636ee8, 0x3bbb7bdb,
- 0x267809cd, 0x5918f46e, 0x9ab701ec, 0x4f9aa883, 0x956e65e6, 0xffe67eaa, 0xbccf0821, 0x15e8e6ef,
- 0xe79bd9ba, 0x6f36ce4a, 0x9f09d4ea, 0xb07cd629, 0xa4b2af31, 0x3f23312a, 0xa59430c6, 0xa266c035,
- 0x4ebc3774, 0x82caa6fc, 0x90d0b0e0, 0xa7d81533, 0x04984af1, 0xecdaf741, 0xcd500e7f, 0x91f62f17,
- 0x4dd68d76, 0xefb04d43, 0xaa4d54cc, 0x9604dfe4, 0xd1b5e39e, 0x6a881b4c, 0x2c1fb8c1, 0x65517f46,
- 0x5eea049d, 0x8c355d01, 0x877473fa, 0x0b412efb, 0x671d5ab3, 0xdbd25292, 0x105633e9, 0xd647136d,
- 0xd7618c9a, 0xa10c7a37, 0xf8148e59, 0x133c89eb, 0xa927eece, 0x61c935b7, 0x1ce5ede1, 0x47b13c7a,
- 0xd2df599c, 0xf2733f55, 0x14ce7918, 0xc737bf73, 0xf7cdea53, 0xfdaa5b5f, 0x3d6f14df, 0x44db8678,
- 0xaff381ca, 0x68c43eb9, 0x24342c38, 0xa3405fc2, 0x1dc37216, 0xe2250cbc, 0x3c498b28, 0x0d9541ff,
- 0xa8017139, 0x0cb3de08, 0xb4e49cd8, 0x56c19064, 0xcb84617b, 0x32b670d5, 0x6c5c7448, 0xb85742d0,
-}
diff --git a/vendor/github.com/lucas-clemente/aes12/gcm.go b/vendor/github.com/lucas-clemente/aes12/gcm.go
deleted file mode 100644
index ed7dc91..0000000
--- a/vendor/github.com/lucas-clemente/aes12/gcm.go
+++ /dev/null
@@ -1,401 +0,0 @@
-// Copyright 2013 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package aes12
-
-import (
- "crypto/subtle"
- "errors"
-)
-
-// AEAD is a cipher mode providing authenticated encryption with associated
-// data. For a description of the methodology, see
-// https://en.wikipedia.org/wiki/Authenticated_encryption
-type AEAD interface {
- // NonceSize returns the size of the nonce that must be passed to Seal
- // and Open.
- NonceSize() int
-
- // Overhead returns the maximum difference between the lengths of a
- // plaintext and its ciphertext.
- Overhead() int
-
- // Seal encrypts and authenticates plaintext, authenticates the
- // additional data and appends the result to dst, returning the updated
- // slice. The nonce must be NonceSize() bytes long and unique for all
- // time, for a given key.
- //
- // The plaintext and dst may alias exactly or not at all. To reuse
- // plaintext's storage for the encrypted output, use plaintext[:0] as dst.
- Seal(dst, nonce, plaintext, additionalData []byte) []byte
-
- // Open decrypts and authenticates ciphertext, authenticates the
- // additional data and, if successful, appends the resulting plaintext
- // to dst, returning the updated slice. The nonce must be NonceSize()
- // bytes long and both it and the additional data must match the
- // value passed to Seal.
- //
- // The ciphertext and dst may alias exactly or not at all. To reuse
- // ciphertext's storage for the decrypted output, use ciphertext[:0] as dst.
- //
- // Even if the function fails, the contents of dst, up to its capacity,
- // may be overwritten.
- Open(dst, nonce, ciphertext, additionalData []byte) ([]byte, error)
-}
-
-// gcmAble is an interface implemented by ciphers that have a specific optimized
-// implementation of GCM, like crypto/aes. NewGCM will check for this interface
-// and return the specific AEAD if found.
-type gcmAble interface {
- NewGCM(int) (AEAD, error)
-}
-
-// gcmFieldElement represents a value in GF(2¹²⁸). In order to reflect the GCM
-// standard and make getUint64 suitable for marshaling these values, the bits
-// are stored backwards. For example:
-// the coefficient of x⁰ can be obtained by v.low >> 63.
-// the coefficient of x⁶³ can be obtained by v.low & 1.
-// the coefficient of x⁶⁴ can be obtained by v.high >> 63.
-// the coefficient of x¹²⁷ can be obtained by v.high & 1.
-type gcmFieldElement struct {
- low, high uint64
-}
-
-// gcm represents a Galois Counter Mode with a specific key. See
-// http://csrc.nist.gov/groups/ST/toolkit/BCM/documents/proposedmodes/gcm/gcm-revised-spec.pdf
-type gcm struct {
- cipher Block
- nonceSize int
- // productTable contains the first sixteen powers of the key, H.
- // However, they are in bit reversed order. See NewGCMWithNonceSize.
- productTable [16]gcmFieldElement
-}
-
-// NewGCM returns the given 128-bit, block cipher wrapped in Galois Counter Mode
-// with the standard nonce length.
-func NewGCM(cipher Block) (AEAD, error) {
- return NewGCMWithNonceSize(cipher, gcmStandardNonceSize)
-}
-
-// NewGCMWithNonceSize returns the given 128-bit, block cipher wrapped in Galois
-// Counter Mode, which accepts nonces of the given length.
-//
-// Only use this function if you require compatibility with an existing
-// cryptosystem that uses non-standard nonce lengths. All other users should use
-// NewGCM, which is faster and more resistant to misuse.
-func NewGCMWithNonceSize(cipher Block, size int) (AEAD, error) {
- if cipher, ok := cipher.(gcmAble); ok {
- return cipher.NewGCM(size)
- }
-
- if cipher.BlockSize() != gcmBlockSize {
- return nil, errors.New("cipher: NewGCM requires 128-bit block cipher")
- }
-
- var key [gcmBlockSize]byte
- cipher.Encrypt(key[:], key[:])
-
- g := &gcm{cipher: cipher, nonceSize: size}
-
- // We precompute 16 multiples of |key|. However, when we do lookups
- // into this table we'll be using bits from a field element and
- // therefore the bits will be in the reverse order. So normally one
- // would expect, say, 4*key to be in index 4 of the table but due to
- // this bit ordering it will actually be in index 0010 (base 2) = 2.
- x := gcmFieldElement{
- getUint64(key[:8]),
- getUint64(key[8:]),
- }
- g.productTable[reverseBits(1)] = x
-
- for i := 2; i < 16; i += 2 {
- g.productTable[reverseBits(i)] = gcmDouble(&g.productTable[reverseBits(i/2)])
- g.productTable[reverseBits(i+1)] = gcmAdd(&g.productTable[reverseBits(i)], &x)
- }
-
- return g, nil
-}
-
-const (
- gcmBlockSize = 16
- gcmTagSize = 12
- gcmStandardNonceSize = 12
-)
-
-func (g *gcm) NonceSize() int {
- return g.nonceSize
-}
-
-func (*gcm) Overhead() int {
- return gcmTagSize
-}
-
-func (g *gcm) Seal(dst, nonce, plaintext, data []byte) []byte {
- if len(nonce) != g.nonceSize {
- panic("cipher: incorrect nonce length given to GCM")
- }
- ret, out := sliceForAppend(dst, len(plaintext)+gcmTagSize)
-
- var counter, tagMask [gcmBlockSize]byte
- g.deriveCounter(&counter, nonce)
-
- g.cipher.Encrypt(tagMask[:], counter[:])
- gcmInc32(&counter)
-
- g.counterCrypt(out, plaintext, &counter)
-
- tag := make([]byte, 16)
- g.auth(tag, out[:len(plaintext)], data, &tagMask)
- copy(ret[len(ret)-12:], tag)
-
- return ret
-}
-
-var errOpen = errors.New("cipher: message authentication failed")
-
-func (g *gcm) Open(dst, nonce, ciphertext, data []byte) ([]byte, error) {
- if len(nonce) != g.nonceSize {
- panic("cipher: incorrect nonce length given to GCM")
- }
-
- if len(ciphertext) < gcmTagSize {
- return nil, errOpen
- }
- tag := ciphertext[len(ciphertext)-gcmTagSize:]
- ciphertext = ciphertext[:len(ciphertext)-gcmTagSize]
-
- var counter, tagMask [gcmBlockSize]byte
- g.deriveCounter(&counter, nonce)
-
- g.cipher.Encrypt(tagMask[:], counter[:])
- gcmInc32(&counter)
-
- var expectedTag [gcmBlockSize]byte
- g.auth(expectedTag[:], ciphertext, data, &tagMask)
-
- ret, out := sliceForAppend(dst, len(ciphertext))
-
- if subtle.ConstantTimeCompare(expectedTag[:gcmTagSize], tag) != 1 {
- // The AESNI code decrypts and authenticates concurrently, and
- // so overwrites dst in the event of a tag mismatch. That
- // behaviour is mimicked here in order to be consistent across
- // platforms.
- for i := range out {
- out[i] = 0
- }
- return nil, errOpen
- }
-
- g.counterCrypt(out, ciphertext, &counter)
-
- return ret, nil
-}
-
-// reverseBits reverses the order of the bits of 4-bit number in i.
-func reverseBits(i int) int {
- i = ((i << 2) & 0xc) | ((i >> 2) & 0x3)
- i = ((i << 1) & 0xa) | ((i >> 1) & 0x5)
- return i
-}
-
-// gcmAdd adds two elements of GF(2¹²⁸) and returns the sum.
-func gcmAdd(x, y *gcmFieldElement) gcmFieldElement {
- // Addition in a characteristic 2 field is just XOR.
- return gcmFieldElement{x.low ^ y.low, x.high ^ y.high}
-}
-
-// gcmDouble returns the result of doubling an element of GF(2¹²⁸).
-func gcmDouble(x *gcmFieldElement) (double gcmFieldElement) {
- msbSet := x.high&1 == 1
-
- // Because of the bit-ordering, doubling is actually a right shift.
- double.high = x.high >> 1
- double.high |= x.low << 63
- double.low = x.low >> 1
-
- // If the most-significant bit was set before shifting then it,
- // conceptually, becomes a term of x^128. This is greater than the
- // irreducible polynomial so the result has to be reduced. The
- // irreducible polynomial is 1+x+x^2+x^7+x^128. We can subtract that to
- // eliminate the term at x^128 which also means subtracting the other
- // four terms. In characteristic 2 fields, subtraction == addition ==
- // XOR.
- if msbSet {
- double.low ^= 0xe100000000000000
- }
-
- return
-}
-
-var gcmReductionTable = []uint16{
- 0x0000, 0x1c20, 0x3840, 0x2460, 0x7080, 0x6ca0, 0x48c0, 0x54e0,
- 0xe100, 0xfd20, 0xd940, 0xc560, 0x9180, 0x8da0, 0xa9c0, 0xb5e0,
-}
-
-// mul sets y to y*H, where H is the GCM key, fixed during NewGCMWithNonceSize.
-func (g *gcm) mul(y *gcmFieldElement) {
- var z gcmFieldElement
-
- for i := 0; i < 2; i++ {
- word := y.high
- if i == 1 {
- word = y.low
- }
-
- // Multiplication works by multiplying z by 16 and adding in
- // one of the precomputed multiples of H.
- for j := 0; j < 64; j += 4 {
- msw := z.high & 0xf
- z.high >>= 4
- z.high |= z.low << 60
- z.low >>= 4
- z.low ^= uint64(gcmReductionTable[msw]) << 48
-
- // the values in |table| are ordered for
- // little-endian bit positions. See the comment
- // in NewGCMWithNonceSize.
- t := &g.productTable[word&0xf]
-
- z.low ^= t.low
- z.high ^= t.high
- word >>= 4
- }
- }
-
- *y = z
-}
-
-// updateBlocks extends y with more polynomial terms from blocks, based on
-// Horner's rule. There must be a multiple of gcmBlockSize bytes in blocks.
-func (g *gcm) updateBlocks(y *gcmFieldElement, blocks []byte) {
- for len(blocks) > 0 {
- y.low ^= getUint64(blocks)
- y.high ^= getUint64(blocks[8:])
- g.mul(y)
- blocks = blocks[gcmBlockSize:]
- }
-}
-
-// update extends y with more polynomial terms from data. If data is not a
-// multiple of gcmBlockSize bytes long then the remainder is zero padded.
-func (g *gcm) update(y *gcmFieldElement, data []byte) {
- fullBlocks := (len(data) >> 4) << 4
- g.updateBlocks(y, data[:fullBlocks])
-
- if len(data) != fullBlocks {
- var partialBlock [gcmBlockSize]byte
- copy(partialBlock[:], data[fullBlocks:])
- g.updateBlocks(y, partialBlock[:])
- }
-}
-
-// gcmInc32 treats the final four bytes of counterBlock as a big-endian value
-// and increments it.
-func gcmInc32(counterBlock *[16]byte) {
- for i := gcmBlockSize - 1; i >= gcmBlockSize-4; i-- {
- counterBlock[i]++
- if counterBlock[i] != 0 {
- break
- }
- }
-}
-
-// sliceForAppend takes a slice and a requested number of bytes. It returns a
-// slice with the contents of the given slice followed by that many bytes and a
-// second slice that aliases into it and contains only the extra bytes. If the
-// original slice has sufficient capacity then no allocation is performed.
-func sliceForAppend(in []byte, n int) (head, tail []byte) {
- if total := len(in) + n; cap(in) >= total {
- head = in[:total]
- } else {
- head = make([]byte, total)
- copy(head, in)
- }
- tail = head[len(in):]
- return
-}
-
-// counterCrypt crypts in to out using g.cipher in counter mode.
-func (g *gcm) counterCrypt(out, in []byte, counter *[gcmBlockSize]byte) {
- var mask [gcmBlockSize]byte
-
- for len(in) >= gcmBlockSize {
- g.cipher.Encrypt(mask[:], counter[:])
- gcmInc32(counter)
-
- xorWords(out, in, mask[:])
- out = out[gcmBlockSize:]
- in = in[gcmBlockSize:]
- }
-
- if len(in) > 0 {
- g.cipher.Encrypt(mask[:], counter[:])
- gcmInc32(counter)
- xorBytes(out, in, mask[:])
- }
-}
-
-// deriveCounter computes the initial GCM counter state from the given nonce.
-// See NIST SP 800-38D, section 7.1. This assumes that counter is filled with
-// zeros on entry.
-func (g *gcm) deriveCounter(counter *[gcmBlockSize]byte, nonce []byte) {
- // GCM has two modes of operation with respect to the initial counter
- // state: a "fast path" for 96-bit (12-byte) nonces, and a "slow path"
- // for nonces of other lengths. For a 96-bit nonce, the nonce, along
- // with a four-byte big-endian counter starting at one, is used
- // directly as the starting counter. For other nonce sizes, the counter
- // is computed by passing it through the GHASH function.
- if len(nonce) == gcmStandardNonceSize {
- copy(counter[:], nonce)
- counter[gcmBlockSize-1] = 1
- } else {
- var y gcmFieldElement
- g.update(&y, nonce)
- y.high ^= uint64(len(nonce)) * 8
- g.mul(&y)
- putUint64(counter[:8], y.low)
- putUint64(counter[8:], y.high)
- }
-}
-
-// auth calculates GHASH(ciphertext, additionalData), masks the result with
-// tagMask and writes the result to out.
-func (g *gcm) auth(out, ciphertext, additionalData []byte, tagMask *[gcmBlockSize]byte) {
- var y gcmFieldElement
- g.update(&y, additionalData)
- g.update(&y, ciphertext)
-
- y.low ^= uint64(len(additionalData)) * 8
- y.high ^= uint64(len(ciphertext)) * 8
-
- g.mul(&y)
-
- putUint64(out, y.low)
- putUint64(out[8:], y.high)
-
- xorWords(out, out, tagMask[:])
-}
-
-func getUint64(data []byte) uint64 {
- r := uint64(data[0])<<56 |
- uint64(data[1])<<48 |
- uint64(data[2])<<40 |
- uint64(data[3])<<32 |
- uint64(data[4])<<24 |
- uint64(data[5])<<16 |
- uint64(data[6])<<8 |
- uint64(data[7])
- return r
-}
-
-func putUint64(out []byte, v uint64) {
- out[0] = byte(v >> 56)
- out[1] = byte(v >> 48)
- out[2] = byte(v >> 40)
- out[3] = byte(v >> 32)
- out[4] = byte(v >> 24)
- out[5] = byte(v >> 16)
- out[6] = byte(v >> 8)
- out[7] = byte(v)
-}
diff --git a/vendor/github.com/lucas-clemente/aes12/gcm_amd64.s b/vendor/github.com/lucas-clemente/aes12/gcm_amd64.s
deleted file mode 100644
index c25badd..0000000
--- a/vendor/github.com/lucas-clemente/aes12/gcm_amd64.s
+++ /dev/null
@@ -1,1277 +0,0 @@
-// Copyright 2015 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// This is an optimized implementation of AES-GCM using AES-NI and CLMUL-NI
-// The implementation uses some optimization as described in:
-// [1] Gueron, S., Kounavis, M.E.: Intel® Carry-Less Multiplication
-// Instruction and its Usage for Computing the GCM Mode rev. 2.02
-// [2] Gueron, S., Krasnov, V.: Speeding up Counter Mode in Software and
-// Hardware
-
-#include "textflag.h"
-
-#define B0 X0
-#define B1 X1
-#define B2 X2
-#define B3 X3
-#define B4 X4
-#define B5 X5
-#define B6 X6
-#define B7 X7
-
-#define ACC0 X8
-#define ACC1 X9
-#define ACCM X10
-
-#define T0 X11
-#define T1 X12
-#define T2 X13
-#define POLY X14
-#define BSWAP X15
-
-DATA bswapMask<>+0x00(SB)/8, $0x08090a0b0c0d0e0f
-DATA bswapMask<>+0x08(SB)/8, $0x0001020304050607
-
-DATA gcmPoly<>+0x00(SB)/8, $0x0000000000000001
-DATA gcmPoly<>+0x08(SB)/8, $0xc200000000000000
-
-DATA andMask<>+0x00(SB)/8, $0x00000000000000ff
-DATA andMask<>+0x08(SB)/8, $0x0000000000000000
-DATA andMask<>+0x10(SB)/8, $0x000000000000ffff
-DATA andMask<>+0x18(SB)/8, $0x0000000000000000
-DATA andMask<>+0x20(SB)/8, $0x0000000000ffffff
-DATA andMask<>+0x28(SB)/8, $0x0000000000000000
-DATA andMask<>+0x30(SB)/8, $0x00000000ffffffff
-DATA andMask<>+0x38(SB)/8, $0x0000000000000000
-DATA andMask<>+0x40(SB)/8, $0x000000ffffffffff
-DATA andMask<>+0x48(SB)/8, $0x0000000000000000
-DATA andMask<>+0x50(SB)/8, $0x0000ffffffffffff
-DATA andMask<>+0x58(SB)/8, $0x0000000000000000
-DATA andMask<>+0x60(SB)/8, $0x00ffffffffffffff
-DATA andMask<>+0x68(SB)/8, $0x0000000000000000
-DATA andMask<>+0x70(SB)/8, $0xffffffffffffffff
-DATA andMask<>+0x78(SB)/8, $0x0000000000000000
-DATA andMask<>+0x80(SB)/8, $0xffffffffffffffff
-DATA andMask<>+0x88(SB)/8, $0x00000000000000ff
-DATA andMask<>+0x90(SB)/8, $0xffffffffffffffff
-DATA andMask<>+0x98(SB)/8, $0x000000000000ffff
-DATA andMask<>+0xa0(SB)/8, $0xffffffffffffffff
-DATA andMask<>+0xa8(SB)/8, $0x0000000000ffffff
-DATA andMask<>+0xb0(SB)/8, $0xffffffffffffffff
-DATA andMask<>+0xb8(SB)/8, $0x00000000ffffffff
-DATA andMask<>+0xc0(SB)/8, $0xffffffffffffffff
-DATA andMask<>+0xc8(SB)/8, $0x000000ffffffffff
-DATA andMask<>+0xd0(SB)/8, $0xffffffffffffffff
-DATA andMask<>+0xd8(SB)/8, $0x0000ffffffffffff
-DATA andMask<>+0xe0(SB)/8, $0xffffffffffffffff
-DATA andMask<>+0xe8(SB)/8, $0x00ffffffffffffff
-
-GLOBL bswapMask<>(SB), (NOPTR+RODATA), $16
-GLOBL gcmPoly<>(SB), (NOPTR+RODATA), $16
-GLOBL andMask<>(SB), (NOPTR+RODATA), $240
-
-// func hasGCMAsm() bool
-// returns whether AES-NI AND CLMUL-NI are supported
-TEXT ·hasGCMAsm(SB),NOSPLIT,$0
- XORQ AX, AX
- INCL AX
- CPUID
- MOVQ CX, DX
- SHRQ $25, CX
- SHRQ $1, DX
- ANDQ DX, CX
- ANDQ $1, CX
- MOVB CX, ret+0(FP)
- RET
-
-// func aesEncBlock(dst, src *[16]byte, ks []uint32)
-TEXT ·aesEncBlock(SB),NOSPLIT,$0
- MOVQ dst+0(FP), DI
- MOVQ src+8(FP), SI
- MOVQ ks_base+16(FP), DX
- MOVQ ks_len+24(FP), CX
-
- SHRQ $2, CX
- DECQ CX
-
- MOVOU (SI), X0
- MOVOU (16*0)(DX), X1
- PXOR X1, X0
- MOVOU (16*1)(DX), X1
- AESENC X1, X0
- MOVOU (16*2)(DX), X1
- AESENC X1, X0
- MOVOU (16*3)(DX), X1
- AESENC X1, X0
- MOVOU (16*4)(DX), X1
- AESENC X1, X0
- MOVOU (16*5)(DX), X1
- AESENC X1, X0
- MOVOU (16*6)(DX), X1
- AESENC X1, X0
- MOVOU (16*7)(DX), X1
- AESENC X1, X0
- MOVOU (16*8)(DX), X1
- AESENC X1, X0
- MOVOU (16*9)(DX), X1
- AESENC X1, X0
- MOVOU (16*10)(DX), X1
- CMPQ CX, $12
- JB encLast
- AESENC X1, X0
- MOVOU (16*11)(DX), X1
- AESENC X1, X0
- MOVOU (16*12)(DX), X1
- JE encLast
- AESENC X1, X0
- MOVOU (16*13)(DX), X1
- AESENC X1, X0
- MOVOU (16*14)(DX), X1
-
-encLast:
- AESENCLAST X1, X0
- MOVOU X0, (DI)
-
- RET
-
-// func gcmAesFinish(productTable *[256]byte, tagMask, T *[16]byte, pLen, dLen uint64)
-TEXT ·gcmAesFinish(SB),NOSPLIT,$0
-#define pTbl DI
-#define tMsk SI
-#define tPtr DX
-#define plen AX
-#define dlen CX
-
- MOVQ productTable+0(FP), pTbl
- MOVQ tagMask+8(FP), tMsk
- MOVQ T+16(FP), tPtr
- MOVQ pLen+24(FP), plen
- MOVQ dLen+32(FP), dlen
-
- MOVOU (tPtr), ACC0
- MOVOU (tMsk), T2
-
- MOVOU bswapMask<>(SB), BSWAP
- MOVOU gcmPoly<>(SB), POLY
-
- SHLQ $3, plen
- SHLQ $3, dlen
-
- MOVQ plen, B0
- PINSRQ $1, dlen, B0
-
- PXOR ACC0, B0
-
- MOVOU (16*14)(pTbl), ACC0
- MOVOU (16*15)(pTbl), ACCM
- MOVOU ACC0, ACC1
-
- PCLMULQDQ $0x00, B0, ACC0
- PCLMULQDQ $0x11, B0, ACC1
- PSHUFD $78, B0, T0
- PXOR B0, T0
- PCLMULQDQ $0x00, T0, ACCM
-
- PXOR ACC0, ACCM
- PXOR ACC1, ACCM
- MOVOU ACCM, T0
- PSRLDQ $8, ACCM
- PSLLDQ $8, T0
- PXOR ACCM, ACC1
- PXOR T0, ACC0
-
- MOVOU POLY, T0
- PCLMULQDQ $0x01, ACC0, T0
- PSHUFD $78, ACC0, ACC0
- PXOR T0, ACC0
-
- MOVOU POLY, T0
- PCLMULQDQ $0x01, ACC0, T0
- PSHUFD $78, ACC0, ACC0
- PXOR T0, ACC0
-
- PXOR ACC1, ACC0
-
- PSHUFB BSWAP, ACC0
- PXOR T2, ACC0
- MOVOU ACC0, (tPtr)
-
- RET
-#undef pTbl
-#undef tMsk
-#undef tPtr
-#undef plen
-#undef dlen
-
-// func gcmAesInit(productTable *[256]byte, ks []uint32)
-TEXT ·gcmAesInit(SB),NOSPLIT,$0
-#define dst DI
-#define KS SI
-#define NR DX
-
- MOVQ productTable+0(FP), dst
- MOVQ ks_base+8(FP), KS
- MOVQ ks_len+16(FP), NR
-
- SHRQ $2, NR
- DECQ NR
-
- MOVOU bswapMask<>(SB), BSWAP
- MOVOU gcmPoly<>(SB), POLY
-
- // Encrypt block 0, with the AES key to generate the hash key H
- MOVOU (16*0)(KS), B0
- MOVOU (16*1)(KS), T0
- AESENC T0, B0
- MOVOU (16*2)(KS), T0
- AESENC T0, B0
- MOVOU (16*3)(KS), T0
- AESENC T0, B0
- MOVOU (16*4)(KS), T0
- AESENC T0, B0
- MOVOU (16*5)(KS), T0
- AESENC T0, B0
- MOVOU (16*6)(KS), T0
- AESENC T0, B0
- MOVOU (16*7)(KS), T0
- AESENC T0, B0
- MOVOU (16*8)(KS), T0
- AESENC T0, B0
- MOVOU (16*9)(KS), T0
- AESENC T0, B0
- MOVOU (16*10)(KS), T0
- CMPQ NR, $12
- JB initEncLast
- AESENC T0, B0
- MOVOU (16*11)(KS), T0
- AESENC T0, B0
- MOVOU (16*12)(KS), T0
- JE initEncLast
- AESENC T0, B0
- MOVOU (16*13)(KS), T0
- AESENC T0, B0
- MOVOU (16*14)(KS), T0
-initEncLast:
- AESENCLAST T0, B0
-
- PSHUFB BSWAP, B0
- // H * 2
- PSHUFD $0xff, B0, T0
- MOVOU B0, T1
- PSRAL $31, T0
- PAND POLY, T0
- PSRLL $31, T1
- PSLLDQ $4, T1
- PSLLL $1, B0
- PXOR T0, B0
- PXOR T1, B0
- // Karatsuba pre-computations
- MOVOU B0, (16*14)(dst)
- PSHUFD $78, B0, B1
- PXOR B0, B1
- MOVOU B1, (16*15)(dst)
-
- MOVOU B0, B2
- MOVOU B1, B3
- // Now prepare powers of H and pre-computations for them
- MOVQ $7, AX
-
-initLoop:
- MOVOU B2, T0
- MOVOU B2, T1
- MOVOU B3, T2
- PCLMULQDQ $0x00, B0, T0
- PCLMULQDQ $0x11, B0, T1
- PCLMULQDQ $0x00, B1, T2
-
- PXOR T0, T2
- PXOR T1, T2
- MOVOU T2, B4
- PSLLDQ $8, B4
- PSRLDQ $8, T2
- PXOR B4, T0
- PXOR T2, T1
-
- MOVOU POLY, B2
- PCLMULQDQ $0x01, T0, B2
- PSHUFD $78, T0, T0
- PXOR B2, T0
- MOVOU POLY, B2
- PCLMULQDQ $0x01, T0, B2
- PSHUFD $78, T0, T0
- PXOR T0, B2
- PXOR T1, B2
-
- MOVOU B2, (16*12)(dst)
- PSHUFD $78, B2, B3
- PXOR B2, B3
- MOVOU B3, (16*13)(dst)
-
- DECQ AX
- LEAQ (-16*2)(dst), dst
- JNE initLoop
-
- RET
-#undef NR
-#undef KS
-#undef dst
-
-// func gcmAesData(productTable *[256]byte, data []byte, T *[16]byte)
-TEXT ·gcmAesData(SB),NOSPLIT,$0
-#define pTbl DI
-#define aut SI
-#define tPtr CX
-#define autLen DX
-
- MOVQ productTable+0(FP), pTbl
- MOVQ data_base+8(FP), aut
- MOVQ data_len+16(FP), autLen
- MOVQ T+32(FP), tPtr
-
- PXOR ACC0, ACC0
- MOVOU bswapMask<>(SB), BSWAP
- MOVOU gcmPoly<>(SB), POLY
-
- MOVOU (16*14)(pTbl), T1
- MOVOU (16*15)(pTbl), T2
-
- TESTQ autLen, autLen
- JEQ dataBail
-
- CMPQ autLen, $13 // optimize the TLS case
- JNE dataSinglesLoop
-
- PXOR B0, B0
- MOVQ (aut), B0
- PINSRD $2, 8(aut), B0
- PINSRB $12, 12(aut), B0
- XORQ autLen, autLen
- JMP dataMul
-
-dataSinglesLoop:
-
- CMPQ autLen, $16
- JB dataEnd
- SUBQ $16, autLen
-
- MOVOU (aut), B0
-dataMul:
- PSHUFB BSWAP, B0
- PXOR ACC0, B0
-
- MOVOU T1, ACC0
- MOVOU T2, ACCM
- MOVOU T1, ACC1
-
- PSHUFD $78, B0, T0
- PXOR B0, T0
- PCLMULQDQ $0x00, B0, ACC0
- PCLMULQDQ $0x11, B0, ACC1
- PCLMULQDQ $0x00, T0, ACCM
-
- PXOR ACC0, ACCM
- PXOR ACC1, ACCM
- MOVOU ACCM, T0
- PSRLDQ $8, ACCM
- PSLLDQ $8, T0
- PXOR ACCM, ACC1
- PXOR T0, ACC0
-
- MOVOU POLY, T0
- PCLMULQDQ $0x01, ACC0, T0
- PSHUFD $78, ACC0, ACC0
- PXOR T0, ACC0
-
- MOVOU POLY, T0
- PCLMULQDQ $0x01, ACC0, T0
- PSHUFD $78, ACC0, ACC0
- PXOR T0, ACC0
- PXOR ACC1, ACC0
-
- LEAQ 16(aut), aut
-
- JMP dataSinglesLoop
-
-dataEnd:
-
- TESTQ autLen, autLen
- JEQ dataBail
-
- PXOR B0, B0
- LEAQ -1(aut)(autLen*1), aut
-
-dataLoadLoop:
-
- PSLLDQ $1, B0
- PINSRB $0, (aut), B0
-
- LEAQ -1(aut), aut
- DECQ autLen
- JNE dataLoadLoop
-
- JMP dataMul
-
-dataBail:
- MOVOU ACC0, (tPtr)
- RET
-#undef pTbl
-#undef aut
-#undef tPtr
-#undef autLen
-
-// func gcmAesEnc(productTable *[256]byte, dst, src []byte, ctr, T *[16]byte, ks []uint32)
-TEXT ·gcmAesEnc(SB),0,$256-96
-#define pTbl DI
-#define ctx DX
-#define ctrPtr CX
-#define ptx SI
-#define ks AX
-#define tPtr R8
-#define ptxLen R9
-#define aluCTR R10
-#define aluTMP R11
-#define aluK R12
-#define NR R13
-
-#define increment(i) ADDL $1, aluCTR; MOVL aluCTR, aluTMP; XORL aluK, aluTMP; BSWAPL aluTMP; MOVL aluTMP, (3*4 + 8*16 + i*16)(SP)
-#define aesRnd(k) AESENC k, B0; AESENC k, B1; AESENC k, B2; AESENC k, B3; AESENC k, B4; AESENC k, B5; AESENC k, B6; AESENC k, B7
-#define aesRound(i) MOVOU (16*i)(ks), T0;AESENC T0, B0; AESENC T0, B1; AESENC T0, B2; AESENC T0, B3; AESENC T0, B4; AESENC T0, B5; AESENC T0, B6; AESENC T0, B7
-#define aesRndLast(k) AESENCLAST k, B0; AESENCLAST k, B1; AESENCLAST k, B2; AESENCLAST k, B3; AESENCLAST k, B4; AESENCLAST k, B5; AESENCLAST k, B6; AESENCLAST k, B7
-#define reduceRound(a) MOVOU POLY, T0; PCLMULQDQ $0x01, a, T0; PSHUFD $78, a, a; PXOR T0, a
-#define combinedRound(i) \
- MOVOU (16*i)(ks), T0;\
- AESENC T0, B0;\
- AESENC T0, B1;\
- AESENC T0, B2;\
- AESENC T0, B3;\
- MOVOU (16*(i*2))(pTbl), T1;\
- MOVOU T1, T2;\
- AESENC T0, B4;\
- AESENC T0, B5;\
- AESENC T0, B6;\
- AESENC T0, B7;\
- MOVOU (16*i)(SP), T0;\
- PCLMULQDQ $0x00, T0, T1;\
- PXOR T1, ACC0;\
- PSHUFD $78, T0, T1;\
- PCLMULQDQ $0x11, T0, T2;\
- PXOR T1, T0;\
- PXOR T2, ACC1;\
- MOVOU (16*(i*2+1))(pTbl), T2;\
- PCLMULQDQ $0x00, T2, T0;\
- PXOR T0, ACCM
-#define mulRound(i) \
- MOVOU (16*i)(SP), T0;\
- MOVOU (16*(i*2))(pTbl), T1;\
- MOVOU T1, T2;\
- PCLMULQDQ $0x00, T0, T1;\
- PXOR T1, ACC0;\
- PCLMULQDQ $0x11, T0, T2;\
- PXOR T2, ACC1;\
- PSHUFD $78, T0, T1;\
- PXOR T1, T0;\
- MOVOU (16*(i*2+1))(pTbl), T1;\
- PCLMULQDQ $0x00, T0, T1;\
- PXOR T1, ACCM
-
- MOVQ productTable+0(FP), pTbl
- MOVQ dst+8(FP), ctx
- MOVQ src_base+32(FP), ptx
- MOVQ src_len+40(FP), ptxLen
- MOVQ ctr+56(FP), ctrPtr
- MOVQ T+64(FP), tPtr
- MOVQ ks_base+72(FP), ks
- MOVQ ks_len+80(FP), NR
-
- SHRQ $2, NR
- DECQ NR
-
- MOVOU bswapMask<>(SB), BSWAP
- MOVOU gcmPoly<>(SB), POLY
-
- MOVOU (tPtr), ACC0
- PXOR ACC1, ACC1
- PXOR ACCM, ACCM
- MOVOU (ctrPtr), B0
- MOVL (3*4)(ctrPtr), aluCTR
- MOVOU (ks), T0
- MOVL (3*4)(ks), aluK
- BSWAPL aluCTR
- BSWAPL aluK
-
- PXOR B0, T0
- MOVOU T0, (8*16 + 0*16)(SP)
- increment(0)
-
- CMPQ ptxLen, $128
- JB gcmAesEncSingles
- SUBQ $128, ptxLen
-
- // We have at least 8 blocks to encrypt, prepare the rest of the counters
- MOVOU T0, (8*16 + 1*16)(SP)
- increment(1)
- MOVOU T0, (8*16 + 2*16)(SP)
- increment(2)
- MOVOU T0, (8*16 + 3*16)(SP)
- increment(3)
- MOVOU T0, (8*16 + 4*16)(SP)
- increment(4)
- MOVOU T0, (8*16 + 5*16)(SP)
- increment(5)
- MOVOU T0, (8*16 + 6*16)(SP)
- increment(6)
- MOVOU T0, (8*16 + 7*16)(SP)
- increment(7)
-
- MOVOU (8*16 + 0*16)(SP), B0
- MOVOU (8*16 + 1*16)(SP), B1
- MOVOU (8*16 + 2*16)(SP), B2
- MOVOU (8*16 + 3*16)(SP), B3
- MOVOU (8*16 + 4*16)(SP), B4
- MOVOU (8*16 + 5*16)(SP), B5
- MOVOU (8*16 + 6*16)(SP), B6
- MOVOU (8*16 + 7*16)(SP), B7
-
- aesRound(1)
- increment(0)
- aesRound(2)
- increment(1)
- aesRound(3)
- increment(2)
- aesRound(4)
- increment(3)
- aesRound(5)
- increment(4)
- aesRound(6)
- increment(5)
- aesRound(7)
- increment(6)
- aesRound(8)
- increment(7)
- aesRound(9)
- MOVOU (16*10)(ks), T0
- CMPQ NR, $12
- JB encLast1
- aesRnd(T0)
- aesRound(11)
- MOVOU (16*12)(ks), T0
- JE encLast1
- aesRnd(T0)
- aesRound(13)
- MOVOU (16*14)(ks), T0
-encLast1:
- aesRndLast(T0)
-
- MOVOU (16*0)(ptx), T0
- PXOR T0, B0
- MOVOU (16*1)(ptx), T0
- PXOR T0, B1
- MOVOU (16*2)(ptx), T0
- PXOR T0, B2
- MOVOU (16*3)(ptx), T0
- PXOR T0, B3
- MOVOU (16*4)(ptx), T0
- PXOR T0, B4
- MOVOU (16*5)(ptx), T0
- PXOR T0, B5
- MOVOU (16*6)(ptx), T0
- PXOR T0, B6
- MOVOU (16*7)(ptx), T0
- PXOR T0, B7
-
- MOVOU B0, (16*0)(ctx)
- PSHUFB BSWAP, B0
- PXOR ACC0, B0
- MOVOU B1, (16*1)(ctx)
- PSHUFB BSWAP, B1
- MOVOU B2, (16*2)(ctx)
- PSHUFB BSWAP, B2
- MOVOU B3, (16*3)(ctx)
- PSHUFB BSWAP, B3
- MOVOU B4, (16*4)(ctx)
- PSHUFB BSWAP, B4
- MOVOU B5, (16*5)(ctx)
- PSHUFB BSWAP, B5
- MOVOU B6, (16*6)(ctx)
- PSHUFB BSWAP, B6
- MOVOU B7, (16*7)(ctx)
- PSHUFB BSWAP, B7
-
- MOVOU B0, (16*0)(SP)
- MOVOU B1, (16*1)(SP)
- MOVOU B2, (16*2)(SP)
- MOVOU B3, (16*3)(SP)
- MOVOU B4, (16*4)(SP)
- MOVOU B5, (16*5)(SP)
- MOVOU B6, (16*6)(SP)
- MOVOU B7, (16*7)(SP)
-
- LEAQ 128(ptx), ptx
- LEAQ 128(ctx), ctx
-
-gcmAesEncOctetsLoop:
-
- CMPQ ptxLen, $128
- JB gcmAesEncOctetsEnd
- SUBQ $128, ptxLen
-
- MOVOU (8*16 + 0*16)(SP), B0
- MOVOU (8*16 + 1*16)(SP), B1
- MOVOU (8*16 + 2*16)(SP), B2
- MOVOU (8*16 + 3*16)(SP), B3
- MOVOU (8*16 + 4*16)(SP), B4
- MOVOU (8*16 + 5*16)(SP), B5
- MOVOU (8*16 + 6*16)(SP), B6
- MOVOU (8*16 + 7*16)(SP), B7
-
- MOVOU (16*0)(SP), T0
- PSHUFD $78, T0, T1
- PXOR T0, T1
-
- MOVOU (16*0)(pTbl), ACC0
- MOVOU (16*1)(pTbl), ACCM
- MOVOU ACC0, ACC1
-
- PCLMULQDQ $0x00, T1, ACCM
- PCLMULQDQ $0x00, T0, ACC0
- PCLMULQDQ $0x11, T0, ACC1
-
- combinedRound(1)
- increment(0)
- combinedRound(2)
- increment(1)
- combinedRound(3)
- increment(2)
- combinedRound(4)
- increment(3)
- combinedRound(5)
- increment(4)
- combinedRound(6)
- increment(5)
- combinedRound(7)
- increment(6)
-
- aesRound(8)
- increment(7)
-
- PXOR ACC0, ACCM
- PXOR ACC1, ACCM
- MOVOU ACCM, T0
- PSRLDQ $8, ACCM
- PSLLDQ $8, T0
- PXOR ACCM, ACC1
- PXOR T0, ACC0
-
- reduceRound(ACC0)
- aesRound(9)
-
- reduceRound(ACC0)
- PXOR ACC1, ACC0
-
- MOVOU (16*10)(ks), T0
- CMPQ NR, $12
- JB encLast2
- aesRnd(T0)
- aesRound(11)
- MOVOU (16*12)(ks), T0
- JE encLast2
- aesRnd(T0)
- aesRound(13)
- MOVOU (16*14)(ks), T0
-encLast2:
- aesRndLast(T0)
-
- MOVOU (16*0)(ptx), T0
- PXOR T0, B0
- MOVOU (16*1)(ptx), T0
- PXOR T0, B1
- MOVOU (16*2)(ptx), T0
- PXOR T0, B2
- MOVOU (16*3)(ptx), T0
- PXOR T0, B3
- MOVOU (16*4)(ptx), T0
- PXOR T0, B4
- MOVOU (16*5)(ptx), T0
- PXOR T0, B5
- MOVOU (16*6)(ptx), T0
- PXOR T0, B6
- MOVOU (16*7)(ptx), T0
- PXOR T0, B7
-
- MOVOU B0, (16*0)(ctx)
- PSHUFB BSWAP, B0
- PXOR ACC0, B0
- MOVOU B1, (16*1)(ctx)
- PSHUFB BSWAP, B1
- MOVOU B2, (16*2)(ctx)
- PSHUFB BSWAP, B2
- MOVOU B3, (16*3)(ctx)
- PSHUFB BSWAP, B3
- MOVOU B4, (16*4)(ctx)
- PSHUFB BSWAP, B4
- MOVOU B5, (16*5)(ctx)
- PSHUFB BSWAP, B5
- MOVOU B6, (16*6)(ctx)
- PSHUFB BSWAP, B6
- MOVOU B7, (16*7)(ctx)
- PSHUFB BSWAP, B7
-
- MOVOU B0, (16*0)(SP)
- MOVOU B1, (16*1)(SP)
- MOVOU B2, (16*2)(SP)
- MOVOU B3, (16*3)(SP)
- MOVOU B4, (16*4)(SP)
- MOVOU B5, (16*5)(SP)
- MOVOU B6, (16*6)(SP)
- MOVOU B7, (16*7)(SP)
-
- LEAQ 128(ptx), ptx
- LEAQ 128(ctx), ctx
-
- JMP gcmAesEncOctetsLoop
-
-gcmAesEncOctetsEnd:
-
- MOVOU (16*0)(SP), T0
- MOVOU (16*0)(pTbl), ACC0
- MOVOU (16*1)(pTbl), ACCM
- MOVOU ACC0, ACC1
- PSHUFD $78, T0, T1
- PXOR T0, T1
- PCLMULQDQ $0x00, T0, ACC0
- PCLMULQDQ $0x11, T0, ACC1
- PCLMULQDQ $0x00, T1, ACCM
-
- mulRound(1)
- mulRound(2)
- mulRound(3)
- mulRound(4)
- mulRound(5)
- mulRound(6)
- mulRound(7)
-
- PXOR ACC0, ACCM
- PXOR ACC1, ACCM
- MOVOU ACCM, T0
- PSRLDQ $8, ACCM
- PSLLDQ $8, T0
- PXOR ACCM, ACC1
- PXOR T0, ACC0
-
- reduceRound(ACC0)
- reduceRound(ACC0)
- PXOR ACC1, ACC0
-
- TESTQ ptxLen, ptxLen
- JE gcmAesEncDone
-
- SUBQ $7, aluCTR
-
-gcmAesEncSingles:
-
- MOVOU (16*1)(ks), B1
- MOVOU (16*2)(ks), B2
- MOVOU (16*3)(ks), B3
- MOVOU (16*4)(ks), B4
- MOVOU (16*5)(ks), B5
- MOVOU (16*6)(ks), B6
- MOVOU (16*7)(ks), B7
-
- MOVOU (16*14)(pTbl), T2
-
-gcmAesEncSinglesLoop:
-
- CMPQ ptxLen, $16
- JB gcmAesEncTail
- SUBQ $16, ptxLen
-
- MOVOU (8*16 + 0*16)(SP), B0
- increment(0)
-
- AESENC B1, B0
- AESENC B2, B0
- AESENC B3, B0
- AESENC B4, B0
- AESENC B5, B0
- AESENC B6, B0
- AESENC B7, B0
- MOVOU (16*8)(ks), T0
- AESENC T0, B0
- MOVOU (16*9)(ks), T0
- AESENC T0, B0
- MOVOU (16*10)(ks), T0
- CMPQ NR, $12
- JB encLast3
- AESENC T0, B0
- MOVOU (16*11)(ks), T0
- AESENC T0, B0
- MOVOU (16*12)(ks), T0
- JE encLast3
- AESENC T0, B0
- MOVOU (16*13)(ks), T0
- AESENC T0, B0
- MOVOU (16*14)(ks), T0
-encLast3:
- AESENCLAST T0, B0
-
- MOVOU (ptx), T0
- PXOR T0, B0
- MOVOU B0, (ctx)
-
- PSHUFB BSWAP, B0
- PXOR ACC0, B0
-
- MOVOU T2, ACC0
- MOVOU T2, ACC1
- MOVOU (16*15)(pTbl), ACCM
-
- PSHUFD $78, B0, T0
- PXOR B0, T0
- PCLMULQDQ $0x00, B0, ACC0
- PCLMULQDQ $0x11, B0, ACC1
- PCLMULQDQ $0x00, T0, ACCM
-
- PXOR ACC0, ACCM
- PXOR ACC1, ACCM
- MOVOU ACCM, T0
- PSRLDQ $8, ACCM
- PSLLDQ $8, T0
- PXOR ACCM, ACC1
- PXOR T0, ACC0
-
- reduceRound(ACC0)
- reduceRound(ACC0)
- PXOR ACC1, ACC0
-
- LEAQ (16*1)(ptx), ptx
- LEAQ (16*1)(ctx), ctx
-
- JMP gcmAesEncSinglesLoop
-
-gcmAesEncTail:
- TESTQ ptxLen, ptxLen
- JE gcmAesEncDone
-
- MOVOU (8*16 + 0*16)(SP), B0
- AESENC B1, B0
- AESENC B2, B0
- AESENC B3, B0
- AESENC B4, B0
- AESENC B5, B0
- AESENC B6, B0
- AESENC B7, B0
- MOVOU (16*8)(ks), T0
- AESENC T0, B0
- MOVOU (16*9)(ks), T0
- AESENC T0, B0
- MOVOU (16*10)(ks), T0
- CMPQ NR, $12
- JB encLast4
- AESENC T0, B0
- MOVOU (16*11)(ks), T0
- AESENC T0, B0
- MOVOU (16*12)(ks), T0
- JE encLast4
- AESENC T0, B0
- MOVOU (16*13)(ks), T0
- AESENC T0, B0
- MOVOU (16*14)(ks), T0
-encLast4:
- AESENCLAST T0, B0
- MOVOU B0, T0
-
- LEAQ -1(ptx)(ptxLen*1), ptx
-
- MOVQ ptxLen, aluTMP
- SHLQ $4, aluTMP
-
- LEAQ andMask<>(SB), aluCTR
- MOVOU -16(aluCTR)(aluTMP*1), T1
-
- PXOR B0, B0
-ptxLoadLoop:
- PSLLDQ $1, B0
- PINSRB $0, (ptx), B0
- LEAQ -1(ptx), ptx
- DECQ ptxLen
- JNE ptxLoadLoop
-
- PXOR T0, B0
- PAND T1, B0
- MOVOU B0, (ctx) // I assume there is always space, due to TAG in the end of the CT
-
- PSHUFB BSWAP, B0
- PXOR ACC0, B0
-
- MOVOU T2, ACC0
- MOVOU T2, ACC1
- MOVOU (16*15)(pTbl), ACCM
-
- PSHUFD $78, B0, T0
- PXOR B0, T0
- PCLMULQDQ $0x00, B0, ACC0
- PCLMULQDQ $0x11, B0, ACC1
- PCLMULQDQ $0x00, T0, ACCM
-
- PXOR ACC0, ACCM
- PXOR ACC1, ACCM
- MOVOU ACCM, T0
- PSRLDQ $8, ACCM
- PSLLDQ $8, T0
- PXOR ACCM, ACC1
- PXOR T0, ACC0
-
- reduceRound(ACC0)
- reduceRound(ACC0)
- PXOR ACC1, ACC0
-
-gcmAesEncDone:
- MOVOU ACC0, (tPtr)
- RET
-#undef increment
-
-// func gcmAesDec(productTable *[256]byte, dst, src []byte, ctr, T *[16]byte, ks []uint32)
-TEXT ·gcmAesDec(SB),0,$128-96
-#define increment(i) ADDL $1, aluCTR; MOVL aluCTR, aluTMP; XORL aluK, aluTMP; BSWAPL aluTMP; MOVL aluTMP, (3*4 + i*16)(SP)
-#define combinedDecRound(i) \
- MOVOU (16*i)(ks), T0;\
- AESENC T0, B0;\
- AESENC T0, B1;\
- AESENC T0, B2;\
- AESENC T0, B3;\
- MOVOU (16*(i*2))(pTbl), T1;\
- MOVOU T1, T2;\
- AESENC T0, B4;\
- AESENC T0, B5;\
- AESENC T0, B6;\
- AESENC T0, B7;\
- MOVOU (16*i)(ctx), T0;\
- PSHUFB BSWAP, T0;\
- PCLMULQDQ $0x00, T0, T1;\
- PXOR T1, ACC0;\
- PSHUFD $78, T0, T1;\
- PCLMULQDQ $0x11, T0, T2;\
- PXOR T1, T0;\
- PXOR T2, ACC1;\
- MOVOU (16*(i*2+1))(pTbl), T2;\
- PCLMULQDQ $0x00, T2, T0;\
- PXOR T0, ACCM
-
- MOVQ productTable+0(FP), pTbl
- MOVQ dst+8(FP), ptx
- MOVQ src_base+32(FP), ctx
- MOVQ src_len+40(FP), ptxLen
- MOVQ ctr+56(FP), ctrPtr
- MOVQ T+64(FP), tPtr
- MOVQ ks_base+72(FP), ks
- MOVQ ks_len+80(FP), NR
-
- SHRQ $2, NR
- DECQ NR
-
- MOVOU bswapMask<>(SB), BSWAP
- MOVOU gcmPoly<>(SB), POLY
-
- MOVOU (tPtr), ACC0
- PXOR ACC1, ACC1
- PXOR ACCM, ACCM
- MOVOU (ctrPtr), B0
- MOVL (3*4)(ctrPtr), aluCTR
- MOVOU (ks), T0
- MOVL (3*4)(ks), aluK
- BSWAPL aluCTR
- BSWAPL aluK
-
- PXOR B0, T0
- MOVOU T0, (0*16)(SP)
- increment(0)
-
- CMPQ ptxLen, $128
- JB gcmAesDecSingles
-
- MOVOU T0, (1*16)(SP)
- increment(1)
- MOVOU T0, (2*16)(SP)
- increment(2)
- MOVOU T0, (3*16)(SP)
- increment(3)
- MOVOU T0, (4*16)(SP)
- increment(4)
- MOVOU T0, (5*16)(SP)
- increment(5)
- MOVOU T0, (6*16)(SP)
- increment(6)
- MOVOU T0, (7*16)(SP)
- increment(7)
-
-gcmAesDecOctetsLoop:
-
- CMPQ ptxLen, $128
- JB gcmAesDecEndOctets
- SUBQ $128, ptxLen
-
- MOVOU (0*16)(SP), B0
- MOVOU (1*16)(SP), B1
- MOVOU (2*16)(SP), B2
- MOVOU (3*16)(SP), B3
- MOVOU (4*16)(SP), B4
- MOVOU (5*16)(SP), B5
- MOVOU (6*16)(SP), B6
- MOVOU (7*16)(SP), B7
-
- MOVOU (16*0)(ctx), T0
- PSHUFB BSWAP, T0
- PXOR ACC0, T0
- PSHUFD $78, T0, T1
- PXOR T0, T1
-
- MOVOU (16*0)(pTbl), ACC0
- MOVOU (16*1)(pTbl), ACCM
- MOVOU ACC0, ACC1
-
- PCLMULQDQ $0x00, T1, ACCM
- PCLMULQDQ $0x00, T0, ACC0
- PCLMULQDQ $0x11, T0, ACC1
-
- combinedDecRound(1)
- increment(0)
- combinedDecRound(2)
- increment(1)
- combinedDecRound(3)
- increment(2)
- combinedDecRound(4)
- increment(3)
- combinedDecRound(5)
- increment(4)
- combinedDecRound(6)
- increment(5)
- combinedDecRound(7)
- increment(6)
-
- aesRound(8)
- increment(7)
-
- PXOR ACC0, ACCM
- PXOR ACC1, ACCM
- MOVOU ACCM, T0
- PSRLDQ $8, ACCM
- PSLLDQ $8, T0
- PXOR ACCM, ACC1
- PXOR T0, ACC0
-
- reduceRound(ACC0)
- aesRound(9)
-
- reduceRound(ACC0)
- PXOR ACC1, ACC0
-
- MOVOU (16*10)(ks), T0
- CMPQ NR, $12
- JB decLast1
- aesRnd(T0)
- aesRound(11)
- MOVOU (16*12)(ks), T0
- JE decLast1
- aesRnd(T0)
- aesRound(13)
- MOVOU (16*14)(ks), T0
-decLast1:
- aesRndLast(T0)
-
- MOVOU (16*0)(ctx), T0
- PXOR T0, B0
- MOVOU (16*1)(ctx), T0
- PXOR T0, B1
- MOVOU (16*2)(ctx), T0
- PXOR T0, B2
- MOVOU (16*3)(ctx), T0
- PXOR T0, B3
- MOVOU (16*4)(ctx), T0
- PXOR T0, B4
- MOVOU (16*5)(ctx), T0
- PXOR T0, B5
- MOVOU (16*6)(ctx), T0
- PXOR T0, B6
- MOVOU (16*7)(ctx), T0
- PXOR T0, B7
-
- MOVOU B0, (16*0)(ptx)
- MOVOU B1, (16*1)(ptx)
- MOVOU B2, (16*2)(ptx)
- MOVOU B3, (16*3)(ptx)
- MOVOU B4, (16*4)(ptx)
- MOVOU B5, (16*5)(ptx)
- MOVOU B6, (16*6)(ptx)
- MOVOU B7, (16*7)(ptx)
-
- LEAQ 128(ptx), ptx
- LEAQ 128(ctx), ctx
-
- JMP gcmAesDecOctetsLoop
-
-gcmAesDecEndOctets:
-
- SUBQ $7, aluCTR
-
-gcmAesDecSingles:
-
- MOVOU (16*1)(ks), B1
- MOVOU (16*2)(ks), B2
- MOVOU (16*3)(ks), B3
- MOVOU (16*4)(ks), B4
- MOVOU (16*5)(ks), B5
- MOVOU (16*6)(ks), B6
- MOVOU (16*7)(ks), B7
-
- MOVOU (16*14)(pTbl), T2
-
-gcmAesDecSinglesLoop:
-
- CMPQ ptxLen, $16
- JB gcmAesDecTail
- SUBQ $16, ptxLen
-
- MOVOU (ctx), B0
- MOVOU B0, T1
- PSHUFB BSWAP, B0
- PXOR ACC0, B0
-
- MOVOU T2, ACC0
- MOVOU T2, ACC1
- MOVOU (16*15)(pTbl), ACCM
-
- PCLMULQDQ $0x00, B0, ACC0
- PCLMULQDQ $0x11, B0, ACC1
- PSHUFD $78, B0, T0
- PXOR B0, T0
- PCLMULQDQ $0x00, T0, ACCM
-
- PXOR ACC0, ACCM
- PXOR ACC1, ACCM
- MOVOU ACCM, T0
- PSRLDQ $8, ACCM
- PSLLDQ $8, T0
- PXOR ACCM, ACC1
- PXOR T0, ACC0
-
- reduceRound(ACC0)
- reduceRound(ACC0)
- PXOR ACC1, ACC0
-
- MOVOU (0*16)(SP), B0
- increment(0)
- AESENC B1, B0
- AESENC B2, B0
- AESENC B3, B0
- AESENC B4, B0
- AESENC B5, B0
- AESENC B6, B0
- AESENC B7, B0
- MOVOU (16*8)(ks), T0
- AESENC T0, B0
- MOVOU (16*9)(ks), T0
- AESENC T0, B0
- MOVOU (16*10)(ks), T0
- CMPQ NR, $12
- JB decLast2
- AESENC T0, B0
- MOVOU (16*11)(ks), T0
- AESENC T0, B0
- MOVOU (16*12)(ks), T0
- JE decLast2
- AESENC T0, B0
- MOVOU (16*13)(ks), T0
- AESENC T0, B0
- MOVOU (16*14)(ks), T0
-decLast2:
- AESENCLAST T0, B0
-
- PXOR T1, B0
- MOVOU B0, (ptx)
-
- LEAQ (16*1)(ptx), ptx
- LEAQ (16*1)(ctx), ctx
-
- JMP gcmAesDecSinglesLoop
-
-gcmAesDecTail:
-
- TESTQ ptxLen, ptxLen
- JE gcmAesDecDone
-
- MOVQ ptxLen, aluTMP
- SHLQ $4, aluTMP
- LEAQ andMask<>(SB), aluCTR
- MOVOU -16(aluCTR)(aluTMP*1), T1
-
- MOVOU (ctx), B0 // I assume there is TAG attached to the ctx, and there is no read overflow
- PAND T1, B0
-
- MOVOU B0, T1
- PSHUFB BSWAP, B0
- PXOR ACC0, B0
-
- MOVOU (16*14)(pTbl), ACC0
- MOVOU (16*15)(pTbl), ACCM
- MOVOU ACC0, ACC1
-
- PCLMULQDQ $0x00, B0, ACC0
- PCLMULQDQ $0x11, B0, ACC1
- PSHUFD $78, B0, T0
- PXOR B0, T0
- PCLMULQDQ $0x00, T0, ACCM
-
- PXOR ACC0, ACCM
- PXOR ACC1, ACCM
- MOVOU ACCM, T0
- PSRLDQ $8, ACCM
- PSLLDQ $8, T0
- PXOR ACCM, ACC1
- PXOR T0, ACC0
-
- reduceRound(ACC0)
- reduceRound(ACC0)
- PXOR ACC1, ACC0
-
- MOVOU (0*16)(SP), B0
- increment(0)
- AESENC B1, B0
- AESENC B2, B0
- AESENC B3, B0
- AESENC B4, B0
- AESENC B5, B0
- AESENC B6, B0
- AESENC B7, B0
- MOVOU (16*8)(ks), T0
- AESENC T0, B0
- MOVOU (16*9)(ks), T0
- AESENC T0, B0
- MOVOU (16*10)(ks), T0
- CMPQ NR, $12
- JB decLast3
- AESENC T0, B0
- MOVOU (16*11)(ks), T0
- AESENC T0, B0
- MOVOU (16*12)(ks), T0
- JE decLast3
- AESENC T0, B0
- MOVOU (16*13)(ks), T0
- AESENC T0, B0
- MOVOU (16*14)(ks), T0
-decLast3:
- AESENCLAST T0, B0
- PXOR T1, B0
-
-ptxStoreLoop:
- PEXTRB $0, B0, (ptx)
- PSRLDQ $1, B0
- LEAQ 1(ptx), ptx
- DECQ ptxLen
-
- JNE ptxStoreLoop
-
-gcmAesDecDone:
-
- MOVOU ACC0, (tPtr)
- RET
diff --git a/vendor/github.com/lucas-clemente/aes12/xor.go b/vendor/github.com/lucas-clemente/aes12/xor.go
deleted file mode 100644
index 668c13f..0000000
--- a/vendor/github.com/lucas-clemente/aes12/xor.go
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright 2013 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package aes12
-
-import (
- "runtime"
- "unsafe"
-)
-
-const wordSize = int(unsafe.Sizeof(uintptr(0)))
-const supportsUnaligned = runtime.GOARCH == "386" || runtime.GOARCH == "amd64" || runtime.GOARCH == "ppc64" || runtime.GOARCH == "ppc64le" || runtime.GOARCH == "s390x"
-
-// fastXORBytes xors in bulk. It only works on architectures that
-// support unaligned read/writes.
-func fastXORBytes(dst, a, b []byte) int {
- n := len(a)
- if len(b) < n {
- n = len(b)
- }
-
- w := n / wordSize
- if w > 0 {
- dw := *(*[]uintptr)(unsafe.Pointer(&dst))
- aw := *(*[]uintptr)(unsafe.Pointer(&a))
- bw := *(*[]uintptr)(unsafe.Pointer(&b))
- for i := 0; i < w; i++ {
- dw[i] = aw[i] ^ bw[i]
- }
- }
-
- for i := (n - n%wordSize); i < n; i++ {
- dst[i] = a[i] ^ b[i]
- }
-
- return n
-}
-
-func safeXORBytes(dst, a, b []byte) int {
- n := len(a)
- if len(b) < n {
- n = len(b)
- }
- for i := 0; i < n; i++ {
- dst[i] = a[i] ^ b[i]
- }
- return n
-}
-
-// xorBytes xors the bytes in a and b. The destination is assumed to have enough
-// space. Returns the number of bytes xor'd.
-func xorBytes(dst, a, b []byte) int {
- if supportsUnaligned {
- return fastXORBytes(dst, a, b)
- } else {
- // TODO(hanwen): if (dst, a, b) have common alignment
- // we could still try fastXORBytes. It is not clear
- // how often this happens, and it's only worth it if
- // the block encryption itself is hardware
- // accelerated.
- return safeXORBytes(dst, a, b)
- }
-}
-
-// fastXORWords XORs multiples of 4 or 8 bytes (depending on architecture.)
-// The arguments are assumed to be of equal length.
-func fastXORWords(dst, a, b []byte) {
- dw := *(*[]uintptr)(unsafe.Pointer(&dst))
- aw := *(*[]uintptr)(unsafe.Pointer(&a))
- bw := *(*[]uintptr)(unsafe.Pointer(&b))
- n := len(b) / wordSize
- for i := 0; i < n; i++ {
- dw[i] = aw[i] ^ bw[i]
- }
-}
-
-func xorWords(dst, a, b []byte) {
- if supportsUnaligned {
- fastXORWords(dst, a, b)
- } else {
- safeXORBytes(dst, a, b)
- }
-}
diff --git a/vendor/github.com/lucas-clemente/fnv128a/LICENSE b/vendor/github.com/lucas-clemente/fnv128a/LICENSE
deleted file mode 100644
index 06dc795..0000000
--- a/vendor/github.com/lucas-clemente/fnv128a/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2016 Lucas Clemente
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/vendor/github.com/lucas-clemente/fnv128a/README.md b/vendor/github.com/lucas-clemente/fnv128a/README.md
deleted file mode 100644
index 9a5ef49..0000000
--- a/vendor/github.com/lucas-clemente/fnv128a/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# fnv128a
-
-Implementation of the FNV-1a 128bit hash in go
diff --git a/vendor/github.com/lucas-clemente/fnv128a/fnv128a.go b/vendor/github.com/lucas-clemente/fnv128a/fnv128a.go
deleted file mode 100644
index 5921239..0000000
--- a/vendor/github.com/lucas-clemente/fnv128a/fnv128a.go
+++ /dev/null
@@ -1,87 +0,0 @@
-// Package fnv128a implements FNV-1 and FNV-1a, non-cryptographic hash functions
-// created by Glenn Fowler, Landon Curt Noll, and Phong Vo.
-// See https://en.wikipedia.org/wiki/Fowler-Noll-Vo_hash_function.
-//
-// Write() algorithm taken and modified from github.com/romain-jacotin/quic
-package fnv128a
-
-import "hash"
-
-// Hash128 is the common interface implemented by all 128-bit hash functions.
-type Hash128 interface {
- hash.Hash
- Sum128() (uint64, uint64)
-}
-
-type sum128a struct {
- v0, v1, v2, v3 uint64
-}
-
-var _ Hash128 = &sum128a{}
-
-// New1 returns a new 128-bit FNV-1a hash.Hash.
-func New() Hash128 {
- s := &sum128a{}
- s.Reset()
- return s
-}
-
-func (s *sum128a) Reset() {
- s.v0 = 0x6295C58D
- s.v1 = 0x62B82175
- s.v2 = 0x07BB0142
- s.v3 = 0x6C62272E
-}
-
-func (s *sum128a) Sum128() (uint64, uint64) {
- return s.v3<<32 | s.v2, s.v1<<32 | s.v0
-}
-
-func (s *sum128a) Write(data []byte) (int, error) {
- var t0, t1, t2, t3 uint64
- const fnv128PrimeLow = 0x0000013B
- const fnv128PrimeShift = 24
-
- for _, v := range data {
- // xor the bottom with the current octet
- s.v0 ^= uint64(v)
-
- // multiply by the 128 bit FNV magic prime mod 2^128
- // fnv_prime = 309485009821345068724781371 (decimal)
- // = 0x0000000001000000000000000000013B (hexadecimal)
- // = 0x00000000 0x01000000 0x00000000 0x0000013B (in 4*32 words)
- // = 0x0 1<> 32)
- t2 += (t1 >> 32)
- t3 += (t2 >> 32)
-
- s.v0 = t0 & 0xffffffff
- s.v1 = t1 & 0xffffffff
- s.v2 = t2 & 0xffffffff
- s.v3 = t3 // & 0xffffffff
- // Doing a s.v3 &= 0xffffffff is not really needed since it simply
- // removes multiples of 2^128. We can discard these excess bits
- // outside of the loop when writing the hash in Little Endian.
- }
-
- return len(data), nil
-}
-
-func (s *sum128a) Size() int { return 16 }
-
-func (s *sum128a) BlockSize() int { return 1 }
-
-func (s *sum128a) Sum(in []byte) []byte {
- panic("FNV: not supported")
-}
diff --git a/vendor/github.com/lucas-clemente/quic-go-certificates/LICENSE b/vendor/github.com/lucas-clemente/quic-go-certificates/LICENSE
deleted file mode 100644
index 2c08ae2..0000000
--- a/vendor/github.com/lucas-clemente/quic-go-certificates/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2016 Lucas Clemente
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/vendor/github.com/lucas-clemente/quic-go-certificates/README.md b/vendor/github.com/lucas-clemente/quic-go-certificates/README.md
deleted file mode 100644
index c9621d5..0000000
--- a/vendor/github.com/lucas-clemente/quic-go-certificates/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# certsets
-
-Common certificate sets for quic-go
diff --git a/vendor/github.com/lucas-clemente/quic-go-certificates/cert_set_2.go b/vendor/github.com/lucas-clemente/quic-go-certificates/cert_set_2.go
deleted file mode 100644
index f2f2250..0000000
--- a/vendor/github.com/lucas-clemente/quic-go-certificates/cert_set_2.go
+++ /dev/null
@@ -1,5824 +0,0 @@
-package certsets
-
-var CertSet2 = [][]byte{
- certSet2Cert0,
- certSet2Cert1,
- certSet2Cert2,
- certSet2Cert3,
- certSet2Cert4,
- certSet2Cert5,
- certSet2Cert6,
- certSet2Cert7,
- certSet2Cert8,
- certSet2Cert9,
- certSet2Cert10,
- certSet2Cert11,
- certSet2Cert12,
- certSet2Cert13,
- certSet2Cert14,
- certSet2Cert15,
- certSet2Cert16,
- certSet2Cert17,
- certSet2Cert18,
- certSet2Cert19,
- certSet2Cert20,
- certSet2Cert21,
- certSet2Cert22,
- certSet2Cert23,
- certSet2Cert24,
- certSet2Cert25,
- certSet2Cert26,
- certSet2Cert27,
- certSet2Cert28,
- certSet2Cert29,
- certSet2Cert30,
- certSet2Cert31,
- certSet2Cert32,
- certSet2Cert33,
- certSet2Cert34,
- certSet2Cert35,
- certSet2Cert36,
- certSet2Cert37,
- certSet2Cert38,
- certSet2Cert39,
- certSet2Cert40,
- certSet2Cert41,
- certSet2Cert42,
- certSet2Cert43,
- certSet2Cert44,
- certSet2Cert45,
- certSet2Cert46,
- certSet2Cert47,
- certSet2Cert48,
- certSet2Cert49,
- certSet2Cert50,
- certSet2Cert51,
- certSet2Cert52,
- certSet2Cert53,
-}
-
-const CertSet2Hash uint64 = (0xe81a92926081e801)
-
-var certSet2Cert0 = []byte{
- 0x30, 0x82, 0x03, 0x7d, 0x30, 0x82, 0x02, 0xe6, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x03, 0x12, 0xbb, 0xe6, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
- 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x4e, 0x31,
- 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53,
- 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x07, 0x45,
- 0x71, 0x75, 0x69, 0x66, 0x61, 0x78, 0x31, 0x2d, 0x30, 0x2b, 0x06, 0x03,
- 0x55, 0x04, 0x0b, 0x13, 0x24, 0x45, 0x71, 0x75, 0x69, 0x66, 0x61, 0x78,
- 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x43, 0x65, 0x72, 0x74,
- 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68,
- 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x32, 0x30,
- 0x35, 0x32, 0x31, 0x30, 0x34, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d,
- 0x31, 0x38, 0x30, 0x38, 0x32, 0x31, 0x30, 0x34, 0x30, 0x30, 0x30, 0x30,
- 0x5a, 0x30, 0x42, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,
- 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04,
- 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20,
- 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04,
- 0x03, 0x13, 0x12, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20,
- 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01,
- 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01,
- 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01,
- 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xda, 0xcc, 0x18, 0x63, 0x30, 0xfd,
- 0xf4, 0x17, 0x23, 0x1a, 0x56, 0x7e, 0x5b, 0xdf, 0x3c, 0x6c, 0x38, 0xe4,
- 0x71, 0xb7, 0x78, 0x91, 0xd4, 0xbc, 0xa1, 0xd8, 0x4c, 0xf8, 0xa8, 0x43,
- 0xb6, 0x03, 0xe9, 0x4d, 0x21, 0x07, 0x08, 0x88, 0xda, 0x58, 0x2f, 0x66,
- 0x39, 0x29, 0xbd, 0x05, 0x78, 0x8b, 0x9d, 0x38, 0xe8, 0x05, 0xb7, 0x6a,
- 0x7e, 0x71, 0xa4, 0xe6, 0xc4, 0x60, 0xa6, 0xb0, 0xef, 0x80, 0xe4, 0x89,
- 0x28, 0x0f, 0x9e, 0x25, 0xd6, 0xed, 0x83, 0xf3, 0xad, 0xa6, 0x91, 0xc7,
- 0x98, 0xc9, 0x42, 0x18, 0x35, 0x14, 0x9d, 0xad, 0x98, 0x46, 0x92, 0x2e,
- 0x4f, 0xca, 0xf1, 0x87, 0x43, 0xc1, 0x16, 0x95, 0x57, 0x2d, 0x50, 0xef,
- 0x89, 0x2d, 0x80, 0x7a, 0x57, 0xad, 0xf2, 0xee, 0x5f, 0x6b, 0xd2, 0x00,
- 0x8d, 0xb9, 0x14, 0xf8, 0x14, 0x15, 0x35, 0xd9, 0xc0, 0x46, 0xa3, 0x7b,
- 0x72, 0xc8, 0x91, 0xbf, 0xc9, 0x55, 0x2b, 0xcd, 0xd0, 0x97, 0x3e, 0x9c,
- 0x26, 0x64, 0xcc, 0xdf, 0xce, 0x83, 0x19, 0x71, 0xca, 0x4e, 0xe6, 0xd4,
- 0xd5, 0x7b, 0xa9, 0x19, 0xcd, 0x55, 0xde, 0xc8, 0xec, 0xd2, 0x5e, 0x38,
- 0x53, 0xe5, 0x5c, 0x4f, 0x8c, 0x2d, 0xfe, 0x50, 0x23, 0x36, 0xfc, 0x66,
- 0xe6, 0xcb, 0x8e, 0xa4, 0x39, 0x19, 0x00, 0xb7, 0x95, 0x02, 0x39, 0x91,
- 0x0b, 0x0e, 0xfe, 0x38, 0x2e, 0xd1, 0x1d, 0x05, 0x9a, 0xf6, 0x4d, 0x3e,
- 0x6f, 0x0f, 0x07, 0x1d, 0xaf, 0x2c, 0x1e, 0x8f, 0x60, 0x39, 0xe2, 0xfa,
- 0x36, 0x53, 0x13, 0x39, 0xd4, 0x5e, 0x26, 0x2b, 0xdb, 0x3d, 0xa8, 0x14,
- 0xbd, 0x32, 0xeb, 0x18, 0x03, 0x28, 0x52, 0x04, 0x71, 0xe5, 0xab, 0x33,
- 0x3d, 0xe1, 0x38, 0xbb, 0x07, 0x36, 0x84, 0x62, 0x9c, 0x79, 0xea, 0x16,
- 0x30, 0xf4, 0x5f, 0xc0, 0x2b, 0xe8, 0x71, 0x6b, 0xe4, 0xf9, 0x02, 0x03,
- 0x01, 0x00, 0x01, 0xa3, 0x81, 0xf0, 0x30, 0x81, 0xed, 0x30, 0x1f, 0x06,
- 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x48, 0xe6,
- 0x68, 0xf9, 0x2b, 0xd2, 0xb2, 0x95, 0xd7, 0x47, 0xd8, 0x23, 0x20, 0x10,
- 0x4f, 0x33, 0x98, 0x90, 0x9f, 0xd4, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d,
- 0x0e, 0x04, 0x16, 0x04, 0x14, 0xc0, 0x7a, 0x98, 0x68, 0x8d, 0x89, 0xfb,
- 0xab, 0x05, 0x64, 0x0c, 0x11, 0x7d, 0xaa, 0x7d, 0x65, 0xb8, 0xca, 0xcc,
- 0x4e, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04,
- 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d,
- 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x3a,
- 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x33, 0x30, 0x31, 0x30, 0x2f, 0xa0,
- 0x2d, 0xa0, 0x2b, 0x86, 0x29, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f,
- 0x63, 0x72, 0x6c, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74,
- 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x72, 0x6c, 0x73, 0x2f, 0x73, 0x65,
- 0x63, 0x75, 0x72, 0x65, 0x63, 0x61, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x4e,
- 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x47, 0x30, 0x45, 0x30, 0x43, 0x06,
- 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x3b, 0x30, 0x39, 0x06, 0x08, 0x2b,
- 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x2d, 0x68, 0x74, 0x74,
- 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f,
- 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65,
- 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x72, 0x65, 0x70, 0x6f,
- 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
- 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x81, 0x81,
- 0x00, 0x76, 0xe1, 0x12, 0x6e, 0x4e, 0x4b, 0x16, 0x12, 0x86, 0x30, 0x06,
- 0xb2, 0x81, 0x08, 0xcf, 0xf0, 0x08, 0xc7, 0xc7, 0x71, 0x7e, 0x66, 0xee,
- 0xc2, 0xed, 0xd4, 0x3b, 0x1f, 0xff, 0xf0, 0xf0, 0xc8, 0x4e, 0xd6, 0x43,
- 0x38, 0xb0, 0xb9, 0x30, 0x7d, 0x18, 0xd0, 0x55, 0x83, 0xa2, 0x6a, 0xcb,
- 0x36, 0x11, 0x9c, 0xe8, 0x48, 0x66, 0xa3, 0x6d, 0x7f, 0xb8, 0x13, 0xd4,
- 0x47, 0xfe, 0x8b, 0x5a, 0x5c, 0x73, 0xfc, 0xae, 0xd9, 0x1b, 0x32, 0x19,
- 0x38, 0xab, 0x97, 0x34, 0x14, 0xaa, 0x96, 0xd2, 0xeb, 0xa3, 0x1c, 0x14,
- 0x08, 0x49, 0xb6, 0xbb, 0xe5, 0x91, 0xef, 0x83, 0x36, 0xeb, 0x1d, 0x56,
- 0x6f, 0xca, 0xda, 0xbc, 0x73, 0x63, 0x90, 0xe4, 0x7f, 0x7b, 0x3e, 0x22,
- 0xcb, 0x3d, 0x07, 0xed, 0x5f, 0x38, 0x74, 0x9c, 0xe3, 0x03, 0x50, 0x4e,
- 0xa1, 0xaf, 0x98, 0xee, 0x61, 0xf2, 0x84, 0x3f, 0x12,
-}
-
-var certSet2Cert1 = []byte{
- 0x30, 0x82, 0x03, 0x8b, 0x30, 0x82, 0x02, 0xf4, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x03, 0x0d, 0x6e, 0x62, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
- 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x4e, 0x31,
- 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53,
- 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x07, 0x45,
- 0x71, 0x75, 0x69, 0x66, 0x61, 0x78, 0x31, 0x2d, 0x30, 0x2b, 0x06, 0x03,
- 0x55, 0x04, 0x0b, 0x13, 0x24, 0x45, 0x71, 0x75, 0x69, 0x66, 0x61, 0x78,
- 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x43, 0x65, 0x72, 0x74,
- 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68,
- 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x36, 0x31,
- 0x31, 0x32, 0x37, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d,
- 0x31, 0x38, 0x30, 0x38, 0x32, 0x31, 0x31, 0x36, 0x31, 0x35, 0x30, 0x30,
- 0x5a, 0x30, 0x58, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,
- 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04,
- 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20,
- 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x31, 0x30, 0x2f, 0x06, 0x03, 0x55, 0x04,
- 0x03, 0x13, 0x28, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20,
- 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74,
- 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75,
- 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, 0x82, 0x01, 0x22, 0x30,
- 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01,
- 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02,
- 0x82, 0x01, 0x01, 0x00, 0xbe, 0xb8, 0x15, 0x7b, 0xff, 0xd4, 0x7c, 0x7d,
- 0x67, 0xad, 0x83, 0x64, 0x7b, 0xc8, 0x42, 0x53, 0x2d, 0xdf, 0xf6, 0x84,
- 0x08, 0x20, 0x61, 0xd6, 0x01, 0x59, 0x6a, 0x9c, 0x44, 0x11, 0xaf, 0xef,
- 0x76, 0xfd, 0x95, 0x7e, 0xce, 0x61, 0x30, 0xbb, 0x7a, 0x83, 0x5f, 0x02,
- 0xbd, 0x01, 0x66, 0xca, 0xee, 0x15, 0x8d, 0x6f, 0xa1, 0x30, 0x9c, 0xbd,
- 0xa1, 0x85, 0x9e, 0x94, 0x3a, 0xf3, 0x56, 0x88, 0x00, 0x31, 0xcf, 0xd8,
- 0xee, 0x6a, 0x96, 0x02, 0xd9, 0xed, 0x03, 0x8c, 0xfb, 0x75, 0x6d, 0xe7,
- 0xea, 0xb8, 0x55, 0x16, 0x05, 0x16, 0x9a, 0xf4, 0xe0, 0x5e, 0xb1, 0x88,
- 0xc0, 0x64, 0x85, 0x5c, 0x15, 0x4d, 0x88, 0xc7, 0xb7, 0xba, 0xe0, 0x75,
- 0xe9, 0xad, 0x05, 0x3d, 0x9d, 0xc7, 0x89, 0x48, 0xe0, 0xbb, 0x28, 0xc8,
- 0x03, 0xe1, 0x30, 0x93, 0x64, 0x5e, 0x52, 0xc0, 0x59, 0x70, 0x22, 0x35,
- 0x57, 0x88, 0x8a, 0xf1, 0x95, 0x0a, 0x83, 0xd7, 0xbc, 0x31, 0x73, 0x01,
- 0x34, 0xed, 0xef, 0x46, 0x71, 0xe0, 0x6b, 0x02, 0xa8, 0x35, 0x72, 0x6b,
- 0x97, 0x9b, 0x66, 0xe0, 0xcb, 0x1c, 0x79, 0x5f, 0xd8, 0x1a, 0x04, 0x68,
- 0x1e, 0x47, 0x02, 0xe6, 0x9d, 0x60, 0xe2, 0x36, 0x97, 0x01, 0xdf, 0xce,
- 0x35, 0x92, 0xdf, 0xbe, 0x67, 0xc7, 0x6d, 0x77, 0x59, 0x3b, 0x8f, 0x9d,
- 0xd6, 0x90, 0x15, 0x94, 0xbc, 0x42, 0x34, 0x10, 0xc1, 0x39, 0xf9, 0xb1,
- 0x27, 0x3e, 0x7e, 0xd6, 0x8a, 0x75, 0xc5, 0xb2, 0xaf, 0x96, 0xd3, 0xa2,
- 0xde, 0x9b, 0xe4, 0x98, 0xbe, 0x7d, 0xe1, 0xe9, 0x81, 0xad, 0xb6, 0x6f,
- 0xfc, 0xd7, 0x0e, 0xda, 0xe0, 0x34, 0xb0, 0x0d, 0x1a, 0x77, 0xe7, 0xe3,
- 0x08, 0x98, 0xef, 0x58, 0xfa, 0x9c, 0x84, 0xb7, 0x36, 0xaf, 0xc2, 0xdf,
- 0xac, 0xd2, 0xf4, 0x10, 0x06, 0x70, 0x71, 0x35, 0x02, 0x03, 0x01, 0x00,
- 0x01, 0xa3, 0x81, 0xe8, 0x30, 0x81, 0xe5, 0x30, 0x0e, 0x06, 0x03, 0x55,
- 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30,
- 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x2c, 0xd5,
- 0x50, 0x41, 0x97, 0x15, 0x8b, 0xf0, 0x8f, 0x36, 0x61, 0x5b, 0x4a, 0xfb,
- 0x6b, 0xd9, 0x99, 0xc9, 0x33, 0x92, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d,
- 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x48, 0xe6, 0x68, 0xf9, 0x2b,
- 0xd2, 0xb2, 0x95, 0xd7, 0x47, 0xd8, 0x23, 0x20, 0x10, 0x4f, 0x33, 0x98,
- 0x90, 0x9f, 0xd4, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01,
- 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x3a, 0x06, 0x03,
- 0x55, 0x1d, 0x1f, 0x04, 0x33, 0x30, 0x31, 0x30, 0x2f, 0xa0, 0x2d, 0xa0,
- 0x2b, 0x86, 0x29, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72,
- 0x6c, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63,
- 0x6f, 0x6d, 0x2f, 0x63, 0x72, 0x6c, 0x73, 0x2f, 0x73, 0x65, 0x63, 0x75,
- 0x72, 0x65, 0x63, 0x61, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x46, 0x06, 0x03,
- 0x55, 0x1d, 0x20, 0x04, 0x3f, 0x30, 0x3d, 0x30, 0x3b, 0x06, 0x04, 0x55,
- 0x1d, 0x20, 0x00, 0x30, 0x33, 0x30, 0x31, 0x06, 0x08, 0x2b, 0x06, 0x01,
- 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x25, 0x68, 0x74, 0x74, 0x70, 0x3a,
- 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75,
- 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75,
- 0x72, 0x63, 0x65, 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x0d, 0x06, 0x09,
- 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03,
- 0x81, 0x81, 0x00, 0xaf, 0xf3, 0x0e, 0xd6, 0x72, 0xab, 0xc7, 0xa9, 0x97,
- 0xca, 0x2a, 0x6b, 0x84, 0x39, 0xde, 0x79, 0xa9, 0xf0, 0x81, 0xe5, 0x08,
- 0x67, 0xab, 0xd7, 0x2f, 0x20, 0x02, 0x01, 0x71, 0x0c, 0x04, 0x22, 0xc9,
- 0x1e, 0x88, 0x95, 0x03, 0xc9, 0x49, 0x3a, 0xaf, 0x67, 0x08, 0x49, 0xb0,
- 0xd5, 0x08, 0xf5, 0x20, 0x3d, 0x80, 0x91, 0xa0, 0xc5, 0x87, 0xa3, 0xfb,
- 0xc9, 0xa3, 0x17, 0x91, 0xf9, 0xa8, 0x2f, 0xae, 0xe9, 0x0f, 0xdf, 0x96,
- 0x72, 0x0f, 0x75, 0x17, 0x80, 0x5d, 0x78, 0x01, 0x4d, 0x9f, 0x1f, 0x6d,
- 0x7b, 0xd8, 0xf5, 0x42, 0x38, 0x23, 0x1a, 0x99, 0x93, 0xf4, 0x83, 0xbe,
- 0x3b, 0x35, 0x74, 0xe7, 0x37, 0x13, 0x35, 0x7a, 0xac, 0xb4, 0xb6, 0x90,
- 0x82, 0x6c, 0x27, 0xa4, 0xe0, 0xec, 0x9e, 0x35, 0xbd, 0xbf, 0xe5, 0x29,
- 0xa1, 0x47, 0x9f, 0x5b, 0x32, 0xfc, 0xe9, 0x99, 0x7d, 0x2b, 0x39,
-}
-
-var certSet2Cert2 = []byte{
- 0x30, 0x82, 0x03, 0xd5, 0x30, 0x82, 0x02, 0xbd, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x03, 0x02, 0x36, 0xd1, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
- 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x42, 0x31,
- 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53,
- 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47,
- 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e,
- 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x47,
- 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62,
- 0x61, 0x6c, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x30,
- 0x32, 0x31, 0x39, 0x32, 0x32, 0x34, 0x35, 0x30, 0x35, 0x5a, 0x17, 0x0d,
- 0x32, 0x30, 0x30, 0x32, 0x31, 0x38, 0x32, 0x32, 0x34, 0x35, 0x30, 0x35,
- 0x5a, 0x30, 0x3c, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,
- 0x13, 0x02, 0x55, 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04,
- 0x0a, 0x13, 0x0e, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x2c,
- 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55,
- 0x04, 0x03, 0x13, 0x0b, 0x52, 0x61, 0x70, 0x69, 0x64, 0x53, 0x53, 0x4c,
- 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82,
- 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00,
- 0xc7, 0x71, 0xf8, 0x56, 0xc7, 0x1e, 0xd9, 0xcc, 0xb5, 0xad, 0xf6, 0xb4,
- 0x97, 0xa3, 0xfb, 0xa1, 0xe6, 0x0b, 0x50, 0x5f, 0x50, 0xaa, 0x3a, 0xda,
- 0x0f, 0xfc, 0x3d, 0x29, 0x24, 0x43, 0xc6, 0x10, 0x29, 0xc1, 0xfc, 0x55,
- 0x40, 0x72, 0xee, 0xbd, 0xea, 0xdf, 0x9f, 0xb6, 0x41, 0xf4, 0x48, 0x4b,
- 0xc8, 0x6e, 0xfe, 0x4f, 0x57, 0x12, 0x8b, 0x5b, 0xfa, 0x92, 0xdd, 0x5e,
- 0xe8, 0xad, 0xf3, 0xf0, 0x1b, 0xb1, 0x7b, 0x4d, 0xfb, 0xcf, 0xfd, 0xd1,
- 0xe5, 0xf8, 0xe3, 0xdc, 0xe7, 0xf5, 0x73, 0x7f, 0xdf, 0x01, 0x49, 0xcf,
- 0x8c, 0x56, 0xc1, 0xbd, 0x37, 0xe3, 0x5b, 0xbe, 0xb5, 0x4f, 0x8b, 0x8b,
- 0xf0, 0xda, 0x4f, 0xc7, 0xe3, 0xdd, 0x55, 0x47, 0x69, 0xdf, 0xf2, 0x5b,
- 0x7b, 0x07, 0x4f, 0x3d, 0xe5, 0xac, 0x21, 0xc1, 0xc8, 0x1d, 0x7a, 0xe8,
- 0xe7, 0xf6, 0x0f, 0xa1, 0xaa, 0xf5, 0x6f, 0xde, 0xa8, 0x65, 0x4f, 0x10,
- 0x89, 0x9c, 0x03, 0xf3, 0x89, 0x7a, 0xa5, 0x5e, 0x01, 0x72, 0x33, 0xed,
- 0xa9, 0xe9, 0x5a, 0x1e, 0x79, 0xf3, 0x87, 0xc8, 0xdf, 0xc8, 0xc5, 0xfc,
- 0x37, 0xc8, 0x9a, 0x9a, 0xd7, 0xb8, 0x76, 0xcc, 0xb0, 0x3e, 0xe7, 0xfd,
- 0xe6, 0x54, 0xea, 0xdf, 0x5f, 0x52, 0x41, 0x78, 0x59, 0x57, 0xad, 0xf1,
- 0x12, 0xd6, 0x7f, 0xbc, 0xd5, 0x9f, 0x70, 0xd3, 0x05, 0x6c, 0xfa, 0xa3,
- 0x7d, 0x67, 0x58, 0xdd, 0x26, 0x62, 0x1d, 0x31, 0x92, 0x0c, 0x79, 0x79,
- 0x1c, 0x8e, 0xcf, 0xca, 0x7b, 0xc1, 0x66, 0xaf, 0xa8, 0x74, 0x48, 0xfb,
- 0x8e, 0x82, 0xc2, 0x9e, 0x2c, 0x99, 0x5c, 0x7b, 0x2d, 0x5d, 0x9b, 0xbc,
- 0x5b, 0x57, 0x9e, 0x7c, 0x3a, 0x7a, 0x13, 0xad, 0xf2, 0xa3, 0x18, 0x5b,
- 0x2b, 0x59, 0x0f, 0xcd, 0x5c, 0x3a, 0xeb, 0x68, 0x33, 0xc6, 0x28, 0x1d,
- 0x82, 0xd1, 0x50, 0x8b, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x81, 0xd9,
- 0x30, 0x81, 0xd6, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01,
- 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x1d, 0x06, 0x03, 0x55,
- 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x6b, 0x69, 0x3d, 0x6a, 0x18, 0x42,
- 0x4a, 0xdd, 0x8f, 0x02, 0x65, 0x39, 0xfd, 0x35, 0x24, 0x86, 0x78, 0x91,
- 0x16, 0x30, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30,
- 0x16, 0x80, 0x14, 0xc0, 0x7a, 0x98, 0x68, 0x8d, 0x89, 0xfb, 0xab, 0x05,
- 0x64, 0x0c, 0x11, 0x7d, 0xaa, 0x7d, 0x65, 0xb8, 0xca, 0xcc, 0x4e, 0x30,
- 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30,
- 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x3a, 0x06, 0x03, 0x55,
- 0x1d, 0x1f, 0x04, 0x33, 0x30, 0x31, 0x30, 0x2f, 0xa0, 0x2d, 0xa0, 0x2b,
- 0x86, 0x29, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c,
- 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f,
- 0x6d, 0x2f, 0x63, 0x72, 0x6c, 0x73, 0x2f, 0x67, 0x74, 0x67, 0x6c, 0x6f,
- 0x62, 0x61, 0x6c, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x34, 0x06, 0x08, 0x2b,
- 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x28, 0x30, 0x26, 0x30,
- 0x24, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86,
- 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70,
- 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f,
- 0x6d, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01,
- 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0xab, 0xbc, 0xbc,
- 0x0a, 0x5d, 0x18, 0x94, 0xe3, 0xc1, 0xb1, 0xc3, 0xa8, 0x4c, 0x55, 0xd6,
- 0xbe, 0xb4, 0x98, 0xf1, 0xee, 0x3c, 0x1c, 0xcd, 0xcf, 0xf3, 0x24, 0x24,
- 0x5c, 0x96, 0x03, 0x27, 0x58, 0xfc, 0x36, 0xae, 0xa2, 0x2f, 0x8f, 0xf1,
- 0xfe, 0xda, 0x2b, 0x02, 0xc3, 0x33, 0xbd, 0xc8, 0xdd, 0x48, 0x22, 0x2b,
- 0x60, 0x0f, 0xa5, 0x03, 0x10, 0xfd, 0x77, 0xf8, 0xd0, 0xed, 0x96, 0x67,
- 0x4f, 0xfd, 0xea, 0x47, 0x20, 0x70, 0x54, 0xdc, 0xa9, 0x0c, 0x55, 0x7e,
- 0xe1, 0x96, 0x25, 0x8a, 0xd9, 0xb5, 0xda, 0x57, 0x4a, 0xbe, 0x8d, 0x8e,
- 0x49, 0x43, 0x63, 0xa5, 0x6c, 0x4e, 0x27, 0x87, 0x25, 0xeb, 0x5b, 0x6d,
- 0xfe, 0xa2, 0x7f, 0x38, 0x28, 0xe0, 0x36, 0xab, 0xad, 0x39, 0xa5, 0xa5,
- 0x62, 0xc4, 0xb7, 0x5c, 0x58, 0x2c, 0xaa, 0x5d, 0x01, 0x60, 0xa6, 0x62,
- 0x67, 0xa3, 0xc0, 0xc7, 0x62, 0x23, 0xf4, 0xe7, 0x6c, 0x46, 0xee, 0xb5,
- 0xd3, 0x80, 0x6a, 0x22, 0x13, 0xd2, 0x2d, 0x3f, 0x74, 0x4f, 0xea, 0xaf,
- 0x8c, 0x5f, 0xb4, 0x38, 0x9c, 0xdb, 0xae, 0xce, 0xaf, 0x84, 0x1e, 0xa6,
- 0xf6, 0x34, 0x51, 0x59, 0x79, 0xd3, 0xe3, 0x75, 0xdc, 0xbc, 0xd7, 0xf3,
- 0x73, 0xdf, 0x92, 0xec, 0xd2, 0x20, 0x59, 0x6f, 0x9c, 0xfb, 0x95, 0xf8,
- 0x92, 0x76, 0x18, 0x0a, 0x7c, 0x0f, 0x2c, 0xa6, 0xca, 0xde, 0x8a, 0x62,
- 0x7b, 0xd8, 0xf3, 0xce, 0x5f, 0x68, 0xbd, 0x8f, 0x3e, 0xc1, 0x74, 0xbb,
- 0x15, 0x72, 0x3a, 0x16, 0x83, 0xa9, 0x0b, 0xe6, 0x4d, 0x99, 0x9c, 0xd8,
- 0x57, 0xec, 0xa8, 0x01, 0x51, 0xc7, 0x6f, 0x57, 0x34, 0x5e, 0xab, 0x4a,
- 0x2c, 0x42, 0xf6, 0x4f, 0x1c, 0x89, 0x78, 0xde, 0x26, 0x4e, 0xf5, 0x6f,
- 0x93, 0x4c, 0x15, 0x6b, 0x27, 0x56, 0x4d, 0x00, 0x54, 0x6c, 0x7a, 0xb7,
- 0xb7,
-}
-
-var certSet2Cert3 = []byte{
- 0x30, 0x82, 0x03, 0xf0, 0x30, 0x82, 0x02, 0xd8, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x03, 0x02, 0x3a, 0x83, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
- 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x42, 0x31,
- 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53,
- 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47,
- 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e,
- 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x47,
- 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62,
- 0x61, 0x6c, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x30,
- 0x34, 0x30, 0x35, 0x31, 0x35, 0x31, 0x35, 0x35, 0x36, 0x5a, 0x17, 0x0d,
- 0x31, 0x36, 0x31, 0x32, 0x33, 0x31, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39,
- 0x5a, 0x30, 0x49, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,
- 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04,
- 0x0a, 0x13, 0x0a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x20, 0x49, 0x6e,
- 0x63, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1c,
- 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x74, 0x65, 0x72,
- 0x6e, 0x65, 0x74, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74,
- 0x79, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09,
- 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03,
- 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01,
- 0x00, 0x9c, 0x2a, 0x04, 0x77, 0x5c, 0xd8, 0x50, 0x91, 0x3a, 0x06, 0xa3,
- 0x82, 0xe0, 0xd8, 0x50, 0x48, 0xbc, 0x89, 0x3f, 0xf1, 0x19, 0x70, 0x1a,
- 0x88, 0x46, 0x7e, 0xe0, 0x8f, 0xc5, 0xf1, 0x89, 0xce, 0x21, 0xee, 0x5a,
- 0xfe, 0x61, 0x0d, 0xb7, 0x32, 0x44, 0x89, 0xa0, 0x74, 0x0b, 0x53, 0x4f,
- 0x55, 0xa4, 0xce, 0x82, 0x62, 0x95, 0xee, 0xeb, 0x59, 0x5f, 0xc6, 0xe1,
- 0x05, 0x80, 0x12, 0xc4, 0x5e, 0x94, 0x3f, 0xbc, 0x5b, 0x48, 0x38, 0xf4,
- 0x53, 0xf7, 0x24, 0xe6, 0xfb, 0x91, 0xe9, 0x15, 0xc4, 0xcf, 0xf4, 0x53,
- 0x0d, 0xf4, 0x4a, 0xfc, 0x9f, 0x54, 0xde, 0x7d, 0xbe, 0xa0, 0x6b, 0x6f,
- 0x87, 0xc0, 0xd0, 0x50, 0x1f, 0x28, 0x30, 0x03, 0x40, 0xda, 0x08, 0x73,
- 0x51, 0x6c, 0x7f, 0xff, 0x3a, 0x3c, 0xa7, 0x37, 0x06, 0x8e, 0xbd, 0x4b,
- 0x11, 0x04, 0xeb, 0x7d, 0x24, 0xde, 0xe6, 0xf9, 0xfc, 0x31, 0x71, 0xfb,
- 0x94, 0xd5, 0x60, 0xf3, 0x2e, 0x4a, 0xaf, 0x42, 0xd2, 0xcb, 0xea, 0xc4,
- 0x6a, 0x1a, 0xb2, 0xcc, 0x53, 0xdd, 0x15, 0x4b, 0x8b, 0x1f, 0xc8, 0x19,
- 0x61, 0x1f, 0xcd, 0x9d, 0xa8, 0x3e, 0x63, 0x2b, 0x84, 0x35, 0x69, 0x65,
- 0x84, 0xc8, 0x19, 0xc5, 0x46, 0x22, 0xf8, 0x53, 0x95, 0xbe, 0xe3, 0x80,
- 0x4a, 0x10, 0xc6, 0x2a, 0xec, 0xba, 0x97, 0x20, 0x11, 0xc7, 0x39, 0x99,
- 0x10, 0x04, 0xa0, 0xf0, 0x61, 0x7a, 0x95, 0x25, 0x8c, 0x4e, 0x52, 0x75,
- 0xe2, 0xb6, 0xed, 0x08, 0xca, 0x14, 0xfc, 0xce, 0x22, 0x6a, 0xb3, 0x4e,
- 0xcf, 0x46, 0x03, 0x97, 0x97, 0x03, 0x7e, 0xc0, 0xb1, 0xde, 0x7b, 0xaf,
- 0x45, 0x33, 0xcf, 0xba, 0x3e, 0x71, 0xb7, 0xde, 0xf4, 0x25, 0x25, 0xc2,
- 0x0d, 0x35, 0x89, 0x9d, 0x9d, 0xfb, 0x0e, 0x11, 0x79, 0x89, 0x1e, 0x37,
- 0xc5, 0xaf, 0x8e, 0x72, 0x69, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x81,
- 0xe7, 0x30, 0x81, 0xe4, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04,
- 0x18, 0x30, 0x16, 0x80, 0x14, 0xc0, 0x7a, 0x98, 0x68, 0x8d, 0x89, 0xfb,
- 0xab, 0x05, 0x64, 0x0c, 0x11, 0x7d, 0xaa, 0x7d, 0x65, 0xb8, 0xca, 0xcc,
- 0x4e, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14,
- 0x4a, 0xdd, 0x06, 0x16, 0x1b, 0xbc, 0xf6, 0x68, 0xb5, 0x76, 0xf5, 0x81,
- 0xb6, 0xbb, 0x62, 0x1a, 0xba, 0x5a, 0x81, 0x2f, 0x30, 0x0e, 0x06, 0x03,
- 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06,
- 0x30, 0x2e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01,
- 0x04, 0x22, 0x30, 0x20, 0x30, 0x1e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05,
- 0x05, 0x07, 0x30, 0x01, 0x86, 0x12, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
- 0x2f, 0x67, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x64, 0x2e, 0x63, 0x6f, 0x6d,
- 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08,
- 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x35, 0x06, 0x03,
- 0x55, 0x1d, 0x1f, 0x04, 0x2e, 0x30, 0x2c, 0x30, 0x2a, 0xa0, 0x28, 0xa0,
- 0x26, 0x86, 0x24, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x2e,
- 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x72,
- 0x6c, 0x73, 0x2f, 0x67, 0x74, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e,
- 0x63, 0x72, 0x6c, 0x30, 0x17, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x10,
- 0x30, 0x0e, 0x30, 0x0c, 0x06, 0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01, 0xd6,
- 0x79, 0x02, 0x05, 0x01, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
- 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00,
- 0xaa, 0xfa, 0xa9, 0x20, 0xcd, 0x6a, 0x67, 0x83, 0xed, 0x5e, 0xd4, 0x7e,
- 0xde, 0x1d, 0xc4, 0x7f, 0xe0, 0x25, 0x06, 0x00, 0xc5, 0x24, 0xfb, 0xa9,
- 0xc8, 0x2d, 0x6d, 0x7e, 0xde, 0x9d, 0x82, 0x65, 0x2c, 0x81, 0x63, 0x34,
- 0x66, 0x3e, 0xe9, 0x52, 0xc2, 0x08, 0xb4, 0xcb, 0x2f, 0xf7, 0x5f, 0x99,
- 0x3a, 0x6a, 0x9c, 0x50, 0x7a, 0x85, 0x05, 0x8c, 0x7d, 0xd1, 0x2a, 0x48,
- 0x84, 0xd3, 0x09, 0x6c, 0x7c, 0xc2, 0xcd, 0x35, 0x9f, 0xf3, 0x82, 0xee,
- 0x52, 0xde, 0x68, 0x5f, 0xe4, 0x00, 0x8a, 0x17, 0x20, 0x96, 0xf7, 0x29,
- 0x8d, 0x9a, 0x4d, 0xcb, 0xa8, 0xde, 0x86, 0xc8, 0x0d, 0x6f, 0x56, 0x87,
- 0x03, 0x7d, 0x03, 0x3f, 0xdc, 0xfa, 0x79, 0x7d, 0x21, 0x19, 0xf9, 0xc8,
- 0x3a, 0x2f, 0x51, 0x76, 0x8c, 0xc7, 0x41, 0x92, 0x71, 0x8f, 0x25, 0xce,
- 0x37, 0xf8, 0x4a, 0x4c, 0x00, 0x23, 0xef, 0xc4, 0x35, 0x10, 0xae, 0xe0,
- 0x23, 0x80, 0x73, 0x7c, 0x4d, 0x34, 0x2e, 0xc8, 0x6e, 0x90, 0xd6, 0x10,
- 0x1e, 0x99, 0x84, 0x73, 0x1a, 0x70, 0xf2, 0xed, 0x55, 0x0e, 0xee, 0x17,
- 0x06, 0xea, 0x67, 0xee, 0x32, 0xeb, 0x2c, 0xdd, 0x67, 0x07, 0x3f, 0xf6,
- 0x8b, 0xc2, 0x70, 0xde, 0x5b, 0x00, 0xe6, 0xbb, 0x1b, 0xd3, 0x36, 0x1a,
- 0x22, 0x6c, 0x6c, 0xb0, 0x35, 0x42, 0x6c, 0x90, 0x09, 0x3d, 0x93, 0xe9,
- 0x64, 0x09, 0x22, 0x0e, 0x85, 0x06, 0x9f, 0xc2, 0x73, 0x21, 0xd3, 0xe6,
- 0x5f, 0x80, 0xe4, 0x8d, 0x85, 0x22, 0x3a, 0x73, 0x03, 0xb1, 0x60, 0x8e,
- 0xae, 0x68, 0xe2, 0xf4, 0x3e, 0x97, 0xe7, 0x60, 0x12, 0x09, 0x68, 0x36,
- 0xde, 0x3a, 0xd6, 0xe2, 0x43, 0x95, 0x5b, 0x37, 0x81, 0x92, 0x81, 0x1f,
- 0xbb, 0x8d, 0xd7, 0xad, 0x52, 0x64, 0x16, 0x57, 0x96, 0xd9, 0x5e, 0x34,
- 0x7e, 0xc8, 0x35, 0xd8,
-}
-
-var certSet2Cert4 = []byte{
- 0x30, 0x82, 0x04, 0x15, 0x30, 0x82, 0x03, 0x7e, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x04, 0x07, 0x27, 0x8e, 0xed, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x75,
- 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55,
- 0x53, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0f,
- 0x47, 0x54, 0x45, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x31, 0x27, 0x30, 0x25, 0x06, 0x03, 0x55, 0x04, 0x0b,
- 0x13, 0x1e, 0x47, 0x54, 0x45, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54,
- 0x72, 0x75, 0x73, 0x74, 0x20, 0x53, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f,
- 0x6e, 0x73, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x23, 0x30, 0x21,
- 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1a, 0x47, 0x54, 0x45, 0x20, 0x43,
- 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c,
- 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x30, 0x1e, 0x17,
- 0x0d, 0x31, 0x32, 0x30, 0x34, 0x31, 0x38, 0x31, 0x36, 0x33, 0x36, 0x31,
- 0x38, 0x5a, 0x17, 0x0d, 0x31, 0x38, 0x30, 0x38, 0x31, 0x33, 0x31, 0x36,
- 0x33, 0x35, 0x31, 0x37, 0x5a, 0x30, 0x5a, 0x31, 0x0b, 0x30, 0x09, 0x06,
- 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x49, 0x45, 0x31, 0x12, 0x30, 0x10,
- 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x09, 0x42, 0x61, 0x6c, 0x74, 0x69,
- 0x6d, 0x6f, 0x72, 0x65, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04,
- 0x0b, 0x13, 0x0a, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73,
- 0x74, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x19,
- 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x43, 0x79,
- 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x52, 0x6f, 0x6f,
- 0x74, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48,
- 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f,
- 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xa3, 0x04,
- 0xbb, 0x22, 0xab, 0x98, 0x3d, 0x57, 0xe8, 0x26, 0x72, 0x9a, 0xb5, 0x79,
- 0xd4, 0x29, 0xe2, 0xe1, 0xe8, 0x95, 0x80, 0xb1, 0xb0, 0xe3, 0x5b, 0x8e,
- 0x2b, 0x29, 0x9a, 0x64, 0xdf, 0xa1, 0x5d, 0xed, 0xb0, 0x09, 0x05, 0x6d,
- 0xdb, 0x28, 0x2e, 0xce, 0x62, 0xa2, 0x62, 0xfe, 0xb4, 0x88, 0xda, 0x12,
- 0xeb, 0x38, 0xeb, 0x21, 0x9d, 0xc0, 0x41, 0x2b, 0x01, 0x52, 0x7b, 0x88,
- 0x77, 0xd3, 0x1c, 0x8f, 0xc7, 0xba, 0xb9, 0x88, 0xb5, 0x6a, 0x09, 0xe7,
- 0x73, 0xe8, 0x11, 0x40, 0xa7, 0xd1, 0xcc, 0xca, 0x62, 0x8d, 0x2d, 0xe5,
- 0x8f, 0x0b, 0xa6, 0x50, 0xd2, 0xa8, 0x50, 0xc3, 0x28, 0xea, 0xf5, 0xab,
- 0x25, 0x87, 0x8a, 0x9a, 0x96, 0x1c, 0xa9, 0x67, 0xb8, 0x3f, 0x0c, 0xd5,
- 0xf7, 0xf9, 0x52, 0x13, 0x2f, 0xc2, 0x1b, 0xd5, 0x70, 0x70, 0xf0, 0x8f,
- 0xc0, 0x12, 0xca, 0x06, 0xcb, 0x9a, 0xe1, 0xd9, 0xca, 0x33, 0x7a, 0x77,
- 0xd6, 0xf8, 0xec, 0xb9, 0xf1, 0x68, 0x44, 0x42, 0x48, 0x13, 0xd2, 0xc0,
- 0xc2, 0xa4, 0xae, 0x5e, 0x60, 0xfe, 0xb6, 0xa6, 0x05, 0xfc, 0xb4, 0xdd,
- 0x07, 0x59, 0x02, 0xd4, 0x59, 0x18, 0x98, 0x63, 0xf5, 0xa5, 0x63, 0xe0,
- 0x90, 0x0c, 0x7d, 0x5d, 0xb2, 0x06, 0x7a, 0xf3, 0x85, 0xea, 0xeb, 0xd4,
- 0x03, 0xae, 0x5e, 0x84, 0x3e, 0x5f, 0xff, 0x15, 0xed, 0x69, 0xbc, 0xf9,
- 0x39, 0x36, 0x72, 0x75, 0xcf, 0x77, 0x52, 0x4d, 0xf3, 0xc9, 0x90, 0x2c,
- 0xb9, 0x3d, 0xe5, 0xc9, 0x23, 0x53, 0x3f, 0x1f, 0x24, 0x98, 0x21, 0x5c,
- 0x07, 0x99, 0x29, 0xbd, 0xc6, 0x3a, 0xec, 0xe7, 0x6e, 0x86, 0x3a, 0x6b,
- 0x97, 0x74, 0x63, 0x33, 0xbd, 0x68, 0x18, 0x31, 0xf0, 0x78, 0x8d, 0x76,
- 0xbf, 0xfc, 0x9e, 0x8e, 0x5d, 0x2a, 0x86, 0xa7, 0x4d, 0x90, 0xdc, 0x27,
- 0x1a, 0x39, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x47, 0x30,
- 0x82, 0x01, 0x43, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01,
- 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x03, 0x30,
- 0x4a, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x43, 0x30, 0x41, 0x30, 0x3f,
- 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x37, 0x30, 0x35, 0x06, 0x08,
- 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x29, 0x68, 0x74,
- 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x79, 0x62, 0x65, 0x72, 0x74, 0x72,
- 0x75, 0x73, 0x74, 0x2e, 0x6f, 0x6d, 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74,
- 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74,
- 0x6f, 0x72, 0x79, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01,
- 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x81, 0x89, 0x06, 0x03,
- 0x55, 0x1d, 0x23, 0x04, 0x81, 0x81, 0x30, 0x7f, 0xa1, 0x79, 0xa4, 0x77,
- 0x30, 0x75, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13,
- 0x02, 0x55, 0x53, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x0a,
- 0x13, 0x0f, 0x47, 0x54, 0x45, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x27, 0x30, 0x25, 0x06, 0x03, 0x55,
- 0x04, 0x0b, 0x13, 0x1e, 0x47, 0x54, 0x45, 0x20, 0x43, 0x79, 0x62, 0x65,
- 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x53, 0x6f, 0x6c, 0x75, 0x74,
- 0x69, 0x6f, 0x6e, 0x73, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x23,
- 0x30, 0x21, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1a, 0x47, 0x54, 0x45,
- 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20,
- 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x82,
- 0x02, 0x01, 0xa5, 0x30, 0x45, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x3e,
- 0x30, 0x3c, 0x30, 0x3a, 0xa0, 0x38, 0xa0, 0x36, 0x86, 0x34, 0x68, 0x74,
- 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x70, 0x75, 0x62,
- 0x6c, 0x69, 0x63, 0x2d, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f,
- 0x6d, 0x2f, 0x63, 0x67, 0x69, 0x2d, 0x62, 0x69, 0x6e, 0x2f, 0x43, 0x52,
- 0x4c, 0x2f, 0x32, 0x30, 0x31, 0x38, 0x2f, 0x63, 0x64, 0x70, 0x2e, 0x63,
- 0x72, 0x6c, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
- 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x93, 0x1d, 0xfe,
- 0x8b, 0xae, 0x46, 0xec, 0xcb, 0xa9, 0x0f, 0xab, 0xe5, 0xef, 0xca, 0xb2,
- 0x68, 0x16, 0x68, 0xd8, 0x8f, 0xfa, 0x13, 0xa9, 0xaf, 0xb3, 0xcb, 0x2d,
- 0xe7, 0x4b, 0x6e, 0x8e, 0x69, 0x2a, 0xc2, 0x2b, 0x10, 0x0a, 0x8d, 0xf6,
- 0xae, 0x73, 0xb6, 0xb9, 0xfb, 0x14, 0xfd, 0x5f, 0x6d, 0xb8, 0x50, 0xb6,
- 0xc4, 0x8a, 0xd6, 0x40, 0x7e, 0xd7, 0xc3, 0xcb, 0x73, 0xdc, 0xc9, 0x5d,
- 0x5b, 0xaf, 0xb0, 0x41, 0xb5, 0x37, 0xeb, 0xea, 0xdc, 0x20, 0x91, 0xc4,
- 0x34, 0x6a, 0xf4, 0xa1, 0xf3, 0x96, 0x9d, 0x37, 0x86, 0x97, 0xe1, 0x71,
- 0xa4, 0xdd, 0x7d, 0xfa, 0x44, 0x84, 0x94, 0xae, 0xd7, 0x09, 0x04, 0x22,
- 0x76, 0x0f, 0x64, 0x51, 0x35, 0xa9, 0x24, 0x0f, 0xf9, 0x0b, 0xdb, 0x32,
- 0xda, 0xc2, 0xfe, 0xc1, 0xb9, 0x2a, 0x5c, 0x7a, 0x27, 0x13, 0xca, 0xb1,
- 0x48, 0x3a, 0x71, 0xd0, 0x43,
-}
-
-var certSet2Cert5 = []byte{
- 0x30, 0x82, 0x04, 0x22, 0x30, 0x82, 0x03, 0x0a, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x03, 0x02, 0x3a, 0x79, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
- 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x42, 0x31,
- 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53,
- 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47,
- 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e,
- 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x47,
- 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62,
- 0x61, 0x6c, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34, 0x30,
- 0x39, 0x30, 0x38, 0x32, 0x30, 0x34, 0x31, 0x31, 0x30, 0x5a, 0x17, 0x0d,
- 0x32, 0x32, 0x30, 0x35, 0x32, 0x30, 0x32, 0x30, 0x34, 0x31, 0x31, 0x30,
- 0x5a, 0x30, 0x44, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,
- 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04,
- 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20,
- 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x1d, 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04,
- 0x03, 0x13, 0x14, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20,
- 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x34, 0x30,
- 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7,
- 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30,
- 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0x9a, 0x7d, 0x98, 0x68,
- 0x11, 0x40, 0xc1, 0x5f, 0x72, 0xec, 0x55, 0xb3, 0xb1, 0x63, 0xf3, 0x32,
- 0x22, 0x72, 0x91, 0xc6, 0x16, 0x05, 0xbb, 0x08, 0x82, 0x31, 0xb4, 0xf6,
- 0xee, 0xd4, 0x18, 0x39, 0x11, 0x2f, 0x2e, 0xda, 0x47, 0xfe, 0x51, 0x31,
- 0x6e, 0x5b, 0xf2, 0xa9, 0x0a, 0xeb, 0x2f, 0xbb, 0xf5, 0x61, 0x59, 0x65,
- 0x57, 0x02, 0xcd, 0x80, 0xff, 0xc7, 0x70, 0x32, 0x54, 0x89, 0xfd, 0xdb,
- 0xae, 0x99, 0x72, 0xd4, 0x4f, 0x0c, 0x26, 0xb9, 0x2e, 0x63, 0x30, 0x7d,
- 0xde, 0x14, 0x5b, 0x6a, 0xd7, 0x52, 0x78, 0x21, 0xf9, 0xbf, 0xbc, 0x50,
- 0xd5, 0x54, 0x12, 0x59, 0xd8, 0xb5, 0x36, 0xd9, 0x21, 0x47, 0xb8, 0x3f,
- 0x6a, 0x58, 0x1d, 0x8c, 0x72, 0xe1, 0x97, 0x95, 0xd3, 0xe1, 0x45, 0xa8,
- 0xf1, 0x5a, 0xe5, 0xbe, 0xfe, 0xe3, 0x53, 0x7c, 0xa5, 0xf0, 0x52, 0xe0,
- 0xcf, 0x39, 0x94, 0x0c, 0x19, 0x71, 0xf2, 0xc0, 0x25, 0x07, 0x48, 0x7d,
- 0x1c, 0xe6, 0xf1, 0x39, 0x25, 0x2f, 0x98, 0x79, 0x43, 0xe8, 0x18, 0x72,
- 0xf4, 0x65, 0x86, 0x98, 0x5a, 0x00, 0x04, 0x47, 0xda, 0x4b, 0x58, 0x1e,
- 0x7c, 0x86, 0xb1, 0x4b, 0x35, 0xa6, 0x20, 0x00, 0x1c, 0xcd, 0x1b, 0x3b,
- 0x22, 0x5d, 0xd1, 0x93, 0x28, 0x33, 0x12, 0x23, 0x94, 0x08, 0xaa, 0xc3,
- 0x3a, 0xf5, 0xd1, 0xc6, 0x8c, 0x7e, 0x99, 0xd3, 0x18, 0xa0, 0xad, 0x9d,
- 0x18, 0xcf, 0x49, 0xad, 0x10, 0x03, 0xf7, 0x99, 0x33, 0x26, 0x86, 0x46,
- 0x9a, 0x2f, 0xa0, 0xba, 0x6c, 0x6e, 0xc8, 0x88, 0x02, 0xb7, 0x6e, 0xfa,
- 0x7a, 0x9e, 0x98, 0x4a, 0xee, 0x9a, 0x31, 0x7d, 0x19, 0x14, 0x60, 0x0c,
- 0xec, 0x8f, 0x20, 0x23, 0x3c, 0xda, 0x97, 0x26, 0xb6, 0xea, 0x80, 0x6c,
- 0x8a, 0x57, 0x9e, 0x20, 0xee, 0x6f, 0x17, 0x25, 0x4a, 0x32, 0xad, 0x35,
- 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x1d, 0x30, 0x82, 0x01,
- 0x19, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16,
- 0x80, 0x14, 0xc0, 0x7a, 0x98, 0x68, 0x8d, 0x89, 0xfb, 0xab, 0x05, 0x64,
- 0x0c, 0x11, 0x7d, 0xaa, 0x7d, 0x65, 0xb8, 0xca, 0xcc, 0x4e, 0x30, 0x1d,
- 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xac, 0x32, 0xed,
- 0x5a, 0xc9, 0xe0, 0xde, 0x30, 0x9c, 0x90, 0x58, 0x55, 0x26, 0x63, 0xf6,
- 0x72, 0xa6, 0x54, 0x5f, 0xe3, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13,
- 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01,
- 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04,
- 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x35, 0x06, 0x03, 0x55, 0x1d, 0x1f,
- 0x04, 0x2e, 0x30, 0x2c, 0x30, 0x2a, 0xa0, 0x28, 0xa0, 0x26, 0x86, 0x24,
- 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x2e, 0x73, 0x79, 0x6d,
- 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x72, 0x6c, 0x73, 0x2f,
- 0x67, 0x74, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x63, 0x72, 0x6c,
- 0x30, 0x2e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01,
- 0x04, 0x22, 0x30, 0x20, 0x30, 0x1e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05,
- 0x05, 0x07, 0x30, 0x01, 0x86, 0x12, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
- 0x2f, 0x67, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x64, 0x2e, 0x63, 0x6f, 0x6d,
- 0x30, 0x4c, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x45, 0x30, 0x43, 0x30,
- 0x41, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, 0x07,
- 0x36, 0x30, 0x33, 0x30, 0x31, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
- 0x07, 0x02, 0x01, 0x16, 0x25, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f,
- 0x77, 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74,
- 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
- 0x65, 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
- 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01,
- 0x01, 0x00, 0x61, 0x40, 0xad, 0x21, 0x0f, 0x03, 0xbb, 0x95, 0xdc, 0x89,
- 0xfc, 0xa3, 0xcb, 0x05, 0x71, 0xe9, 0x1c, 0x59, 0x97, 0x35, 0xc2, 0xfa,
- 0x6b, 0x05, 0xa4, 0x16, 0xc6, 0x56, 0x46, 0x37, 0x74, 0x1b, 0x1b, 0xf1,
- 0x3e, 0x2c, 0xe8, 0x37, 0x19, 0xb7, 0x94, 0xd2, 0x0f, 0x0e, 0xc5, 0xbf,
- 0x14, 0x07, 0x2b, 0x34, 0xcd, 0x5b, 0xb4, 0x8d, 0xc7, 0x56, 0x9d, 0x19,
- 0xfc, 0x02, 0xb4, 0x9e, 0x90, 0x31, 0xfa, 0xa4, 0x44, 0xc6, 0x75, 0xdd,
- 0xdd, 0x1f, 0x25, 0x54, 0xa3, 0x30, 0x4c, 0xac, 0xdb, 0xfe, 0xc4, 0x88,
- 0xf7, 0x31, 0x26, 0x18, 0x47, 0xae, 0x4c, 0x20, 0x19, 0x1a, 0xc7, 0xae,
- 0x3e, 0x98, 0x0a, 0x16, 0x3d, 0xd2, 0xc2, 0xa6, 0x5d, 0x0d, 0x2e, 0x29,
- 0x7d, 0xb2, 0x9d, 0xc7, 0x41, 0x32, 0x17, 0xca, 0x9d, 0xae, 0x39, 0xbf,
- 0x91, 0x98, 0xde, 0xe7, 0x44, 0xe2, 0x95, 0x9c, 0x94, 0x5c, 0x6c, 0x42,
- 0x1b, 0x59, 0xc9, 0x7b, 0x68, 0x13, 0xa8, 0x96, 0x09, 0x74, 0xee, 0x40,
- 0x14, 0xa4, 0xd5, 0xd7, 0xc9, 0x7b, 0x33, 0xa3, 0x0f, 0x5a, 0x69, 0x9c,
- 0x1a, 0xfa, 0x6f, 0x12, 0x47, 0x1c, 0xdf, 0x1e, 0x4c, 0x70, 0x4e, 0x6d,
- 0xdd, 0xfe, 0x1c, 0x87, 0xb5, 0x9d, 0xe1, 0x54, 0x07, 0x09, 0x8a, 0xcd,
- 0xbe, 0xaa, 0xa8, 0x46, 0x78, 0x6e, 0x16, 0xf2, 0xe7, 0x91, 0x0e, 0xc3,
- 0xaf, 0xda, 0x76, 0x00, 0xd1, 0xd8, 0xa2, 0x46, 0x24, 0x03, 0xa5, 0x1a,
- 0x85, 0x81, 0x56, 0x83, 0x63, 0x27, 0xba, 0x90, 0x8e, 0xf9, 0x62, 0x11,
- 0xba, 0xa7, 0x7c, 0x90, 0xa9, 0x1a, 0x66, 0xb4, 0xc5, 0xbc, 0x8f, 0x29,
- 0x41, 0xab, 0xeb, 0x8d, 0x99, 0xa6, 0xcc, 0x91, 0x64, 0xba, 0xdc, 0xc6,
- 0xa6, 0x4c, 0xb3, 0xb4, 0x23, 0x26, 0x51, 0x72, 0x56, 0xf9, 0xf3, 0x74,
- 0x55, 0x9f, 0x25, 0x75, 0x4f, 0x2b,
-}
-
-var certSet2Cert6 = []byte{
- 0x30, 0x82, 0x04, 0x25, 0x30, 0x82, 0x03, 0x0d, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x03, 0x02, 0x3a, 0x77, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
- 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x42, 0x31,
- 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53,
- 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47,
- 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e,
- 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x47,
- 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62,
- 0x61, 0x6c, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34, 0x30,
- 0x38, 0x32, 0x39, 0x32, 0x31, 0x33, 0x39, 0x33, 0x32, 0x5a, 0x17, 0x0d,
- 0x32, 0x32, 0x30, 0x35, 0x32, 0x30, 0x32, 0x31, 0x33, 0x39, 0x33, 0x32,
- 0x5a, 0x30, 0x47, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,
- 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04,
- 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20,
- 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x20, 0x30, 0x1e, 0x06, 0x03, 0x55, 0x04,
- 0x03, 0x13, 0x17, 0x52, 0x61, 0x70, 0x69, 0x64, 0x53, 0x53, 0x4c, 0x20,
- 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20,
- 0x47, 0x33, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
- 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01,
- 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xaf,
- 0x54, 0x9b, 0xd9, 0x58, 0x5d, 0x1e, 0x2c, 0x56, 0xc6, 0xd5, 0xe8, 0x7f,
- 0xf4, 0x7d, 0x16, 0x03, 0xff, 0xd0, 0x8b, 0x5a, 0xe4, 0x8e, 0xa7, 0xdd,
- 0x54, 0x2e, 0xd4, 0x04, 0xc0, 0x5d, 0x98, 0x9c, 0x8d, 0x90, 0x0f, 0xbc,
- 0x10, 0x65, 0x5f, 0xda, 0x9a, 0xd6, 0x44, 0x7c, 0xc0, 0x9f, 0xb5, 0xe9,
- 0x4a, 0x8c, 0x0b, 0x06, 0x43, 0x04, 0xbb, 0xf4, 0x96, 0xe2, 0x26, 0xf6,
- 0x61, 0x01, 0x91, 0x66, 0x31, 0x22, 0xc3, 0x34, 0x34, 0x5f, 0x3f, 0x3f,
- 0x91, 0x2f, 0x44, 0x5f, 0xdc, 0xc7, 0x14, 0xb6, 0x03, 0x9f, 0x86, 0x4b,
- 0x0e, 0xa3, 0xff, 0xa0, 0x80, 0x02, 0x83, 0xc3, 0xd3, 0x1f, 0x69, 0x52,
- 0xd6, 0x9d, 0x64, 0x0f, 0xc9, 0x83, 0xe7, 0x1b, 0xc4, 0x70, 0xac, 0x94,
- 0xe7, 0xc3, 0xa4, 0x6a, 0x2c, 0xbd, 0xb8, 0x9e, 0x69, 0xd8, 0xbe, 0x0a,
- 0x8f, 0x16, 0x63, 0x5a, 0x68, 0x71, 0x80, 0x7b, 0x30, 0xde, 0x15, 0x04,
- 0xbf, 0xcc, 0xd3, 0xbf, 0x3e, 0x48, 0x05, 0x55, 0x7a, 0xb3, 0xd7, 0x10,
- 0x0c, 0x03, 0xfc, 0x9b, 0xfd, 0x08, 0xa7, 0x8c, 0x8c, 0xdb, 0xa7, 0x8e,
- 0xf1, 0x1e, 0x63, 0xdc, 0xb3, 0x01, 0x2f, 0x7f, 0xaf, 0x57, 0xc3, 0x3c,
- 0x48, 0xa7, 0x83, 0x68, 0x21, 0xa7, 0x2f, 0xe7, 0xa7, 0x3f, 0xf0, 0xb5,
- 0x0c, 0xfc, 0xf5, 0x84, 0xd1, 0x53, 0xbc, 0x0e, 0x72, 0x4f, 0x60, 0x0c,
- 0x42, 0xb8, 0x98, 0xad, 0x19, 0x88, 0x57, 0xd7, 0x04, 0xec, 0x87, 0xbf,
- 0x7e, 0x87, 0x4e, 0xa3, 0x21, 0xf9, 0x53, 0xfd, 0x36, 0x98, 0x48, 0x8d,
- 0xd6, 0xf8, 0xbb, 0x48, 0xf2, 0x29, 0xc8, 0x64, 0xd1, 0xcc, 0x54, 0x48,
- 0x53, 0x8b, 0xaf, 0xb7, 0x65, 0x1e, 0xbf, 0x29, 0x33, 0x29, 0xd9, 0x29,
- 0x60, 0x48, 0xf8, 0xff, 0x91, 0xbc, 0x57, 0x58, 0xe5, 0x35, 0x2e, 0xbb,
- 0x69, 0xb6, 0x59, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x1d,
- 0x30, 0x82, 0x01, 0x19, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04,
- 0x18, 0x30, 0x16, 0x80, 0x14, 0xc0, 0x7a, 0x98, 0x68, 0x8d, 0x89, 0xfb,
- 0xab, 0x05, 0x64, 0x0c, 0x11, 0x7d, 0xaa, 0x7d, 0x65, 0xb8, 0xca, 0xcc,
- 0x4e, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14,
- 0xc3, 0x9c, 0xf3, 0xfc, 0xd3, 0x46, 0x08, 0x34, 0xbb, 0xce, 0x46, 0x7f,
- 0xa0, 0x7c, 0x5b, 0xf3, 0xe2, 0x08, 0xcb, 0x59, 0x30, 0x12, 0x06, 0x03,
- 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01,
- 0xff, 0x02, 0x01, 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01,
- 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x35, 0x06, 0x03,
- 0x55, 0x1d, 0x1f, 0x04, 0x2e, 0x30, 0x2c, 0x30, 0x2a, 0xa0, 0x28, 0xa0,
- 0x26, 0x86, 0x24, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x2e,
- 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x72,
- 0x6c, 0x73, 0x2f, 0x67, 0x74, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e,
- 0x63, 0x72, 0x6c, 0x30, 0x2e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
- 0x07, 0x01, 0x01, 0x04, 0x22, 0x30, 0x20, 0x30, 0x1e, 0x06, 0x08, 0x2b,
- 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x12, 0x68, 0x74, 0x74,
- 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x64, 0x2e,
- 0x63, 0x6f, 0x6d, 0x30, 0x4c, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x45,
- 0x30, 0x43, 0x30, 0x41, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8,
- 0x45, 0x01, 0x07, 0x36, 0x30, 0x33, 0x30, 0x31, 0x06, 0x08, 0x2b, 0x06,
- 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x25, 0x68, 0x74, 0x74, 0x70,
- 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72,
- 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f,
- 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x0d, 0x06,
- 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00,
- 0x03, 0x82, 0x01, 0x01, 0x00, 0xa3, 0x58, 0x1e, 0xc6, 0x43, 0x32, 0xac,
- 0xac, 0x2f, 0x93, 0x78, 0xb7, 0xea, 0xae, 0x54, 0x40, 0x47, 0x2d, 0x7e,
- 0x78, 0x8d, 0x50, 0xf6, 0xf8, 0x66, 0xac, 0xd6, 0x4f, 0x73, 0xd6, 0x44,
- 0xef, 0xaf, 0x0b, 0xcc, 0x5b, 0xc1, 0xf4, 0x4f, 0x9a, 0x8f, 0x49, 0x7e,
- 0x60, 0xaf, 0xc2, 0x27, 0xc7, 0x16, 0xf1, 0xfb, 0x93, 0x81, 0x90, 0xa9,
- 0x7c, 0xef, 0x6f, 0x7e, 0x6e, 0x45, 0x94, 0x16, 0x84, 0xbd, 0xec, 0x49,
- 0xf1, 0xc4, 0x0e, 0xf4, 0xaf, 0x04, 0x59, 0x83, 0x87, 0x0f, 0x2c, 0x3b,
- 0x97, 0xc3, 0x5a, 0x12, 0x9b, 0x7b, 0x04, 0x35, 0x7b, 0xa3, 0x95, 0x33,
- 0x08, 0x7b, 0x93, 0x71, 0x22, 0x42, 0xb3, 0xa9, 0xd9, 0x6f, 0x4f, 0x81,
- 0x92, 0xfc, 0x07, 0xb6, 0x79, 0xbc, 0x84, 0x4a, 0x9d, 0x77, 0x09, 0xf1,
- 0xc5, 0x89, 0xf2, 0xf0, 0xb4, 0x9c, 0x54, 0xaa, 0x12, 0x7b, 0x0d, 0xba,
- 0x4f, 0xef, 0x93, 0x19, 0xec, 0xef, 0x7d, 0x4e, 0x61, 0xa3, 0x8e, 0x76,
- 0x9c, 0x59, 0xcf, 0x8c, 0x94, 0xb1, 0x84, 0x97, 0xf7, 0x1a, 0xb9, 0x07,
- 0xb8, 0xb2, 0xc6, 0x4f, 0x13, 0x79, 0xdb, 0xbf, 0x4f, 0x51, 0x1b, 0x7f,
- 0x69, 0x0d, 0x51, 0x2a, 0xc1, 0xd6, 0x15, 0xff, 0x37, 0x51, 0x34, 0x65,
- 0x51, 0xf4, 0x1e, 0xbe, 0x38, 0x6a, 0xec, 0x0e, 0xab, 0xbf, 0x3d, 0x7b,
- 0x39, 0x05, 0x7b, 0xf4, 0xf3, 0xfb, 0x1a, 0xa1, 0xd0, 0xc8, 0x7e, 0x4e,
- 0x64, 0x8d, 0xcd, 0x8c, 0x61, 0x55, 0x90, 0xfe, 0x3a, 0xca, 0x5d, 0x25,
- 0x0f, 0xf8, 0x1d, 0xa3, 0x4a, 0x74, 0x56, 0x4f, 0x1a, 0x55, 0x40, 0x70,
- 0x75, 0x25, 0xa6, 0x33, 0x2e, 0xba, 0x4b, 0xa5, 0x5d, 0x53, 0x9a, 0x0d,
- 0x30, 0xe1, 0x8d, 0x5f, 0x61, 0x2c, 0xaf, 0xcc, 0xef, 0xb0, 0x99, 0xa1,
- 0x80, 0xff, 0x0b, 0xf2, 0x62, 0x4c, 0x70, 0x26, 0x98,
-}
-
-var certSet2Cert7 = []byte{
- 0x30, 0x82, 0x04, 0x2b, 0x30, 0x82, 0x03, 0x13, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x12, 0x11, 0x20, 0x96, 0xf6, 0xc8, 0x03, 0x7c, 0x9e, 0x07,
- 0xb1, 0x38, 0xbf, 0x2e, 0x72, 0x10, 0x8a, 0xd7, 0xed, 0x30, 0x0d, 0x06,
- 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00,
- 0x30, 0x3d, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13,
- 0x02, 0x46, 0x52, 0x31, 0x11, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x04, 0x0a,
- 0x13, 0x08, 0x43, 0x65, 0x72, 0x74, 0x70, 0x6c, 0x75, 0x73, 0x31, 0x1b,
- 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x43, 0x6c, 0x61,
- 0x73, 0x73, 0x20, 0x32, 0x20, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79,
- 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x37, 0x30, 0x36, 0x30,
- 0x35, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x31, 0x39,
- 0x30, 0x36, 0x32, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30,
- 0x40, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
- 0x46, 0x52, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13,
- 0x09, 0x4b, 0x45, 0x59, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x53, 0x31, 0x1d,
- 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x14, 0x43, 0x4c, 0x41,
- 0x53, 0x53, 0x20, 0x32, 0x20, 0x4b, 0x45, 0x59, 0x4e, 0x45, 0x43, 0x54,
- 0x49, 0x53, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06,
- 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00,
- 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01,
- 0x01, 0x00, 0xc6, 0xbe, 0xfe, 0x44, 0x23, 0x04, 0xd4, 0xef, 0x2f, 0x3b,
- 0x86, 0xaa, 0x35, 0x58, 0x81, 0xd1, 0xe1, 0x9a, 0xd6, 0xb1, 0xd4, 0x27,
- 0x45, 0x28, 0xfc, 0xd1, 0x1e, 0x46, 0x85, 0xba, 0x54, 0x23, 0x11, 0x7d,
- 0xe0, 0x66, 0x3f, 0xd4, 0xa3, 0x57, 0x66, 0x78, 0xf9, 0x6b, 0xeb, 0x74,
- 0x7c, 0x2a, 0xb8, 0x37, 0xa5, 0xe8, 0x70, 0xae, 0x82, 0xb5, 0x4e, 0xd4,
- 0x81, 0xfe, 0x5b, 0xe2, 0xea, 0xe7, 0x22, 0x16, 0xf8, 0xf9, 0xd7, 0xba,
- 0x3a, 0xf6, 0x88, 0x56, 0xdc, 0xc4, 0xf2, 0xa0, 0xa4, 0xe5, 0x75, 0x06,
- 0x60, 0x72, 0x2b, 0xfb, 0xf5, 0x94, 0xee, 0x2c, 0x83, 0x28, 0xde, 0x91,
- 0x9a, 0xb3, 0x83, 0x3a, 0xb0, 0x9f, 0x08, 0xfa, 0xdd, 0xd8, 0x9e, 0x8c,
- 0x24, 0xe6, 0xdf, 0x66, 0x5b, 0xc8, 0x7e, 0xa3, 0x62, 0x4d, 0x3f, 0x3a,
- 0x85, 0x23, 0xec, 0xe8, 0x71, 0x8f, 0x0a, 0x00, 0xac, 0x89, 0x6d, 0x7e,
- 0xd8, 0x72, 0xe5, 0xdd, 0xc1, 0x94, 0x8e, 0x5f, 0xe4, 0x73, 0xe6, 0xc1,
- 0xc6, 0x0c, 0x87, 0x58, 0x4f, 0x37, 0xda, 0xd1, 0xa9, 0x88, 0x26, 0x76,
- 0xb4, 0xee, 0x11, 0x8d, 0xf6, 0xad, 0xb2, 0xa7, 0xbc, 0x73, 0xc4, 0xcd,
- 0x1c, 0x6e, 0x1a, 0xe6, 0x8d, 0x72, 0x56, 0x44, 0xa0, 0x98, 0xf7, 0x92,
- 0xf9, 0xd7, 0x79, 0x9b, 0x03, 0xe6, 0x68, 0x5f, 0xa4, 0x5c, 0x7c, 0x3d,
- 0x50, 0xb4, 0x83, 0xcc, 0xe5, 0xac, 0x0d, 0xe1, 0x3e, 0x4f, 0x14, 0xf2,
- 0xb4, 0xe4, 0x7d, 0xbf, 0x71, 0xa4, 0xc3, 0x97, 0x73, 0x38, 0xd6, 0x52,
- 0x7c, 0xc8, 0xa4, 0xb5, 0xea, 0xe9, 0xb2, 0x54, 0x56, 0xd4, 0xeb, 0xb8,
- 0x57, 0x3a, 0x40, 0x52, 0x5a, 0x5e, 0x46, 0x27, 0xa3, 0x7b, 0x30, 0x2d,
- 0x08, 0x3d, 0x85, 0x1e, 0x9a, 0xf0, 0x32, 0xa8, 0xf2, 0x10, 0xa2, 0x83,
- 0x9b, 0xe2, 0x28, 0xf6, 0x9d, 0xcb, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3,
- 0x82, 0x01, 0x20, 0x30, 0x82, 0x01, 0x1c, 0x30, 0x12, 0x06, 0x03, 0x55,
- 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff,
- 0x02, 0x01, 0x00, 0x30, 0x7d, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x76,
- 0x30, 0x74, 0x30, 0x38, 0x06, 0x0b, 0x2b, 0x06, 0x04, 0x01, 0x81, 0xad,
- 0x5a, 0x02, 0x05, 0x03, 0x03, 0x30, 0x29, 0x30, 0x27, 0x06, 0x08, 0x2b,
- 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1b, 0x68, 0x74, 0x74,
- 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x6b, 0x65, 0x79, 0x6e,
- 0x65, 0x63, 0x74, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x43,
- 0x30, 0x38, 0x06, 0x0b, 0x2b, 0x06, 0x04, 0x01, 0x81, 0xad, 0x5a, 0x02,
- 0x05, 0x01, 0x03, 0x30, 0x29, 0x30, 0x27, 0x06, 0x08, 0x2b, 0x06, 0x01,
- 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1b, 0x68, 0x74, 0x74, 0x70, 0x3a,
- 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x6b, 0x65, 0x79, 0x6e, 0x65, 0x63,
- 0x74, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x43, 0x30, 0x37,
- 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x30, 0x30, 0x2e, 0x30, 0x2c, 0xa0,
- 0x2a, 0xa0, 0x28, 0x86, 0x26, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f,
- 0x77, 0x77, 0x77, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x70, 0x6c, 0x75, 0x73,
- 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x52, 0x4c, 0x2f, 0x63, 0x6c, 0x61,
- 0x73, 0x73, 0x32, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55,
- 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30,
- 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x00, 0x11,
- 0x41, 0xdf, 0x3b, 0x9d, 0x3b, 0xcb, 0xb8, 0xa2, 0xc1, 0x33, 0x92, 0xa8,
- 0x81, 0xcc, 0xe5, 0x7d, 0xe7, 0x99, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d,
- 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xe3, 0x73, 0x2d, 0xdf, 0xcb,
- 0x0e, 0x28, 0x0c, 0xde, 0xdd, 0xb3, 0xa4, 0xca, 0x79, 0xb8, 0x8e, 0xbb,
- 0xe8, 0x30, 0x89, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7,
- 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x08,
- 0x88, 0xfe, 0x1f, 0xa2, 0xca, 0xcd, 0xe2, 0xa0, 0xf1, 0x2e, 0x7c, 0x67,
- 0x49, 0xfb, 0xdc, 0x94, 0xac, 0x7f, 0x41, 0x0d, 0x78, 0x01, 0xba, 0x31,
- 0xf7, 0x9b, 0xfb, 0x31, 0x18, 0x77, 0x2f, 0x66, 0x25, 0x94, 0xb8, 0x6d,
- 0x16, 0x74, 0x81, 0xf1, 0xc0, 0xae, 0x67, 0xc6, 0x14, 0x45, 0x7a, 0x01,
- 0xd1, 0x13, 0x88, 0xfc, 0xe2, 0x8d, 0x22, 0x1d, 0xbd, 0x1e, 0x0c, 0xc7,
- 0xa9, 0x7e, 0xd0, 0xc3, 0x97, 0xf6, 0x37, 0x5b, 0x41, 0x5e, 0x67, 0x94,
- 0x8e, 0xab, 0x69, 0x02, 0x17, 0x18, 0xf5, 0x4d, 0x38, 0xc2, 0x49, 0x28,
- 0x09, 0x6e, 0x5a, 0x9b, 0xa6, 0x27, 0xdb, 0xc0, 0x5f, 0x8f, 0x44, 0x9c,
- 0x90, 0x65, 0x99, 0xd8, 0xb3, 0x2e, 0xc1, 0x92, 0xee, 0x1a, 0x9d, 0x0f,
- 0x72, 0x45, 0x20, 0xfa, 0x2c, 0x0c, 0x9c, 0x5d, 0xcd, 0x5b, 0x54, 0x41,
- 0x54, 0x4f, 0xd3, 0xe2, 0xc7, 0x59, 0x84, 0x3f, 0x17, 0x7b, 0x7d, 0x0e,
- 0xc2, 0xef, 0x62, 0xc7, 0xba, 0xb1, 0x26, 0x6c, 0x83, 0x4e, 0xd3, 0x19,
- 0xc5, 0xff, 0x56, 0xa7, 0xb4, 0x45, 0x3f, 0x7a, 0x9e, 0xfa, 0xd0, 0x39,
- 0x3e, 0x80, 0x46, 0x75, 0x5d, 0x5a, 0x79, 0x7a, 0x33, 0xc5, 0x01, 0xbc,
- 0x02, 0x44, 0xce, 0x1b, 0xc0, 0x31, 0x4e, 0x47, 0x96, 0x15, 0x6e, 0xe7,
- 0xe4, 0x76, 0xf0, 0xc2, 0x90, 0x0d, 0xa1, 0x78, 0xf4, 0x38, 0x00, 0x91,
- 0x2b, 0x65, 0x7c, 0x79, 0x13, 0xa8, 0x3e, 0x91, 0x14, 0xdc, 0x88, 0x05,
- 0x08, 0xd7, 0x6f, 0x53, 0xf6, 0x15, 0x43, 0xee, 0xc5, 0x53, 0x56, 0x1a,
- 0x02, 0xb5, 0xa6, 0xa2, 0x46, 0x8d, 0x1e, 0x13, 0xe4, 0x67, 0xc2, 0x45,
- 0x5f, 0x40, 0x5e, 0x10, 0x42, 0x58, 0xb5, 0xcd, 0x44, 0xa3, 0x94, 0x4c,
- 0x1c, 0x54, 0x90, 0x4d, 0x91, 0x9a, 0x26, 0x8b, 0xad, 0xa2, 0x80, 0x50,
- 0x8d, 0x14, 0x14,
-}
-
-var certSet2Cert8 = []byte{
- 0x30, 0x82, 0x04, 0x38, 0x30, 0x82, 0x03, 0xa1, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x04, 0x07, 0x27, 0x6d, 0xb9, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x75,
- 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55,
- 0x53, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0f,
- 0x47, 0x54, 0x45, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x31, 0x27, 0x30, 0x25, 0x06, 0x03, 0x55, 0x04, 0x0b,
- 0x13, 0x1e, 0x47, 0x54, 0x45, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54,
- 0x72, 0x75, 0x73, 0x74, 0x20, 0x53, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f,
- 0x6e, 0x73, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x23, 0x30, 0x21,
- 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1a, 0x47, 0x54, 0x45, 0x20, 0x43,
- 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c,
- 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x30, 0x1e, 0x17,
- 0x0d, 0x31, 0x30, 0x31, 0x31, 0x33, 0x30, 0x31, 0x36, 0x33, 0x35, 0x32,
- 0x31, 0x5a, 0x17, 0x0d, 0x31, 0x38, 0x30, 0x38, 0x31, 0x30, 0x31, 0x35,
- 0x33, 0x34, 0x32, 0x36, 0x5a, 0x30, 0x5a, 0x31, 0x0b, 0x30, 0x09, 0x06,
- 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x49, 0x45, 0x31, 0x12, 0x30, 0x10,
- 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x09, 0x42, 0x61, 0x6c, 0x74, 0x69,
- 0x6d, 0x6f, 0x72, 0x65, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04,
- 0x0b, 0x13, 0x0a, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73,
- 0x74, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x19,
- 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x43, 0x79,
- 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x52, 0x6f, 0x6f,
- 0x74, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48,
- 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f,
- 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xa3, 0x04,
- 0xbb, 0x22, 0xab, 0x98, 0x3d, 0x57, 0xe8, 0x26, 0x72, 0x9a, 0xb5, 0x79,
- 0xd4, 0x29, 0xe2, 0xe1, 0xe8, 0x95, 0x80, 0xb1, 0xb0, 0xe3, 0x5b, 0x8e,
- 0x2b, 0x29, 0x9a, 0x64, 0xdf, 0xa1, 0x5d, 0xed, 0xb0, 0x09, 0x05, 0x6d,
- 0xdb, 0x28, 0x2e, 0xce, 0x62, 0xa2, 0x62, 0xfe, 0xb4, 0x88, 0xda, 0x12,
- 0xeb, 0x38, 0xeb, 0x21, 0x9d, 0xc0, 0x41, 0x2b, 0x01, 0x52, 0x7b, 0x88,
- 0x77, 0xd3, 0x1c, 0x8f, 0xc7, 0xba, 0xb9, 0x88, 0xb5, 0x6a, 0x09, 0xe7,
- 0x73, 0xe8, 0x11, 0x40, 0xa7, 0xd1, 0xcc, 0xca, 0x62, 0x8d, 0x2d, 0xe5,
- 0x8f, 0x0b, 0xa6, 0x50, 0xd2, 0xa8, 0x50, 0xc3, 0x28, 0xea, 0xf5, 0xab,
- 0x25, 0x87, 0x8a, 0x9a, 0x96, 0x1c, 0xa9, 0x67, 0xb8, 0x3f, 0x0c, 0xd5,
- 0xf7, 0xf9, 0x52, 0x13, 0x2f, 0xc2, 0x1b, 0xd5, 0x70, 0x70, 0xf0, 0x8f,
- 0xc0, 0x12, 0xca, 0x06, 0xcb, 0x9a, 0xe1, 0xd9, 0xca, 0x33, 0x7a, 0x77,
- 0xd6, 0xf8, 0xec, 0xb9, 0xf1, 0x68, 0x44, 0x42, 0x48, 0x13, 0xd2, 0xc0,
- 0xc2, 0xa4, 0xae, 0x5e, 0x60, 0xfe, 0xb6, 0xa6, 0x05, 0xfc, 0xb4, 0xdd,
- 0x07, 0x59, 0x02, 0xd4, 0x59, 0x18, 0x98, 0x63, 0xf5, 0xa5, 0x63, 0xe0,
- 0x90, 0x0c, 0x7d, 0x5d, 0xb2, 0x06, 0x7a, 0xf3, 0x85, 0xea, 0xeb, 0xd4,
- 0x03, 0xae, 0x5e, 0x84, 0x3e, 0x5f, 0xff, 0x15, 0xed, 0x69, 0xbc, 0xf9,
- 0x39, 0x36, 0x72, 0x75, 0xcf, 0x77, 0x52, 0x4d, 0xf3, 0xc9, 0x90, 0x2c,
- 0xb9, 0x3d, 0xe5, 0xc9, 0x23, 0x53, 0x3f, 0x1f, 0x24, 0x98, 0x21, 0x5c,
- 0x07, 0x99, 0x29, 0xbd, 0xc6, 0x3a, 0xec, 0xe7, 0x6e, 0x86, 0x3a, 0x6b,
- 0x97, 0x74, 0x63, 0x33, 0xbd, 0x68, 0x18, 0x31, 0xf0, 0x78, 0x8d, 0x76,
- 0xbf, 0xfc, 0x9e, 0x8e, 0x5d, 0x2a, 0x86, 0xa7, 0x4d, 0x90, 0xdc, 0x27,
- 0x1a, 0x39, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x6a, 0x30,
- 0x82, 0x01, 0x66, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01,
- 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x03, 0x30,
- 0x4e, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x47, 0x30, 0x45, 0x30, 0x43,
- 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x3b, 0x30, 0x39, 0x06, 0x08,
- 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x2d, 0x68, 0x74,
- 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x79, 0x62, 0x65, 0x72, 0x74, 0x72,
- 0x75, 0x73, 0x74, 0x2e, 0x6f, 0x6d, 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74,
- 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74,
- 0x6f, 0x72, 0x79, 0x2e, 0x63, 0x66, 0x6d, 0x30, 0x0e, 0x06, 0x03, 0x55,
- 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30,
- 0x81, 0x89, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x81, 0x81, 0x30, 0x7f,
- 0xa1, 0x79, 0xa4, 0x77, 0x30, 0x75, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03,
- 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x18, 0x30, 0x16, 0x06,
- 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0f, 0x47, 0x54, 0x45, 0x20, 0x43, 0x6f,
- 0x72, 0x70, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x27, 0x30,
- 0x25, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1e, 0x47, 0x54, 0x45, 0x20,
- 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x53,
- 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2c, 0x20, 0x49, 0x6e,
- 0x63, 0x2e, 0x31, 0x23, 0x30, 0x21, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13,
- 0x1a, 0x47, 0x54, 0x45, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72,
- 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x52,
- 0x6f, 0x6f, 0x74, 0x82, 0x02, 0x01, 0xa5, 0x30, 0x45, 0x06, 0x03, 0x55,
- 0x1d, 0x1f, 0x04, 0x3e, 0x30, 0x3c, 0x30, 0x3a, 0xa0, 0x38, 0xa0, 0x36,
- 0x86, 0x34, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77,
- 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2d, 0x74, 0x72, 0x75, 0x73,
- 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x67, 0x69, 0x2d, 0x62, 0x69,
- 0x6e, 0x2f, 0x43, 0x52, 0x4c, 0x2f, 0x32, 0x30, 0x31, 0x38, 0x2f, 0x63,
- 0x64, 0x70, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d,
- 0x0e, 0x04, 0x16, 0x04, 0x14, 0xe5, 0x9d, 0x59, 0x30, 0x82, 0x47, 0x58,
- 0xcc, 0xac, 0xfa, 0x08, 0x54, 0x36, 0x86, 0x7b, 0x3a, 0xb5, 0x04, 0x4d,
- 0xf0, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01,
- 0x01, 0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x16, 0xb4, 0x2c, 0xc9,
- 0xf1, 0x5e, 0xe1, 0xa2, 0x7b, 0x9b, 0x78, 0x20, 0x7a, 0x4a, 0x70, 0x70,
- 0x86, 0x19, 0x00, 0xb7, 0x05, 0x2a, 0xe8, 0xc9, 0x25, 0x39, 0x0f, 0xc3,
- 0x64, 0x3c, 0x75, 0x09, 0xd9, 0x89, 0x15, 0x80, 0x07, 0xc2, 0x8d, 0xbc,
- 0x29, 0xa5, 0x64, 0x50, 0xcf, 0x71, 0x75, 0x47, 0x23, 0xbd, 0x4d, 0xd8,
- 0x7f, 0x77, 0x9a, 0x51, 0x10, 0x6e, 0x4e, 0x1f, 0x20, 0x3c, 0x47, 0x9c,
- 0x43, 0x74, 0x7f, 0x96, 0x84, 0x10, 0x4c, 0x13, 0x43, 0xbe, 0xf8, 0xe0,
- 0x72, 0x2e, 0xff, 0xbf, 0xae, 0x3c, 0x0a, 0x03, 0x60, 0x82, 0x4b, 0x6f,
- 0xf9, 0x9a, 0xc5, 0x1e, 0xf6, 0xaf, 0x90, 0x3b, 0x9f, 0x61, 0x3b, 0x3e,
- 0xde, 0x9b, 0x05, 0x1a, 0xc6, 0x2c, 0x3c, 0x57, 0x21, 0x08, 0x0f, 0x54,
- 0xfa, 0x28, 0x63, 0x6c, 0xe8, 0x1b, 0x9c, 0x0f, 0xcf, 0xdd, 0x30, 0x44,
- 0x13, 0xb9, 0x57, 0xfe,
-}
-
-var certSet2Cert9 = []byte{
- 0x30, 0x82, 0x04, 0x44, 0x30, 0x82, 0x03, 0x2c, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x03, 0x02, 0x3a, 0x78, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
- 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x42, 0x31,
- 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53,
- 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47,
- 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e,
- 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x47,
- 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62,
- 0x61, 0x6c, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34, 0x30,
- 0x38, 0x32, 0x39, 0x32, 0x32, 0x32, 0x34, 0x35, 0x38, 0x5a, 0x17, 0x0d,
- 0x32, 0x32, 0x30, 0x35, 0x32, 0x30, 0x32, 0x32, 0x32, 0x34, 0x35, 0x38,
- 0x5a, 0x30, 0x66, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,
- 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04,
- 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20,
- 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x1d, 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04,
- 0x0b, 0x13, 0x14, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x56, 0x61,
- 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x20, 0x53, 0x53, 0x4c, 0x31,
- 0x20, 0x30, 0x1e, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x17, 0x47, 0x65,
- 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x44, 0x56, 0x20, 0x53, 0x53,
- 0x4c, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x34, 0x30, 0x82, 0x01,
- 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01,
- 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01,
- 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xdf, 0x41, 0x94, 0x7a, 0xda, 0xf7,
- 0xe4, 0x31, 0x43, 0xb6, 0xea, 0x01, 0x1b, 0x5c, 0xce, 0x63, 0xea, 0xfa,
- 0x6d, 0xa3, 0xd9, 0x6a, 0xee, 0x2d, 0x9a, 0x75, 0xf9, 0xd5, 0x9c, 0x5b,
- 0xbd, 0x34, 0xdf, 0xd8, 0x1c, 0xc9, 0x6d, 0xd8, 0x04, 0x88, 0xda, 0x6e,
- 0xb5, 0xb7, 0xb5, 0xf0, 0x30, 0xae, 0x40, 0xd6, 0x5d, 0xfa, 0xc4, 0x53,
- 0xc1, 0xd4, 0x22, 0x9d, 0x04, 0x4e, 0x11, 0xa6, 0x95, 0xd5, 0x45, 0x7c,
- 0x41, 0x05, 0x58, 0xe0, 0x4c, 0xdd, 0xf9, 0xee, 0x55, 0xbd, 0x5f, 0x46,
- 0xdc, 0xad, 0x13, 0x08, 0x9d, 0x2c, 0xe4, 0xf7, 0x82, 0xe6, 0x07, 0x2b,
- 0x9e, 0x0e, 0x8c, 0x34, 0xa1, 0xce, 0xc4, 0xa1, 0xe0, 0x81, 0x70, 0x86,
- 0x00, 0x06, 0x3f, 0x2d, 0xea, 0x7c, 0x9b, 0x28, 0xae, 0x1b, 0x28, 0x8b,
- 0x39, 0x09, 0xd3, 0xe7, 0xf0, 0x45, 0xa4, 0xb1, 0xba, 0x11, 0x67, 0x90,
- 0x55, 0x7b, 0x8f, 0xde, 0xed, 0x38, 0x5c, 0xa1, 0xe1, 0xe3, 0x83, 0xc4,
- 0xc3, 0x72, 0x91, 0x4f, 0x98, 0xee, 0x1c, 0xc2, 0x80, 0xaa, 0x64, 0xa5,
- 0x3e, 0x83, 0x62, 0x1c, 0xcc, 0xe0, 0x9e, 0xf8, 0x5a, 0xc0, 0x13, 0x12,
- 0x7d, 0xa2, 0xa7, 0x8b, 0xa3, 0xe7, 0x9f, 0x2a, 0xd7, 0x9b, 0xca, 0xcb,
- 0xed, 0x97, 0x01, 0x9c, 0x28, 0x84, 0x51, 0x04, 0x50, 0x41, 0xbc, 0xb4,
- 0xfc, 0x78, 0xe9, 0x1b, 0xcf, 0x14, 0xea, 0x1f, 0x0f, 0xfc, 0x2e, 0x01,
- 0x32, 0x8d, 0xb6, 0x35, 0xcb, 0x0a, 0x18, 0x3b, 0xec, 0x5a, 0x3e, 0x3c,
- 0x1b, 0xd3, 0x99, 0x43, 0x1e, 0x2f, 0xf7, 0xbd, 0xf3, 0x5b, 0x12, 0xb9,
- 0x07, 0x5e, 0xed, 0x3e, 0xd1, 0xa9, 0x87, 0xcc, 0x77, 0x72, 0x27, 0xd4,
- 0xd9, 0x75, 0xa2, 0x63, 0x4b, 0x93, 0x36, 0xbd, 0xe5, 0x5c, 0xd7, 0xbf,
- 0x5f, 0x79, 0x0d, 0xb3, 0x32, 0xa7, 0x0b, 0xb2, 0x63, 0x23, 0x02, 0x03,
- 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x1d, 0x30, 0x82, 0x01, 0x19, 0x30,
- 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14,
- 0xc0, 0x7a, 0x98, 0x68, 0x8d, 0x89, 0xfb, 0xab, 0x05, 0x64, 0x0c, 0x11,
- 0x7d, 0xaa, 0x7d, 0x65, 0xb8, 0xca, 0xcc, 0x4e, 0x30, 0x1d, 0x06, 0x03,
- 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x0b, 0x50, 0xec, 0x77, 0xef,
- 0x2a, 0x9b, 0xff, 0xec, 0x03, 0xa1, 0x0a, 0xff, 0xad, 0xc6, 0xe4, 0x2a,
- 0x18, 0xc7, 0x3e, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01,
- 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30,
- 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03,
- 0x02, 0x01, 0x06, 0x30, 0x35, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2e,
- 0x30, 0x2c, 0x30, 0x2a, 0xa0, 0x28, 0xa0, 0x26, 0x86, 0x24, 0x68, 0x74,
- 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62,
- 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x72, 0x6c, 0x73, 0x2f, 0x67, 0x74,
- 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x2e,
- 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x22,
- 0x30, 0x20, 0x30, 0x1e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07,
- 0x30, 0x01, 0x86, 0x12, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67,
- 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x64, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x4c,
- 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x45, 0x30, 0x43, 0x30, 0x41, 0x06,
- 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, 0x07, 0x36, 0x30,
- 0x33, 0x30, 0x31, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02,
- 0x01, 0x16, 0x25, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77,
- 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63,
- 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73,
- 0x2f, 0x63, 0x70, 0x73, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
- 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00,
- 0x33, 0x24, 0xd5, 0x90, 0xaa, 0x29, 0x0c, 0x35, 0xb9, 0x2f, 0xc3, 0xc7,
- 0x42, 0x93, 0xc0, 0xc6, 0x10, 0x4b, 0x03, 0x08, 0x76, 0x84, 0x10, 0xa2,
- 0xe0, 0xe7, 0x53, 0x12, 0x27, 0xf2, 0x0a, 0xda, 0x7f, 0x3a, 0xdc, 0xfd,
- 0x5c, 0x79, 0x5a, 0x8f, 0x17, 0x74, 0x43, 0x53, 0xb1, 0xd5, 0xd1, 0x5d,
- 0x59, 0xb9, 0xa6, 0x84, 0x64, 0xca, 0xf1, 0x3a, 0x0a, 0x59, 0x96, 0x10,
- 0xbf, 0xa9, 0x81, 0x57, 0x8b, 0x5c, 0x87, 0xdc, 0x7f, 0xe3, 0xe4, 0xbb,
- 0x05, 0x7a, 0xa0, 0x32, 0x09, 0x13, 0x4e, 0x10, 0x81, 0x28, 0x1f, 0x9c,
- 0x03, 0x62, 0xbc, 0xf4, 0x01, 0xb5, 0x29, 0x83, 0x46, 0x07, 0xb9, 0xe7,
- 0xb8, 0x5d, 0xc8, 0xe9, 0xd1, 0xdd, 0xad, 0x3b, 0xf8, 0x34, 0xdb, 0xc1,
- 0xd1, 0x95, 0xa9, 0x91, 0x18, 0xed, 0x3c, 0x2c, 0x37, 0x11, 0x4d, 0xcc,
- 0xfe, 0x53, 0x3e, 0x50, 0x43, 0xf9, 0xc3, 0x56, 0x41, 0xac, 0x53, 0x9b,
- 0x6c, 0x05, 0xb2, 0x9a, 0xe2, 0xe0, 0x59, 0x57, 0x30, 0x32, 0xb6, 0x26,
- 0x4e, 0x13, 0x25, 0xcd, 0xfa, 0x48, 0x70, 0x0f, 0x75, 0x55, 0x60, 0x11,
- 0xf5, 0x3b, 0xd5, 0x5e, 0x5a, 0x3c, 0x8b, 0x5b, 0x0f, 0x0f, 0x62, 0x42,
- 0x48, 0x61, 0x85, 0x8b, 0x10, 0xf4, 0xc1, 0x88, 0xbf, 0x7f, 0x5f, 0x8a,
- 0xc2, 0xd7, 0xcd, 0x2b, 0x94, 0x5c, 0x1f, 0x34, 0x4a, 0x08, 0xaf, 0xeb,
- 0xae, 0x89, 0xa8, 0x48, 0x75, 0x55, 0x95, 0x1d, 0xbb, 0xc0, 0x9a, 0x01,
- 0xb9, 0xf4, 0x03, 0x22, 0x3e, 0xd4, 0xe6, 0x52, 0x30, 0x0d, 0x67, 0xb9,
- 0xc0, 0x91, 0xfd, 0x2d, 0x4c, 0x30, 0x8e, 0xbd, 0x8c, 0xa5, 0x04, 0x91,
- 0xbb, 0xa4, 0xab, 0x7f, 0x0f, 0xd8, 0x6f, 0xf0, 0x66, 0x00, 0xc9, 0xa3,
- 0x5c, 0xf5, 0xb0, 0x8f, 0x83, 0xe6, 0x9c, 0x5a, 0xe6, 0xb6, 0xb9, 0xc5,
- 0xbc, 0xbe, 0xe4, 0x02,
-}
-
-var certSet2Cert10 = []byte{
- 0x30, 0x82, 0x04, 0x45, 0x30, 0x82, 0x03, 0xae, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x33, 0x65, 0x50, 0x08, 0x79, 0xad, 0x73, 0xe2, 0x30,
- 0xb9, 0xe0, 0x1d, 0x0d, 0x7f, 0xac, 0x91, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x81,
- 0xce, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
- 0x5a, 0x41, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13,
- 0x0c, 0x57, 0x65, 0x73, 0x74, 0x65, 0x72, 0x6e, 0x20, 0x43, 0x61, 0x70,
- 0x65, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x09,
- 0x43, 0x61, 0x70, 0x65, 0x20, 0x54, 0x6f, 0x77, 0x6e, 0x31, 0x1d, 0x30,
- 0x1b, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x14, 0x54, 0x68, 0x61, 0x77,
- 0x74, 0x65, 0x20, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x74, 0x69, 0x6e,
- 0x67, 0x20, 0x63, 0x63, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04,
- 0x0b, 0x13, 0x1f, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
- 0x73, 0x20, 0x44, 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x21,
- 0x30, 0x1f, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x18, 0x54, 0x68, 0x61,
- 0x77, 0x74, 0x65, 0x20, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x75, 0x6d, 0x20,
- 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x31, 0x28, 0x30,
- 0x26, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x01,
- 0x16, 0x19, 0x70, 0x72, 0x65, 0x6d, 0x69, 0x75, 0x6d, 0x2d, 0x73, 0x65,
- 0x72, 0x76, 0x65, 0x72, 0x40, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2e,
- 0x63, 0x6f, 0x6d, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x36, 0x31, 0x31, 0x31,
- 0x37, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x30,
- 0x31, 0x32, 0x33, 0x30, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30,
- 0x81, 0xa9, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13,
- 0x02, 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a,
- 0x13, 0x0c, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e,
- 0x63, 0x2e, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13,
- 0x1f, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20,
- 0x44, 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x38, 0x30, 0x36,
- 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x2f, 0x28, 0x63, 0x29, 0x20, 0x32,
- 0x30, 0x30, 0x36, 0x20, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20,
- 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61,
- 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73,
- 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03,
- 0x55, 0x04, 0x03, 0x13, 0x16, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20,
- 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74,
- 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82,
- 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00,
- 0xac, 0xa0, 0xf0, 0xfb, 0x80, 0x59, 0xd4, 0x9c, 0xc7, 0xa4, 0xcf, 0x9d,
- 0xa1, 0x59, 0x73, 0x09, 0x10, 0x45, 0x0c, 0x0d, 0x2c, 0x6e, 0x68, 0xf1,
- 0x6c, 0x5b, 0x48, 0x68, 0x49, 0x59, 0x37, 0xfc, 0x0b, 0x33, 0x19, 0xc2,
- 0x77, 0x7f, 0xcc, 0x10, 0x2d, 0x95, 0x34, 0x1c, 0xe6, 0xeb, 0x4d, 0x09,
- 0xa7, 0x1c, 0xd2, 0xb8, 0xc9, 0x97, 0x36, 0x02, 0xb7, 0x89, 0xd4, 0x24,
- 0x5f, 0x06, 0xc0, 0xcc, 0x44, 0x94, 0x94, 0x8d, 0x02, 0x62, 0x6f, 0xeb,
- 0x5a, 0xdd, 0x11, 0x8d, 0x28, 0x9a, 0x5c, 0x84, 0x90, 0x10, 0x7a, 0x0d,
- 0xbd, 0x74, 0x66, 0x2f, 0x6a, 0x38, 0xa0, 0xe2, 0xd5, 0x54, 0x44, 0xeb,
- 0x1d, 0x07, 0x9f, 0x07, 0xba, 0x6f, 0xee, 0xe9, 0xfd, 0x4e, 0x0b, 0x29,
- 0xf5, 0x3e, 0x84, 0xa0, 0x01, 0xf1, 0x9c, 0xab, 0xf8, 0x1c, 0x7e, 0x89,
- 0xa4, 0xe8, 0xa1, 0xd8, 0x71, 0x65, 0x0d, 0xa3, 0x51, 0x7b, 0xee, 0xbc,
- 0xd2, 0x22, 0x60, 0x0d, 0xb9, 0x5b, 0x9d, 0xdf, 0xba, 0xfc, 0x51, 0x5b,
- 0x0b, 0xaf, 0x98, 0xb2, 0xe9, 0x2e, 0xe9, 0x04, 0xe8, 0x62, 0x87, 0xde,
- 0x2b, 0xc8, 0xd7, 0x4e, 0xc1, 0x4c, 0x64, 0x1e, 0xdd, 0xcf, 0x87, 0x58,
- 0xba, 0x4a, 0x4f, 0xca, 0x68, 0x07, 0x1d, 0x1c, 0x9d, 0x4a, 0xc6, 0xd5,
- 0x2f, 0x91, 0xcc, 0x7c, 0x71, 0x72, 0x1c, 0xc5, 0xc0, 0x67, 0xeb, 0x32,
- 0xfd, 0xc9, 0x92, 0x5c, 0x94, 0xda, 0x85, 0xc0, 0x9b, 0xbf, 0x53, 0x7d,
- 0x2b, 0x09, 0xf4, 0x8c, 0x9d, 0x91, 0x1f, 0x97, 0x6a, 0x52, 0xcb, 0xde,
- 0x09, 0x36, 0xa4, 0x77, 0xd8, 0x7b, 0x87, 0x50, 0x44, 0xd5, 0x3e, 0x6e,
- 0x29, 0x69, 0xfb, 0x39, 0x49, 0x26, 0x1e, 0x09, 0xa5, 0x80, 0x7b, 0x40,
- 0x2d, 0xeb, 0xe8, 0x27, 0x85, 0xc9, 0xfe, 0x61, 0xfd, 0x7e, 0xe6, 0x7c,
- 0x97, 0x1d, 0xd5, 0x9d, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x81, 0xc2,
- 0x30, 0x81, 0xbf, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01,
- 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x3b, 0x06, 0x03,
- 0x55, 0x1d, 0x20, 0x04, 0x34, 0x30, 0x32, 0x30, 0x30, 0x06, 0x04, 0x55,
- 0x1d, 0x20, 0x00, 0x30, 0x28, 0x30, 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01,
- 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x73,
- 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74,
- 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x0e, 0x06,
- 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01,
- 0x06, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14,
- 0x7b, 0x5b, 0x45, 0xcf, 0xaf, 0xce, 0xcb, 0x7a, 0xfd, 0x31, 0x92, 0x1a,
- 0x6a, 0xb6, 0xf3, 0x46, 0xeb, 0x57, 0x48, 0x50, 0x30, 0x40, 0x06, 0x03,
- 0x55, 0x1d, 0x1f, 0x04, 0x39, 0x30, 0x37, 0x30, 0x35, 0xa0, 0x33, 0xa0,
- 0x31, 0x86, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72,
- 0x6c, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6d,
- 0x2f, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x50, 0x72, 0x65, 0x6d, 0x69,
- 0x75, 0x6d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x41, 0x2e, 0x63,
- 0x72, 0x6c, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
- 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x84, 0xa8, 0x4c,
- 0xc9, 0x3e, 0x2a, 0xbc, 0x9a, 0xe2, 0xcc, 0x8f, 0x0b, 0xb2, 0x25, 0x77,
- 0xc4, 0x61, 0x89, 0x89, 0x63, 0x5a, 0xd4, 0xa3, 0x15, 0x40, 0xd4, 0xfb,
- 0x5e, 0x3f, 0xb4, 0x43, 0xea, 0x63, 0x17, 0x2b, 0x6b, 0x99, 0x74, 0x9e,
- 0x09, 0xa8, 0xdd, 0xd4, 0x56, 0x15, 0x2e, 0x7a, 0x79, 0x31, 0x5f, 0x63,
- 0x96, 0x53, 0x1b, 0x34, 0xd9, 0x15, 0xea, 0x4f, 0x6d, 0x70, 0xca, 0xbe,
- 0xf6, 0x82, 0xa9, 0xed, 0xda, 0x85, 0x77, 0xcc, 0x76, 0x1c, 0x6a, 0x81,
- 0x0a, 0x21, 0xd8, 0x41, 0x99, 0x7f, 0x5e, 0x2e, 0x82, 0xc1, 0xe8, 0xaa,
- 0xf7, 0x93, 0x81, 0x05, 0xaa, 0x92, 0xb4, 0x1f, 0xb7, 0x9a, 0xc0, 0x07,
- 0x17, 0xf5, 0xcb, 0xc6, 0xb4, 0x4c, 0x0e, 0xd7, 0x56, 0xdc, 0x71, 0x20,
- 0x74, 0x38, 0xd6, 0x74, 0xc6, 0xd6, 0x8f, 0x6b, 0xaf, 0x8b, 0x8d, 0xa0,
- 0x6c, 0x29, 0x0b, 0x61, 0xe0,
-}
-
-var certSet2Cert11 = []byte{
- 0x30, 0x82, 0x04, 0x4d, 0x30, 0x82, 0x03, 0x35, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x0b, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x44, 0x4e, 0xf0,
- 0x36, 0x31, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
- 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x57, 0x31, 0x0b, 0x30, 0x09, 0x06,
- 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x42, 0x45, 0x31, 0x19, 0x30, 0x17,
- 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x10, 0x47, 0x6c, 0x6f, 0x62, 0x61,
- 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x6e, 0x76, 0x2d, 0x73, 0x61, 0x31,
- 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x07, 0x52, 0x6f,
- 0x6f, 0x74, 0x20, 0x43, 0x41, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55,
- 0x04, 0x03, 0x13, 0x12, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69,
- 0x67, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x30, 0x1e,
- 0x17, 0x0d, 0x31, 0x34, 0x30, 0x32, 0x32, 0x30, 0x31, 0x30, 0x30, 0x30,
- 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x34, 0x30, 0x32, 0x32, 0x30, 0x31,
- 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x4c, 0x31, 0x0b, 0x30, 0x09,
- 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x42, 0x45, 0x31, 0x19, 0x30,
- 0x17, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x10, 0x47, 0x6c, 0x6f, 0x62,
- 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x6e, 0x76, 0x2d, 0x73, 0x61,
- 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x19, 0x41,
- 0x6c, 0x70, 0x68, 0x61, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, 0x20, 0x2d,
- 0x20, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x20, 0x2d, 0x20, 0x47, 0x32,
- 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
- 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00,
- 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xda, 0x01, 0xec,
- 0xe4, 0xec, 0x73, 0x60, 0xfb, 0x7e, 0x8f, 0x6a, 0xb7, 0xc6, 0x17, 0xe3,
- 0x92, 0x64, 0x32, 0xd4, 0xac, 0x00, 0xd9, 0xa2, 0x0f, 0xb9, 0xed, 0xee,
- 0x6b, 0x8a, 0x86, 0xca, 0x92, 0x67, 0xd9, 0x74, 0xd7, 0x5d, 0x47, 0x02,
- 0x3c, 0x8f, 0x40, 0xd6, 0x9e, 0x6d, 0x14, 0xcd, 0xc3, 0xda, 0x29, 0x39,
- 0xa7, 0x0f, 0x05, 0x0a, 0x68, 0xa2, 0x66, 0x1a, 0x1e, 0xc4, 0xb2, 0x8b,
- 0x76, 0x58, 0xe5, 0xab, 0x5d, 0x1d, 0x8f, 0x40, 0xb3, 0x39, 0x8b, 0xef,
- 0x1e, 0x83, 0x7d, 0x22, 0xd0, 0xe3, 0xa9, 0x00, 0x2e, 0xec, 0x53, 0xcf,
- 0x62, 0x19, 0x85, 0x44, 0x28, 0x4c, 0xc0, 0x27, 0xcb, 0x7b, 0x0e, 0xec,
- 0x10, 0x64, 0x00, 0x10, 0xa4, 0x05, 0xcc, 0xa0, 0x72, 0xbe, 0x41, 0x6c,
- 0x31, 0x5b, 0x48, 0xe4, 0xb1, 0xec, 0xb9, 0x23, 0xeb, 0x55, 0x4d, 0xd0,
- 0x7d, 0x62, 0x4a, 0xa5, 0xb4, 0xa5, 0xa4, 0x59, 0x85, 0xc5, 0x25, 0x91,
- 0xa6, 0xfe, 0xa6, 0x09, 0x9f, 0x06, 0x10, 0x6d, 0x8f, 0x81, 0x0c, 0x64,
- 0x40, 0x5e, 0x73, 0x00, 0x9a, 0xe0, 0x2e, 0x65, 0x98, 0x54, 0x10, 0x00,
- 0x70, 0x98, 0xc8, 0xe1, 0xed, 0x34, 0x5f, 0xd8, 0x9c, 0xc7, 0x0d, 0xc0,
- 0xd6, 0x23, 0x59, 0x45, 0xfc, 0xfe, 0x55, 0x7a, 0x86, 0xee, 0x94, 0x60,
- 0x22, 0xf1, 0xae, 0xd1, 0xe6, 0x55, 0x46, 0xf6, 0x99, 0xc5, 0x1b, 0x08,
- 0x74, 0x5f, 0xac, 0xb0, 0x64, 0x84, 0x8f, 0x89, 0x38, 0x1c, 0xa1, 0xa7,
- 0x90, 0x21, 0x4f, 0x02, 0x6e, 0xbd, 0xe0, 0x61, 0x67, 0xd4, 0xf8, 0x42,
- 0x87, 0x0f, 0x0a, 0xf7, 0xc9, 0x04, 0x6d, 0x2a, 0xa9, 0x2f, 0xef, 0x42,
- 0xa5, 0xdf, 0xdd, 0xa3, 0x53, 0xdb, 0x98, 0x1e, 0x81, 0xf9, 0x9a, 0x72,
- 0x7b, 0x5a, 0xde, 0x4f, 0x3e, 0x7f, 0xa2, 0x58, 0xa0, 0xe2, 0x17, 0xad,
- 0x67, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x23, 0x30, 0x82,
- 0x01, 0x1f, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff,
- 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d,
- 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02,
- 0x01, 0x00, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04,
- 0x14, 0xf5, 0xcd, 0xd5, 0x3c, 0x08, 0x50, 0xf9, 0x6a, 0x4f, 0x3a, 0xb7,
- 0x97, 0xda, 0x56, 0x83, 0xe6, 0x69, 0xd2, 0x68, 0xf7, 0x30, 0x45, 0x06,
- 0x03, 0x55, 0x1d, 0x20, 0x04, 0x3e, 0x30, 0x3c, 0x30, 0x3a, 0x06, 0x04,
- 0x55, 0x1d, 0x20, 0x00, 0x30, 0x32, 0x30, 0x30, 0x06, 0x08, 0x2b, 0x06,
- 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x24, 0x68, 0x74, 0x74, 0x70,
- 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x61, 0x6c, 0x70, 0x68,
- 0x61, 0x73, 0x73, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70,
- 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x30, 0x33, 0x06, 0x03,
- 0x55, 0x1d, 0x1f, 0x04, 0x2c, 0x30, 0x2a, 0x30, 0x28, 0xa0, 0x26, 0xa0,
- 0x24, 0x86, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72,
- 0x6c, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x73, 0x69, 0x67, 0x6e,
- 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x72,
- 0x6c, 0x30, 0x3d, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01,
- 0x01, 0x04, 0x31, 0x30, 0x2f, 0x30, 0x2d, 0x06, 0x08, 0x2b, 0x06, 0x01,
- 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x21, 0x68, 0x74, 0x74, 0x70, 0x3a,
- 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61,
- 0x6c, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x6f,
- 0x6f, 0x74, 0x72, 0x31, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04,
- 0x18, 0x30, 0x16, 0x80, 0x14, 0x60, 0x7b, 0x66, 0x1a, 0x45, 0x0d, 0x97,
- 0xca, 0x89, 0x50, 0x2f, 0x7d, 0x04, 0xcd, 0x34, 0xa8, 0xff, 0xfc, 0xfd,
- 0x4b, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01,
- 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x60, 0x40, 0x68,
- 0x16, 0x47, 0xe7, 0x16, 0x8d, 0xdb, 0x5c, 0xa1, 0x56, 0x2a, 0xcb, 0xf4,
- 0x5c, 0x9b, 0xb0, 0x1e, 0xa2, 0x4b, 0xf5, 0xcb, 0x02, 0x3f, 0xf8, 0x0b,
- 0xa1, 0xf2, 0xa7, 0x42, 0xd4, 0xb7, 0x4c, 0xeb, 0xe3, 0x66, 0x80, 0xf3,
- 0x25, 0x43, 0x78, 0x2e, 0x1b, 0x17, 0x56, 0x07, 0x52, 0x18, 0xcb, 0xd1,
- 0xa8, 0xec, 0xe6, 0xfb, 0x73, 0x3e, 0xa4, 0x62, 0x8c, 0x80, 0xb4, 0xd2,
- 0xc5, 0x12, 0x73, 0xa3, 0xd3, 0xfa, 0x02, 0x38, 0xbe, 0x63, 0x3d, 0x84,
- 0xb8, 0x99, 0xc1, 0xf1, 0xba, 0xf7, 0x9f, 0xc3, 0x40, 0xd1, 0x58, 0x18,
- 0x53, 0xc1, 0x62, 0xdd, 0xaf, 0x18, 0x42, 0x7f, 0x34, 0x4e, 0xc5, 0x43,
- 0xd5, 0x71, 0xb0, 0x30, 0x00, 0xc7, 0xe3, 0x90, 0xae, 0x3f, 0x57, 0x86,
- 0x97, 0xce, 0xea, 0x0c, 0x12, 0x8e, 0x22, 0x70, 0xe3, 0x66, 0xa7, 0x54,
- 0x7f, 0x2e, 0x28, 0xcb, 0xd4, 0x54, 0xd0, 0xb3, 0x1e, 0x62, 0x67, 0x08,
- 0xf9, 0x27, 0xe1, 0xcb, 0xe3, 0x66, 0xb8, 0x24, 0x1b, 0x89, 0x6a, 0x89,
- 0x44, 0x65, 0xf2, 0xd9, 0x4c, 0xd2, 0x58, 0x1c, 0x8c, 0x4e, 0xc0, 0x95,
- 0xa1, 0xd4, 0xef, 0x67, 0x2f, 0x38, 0x20, 0xe8, 0x2e, 0xff, 0x96, 0x51,
- 0xf0, 0xba, 0xd8, 0x3d, 0x92, 0x70, 0x47, 0x65, 0x1c, 0x9e, 0x73, 0x72,
- 0xb4, 0x60, 0x0c, 0x5c, 0xe2, 0xd1, 0x73, 0x76, 0xe0, 0xaf, 0x4e, 0xe2,
- 0xe5, 0x37, 0xa5, 0x45, 0x2f, 0x8a, 0x23, 0x3e, 0x87, 0xc7, 0x30, 0xe6,
- 0x31, 0x38, 0x7c, 0xf4, 0xdd, 0x52, 0xca, 0xf3, 0x53, 0x04, 0x25, 0x57,
- 0x56, 0x66, 0x94, 0xe8, 0x0b, 0xee, 0xe6, 0x03, 0x14, 0x4e, 0xee, 0xfd,
- 0x6d, 0x94, 0x64, 0x9e, 0x5e, 0xce, 0x79, 0xd4, 0xb2, 0xa6, 0xcf, 0x40,
- 0xb1, 0x44, 0xa8, 0x3e, 0x87, 0x19, 0x5e, 0xe9, 0xf8, 0x21, 0x16, 0x59,
- 0x53,
-}
-
-var certSet2Cert12 = []byte{
- 0x30, 0x82, 0x04, 0x4f, 0x30, 0x82, 0x03, 0x37, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x03, 0x02, 0x3a, 0x6f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
- 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x42, 0x31,
- 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53,
- 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47,
- 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e,
- 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x47,
- 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62,
- 0x61, 0x6c, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31,
- 0x31, 0x30, 0x35, 0x32, 0x31, 0x33, 0x36, 0x35, 0x30, 0x5a, 0x17, 0x0d,
- 0x32, 0x32, 0x30, 0x35, 0x32, 0x30, 0x32, 0x31, 0x33, 0x36, 0x35, 0x30,
- 0x5a, 0x30, 0x44, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,
- 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04,
- 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20,
- 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x1d, 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04,
- 0x03, 0x13, 0x14, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20,
- 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x30,
- 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7,
- 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30,
- 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xe3, 0xbe, 0x7e, 0x0a,
- 0x86, 0xa3, 0xcf, 0x6b, 0x6d, 0x3d, 0x2b, 0xa1, 0x97, 0xad, 0x49, 0x24,
- 0x4d, 0xd7, 0x77, 0xb9, 0x34, 0x79, 0x08, 0xa5, 0x9e, 0xa2, 0x9e, 0xde,
- 0x47, 0x12, 0x92, 0x3d, 0x7e, 0xea, 0x19, 0x86, 0xb1, 0xe8, 0x4f, 0x3d,
- 0x5f, 0xf7, 0xd0, 0xa7, 0x77, 0x9a, 0x5b, 0x1f, 0x0a, 0x03, 0xb5, 0x19,
- 0x53, 0xdb, 0xa5, 0x21, 0x94, 0x69, 0x63, 0x9d, 0x6a, 0x4c, 0x91, 0x0c,
- 0x10, 0x47, 0xbe, 0x11, 0xfa, 0x6c, 0x86, 0x25, 0xb7, 0xab, 0x04, 0x68,
- 0x42, 0x38, 0x09, 0x65, 0xf0, 0x14, 0xda, 0x19, 0x9e, 0xfa, 0x6b, 0x0b,
- 0xab, 0x62, 0xef, 0x8d, 0xa7, 0xef, 0x63, 0x70, 0x23, 0xa8, 0xaf, 0x81,
- 0xf3, 0xd1, 0x6e, 0x88, 0x67, 0x53, 0xec, 0x12, 0xa4, 0x29, 0x75, 0x8a,
- 0xa7, 0xf2, 0x57, 0x3d, 0xa2, 0x83, 0x98, 0x97, 0xf2, 0x0a, 0x7d, 0xd4,
- 0xe7, 0x43, 0x6e, 0x30, 0x78, 0x62, 0x22, 0x59, 0x59, 0xb8, 0x71, 0x27,
- 0x45, 0xaa, 0x0f, 0x66, 0xc6, 0x55, 0x3f, 0xfa, 0x32, 0x17, 0x2b, 0x31,
- 0x8f, 0x46, 0xa0, 0xfa, 0x69, 0x14, 0x7c, 0x9d, 0x9f, 0x5a, 0xe2, 0xeb,
- 0x33, 0x4e, 0x10, 0xa6, 0xb3, 0xed, 0x77, 0x63, 0xd8, 0xc3, 0x9e, 0xf4,
- 0xdd, 0xdf, 0x79, 0x9a, 0x7a, 0xd4, 0xee, 0xde, 0xdd, 0x9a, 0xcc, 0xc3,
- 0xb7, 0xa9, 0x5d, 0xcc, 0x11, 0x3a, 0x07, 0xbb, 0x6f, 0x97, 0xa4, 0x01,
- 0x23, 0x47, 0x95, 0x1f, 0xa3, 0x77, 0xfa, 0x58, 0x92, 0xc6, 0xc7, 0xd0,
- 0xbd, 0xcf, 0x93, 0x18, 0x42, 0xb7, 0x7e, 0xf7, 0x9e, 0x65, 0xea, 0xd5,
- 0x3b, 0xca, 0xed, 0xac, 0xc5, 0x70, 0xa1, 0xfe, 0xd4, 0x10, 0x9a, 0xf0,
- 0x12, 0x04, 0x44, 0xac, 0x1a, 0x5b, 0x78, 0x50, 0x45, 0x57, 0x4c, 0x6f,
- 0xbd, 0x80, 0xcb, 0x81, 0x5c, 0x2d, 0xb3, 0xbc, 0x76, 0xa1, 0x1e, 0x65,
- 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x4a, 0x30, 0x82, 0x01,
- 0x46, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16,
- 0x80, 0x14, 0xc0, 0x7a, 0x98, 0x68, 0x8d, 0x89, 0xfb, 0xab, 0x05, 0x64,
- 0x0c, 0x11, 0x7d, 0xaa, 0x7d, 0x65, 0xb8, 0xca, 0xcc, 0x4e, 0x30, 0x1d,
- 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xd2, 0x6f, 0xf7,
- 0x96, 0xf4, 0x85, 0x3f, 0x72, 0x3c, 0x30, 0x7d, 0x23, 0xda, 0x85, 0x78,
- 0x9b, 0xa3, 0x7c, 0x5a, 0x7c, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13,
- 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01,
- 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04,
- 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x36, 0x06, 0x03, 0x55, 0x1d, 0x1f,
- 0x04, 0x2f, 0x30, 0x2d, 0x30, 0x2b, 0xa0, 0x29, 0xa0, 0x27, 0x86, 0x25,
- 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x31, 0x2e, 0x73, 0x79,
- 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x72, 0x6c, 0x73,
- 0x2f, 0x67, 0x74, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x63, 0x72,
- 0x6c, 0x30, 0x2f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01,
- 0x01, 0x04, 0x23, 0x30, 0x21, 0x30, 0x1f, 0x06, 0x08, 0x2b, 0x06, 0x01,
- 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x13, 0x68, 0x74, 0x74, 0x70, 0x3a,
- 0x2f, 0x2f, 0x67, 0x32, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63,
- 0x6f, 0x6d, 0x30, 0x4c, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x45, 0x30,
- 0x43, 0x30, 0x41, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45,
- 0x01, 0x07, 0x36, 0x30, 0x33, 0x30, 0x31, 0x06, 0x08, 0x2b, 0x06, 0x01,
- 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x25, 0x68, 0x74, 0x74, 0x70, 0x3a,
- 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75,
- 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75,
- 0x72, 0x63, 0x65, 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x29, 0x06, 0x03,
- 0x55, 0x1d, 0x11, 0x04, 0x22, 0x30, 0x20, 0xa4, 0x1e, 0x30, 0x1c, 0x31,
- 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x11, 0x53, 0x79,
- 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x50, 0x4b, 0x49, 0x2d, 0x31, 0x2d,
- 0x35, 0x33, 0x39, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7,
- 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0xa0,
- 0xd4, 0xf7, 0x2c, 0xfb, 0x74, 0x0b, 0x7f, 0x64, 0xf1, 0xcd, 0x43, 0x6a,
- 0x9f, 0x62, 0x53, 0x1c, 0x02, 0x7c, 0x98, 0x90, 0xa2, 0xee, 0x4f, 0x68,
- 0xd4, 0x20, 0x1a, 0x73, 0x12, 0x3e, 0x77, 0xb3, 0x50, 0xeb, 0x72, 0xbc,
- 0xee, 0x88, 0xbe, 0x7f, 0x17, 0xea, 0x77, 0x8f, 0x83, 0x61, 0x95, 0x4f,
- 0x84, 0xa1, 0xcb, 0x32, 0x4f, 0x6c, 0x21, 0xbe, 0xd2, 0x69, 0x96, 0x7d,
- 0x63, 0xbd, 0xdc, 0x2b, 0xa8, 0x1f, 0xd0, 0x13, 0x84, 0x70, 0xfe, 0xf6,
- 0x35, 0x95, 0x89, 0xf9, 0xa6, 0x77, 0xb0, 0x46, 0xc8, 0xbb, 0xb7, 0x13,
- 0xf5, 0xc9, 0x60, 0x69, 0xd6, 0x4c, 0xfe, 0xd2, 0x8e, 0xef, 0xd3, 0x60,
- 0xc1, 0x80, 0x80, 0xe1, 0xe7, 0xfb, 0x8b, 0x6f, 0x21, 0x79, 0x4a, 0xe0,
- 0xdc, 0xa9, 0x1b, 0xc1, 0xb7, 0xfb, 0xc3, 0x49, 0x59, 0x5c, 0xb5, 0x77,
- 0x07, 0x44, 0xd4, 0x97, 0xfc, 0x49, 0x00, 0x89, 0x6f, 0x06, 0x4e, 0x01,
- 0x70, 0x19, 0xac, 0x2f, 0x11, 0xc0, 0xe2, 0xe6, 0x0f, 0x2f, 0x86, 0x4b,
- 0x8d, 0x7b, 0xc3, 0xb9, 0xa7, 0x2e, 0xf4, 0xf1, 0xac, 0x16, 0x3e, 0x39,
- 0x49, 0x51, 0x9e, 0x17, 0x4b, 0x4f, 0x10, 0x3a, 0x5b, 0xa5, 0xa8, 0x92,
- 0x6f, 0xfd, 0xfa, 0xd6, 0x0b, 0x03, 0x4d, 0x47, 0x56, 0x57, 0x19, 0xf3,
- 0xcb, 0x6b, 0xf5, 0xf3, 0xd6, 0xcf, 0xb0, 0xf5, 0xf5, 0xa3, 0x11, 0xd2,
- 0x20, 0x53, 0x13, 0x34, 0x37, 0x05, 0x2c, 0x43, 0x5a, 0x63, 0xdf, 0x8d,
- 0x40, 0xd6, 0x85, 0x1e, 0x51, 0xe9, 0x51, 0x17, 0x1e, 0x03, 0x56, 0xc9,
- 0xf1, 0x30, 0xad, 0xe7, 0x9b, 0x11, 0xa2, 0xb9, 0xd0, 0x31, 0x81, 0x9b,
- 0x68, 0xb1, 0xd9, 0xe8, 0xf3, 0xe6, 0x94, 0x7e, 0xc7, 0xae, 0x13, 0x2f,
- 0x87, 0xed, 0xd0, 0x25, 0xb0, 0x68, 0xf9, 0xde, 0x08, 0x5a, 0xf3, 0x29,
- 0xcc, 0xd4, 0x92,
-}
-
-var certSet2Cert13 = []byte{
- 0x30, 0x82, 0x04, 0x59, 0x30, 0x82, 0x03, 0x41, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x03, 0x02, 0x3a, 0x63, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
- 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x42, 0x31,
- 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53,
- 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47,
- 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e,
- 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x47,
- 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62,
- 0x61, 0x6c, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x32, 0x30,
- 0x38, 0x32, 0x37, 0x32, 0x30, 0x34, 0x30, 0x34, 0x30, 0x5a, 0x17, 0x0d,
- 0x32, 0x32, 0x30, 0x35, 0x32, 0x30, 0x32, 0x30, 0x34, 0x30, 0x34, 0x30,
- 0x5a, 0x30, 0x44, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,
- 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04,
- 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20,
- 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x1d, 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04,
- 0x03, 0x13, 0x14, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20,
- 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30,
- 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7,
- 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30,
- 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xb9, 0x27, 0xf9, 0x4f,
- 0xd8, 0xf6, 0xb7, 0x15, 0x3f, 0x8f, 0xcd, 0xce, 0xd6, 0x8d, 0x1c, 0x6b,
- 0xfd, 0x7f, 0xda, 0x54, 0x21, 0x4e, 0x03, 0xd8, 0xca, 0xd0, 0x72, 0x52,
- 0x15, 0xb8, 0xc9, 0x82, 0x5b, 0x58, 0x79, 0x84, 0xff, 0x24, 0x72, 0x6f,
- 0xf2, 0x69, 0x7f, 0xbc, 0x96, 0xd9, 0x9a, 0x7a, 0xc3, 0x3e, 0xa9, 0xcf,
- 0x50, 0x22, 0x13, 0x0e, 0x86, 0x19, 0xdb, 0xe8, 0x49, 0xef, 0x8b, 0xe6,
- 0xd6, 0x47, 0xf2, 0xfd, 0x73, 0x45, 0x08, 0xae, 0x8f, 0xac, 0x5e, 0xb6,
- 0xf8, 0x9e, 0x7c, 0xf7, 0x10, 0xff, 0x92, 0x43, 0x66, 0xef, 0x1c, 0xd4,
- 0xee, 0xa1, 0x46, 0x88, 0x11, 0x89, 0x49, 0x79, 0x7a, 0x25, 0xce, 0x4b,
- 0x6a, 0xf0, 0xd7, 0x1c, 0x76, 0x1a, 0x29, 0x3c, 0xc9, 0xe4, 0xfd, 0x1e,
- 0x85, 0xdc, 0xe0, 0x31, 0x65, 0x05, 0x47, 0x16, 0xac, 0x0a, 0x07, 0x4b,
- 0x2e, 0x70, 0x5e, 0x6b, 0x06, 0xa7, 0x6b, 0x3a, 0x6c, 0xaf, 0x05, 0x12,
- 0xc4, 0xb2, 0x11, 0x25, 0xd6, 0x3e, 0x97, 0x29, 0xf0, 0x83, 0x6c, 0x57,
- 0x1c, 0xd8, 0xa5, 0xef, 0xcc, 0xec, 0xfd, 0xd6, 0x12, 0xf1, 0x3f, 0xdb,
- 0x40, 0xb4, 0xae, 0x0f, 0x18, 0xd3, 0xc5, 0xaf, 0x40, 0x92, 0x5d, 0x07,
- 0x5e, 0x4e, 0xfe, 0x62, 0x17, 0x37, 0x89, 0xe9, 0x8b, 0x74, 0x26, 0xa2,
- 0xed, 0xb8, 0x0a, 0xe7, 0x6c, 0x15, 0x5b, 0x35, 0x90, 0x72, 0xdd, 0xd8,
- 0x4d, 0x21, 0xd4, 0x40, 0x23, 0x5c, 0x8f, 0xee, 0x80, 0x31, 0x16, 0xab,
- 0x68, 0x55, 0xf4, 0x0e, 0x3b, 0x54, 0xe9, 0x04, 0x4d, 0xf0, 0xcc, 0x4e,
- 0x81, 0x5e, 0xe9, 0x6f, 0x52, 0x69, 0x4e, 0xbe, 0xa6, 0x16, 0x6d, 0x42,
- 0xf5, 0x51, 0xff, 0xe0, 0x0b, 0x56, 0x3c, 0x98, 0x4f, 0x73, 0x8f, 0x0e,
- 0x6f, 0x1a, 0x23, 0xf1, 0xc9, 0xc8, 0xd9, 0xdf, 0xbc, 0xec, 0x52, 0xd7,
- 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x54, 0x30, 0x82, 0x01,
- 0x50, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16,
- 0x80, 0x14, 0xc0, 0x7a, 0x98, 0x68, 0x8d, 0x89, 0xfb, 0xab, 0x05, 0x64,
- 0x0c, 0x11, 0x7d, 0xaa, 0x7d, 0x65, 0xb8, 0xca, 0xcc, 0x4e, 0x30, 0x1d,
- 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x11, 0x4a, 0xd0,
- 0x73, 0x39, 0xd5, 0x5b, 0x69, 0x08, 0x5c, 0xba, 0x3d, 0xbf, 0x64, 0x9a,
- 0xa8, 0x8b, 0x1c, 0x55, 0xbc, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13,
- 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01,
- 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04,
- 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x3a, 0x06, 0x03, 0x55, 0x1d, 0x1f,
- 0x04, 0x33, 0x30, 0x31, 0x30, 0x2f, 0xa0, 0x2d, 0xa0, 0x2b, 0x86, 0x29,
- 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x67,
- 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
- 0x63, 0x72, 0x6c, 0x73, 0x2f, 0x67, 0x74, 0x67, 0x6c, 0x6f, 0x62, 0x61,
- 0x6c, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01,
- 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x28, 0x30, 0x26, 0x30, 0x24, 0x06,
- 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, 0x68,
- 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x67,
- 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x30,
- 0x4c, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x45, 0x30, 0x43, 0x30, 0x41,
- 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, 0x07, 0x36,
- 0x30, 0x33, 0x30, 0x31, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07,
- 0x02, 0x01, 0x16, 0x25, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77,
- 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e,
- 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
- 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x2a, 0x06, 0x03, 0x55, 0x1d, 0x11,
- 0x04, 0x23, 0x30, 0x21, 0xa4, 0x1f, 0x30, 0x1d, 0x31, 0x1b, 0x30, 0x19,
- 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x56, 0x65, 0x72, 0x69, 0x53,
- 0x69, 0x67, 0x6e, 0x4d, 0x50, 0x4b, 0x49, 0x2d, 0x32, 0x2d, 0x32, 0x35,
- 0x34, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01,
- 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x3c, 0xe5, 0x3d,
- 0x5a, 0x1b, 0xa2, 0x37, 0x2a, 0xe3, 0x46, 0xcf, 0x36, 0x96, 0x18, 0x3c,
- 0x7b, 0xf1, 0x84, 0xc5, 0x57, 0x86, 0x77, 0x40, 0x9d, 0x35, 0xf0, 0x12,
- 0xf0, 0x78, 0x18, 0xfb, 0x22, 0xa4, 0xde, 0x98, 0x4b, 0x78, 0x81, 0xe6,
- 0x4d, 0x86, 0xe3, 0x91, 0x0f, 0x42, 0xe3, 0xb9, 0xdc, 0xa0, 0xd6, 0xff,
- 0xa9, 0xf8, 0xb1, 0x79, 0x97, 0x99, 0xd1, 0xc3, 0x6c, 0x42, 0xa5, 0x92,
- 0x94, 0xe0, 0x5d, 0x0c, 0x33, 0x18, 0x25, 0xc9, 0x2b, 0x95, 0x53, 0xe0,
- 0xe5, 0xa9, 0x0c, 0x7d, 0x47, 0xfe, 0x7f, 0x51, 0x31, 0x44, 0x5e, 0xf7,
- 0x2a, 0x1e, 0x35, 0xa2, 0x94, 0x32, 0xf7, 0xc9, 0xee, 0xc0, 0xb6, 0xc6,
- 0x9a, 0xac, 0xde, 0x99, 0x21, 0x6a, 0x23, 0xa0, 0x38, 0x64, 0xee, 0xa3,
- 0xc4, 0x88, 0x73, 0x32, 0x3b, 0x50, 0xce, 0xbf, 0xad, 0xd3, 0x75, 0x1e,
- 0xa6, 0xf4, 0xe9, 0xf9, 0x42, 0x6b, 0x60, 0xb2, 0xdd, 0x45, 0xfd, 0x5d,
- 0x57, 0x08, 0xce, 0x2d, 0x50, 0xe6, 0x12, 0x32, 0x16, 0x13, 0x8a, 0xf2,
- 0x94, 0xa2, 0x9b, 0x47, 0xa8, 0x86, 0x7f, 0xd9, 0x98, 0xe5, 0xf7, 0xe5,
- 0x76, 0x74, 0x64, 0xd8, 0x91, 0xbc, 0x84, 0x16, 0x28, 0xd8, 0x25, 0x44,
- 0x30, 0x7e, 0x82, 0xd8, 0xac, 0xb1, 0xe4, 0xc0, 0xe4, 0x15, 0x6c, 0xdb,
- 0xb6, 0x24, 0x27, 0x02, 0x2a, 0x01, 0x12, 0x85, 0xba, 0x31, 0x88, 0x58,
- 0x47, 0x74, 0xe3, 0xb8, 0xd2, 0x64, 0xa6, 0xc3, 0x32, 0x59, 0x2e, 0x29,
- 0x4b, 0x45, 0xf1, 0x5b, 0x89, 0x49, 0x2e, 0x82, 0x9a, 0xc6, 0x18, 0x15,
- 0x44, 0xd0, 0x2e, 0x64, 0x01, 0x15, 0x68, 0x38, 0xf9, 0xf6, 0xf9, 0x66,
- 0x03, 0x0c, 0x55, 0x1b, 0x9d, 0xbf, 0x00, 0x40, 0xae, 0xf0, 0x48, 0x27,
- 0x4c, 0xe0, 0x80, 0x5e, 0x2d, 0xb9, 0x2a, 0x15, 0x7a, 0xbc, 0x66, 0xf8,
- 0x35,
-}
-
-var certSet2Cert14 = []byte{
- 0x30, 0x82, 0x04, 0x63, 0x30, 0x82, 0x03, 0x4b, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x0b, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x44, 0x4e, 0xf0,
- 0x3e, 0x20, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
- 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x57, 0x31, 0x0b, 0x30, 0x09, 0x06,
- 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x42, 0x45, 0x31, 0x19, 0x30, 0x17,
- 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x10, 0x47, 0x6c, 0x6f, 0x62, 0x61,
- 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x6e, 0x76, 0x2d, 0x73, 0x61, 0x31,
- 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x07, 0x52, 0x6f,
- 0x6f, 0x74, 0x20, 0x43, 0x41, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55,
- 0x04, 0x03, 0x13, 0x12, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69,
- 0x67, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x30, 0x1e,
- 0x17, 0x0d, 0x31, 0x34, 0x30, 0x32, 0x32, 0x30, 0x31, 0x30, 0x30, 0x30,
- 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x34, 0x30, 0x32, 0x32, 0x30, 0x31,
- 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x60, 0x31, 0x0b, 0x30, 0x09,
- 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x42, 0x45, 0x31, 0x19, 0x30,
- 0x17, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x10, 0x47, 0x6c, 0x6f, 0x62,
- 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x6e, 0x76, 0x2d, 0x73, 0x61,
- 0x31, 0x36, 0x30, 0x34, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2d, 0x47,
- 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x44, 0x6f,
- 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x53, 0x48, 0x41,
- 0x32, 0x35, 0x36, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22,
- 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
- 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a,
- 0x02, 0x82, 0x01, 0x01, 0x00, 0xa9, 0xdd, 0xcc, 0x0e, 0xb3, 0xe2, 0x32,
- 0x39, 0xdd, 0x49, 0x22, 0xa8, 0x13, 0x69, 0x93, 0x87, 0x88, 0xe1, 0x0c,
- 0xee, 0x71, 0x7d, 0xbd, 0x90, 0x87, 0x96, 0x5d, 0x59, 0xf2, 0xcc, 0xb3,
- 0xd2, 0x58, 0x57, 0x57, 0xf9, 0x46, 0xef, 0x6c, 0x26, 0xd8, 0x36, 0x42,
- 0x8e, 0x7e, 0x30, 0xb3, 0x2f, 0x9a, 0x3e, 0x53, 0x7b, 0x1f, 0x6e, 0xb6,
- 0xa2, 0x4c, 0x45, 0x1f, 0x3c, 0xd3, 0x15, 0x93, 0x1c, 0x89, 0xed, 0x3c,
- 0xf4, 0x57, 0xde, 0xca, 0xbd, 0xec, 0x06, 0x9a, 0x6a, 0x2a, 0xa0, 0x19,
- 0x52, 0x7f, 0x51, 0xd1, 0x74, 0x39, 0x08, 0x9f, 0xab, 0xeb, 0xd7, 0x86,
- 0x13, 0x15, 0x97, 0xae, 0x36, 0xc3, 0x54, 0x66, 0x0e, 0x5a, 0xf2, 0xa0,
- 0x73, 0x85, 0x31, 0xe3, 0xb2, 0x64, 0x14, 0x6a, 0xff, 0xa5, 0xa2, 0x8e,
- 0x24, 0xbb, 0xbd, 0x85, 0x52, 0x15, 0xa2, 0x79, 0xee, 0xf0, 0xb5, 0xee,
- 0x3d, 0xb8, 0xf4, 0x7d, 0x80, 0xbc, 0xd9, 0x90, 0x35, 0x65, 0xb8, 0x17,
- 0xa9, 0xad, 0xb3, 0x98, 0x9f, 0xa0, 0x7e, 0x7d, 0x6e, 0xfb, 0x3f, 0xad,
- 0x7c, 0xc2, 0x1b, 0x59, 0x36, 0x96, 0xda, 0x37, 0x32, 0x4b, 0x4b, 0x5d,
- 0x35, 0x02, 0x63, 0x8e, 0xdb, 0xa7, 0xcf, 0x62, 0xee, 0xcc, 0x2e, 0xd4,
- 0x8d, 0xc9, 0xbd, 0x3c, 0x6a, 0x91, 0x72, 0xa2, 0x22, 0xa7, 0x72, 0x2d,
- 0x20, 0xd1, 0xfa, 0xca, 0x37, 0xda, 0x18, 0x98, 0xe6, 0x16, 0x24, 0x71,
- 0x25, 0x4b, 0xc4, 0xe5, 0x7b, 0x89, 0x52, 0x09, 0x02, 0xfd, 0x59, 0x2b,
- 0x04, 0x6e, 0xca, 0x07, 0x81, 0xd4, 0xb3, 0xda, 0xda, 0xdb, 0xe3, 0xcc,
- 0x80, 0xa8, 0x56, 0x07, 0x06, 0x7c, 0x96, 0x08, 0x37, 0x9d, 0xdb, 0x38,
- 0xb6, 0x62, 0x34, 0x91, 0x62, 0x07, 0x74, 0x01, 0x38, 0xd8, 0x72, 0x30,
- 0xe2, 0xeb, 0x90, 0x71, 0x26, 0x62, 0xc0, 0x57, 0xf3, 0x02, 0x03, 0x01,
- 0x00, 0x01, 0xa3, 0x82, 0x01, 0x25, 0x30, 0x82, 0x01, 0x21, 0x30, 0x0e,
- 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02,
- 0x01, 0x06, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff,
- 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x1d,
- 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xea, 0x4e, 0x7c,
- 0xd4, 0x80, 0x2d, 0xe5, 0x15, 0x81, 0x86, 0x26, 0x8c, 0x82, 0x6d, 0xc0,
- 0x98, 0xa4, 0xcf, 0x97, 0x0f, 0x30, 0x47, 0x06, 0x03, 0x55, 0x1d, 0x20,
- 0x04, 0x40, 0x30, 0x3e, 0x30, 0x3c, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00,
- 0x30, 0x34, 0x30, 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07,
- 0x02, 0x01, 0x16, 0x26, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f,
- 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x73, 0x69,
- 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73,
- 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x30, 0x33, 0x06, 0x03, 0x55, 0x1d,
- 0x1f, 0x04, 0x2c, 0x30, 0x2a, 0x30, 0x28, 0xa0, 0x26, 0xa0, 0x24, 0x86,
- 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e,
- 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x6e,
- 0x65, 0x74, 0x2f, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x72, 0x6c, 0x30,
- 0x3d, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04,
- 0x31, 0x30, 0x2f, 0x30, 0x2d, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
- 0x07, 0x30, 0x01, 0x86, 0x21, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f,
- 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x73,
- 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x6f, 0x6f, 0x74,
- 0x72, 0x31, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30,
- 0x16, 0x80, 0x14, 0x60, 0x7b, 0x66, 0x1a, 0x45, 0x0d, 0x97, 0xca, 0x89,
- 0x50, 0x2f, 0x7d, 0x04, 0xcd, 0x34, 0xa8, 0xff, 0xfc, 0xfd, 0x4b, 0x30,
- 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b,
- 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0xd7, 0x45, 0x9e, 0xa0, 0xdc,
- 0xe0, 0xe3, 0x61, 0x5a, 0x0b, 0x7d, 0x77, 0x84, 0x17, 0x2d, 0x65, 0x5a,
- 0x82, 0x9a, 0x8d, 0xa3, 0x27, 0x2a, 0x85, 0xf7, 0xc9, 0xef, 0xe9, 0x86,
- 0xfd, 0xd4, 0x47, 0xcd, 0x01, 0x52, 0x96, 0xc5, 0x43, 0xbd, 0x37, 0xb1,
- 0xe1, 0xb8, 0xf2, 0xa9, 0xd2, 0x8a, 0x11, 0x84, 0x71, 0x91, 0x15, 0x89,
- 0xdc, 0x02, 0x9d, 0x0b, 0xcb, 0x6c, 0x33, 0x85, 0x34, 0x28, 0x9e, 0x20,
- 0xb2, 0xb1, 0x97, 0xdc, 0x6d, 0x0b, 0x10, 0xc1, 0x3c, 0xcd, 0x5f, 0xea,
- 0x5d, 0xd7, 0x98, 0x31, 0xc5, 0x34, 0x99, 0x5c, 0x00, 0x61, 0x55, 0xc4,
- 0x1b, 0x02, 0x5b, 0xc5, 0xe3, 0x89, 0xc8, 0xb4, 0xb8, 0x6f, 0x1e, 0x38,
- 0xf2, 0x56, 0x26, 0xe9, 0x41, 0xef, 0x3d, 0xcd, 0xac, 0x99, 0x4f, 0x59,
- 0x4a, 0x57, 0x2d, 0x4b, 0x7d, 0xae, 0xc7, 0x88, 0xfb, 0xd6, 0x98, 0x3b,
- 0xf5, 0xe5, 0xf0, 0xe8, 0x89, 0x89, 0xb9, 0x8b, 0x03, 0xcb, 0x5a, 0x23,
- 0x1f, 0xa4, 0xfd, 0xb8, 0xea, 0xfb, 0x2e, 0x9d, 0xae, 0x6a, 0x73, 0x09,
- 0xbc, 0xfc, 0xd5, 0xa0, 0xb5, 0x44, 0x82, 0xab, 0x44, 0x91, 0x2e, 0x50,
- 0x2e, 0x57, 0xc1, 0x43, 0xd8, 0x91, 0x04, 0x8b, 0xe9, 0x11, 0x2e, 0x5f,
- 0xb4, 0x3f, 0x79, 0xdf, 0x1e, 0xfb, 0x3f, 0x30, 0x00, 0x8b, 0x53, 0xe3,
- 0xb7, 0x2c, 0x1d, 0x3b, 0x4d, 0x8b, 0xdc, 0xe4, 0x64, 0x1d, 0x04, 0x58,
- 0x33, 0xaf, 0x1b, 0x55, 0xe7, 0xab, 0x0c, 0xbf, 0x30, 0x04, 0x74, 0xe4,
- 0xf3, 0x0e, 0x2f, 0x30, 0x39, 0x8d, 0x4b, 0x04, 0x8c, 0x1e, 0x75, 0x66,
- 0x66, 0x49, 0xe0, 0xbe, 0x40, 0x34, 0xc7, 0x5c, 0x5a, 0x51, 0x92, 0xba,
- 0x12, 0x3c, 0x52, 0xd5, 0x04, 0x82, 0x55, 0x2d, 0x67, 0xa5, 0xdf, 0xb7,
- 0x95, 0x7c, 0xee, 0x3f, 0xc3, 0x08, 0xba, 0x04, 0xbe, 0xc0, 0x46,
-}
-
-var certSet2Cert15 = []byte{
- 0x30, 0x82, 0x04, 0x69, 0x30, 0x82, 0x03, 0x51, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x0b, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x44, 0x4e, 0xf0,
- 0x42, 0x47, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
- 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x57, 0x31, 0x0b, 0x30, 0x09, 0x06,
- 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x42, 0x45, 0x31, 0x19, 0x30, 0x17,
- 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x10, 0x47, 0x6c, 0x6f, 0x62, 0x61,
- 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x6e, 0x76, 0x2d, 0x73, 0x61, 0x31,
- 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x07, 0x52, 0x6f,
- 0x6f, 0x74, 0x20, 0x43, 0x41, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55,
- 0x04, 0x03, 0x13, 0x12, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69,
- 0x67, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x30, 0x1e,
- 0x17, 0x0d, 0x31, 0x34, 0x30, 0x32, 0x32, 0x30, 0x31, 0x30, 0x30, 0x30,
- 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x34, 0x30, 0x32, 0x32, 0x30, 0x31,
- 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x66, 0x31, 0x0b, 0x30, 0x09,
- 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x42, 0x45, 0x31, 0x19, 0x30,
- 0x17, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x10, 0x47, 0x6c, 0x6f, 0x62,
- 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x6e, 0x76, 0x2d, 0x73, 0x61,
- 0x31, 0x3c, 0x30, 0x3a, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x33, 0x47,
- 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x4f, 0x72,
- 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x56,
- 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x43, 0x41,
- 0x20, 0x2d, 0x20, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x20, 0x2d, 0x20,
- 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
- 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01,
- 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xc7,
- 0x0e, 0x6c, 0x3f, 0x23, 0x93, 0x7f, 0xcc, 0x70, 0xa5, 0x9d, 0x20, 0xc3,
- 0x0e, 0x53, 0x3f, 0x7e, 0xc0, 0x4e, 0xc2, 0x98, 0x49, 0xca, 0x47, 0xd5,
- 0x23, 0xef, 0x03, 0x34, 0x85, 0x74, 0xc8, 0xa3, 0x02, 0x2e, 0x46, 0x5c,
- 0x0b, 0x7d, 0xc9, 0x88, 0x9d, 0x4f, 0x8b, 0xf0, 0xf8, 0x9c, 0x6c, 0x8c,
- 0x55, 0x35, 0xdb, 0xbf, 0xf2, 0xb3, 0xea, 0xfb, 0xe3, 0x56, 0xe7, 0x4a,
- 0x46, 0xd9, 0x13, 0x22, 0xca, 0x36, 0xd5, 0x9b, 0xc1, 0xa8, 0xe3, 0x96,
- 0x43, 0x93, 0xf2, 0x0c, 0xbc, 0xe6, 0xf9, 0xe6, 0xe8, 0x99, 0xc8, 0x63,
- 0x48, 0x78, 0x7f, 0x57, 0x36, 0x69, 0x1a, 0x19, 0x1d, 0x5a, 0xd1, 0xd4,
- 0x7d, 0xc2, 0x9c, 0xd4, 0x7f, 0xe1, 0x80, 0x12, 0xae, 0x7a, 0xea, 0x88,
- 0xea, 0x57, 0xd8, 0xca, 0x0a, 0x0a, 0x3a, 0x12, 0x49, 0xa2, 0x62, 0x19,
- 0x7a, 0x0d, 0x24, 0xf7, 0x37, 0xeb, 0xb4, 0x73, 0x92, 0x7b, 0x05, 0x23,
- 0x9b, 0x12, 0xb5, 0xce, 0xeb, 0x29, 0xdf, 0xa4, 0x14, 0x02, 0xb9, 0x01,
- 0xa5, 0xd4, 0xa6, 0x9c, 0x43, 0x64, 0x88, 0xde, 0xf8, 0x7e, 0xfe, 0xe3,
- 0xf5, 0x1e, 0xe5, 0xfe, 0xdc, 0xa3, 0xa8, 0xe4, 0x66, 0x31, 0xd9, 0x4c,
- 0x25, 0xe9, 0x18, 0xb9, 0x89, 0x59, 0x09, 0xae, 0xe9, 0x9d, 0x1c, 0x6d,
- 0x37, 0x0f, 0x4a, 0x1e, 0x35, 0x20, 0x28, 0xe2, 0xaf, 0xd4, 0x21, 0x8b,
- 0x01, 0xc4, 0x45, 0xad, 0x6e, 0x2b, 0x63, 0xab, 0x92, 0x6b, 0x61, 0x0a,
- 0x4d, 0x20, 0xed, 0x73, 0xba, 0x7c, 0xce, 0xfe, 0x16, 0xb5, 0xdb, 0x9f,
- 0x80, 0xf0, 0xd6, 0x8b, 0x6c, 0xd9, 0x08, 0x79, 0x4a, 0x4f, 0x78, 0x65,
- 0xda, 0x92, 0xbc, 0xbe, 0x35, 0xf9, 0xb3, 0xc4, 0xf9, 0x27, 0x80, 0x4e,
- 0xff, 0x96, 0x52, 0xe6, 0x02, 0x20, 0xe1, 0x07, 0x73, 0xe9, 0x5d, 0x2b,
- 0xbd, 0xb2, 0xf1, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x25,
- 0x30, 0x82, 0x01, 0x21, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01,
- 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x12, 0x06, 0x03,
- 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01,
- 0xff, 0x02, 0x01, 0x00, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04,
- 0x16, 0x04, 0x14, 0x96, 0xde, 0x61, 0xf1, 0xbd, 0x1c, 0x16, 0x29, 0x53,
- 0x1c, 0xc0, 0xcc, 0x7d, 0x3b, 0x83, 0x00, 0x40, 0xe6, 0x1a, 0x7c, 0x30,
- 0x47, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x40, 0x30, 0x3e, 0x30, 0x3c,
- 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x34, 0x30, 0x32, 0x06, 0x08,
- 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x26, 0x68, 0x74,
- 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6c,
- 0x6f, 0x62, 0x61, 0x6c, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d,
- 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f,
- 0x30, 0x33, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2c, 0x30, 0x2a, 0x30,
- 0x28, 0xa0, 0x26, 0xa0, 0x24, 0x86, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a,
- 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c,
- 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x72, 0x6f, 0x6f,
- 0x74, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x3d, 0x06, 0x08, 0x2b, 0x06, 0x01,
- 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x31, 0x30, 0x2f, 0x30, 0x2d, 0x06,
- 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x21, 0x68,
- 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x67,
- 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f,
- 0x6d, 0x2f, 0x72, 0x6f, 0x6f, 0x74, 0x72, 0x31, 0x30, 0x1f, 0x06, 0x03,
- 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x60, 0x7b, 0x66,
- 0x1a, 0x45, 0x0d, 0x97, 0xca, 0x89, 0x50, 0x2f, 0x7d, 0x04, 0xcd, 0x34,
- 0xa8, 0xff, 0xfc, 0xfd, 0x4b, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48,
- 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01,
- 0x00, 0x46, 0x2a, 0xee, 0x5e, 0xbd, 0xae, 0x01, 0x60, 0x37, 0x31, 0x11,
- 0x86, 0x71, 0x74, 0xb6, 0x46, 0x49, 0xc8, 0x10, 0x16, 0xfe, 0x2f, 0x62,
- 0x23, 0x17, 0xab, 0x1f, 0x87, 0xf8, 0x82, 0xed, 0xca, 0xdf, 0x0e, 0x2c,
- 0xdf, 0x64, 0x75, 0x8e, 0xe5, 0x18, 0x72, 0xa7, 0x8c, 0x3a, 0x8b, 0xc9,
- 0xac, 0xa5, 0x77, 0x50, 0xf7, 0xef, 0x9e, 0xa4, 0xe0, 0xa0, 0x8f, 0x14,
- 0x57, 0xa3, 0x2a, 0x5f, 0xec, 0x7e, 0x6d, 0x10, 0xe6, 0xba, 0x8d, 0xb0,
- 0x08, 0x87, 0x76, 0x0e, 0x4c, 0xb2, 0xd9, 0x51, 0xbb, 0x11, 0x02, 0xf2,
- 0x5c, 0xdd, 0x1c, 0xbd, 0xf3, 0x55, 0x96, 0x0f, 0xd4, 0x06, 0xc0, 0xfc,
- 0xe2, 0x23, 0x8a, 0x24, 0x70, 0xd3, 0xbb, 0xf0, 0x79, 0x1a, 0xa7, 0x61,
- 0x70, 0x83, 0x8a, 0xaf, 0x06, 0xc5, 0x20, 0xd8, 0xa1, 0x63, 0xd0, 0x6c,
- 0xae, 0x4f, 0x32, 0xd7, 0xae, 0x7c, 0x18, 0x45, 0x75, 0x05, 0x29, 0x77,
- 0xdf, 0x42, 0x40, 0x64, 0x64, 0x86, 0xbe, 0x2a, 0x76, 0x09, 0x31, 0x6f,
- 0x1d, 0x24, 0xf4, 0x99, 0xd0, 0x85, 0xfe, 0xf2, 0x21, 0x08, 0xf9, 0xc6,
- 0xf6, 0xf1, 0xd0, 0x59, 0xed, 0xd6, 0x56, 0x3c, 0x08, 0x28, 0x03, 0x67,
- 0xba, 0xf0, 0xf9, 0xf1, 0x90, 0x16, 0x47, 0xae, 0x67, 0xe6, 0xbc, 0x80,
- 0x48, 0xe9, 0x42, 0x76, 0x34, 0x97, 0x55, 0x69, 0x24, 0x0e, 0x83, 0xd6,
- 0xa0, 0x2d, 0xb4, 0xf5, 0xf3, 0x79, 0x8a, 0x49, 0x28, 0x74, 0x1a, 0x41,
- 0xa1, 0xc2, 0xd3, 0x24, 0x88, 0x35, 0x30, 0x60, 0x94, 0x17, 0xb4, 0xe1,
- 0x04, 0x22, 0x31, 0x3d, 0x3b, 0x2f, 0x17, 0x06, 0xb2, 0xb8, 0x9d, 0x86,
- 0x2b, 0x5a, 0x69, 0xef, 0x83, 0xf5, 0x4b, 0xc4, 0xaa, 0xb4, 0x2a, 0xf8,
- 0x7c, 0xa1, 0xb1, 0x85, 0x94, 0x8c, 0xf4, 0x0c, 0x87, 0x0c, 0xf4, 0xac,
- 0x40, 0xf8, 0x59, 0x49, 0x98,
-}
-
-var certSet2Cert16 = []byte{
- 0x30, 0x82, 0x04, 0x6c, 0x30, 0x82, 0x03, 0x54, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x4d, 0x5f, 0x2c, 0x34, 0x08, 0xb2, 0x4c, 0x20, 0xcd,
- 0x6d, 0x50, 0x7e, 0x24, 0x4d, 0xc9, 0xec, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x81,
- 0xa9, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
- 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13,
- 0x0c, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63,
- 0x2e, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f,
- 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x44,
- 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x38, 0x30, 0x36, 0x06,
- 0x03, 0x55, 0x04, 0x0b, 0x13, 0x2f, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30,
- 0x30, 0x36, 0x20, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49,
- 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75,
- 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65,
- 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55,
- 0x04, 0x03, 0x13, 0x16, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x50,
- 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20,
- 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x30, 0x32, 0x30, 0x38,
- 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x30, 0x30,
- 0x32, 0x30, 0x37, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x3c,
- 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55,
- 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c,
- 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e,
- 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x0d, 0x54,
- 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41,
- 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
- 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00,
- 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0x99, 0xe4, 0x85,
- 0x5b, 0x76, 0x49, 0x7d, 0x2f, 0x05, 0xd8, 0xc5, 0xac, 0xc8, 0xc8, 0xa9,
- 0xd3, 0xdc, 0x98, 0xe6, 0xd7, 0x34, 0xa6, 0x2f, 0x0c, 0xf2, 0x22, 0x26,
- 0xd8, 0xa3, 0xc9, 0x14, 0x4c, 0x8f, 0x05, 0xa4, 0x45, 0xe8, 0x14, 0x0c,
- 0x58, 0x90, 0x05, 0x1a, 0xb7, 0xc5, 0xc1, 0x06, 0xa5, 0x80, 0xaf, 0xbb,
- 0x1d, 0x49, 0x6b, 0x52, 0x34, 0x88, 0xc3, 0x59, 0xe7, 0xef, 0x6b, 0xc4,
- 0x27, 0x41, 0x8c, 0x2b, 0x66, 0x1d, 0xd0, 0xe0, 0xa3, 0x97, 0x98, 0x19,
- 0x34, 0x4b, 0x41, 0xd5, 0x98, 0xd5, 0xc7, 0x05, 0xad, 0xa2, 0xe4, 0xd7,
- 0xed, 0x0c, 0xad, 0x4f, 0xc1, 0xb5, 0xb0, 0x21, 0xfd, 0x3e, 0x50, 0x53,
- 0xb2, 0xc4, 0x90, 0xd0, 0xd4, 0x30, 0x67, 0x6c, 0x9a, 0xf1, 0x0e, 0x74,
- 0xc4, 0xc2, 0xdc, 0x8a, 0xe8, 0x97, 0xff, 0xc9, 0x92, 0xae, 0x01, 0x8a,
- 0x56, 0x0a, 0x98, 0x32, 0xb0, 0x00, 0x23, 0xec, 0x90, 0x1a, 0x60, 0xc3,
- 0xed, 0xbb, 0x3a, 0xcb, 0x0f, 0x63, 0x9f, 0x0d, 0x44, 0xc9, 0x52, 0xe1,
- 0x25, 0x96, 0xbf, 0xed, 0x50, 0x95, 0x89, 0x7f, 0x56, 0x14, 0xb1, 0xb7,
- 0x61, 0x1d, 0x1c, 0x07, 0x8c, 0x3a, 0x2c, 0xf7, 0xff, 0x80, 0xde, 0x39,
- 0x45, 0xd5, 0xaf, 0x1a, 0xd1, 0x78, 0xd8, 0xc7, 0x71, 0x6a, 0xa3, 0x19,
- 0xa7, 0x32, 0x50, 0x21, 0xe9, 0xf2, 0x0e, 0xa1, 0xc6, 0x13, 0x03, 0x44,
- 0x48, 0xd1, 0x66, 0xa8, 0x52, 0x57, 0xd7, 0x11, 0xb4, 0x93, 0x8b, 0xe5,
- 0x99, 0x9f, 0x5d, 0xe7, 0x78, 0x51, 0xe5, 0x4d, 0xf6, 0xb7, 0x59, 0xb4,
- 0x76, 0xb5, 0x09, 0x37, 0x4d, 0x06, 0x38, 0x13, 0x7a, 0x1c, 0x08, 0x98,
- 0x5c, 0xc4, 0x48, 0x4a, 0xcb, 0x52, 0xa0, 0xa9, 0xf8, 0xb1, 0x9d, 0x8e,
- 0x7b, 0x79, 0xb0, 0x20, 0x2f, 0x3c, 0x96, 0xa8, 0x11, 0x62, 0x47, 0xbb,
- 0x11, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x81, 0xfb, 0x30, 0x81, 0xf8,
- 0x30, 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01,
- 0x04, 0x26, 0x30, 0x24, 0x30, 0x22, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05,
- 0x05, 0x07, 0x30, 0x01, 0x86, 0x16, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
- 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65,
- 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01,
- 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00,
- 0x30, 0x34, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2d, 0x30, 0x2b, 0x30,
- 0x29, 0xa0, 0x27, 0xa0, 0x25, 0x86, 0x23, 0x68, 0x74, 0x74, 0x70, 0x3a,
- 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65,
- 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x50,
- 0x43, 0x41, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d,
- 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x28,
- 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, 0x21, 0x30, 0x1f, 0xa4, 0x1d, 0x30,
- 0x1b, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x10,
- 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x4d, 0x50, 0x4b, 0x49,
- 0x2d, 0x32, 0x2d, 0x39, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04,
- 0x16, 0x04, 0x14, 0xa7, 0xa2, 0x83, 0xbb, 0x34, 0x45, 0x40, 0x3d, 0xfc,
- 0xd5, 0x30, 0x4f, 0x12, 0xb9, 0x3e, 0xa1, 0x01, 0x9f, 0xf6, 0xdb, 0x30,
- 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14,
- 0x7b, 0x5b, 0x45, 0xcf, 0xaf, 0xce, 0xcb, 0x7a, 0xfd, 0x31, 0x92, 0x1a,
- 0x6a, 0xb6, 0xf3, 0x46, 0xeb, 0x57, 0x48, 0x50, 0x30, 0x0d, 0x06, 0x09,
- 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03,
- 0x82, 0x01, 0x01, 0x00, 0x80, 0x22, 0x80, 0xe0, 0x6c, 0xc8, 0x95, 0x16,
- 0xd7, 0x57, 0x26, 0x87, 0xf3, 0x72, 0x34, 0xdb, 0xc6, 0x72, 0x56, 0x27,
- 0x3e, 0xd3, 0x96, 0xf6, 0x2e, 0x25, 0x91, 0xa5, 0x3e, 0x33, 0x97, 0xa7,
- 0x4b, 0xe5, 0x2f, 0xfb, 0x25, 0x7d, 0x2f, 0x07, 0x61, 0xfa, 0x6f, 0x83,
- 0x74, 0x4c, 0x4c, 0x53, 0x72, 0x20, 0xa4, 0x7a, 0xcf, 0x51, 0x51, 0x56,
- 0x81, 0x88, 0xb0, 0x6d, 0x1f, 0x36, 0x2c, 0xc8, 0x2b, 0xb1, 0x88, 0x99,
- 0xc1, 0xfe, 0x44, 0xab, 0x48, 0x51, 0x7c, 0xd8, 0xf2, 0x44, 0x64, 0x2a,
- 0xd8, 0x71, 0xa7, 0xfb, 0x1a, 0x2f, 0xf9, 0x19, 0x8d, 0x34, 0xb2, 0x23,
- 0xbf, 0xc4, 0x4c, 0x55, 0x1d, 0x8e, 0x44, 0xe8, 0xaa, 0x5d, 0x9a, 0xdd,
- 0x9f, 0xfd, 0x03, 0xc7, 0xba, 0x24, 0x43, 0x8d, 0x2d, 0x47, 0x44, 0xdb,
- 0xf6, 0xd8, 0x98, 0xc8, 0xb2, 0xf9, 0xda, 0xef, 0xed, 0x29, 0x5c, 0x69,
- 0x12, 0xfa, 0xd1, 0x23, 0x96, 0x0f, 0xbf, 0x9c, 0x0d, 0xf2, 0x79, 0x45,
- 0x53, 0x37, 0x9a, 0x56, 0x2f, 0xe8, 0x57, 0x10, 0x70, 0xf6, 0xee, 0x89,
- 0x0c, 0x49, 0x89, 0x9a, 0xc1, 0x23, 0xf5, 0xc2, 0x2a, 0xcc, 0x41, 0xcf,
- 0x22, 0xab, 0x65, 0x6e, 0xb7, 0x94, 0x82, 0x6d, 0x2f, 0x40, 0x5f, 0x58,
- 0xde, 0xeb, 0x95, 0x2b, 0xa6, 0x72, 0x68, 0x52, 0x19, 0x91, 0x2a, 0xae,
- 0x75, 0x9d, 0x4e, 0x92, 0xe6, 0xca, 0xde, 0x54, 0xea, 0x18, 0xab, 0x25,
- 0x3c, 0xe6, 0x64, 0xa6, 0x79, 0x1f, 0x26, 0x7d, 0x61, 0xed, 0x7d, 0xd2,
- 0xe5, 0x71, 0x55, 0xd8, 0x93, 0x17, 0x7c, 0x14, 0x38, 0x30, 0x3c, 0xdf,
- 0x86, 0xe3, 0x4c, 0xad, 0x49, 0xe3, 0x97, 0x59, 0xce, 0x1b, 0x9b, 0x2b,
- 0xce, 0xdc, 0x65, 0xd4, 0x0b, 0x28, 0x6b, 0x4e, 0x84, 0x46, 0x51, 0x44,
- 0xf7, 0x33, 0x08, 0x2d, 0x58, 0x97, 0x21, 0xae,
-}
-
-var certSet2Cert17 = []byte{
- 0x30, 0x82, 0x04, 0x6e, 0x30, 0x82, 0x03, 0x56, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x6e, 0x8a, 0x90, 0xeb, 0xcf, 0xf0, 0x44, 0x8a, 0x72,
- 0x0d, 0x08, 0x05, 0xd0, 0x82, 0xa5, 0x44, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x58,
- 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55,
- 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d,
- 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63,
- 0x2e, 0x31, 0x31, 0x30, 0x2f, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x28,
- 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x50, 0x72, 0x69,
- 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69,
- 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f,
- 0x72, 0x69, 0x74, 0x79, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31, 0x30,
- 0x33, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32,
- 0x33, 0x31, 0x30, 0x33, 0x30, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a,
- 0x30, 0x47, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13,
- 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a,
- 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49,
- 0x6e, 0x63, 0x2e, 0x31, 0x20, 0x30, 0x1e, 0x06, 0x03, 0x55, 0x04, 0x03,
- 0x13, 0x17, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x45,
- 0x56, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47,
- 0x34, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48,
- 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f,
- 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xd9, 0xb4,
- 0x05, 0xf2, 0x38, 0x67, 0x0f, 0x09, 0xe7, 0x7c, 0xf5, 0x63, 0x2a, 0xe5,
- 0xb9, 0x5e, 0xa8, 0x11, 0xae, 0x75, 0x71, 0xd9, 0x4c, 0x84, 0x67, 0xad,
- 0x89, 0x5d, 0xfc, 0x28, 0x3d, 0x2a, 0xb0, 0xa5, 0xd5, 0xd4, 0xe6, 0x30,
- 0x0a, 0x84, 0xd4, 0xe4, 0x18, 0xcb, 0x85, 0x37, 0xc5, 0x46, 0x71, 0xeb,
- 0x1c, 0x7b, 0x69, 0xdb, 0x65, 0x69, 0x8c, 0x30, 0x05, 0x3e, 0x07, 0xe1,
- 0x6f, 0x3c, 0xc1, 0x0b, 0x61, 0xe6, 0x38, 0x44, 0xfc, 0xbc, 0x8c, 0x2f,
- 0x4e, 0x75, 0x57, 0xf5, 0x96, 0x99, 0x7c, 0x3e, 0x87, 0x1f, 0x0f, 0x90,
- 0x4b, 0x70, 0xc3, 0x3f, 0x39, 0x45, 0x3b, 0x3a, 0x6b, 0xcb, 0xbb, 0x7b,
- 0x40, 0x54, 0xd1, 0x8b, 0x4b, 0xa1, 0x72, 0xd2, 0x04, 0xe9, 0xe0, 0x72,
- 0x1a, 0x93, 0x11, 0x7a, 0x2f, 0xf1, 0xab, 0x9d, 0x9c, 0x98, 0x58, 0xae,
- 0x2c, 0xea, 0x77, 0x5f, 0x2f, 0x2e, 0x87, 0xaf, 0xb8, 0x6b, 0xe3, 0xe2,
- 0xe2, 0x3f, 0xd6, 0x3d, 0xe0, 0x96, 0x44, 0xdf, 0x11, 0x55, 0x63, 0x52,
- 0x2f, 0xf4, 0x26, 0x78, 0xc4, 0x0f, 0x20, 0x4d, 0x0a, 0xc0, 0x68, 0x70,
- 0x15, 0x86, 0x38, 0xee, 0xb7, 0x76, 0x88, 0xab, 0x18, 0x8f, 0x4f, 0x35,
- 0x1e, 0xd4, 0x8c, 0xc9, 0xdb, 0x7e, 0x3d, 0x44, 0xd4, 0x36, 0x8c, 0xc1,
- 0x37, 0xb5, 0x59, 0x5b, 0x87, 0xf9, 0xe9, 0xf1, 0xd4, 0xc5, 0x28, 0xbd,
- 0x1d, 0xdc, 0xcc, 0x96, 0x72, 0xd1, 0x7a, 0xa1, 0xa7, 0x20, 0xb5, 0xb8,
- 0xaf, 0xf8, 0x6e, 0xa5, 0x60, 0x7b, 0x2b, 0x8d, 0x1f, 0xee, 0xf4, 0x2b,
- 0xd6, 0x69, 0xcd, 0xaf, 0xca, 0x80, 0x58, 0x29, 0xe8, 0x4c, 0x00, 0x20,
- 0x8a, 0x49, 0x0a, 0x6e, 0x8e, 0x8c, 0xa8, 0xd1, 0x00, 0x12, 0x84, 0xb6,
- 0xc5, 0xe2, 0x95, 0xa2, 0xc0, 0x3b, 0xa4, 0x6b, 0xf0, 0x82, 0xd0, 0x96,
- 0x5d, 0x25, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x43, 0x30,
- 0x82, 0x01, 0x3f, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01,
- 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30,
- 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03,
- 0x02, 0x01, 0x06, 0x30, 0x2f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
- 0x07, 0x01, 0x01, 0x04, 0x23, 0x30, 0x21, 0x30, 0x1f, 0x06, 0x08, 0x2b,
- 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x13, 0x68, 0x74, 0x74,
- 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x32, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62,
- 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x47, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04,
- 0x40, 0x30, 0x3e, 0x30, 0x3c, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30,
- 0x34, 0x30, 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02,
- 0x01, 0x16, 0x26, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77,
- 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e,
- 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
- 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x34, 0x06, 0x03, 0x55, 0x1d, 0x1f,
- 0x04, 0x2d, 0x30, 0x2b, 0x30, 0x29, 0xa0, 0x27, 0xa0, 0x25, 0x86, 0x23,
- 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x31, 0x2e, 0x73, 0x79,
- 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x65, 0x6f, 0x54,
- 0x72, 0x75, 0x73, 0x74, 0x50, 0x43, 0x41, 0x2e, 0x63, 0x72, 0x6c, 0x30,
- 0x29, 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, 0x22, 0x30, 0x20, 0xa4, 0x1e,
- 0x30, 0x1c, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13,
- 0x11, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x50, 0x4b, 0x49,
- 0x2d, 0x31, 0x2d, 0x35, 0x33, 0x38, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d,
- 0x0e, 0x04, 0x16, 0x04, 0x14, 0xde, 0xcf, 0x5c, 0x50, 0xb7, 0xae, 0x02,
- 0x1f, 0x15, 0x17, 0xaa, 0x16, 0xe8, 0x0d, 0xb5, 0x28, 0x9d, 0x6a, 0x5a,
- 0xf3, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16,
- 0x80, 0x14, 0x2c, 0xd5, 0x50, 0x41, 0x97, 0x15, 0x8b, 0xf0, 0x8f, 0x36,
- 0x61, 0x5b, 0x4a, 0xfb, 0x6b, 0xd9, 0x99, 0xc9, 0x33, 0x92, 0x30, 0x0d,
- 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05,
- 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0xb4, 0x8e, 0xbd, 0x07, 0xb9, 0x9a,
- 0x85, 0xec, 0x3b, 0x67, 0xbd, 0x07, 0x60, 0x61, 0xe6, 0x84, 0xd1, 0xd4,
- 0xef, 0xeb, 0x1b, 0xba, 0x0b, 0x82, 0x4b, 0x95, 0x64, 0xb6, 0x66, 0x53,
- 0x23, 0xbd, 0xb7, 0x84, 0xdd, 0xe4, 0x7b, 0x8d, 0x09, 0xda, 0xcf, 0xb2,
- 0xf5, 0xf1, 0xc3, 0xbf, 0x87, 0x84, 0xbe, 0x4e, 0xa6, 0xa8, 0xc2, 0xe7,
- 0x12, 0x39, 0x28, 0x34, 0xe0, 0xa4, 0x56, 0x44, 0x40, 0x0c, 0x9f, 0x88,
- 0xa3, 0x15, 0xd3, 0xe8, 0xd3, 0x5e, 0xe3, 0x1c, 0x04, 0x60, 0xfb, 0x69,
- 0x36, 0x4f, 0x6a, 0x7e, 0x0c, 0x2a, 0x28, 0xc1, 0xf3, 0xaa, 0x58, 0x0e,
- 0x6c, 0xce, 0x1d, 0x07, 0xc3, 0x4a, 0xc0, 0x9c, 0x8d, 0xc3, 0x74, 0xb1,
- 0xae, 0x82, 0xf0, 0x1a, 0xe1, 0xf9, 0x4e, 0x29, 0xbd, 0x46, 0xde, 0xb7,
- 0x1d, 0xf9, 0x7d, 0xdb, 0xd9, 0x0f, 0x84, 0xcb, 0x92, 0x45, 0xcc, 0x1c,
- 0xb3, 0x18, 0xf6, 0xa0, 0xcf, 0x71, 0x6f, 0x0c, 0x2e, 0x9b, 0xd2, 0x2d,
- 0xb3, 0x99, 0x93, 0x83, 0x44, 0xac, 0x15, 0xaa, 0x9b, 0x2e, 0x67, 0xec,
- 0x4f, 0x88, 0x69, 0x05, 0x56, 0x7b, 0x8b, 0xb2, 0x43, 0xa9, 0x3a, 0x6c,
- 0x1c, 0x13, 0x33, 0x25, 0x1b, 0xfd, 0xa8, 0xc8, 0x57, 0x02, 0xfb, 0x1c,
- 0xe0, 0xd1, 0xbd, 0x3b, 0x56, 0x44, 0x65, 0xc3, 0x63, 0xf5, 0x1b, 0xef,
- 0xec, 0x30, 0xd9, 0xe3, 0x6e, 0x2e, 0x13, 0xe9, 0x39, 0x08, 0x2a, 0x0c,
- 0x72, 0xf3, 0x9a, 0xcc, 0xf6, 0x27, 0x29, 0x84, 0xd3, 0xef, 0x4c, 0xc7,
- 0x84, 0x11, 0x65, 0x1f, 0xc6, 0xe3, 0x81, 0x03, 0xdb, 0x87, 0xcc, 0x78,
- 0xf7, 0xb5, 0x9d, 0x96, 0x3e, 0x6a, 0x7f, 0xbc, 0x11, 0x85, 0x7a, 0x75,
- 0xe6, 0x41, 0x7d, 0x0d, 0xcf, 0xf9, 0xe5, 0x85, 0x69, 0x25, 0x8f, 0xc7,
- 0x8d, 0x07, 0x2d, 0xf8, 0x69, 0x0f, 0xcb, 0x41, 0x53, 0x00,
-}
-
-var certSet2Cert18 = []byte{
- 0x30, 0x82, 0x04, 0x7d, 0x30, 0x82, 0x03, 0x65, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x03, 0x1b, 0xe7, 0x15, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
- 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x63, 0x31,
- 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53,
- 0x31, 0x21, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x18, 0x54,
- 0x68, 0x65, 0x20, 0x47, 0x6f, 0x20, 0x44, 0x61, 0x64, 0x64, 0x79, 0x20,
- 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31,
- 0x31, 0x30, 0x2f, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x28, 0x47, 0x6f,
- 0x20, 0x44, 0x61, 0x64, 0x64, 0x79, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73,
- 0x20, 0x32, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69,
- 0x74, 0x79, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34, 0x30, 0x31, 0x30, 0x31,
- 0x30, 0x37, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x33, 0x31, 0x30,
- 0x35, 0x33, 0x30, 0x30, 0x37, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x81,
- 0x83, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
- 0x55, 0x53, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13,
- 0x07, 0x41, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x61, 0x31, 0x13, 0x30, 0x11,
- 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x0a, 0x53, 0x63, 0x6f, 0x74, 0x74,
- 0x73, 0x64, 0x61, 0x6c, 0x65, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55,
- 0x04, 0x0a, 0x13, 0x11, 0x47, 0x6f, 0x44, 0x61, 0x64, 0x64, 0x79, 0x2e,
- 0x63, 0x6f, 0x6d, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x31, 0x30,
- 0x2f, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x28, 0x47, 0x6f, 0x20, 0x44,
- 0x61, 0x64, 0x64, 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x65,
- 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75,
- 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32,
- 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
- 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00,
- 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xbf, 0x71, 0x62,
- 0x08, 0xf1, 0xfa, 0x59, 0x34, 0xf7, 0x1b, 0xc9, 0x18, 0xa3, 0xf7, 0x80,
- 0x49, 0x58, 0xe9, 0x22, 0x83, 0x13, 0xa6, 0xc5, 0x20, 0x43, 0x01, 0x3b,
- 0x84, 0xf1, 0xe6, 0x85, 0x49, 0x9f, 0x27, 0xea, 0xf6, 0x84, 0x1b, 0x4e,
- 0xa0, 0xb4, 0xdb, 0x70, 0x98, 0xc7, 0x32, 0x01, 0xb1, 0x05, 0x3e, 0x07,
- 0x4e, 0xee, 0xf4, 0xfa, 0x4f, 0x2f, 0x59, 0x30, 0x22, 0xe7, 0xab, 0x19,
- 0x56, 0x6b, 0xe2, 0x80, 0x07, 0xfc, 0xf3, 0x16, 0x75, 0x80, 0x39, 0x51,
- 0x7b, 0xe5, 0xf9, 0x35, 0xb6, 0x74, 0x4e, 0xa9, 0x8d, 0x82, 0x13, 0xe4,
- 0xb6, 0x3f, 0xa9, 0x03, 0x83, 0xfa, 0xa2, 0xbe, 0x8a, 0x15, 0x6a, 0x7f,
- 0xde, 0x0b, 0xc3, 0xb6, 0x19, 0x14, 0x05, 0xca, 0xea, 0xc3, 0xa8, 0x04,
- 0x94, 0x3b, 0x46, 0x7c, 0x32, 0x0d, 0xf3, 0x00, 0x66, 0x22, 0xc8, 0x8d,
- 0x69, 0x6d, 0x36, 0x8c, 0x11, 0x18, 0xb7, 0xd3, 0xb2, 0x1c, 0x60, 0xb4,
- 0x38, 0xfa, 0x02, 0x8c, 0xce, 0xd3, 0xdd, 0x46, 0x07, 0xde, 0x0a, 0x3e,
- 0xeb, 0x5d, 0x7c, 0xc8, 0x7c, 0xfb, 0xb0, 0x2b, 0x53, 0xa4, 0x92, 0x62,
- 0x69, 0x51, 0x25, 0x05, 0x61, 0x1a, 0x44, 0x81, 0x8c, 0x2c, 0xa9, 0x43,
- 0x96, 0x23, 0xdf, 0xac, 0x3a, 0x81, 0x9a, 0x0e, 0x29, 0xc5, 0x1c, 0xa9,
- 0xe9, 0x5d, 0x1e, 0xb6, 0x9e, 0x9e, 0x30, 0x0a, 0x39, 0xce, 0xf1, 0x88,
- 0x80, 0xfb, 0x4b, 0x5d, 0xcc, 0x32, 0xec, 0x85, 0x62, 0x43, 0x25, 0x34,
- 0x02, 0x56, 0x27, 0x01, 0x91, 0xb4, 0x3b, 0x70, 0x2a, 0x3f, 0x6e, 0xb1,
- 0xe8, 0x9c, 0x88, 0x01, 0x7d, 0x9f, 0xd4, 0xf9, 0xdb, 0x53, 0x6d, 0x60,
- 0x9d, 0xbf, 0x2c, 0xe7, 0x58, 0xab, 0xb8, 0x5f, 0x46, 0xfc, 0xce, 0xc4,
- 0x1b, 0x03, 0x3c, 0x09, 0xeb, 0x49, 0x31, 0x5c, 0x69, 0x46, 0xb3, 0xe0,
- 0x47, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x17, 0x30, 0x82,
- 0x01, 0x13, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff,
- 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0e, 0x06, 0x03, 0x55,
- 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30,
- 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x3a, 0x9a,
- 0x85, 0x07, 0x10, 0x67, 0x28, 0xb6, 0xef, 0xf6, 0xbd, 0x05, 0x41, 0x6e,
- 0x20, 0xc1, 0x94, 0xda, 0x0f, 0xde, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d,
- 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xd2, 0xc4, 0xb0, 0xd2, 0x91,
- 0xd4, 0x4c, 0x11, 0x71, 0xb3, 0x61, 0xcb, 0x3d, 0xa1, 0xfe, 0xdd, 0xa8,
- 0x6a, 0xd4, 0xe3, 0x30, 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
- 0x07, 0x01, 0x01, 0x04, 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, 0x2b,
- 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74,
- 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x67, 0x6f, 0x64,
- 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x30, 0x32, 0x06,
- 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2b, 0x30, 0x29, 0x30, 0x27, 0xa0, 0x25,
- 0xa0, 0x23, 0x86, 0x21, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63,
- 0x72, 0x6c, 0x2e, 0x67, 0x6f, 0x64, 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63,
- 0x6f, 0x6d, 0x2f, 0x67, 0x64, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x72,
- 0x6c, 0x30, 0x46, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x3f, 0x30, 0x3d,
- 0x30, 0x3b, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x33, 0x30, 0x31,
- 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x25,
- 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x63, 0x65, 0x72, 0x74,
- 0x73, 0x2e, 0x67, 0x6f, 0x64, 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, 0x6f,
- 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79,
- 0x2f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01,
- 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x59, 0x0b, 0x53,
- 0xbd, 0x92, 0x86, 0x11, 0xa7, 0x24, 0x7b, 0xed, 0x5b, 0x31, 0xcf, 0x1d,
- 0x1f, 0x6c, 0x70, 0xc5, 0xb8, 0x6e, 0xbe, 0x4e, 0xbb, 0xf6, 0xbe, 0x97,
- 0x50, 0xe1, 0x30, 0x7f, 0xba, 0x28, 0x5c, 0x62, 0x94, 0xc2, 0xe3, 0x7e,
- 0x33, 0xf7, 0xfb, 0x42, 0x76, 0x85, 0xdb, 0x95, 0x1c, 0x8c, 0x22, 0x58,
- 0x75, 0x09, 0x0c, 0x88, 0x65, 0x67, 0x39, 0x0a, 0x16, 0x09, 0xc5, 0xa0,
- 0x38, 0x97, 0xa4, 0xc5, 0x23, 0x93, 0x3f, 0xb4, 0x18, 0xa6, 0x01, 0x06,
- 0x44, 0x91, 0xe3, 0xa7, 0x69, 0x27, 0xb4, 0x5a, 0x25, 0x7f, 0x3a, 0xb7,
- 0x32, 0xcd, 0xdd, 0x84, 0xff, 0x2a, 0x38, 0x29, 0x33, 0xa4, 0xdd, 0x67,
- 0xb2, 0x85, 0xfe, 0xa1, 0x88, 0x20, 0x1c, 0x50, 0x89, 0xc8, 0xdc, 0x2a,
- 0xf6, 0x42, 0x03, 0x37, 0x4c, 0xe6, 0x88, 0xdf, 0xd5, 0xaf, 0x24, 0xf2,
- 0xb1, 0xc3, 0xdf, 0xcc, 0xb5, 0xec, 0xe0, 0x99, 0x5e, 0xb7, 0x49, 0x54,
- 0x20, 0x3c, 0x94, 0x18, 0x0c, 0xc7, 0x1c, 0x52, 0x18, 0x49, 0xa4, 0x6d,
- 0xe1, 0xb3, 0x58, 0x0b, 0xc9, 0xd8, 0xec, 0xd9, 0xae, 0x1c, 0x32, 0x8e,
- 0x28, 0x70, 0x0d, 0xe2, 0xfe, 0xa6, 0x17, 0x9e, 0x84, 0x0f, 0xbd, 0x57,
- 0x70, 0xb3, 0x5a, 0xe9, 0x1f, 0xa0, 0x86, 0x53, 0xbb, 0xef, 0x7c, 0xff,
- 0x69, 0x0b, 0xe0, 0x48, 0xc3, 0xb7, 0x93, 0x0b, 0xc8, 0x0a, 0x54, 0xc4,
- 0xac, 0x5d, 0x14, 0x67, 0x37, 0x6c, 0xca, 0xa5, 0x2f, 0x31, 0x08, 0x37,
- 0xaa, 0x6e, 0x6f, 0x8c, 0xbc, 0x9b, 0xe2, 0x57, 0x5d, 0x24, 0x81, 0xaf,
- 0x97, 0x97, 0x9c, 0x84, 0xad, 0x6c, 0xac, 0x37, 0x4c, 0x66, 0xf3, 0x61,
- 0x91, 0x11, 0x20, 0xe4, 0xbe, 0x30, 0x9f, 0x7a, 0xa4, 0x29, 0x09, 0xb0,
- 0xe1, 0x34, 0x5f, 0x64, 0x77, 0x18, 0x40, 0x51, 0xdf, 0x8c, 0x30, 0xa6,
- 0xaf,
-}
-
-var certSet2Cert19 = []byte{
- 0x30, 0x82, 0x04, 0x8f, 0x30, 0x82, 0x03, 0x77, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x06, 0x9e, 0x1d, 0xb7, 0x7f, 0xcf, 0x1d, 0xfb, 0xa9,
- 0x7a, 0xf5, 0xe5, 0xc9, 0xa2, 0x40, 0x37, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x61,
- 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55,
- 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c,
- 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63,
- 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77,
- 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e,
- 0x63, 0x6f, 0x6d, 0x31, 0x20, 0x30, 0x1e, 0x06, 0x03, 0x55, 0x04, 0x03,
- 0x13, 0x17, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x47,
- 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43,
- 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x30, 0x33, 0x30, 0x38, 0x31,
- 0x32, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x33, 0x30, 0x33,
- 0x30, 0x38, 0x31, 0x32, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x48, 0x31,
- 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53,
- 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, 0x44,
- 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x31,
- 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x19, 0x44, 0x69,
- 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x53, 0x65, 0x63, 0x75, 0x72,
- 0x65, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x30,
- 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7,
- 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30,
- 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xbb, 0x57, 0xe4, 0x21,
- 0xa9, 0xd5, 0x9b, 0x60, 0x37, 0x7e, 0x8e, 0xa1, 0x61, 0x7f, 0x81, 0xe2,
- 0x1a, 0xc2, 0x75, 0x64, 0xd9, 0x91, 0x50, 0x0b, 0xe4, 0x36, 0x44, 0x24,
- 0x6e, 0x30, 0xd2, 0x9b, 0x7a, 0x27, 0xfa, 0xc2, 0x6a, 0xae, 0x6a, 0x70,
- 0x09, 0x38, 0xb9, 0x20, 0x0a, 0xc8, 0x65, 0x10, 0x4a, 0x88, 0xac, 0x31,
- 0xf2, 0xdc, 0x92, 0xf2, 0x63, 0xa1, 0x5d, 0x80, 0x63, 0x59, 0x80, 0x92,
- 0x23, 0x1c, 0xe6, 0xef, 0x76, 0x4a, 0x50, 0x35, 0xc9, 0xd8, 0x71, 0x38,
- 0xb9, 0xed, 0xf0, 0xe6, 0x42, 0xae, 0xd3, 0x38, 0x26, 0x79, 0x30, 0xf9,
- 0x22, 0x94, 0xc6, 0xdb, 0xa6, 0x3f, 0x41, 0x78, 0x90, 0xd8, 0xde, 0x5c,
- 0x7e, 0x69, 0x7d, 0xf8, 0x90, 0x15, 0x3a, 0xd0, 0xa1, 0xa0, 0xbe, 0xfa,
- 0xb2, 0xb2, 0x19, 0xa1, 0xd8, 0x2b, 0xd1, 0xce, 0xbf, 0x6b, 0xdd, 0x49,
- 0xab, 0xa3, 0x92, 0xfe, 0xb5, 0xab, 0xc8, 0xc1, 0x3e, 0xee, 0x01, 0x00,
- 0xd8, 0xa9, 0x44, 0xb8, 0x42, 0x73, 0x88, 0xc3, 0x61, 0xf5, 0xab, 0x4a,
- 0x83, 0x28, 0x0a, 0xd2, 0xd4, 0x49, 0xfa, 0x6a, 0xb1, 0xcd, 0xdf, 0x57,
- 0x2c, 0x94, 0xe5, 0xe2, 0xca, 0x83, 0x5f, 0xb7, 0xba, 0x62, 0x5c, 0x2f,
- 0x68, 0xa5, 0xf0, 0xc0, 0xb9, 0xfd, 0x2b, 0xd1, 0xe9, 0x1f, 0xd8, 0x1a,
- 0x62, 0x15, 0xbd, 0xff, 0x3d, 0xa6, 0xf7, 0xcb, 0xef, 0xe6, 0xdb, 0x65,
- 0x2f, 0x25, 0x38, 0xec, 0xfb, 0xe6, 0x20, 0x66, 0x58, 0x96, 0x34, 0x19,
- 0xd2, 0x15, 0xce, 0x21, 0xd3, 0x24, 0xcc, 0xd9, 0x14, 0x6f, 0xd8, 0xfe,
- 0x55, 0xc7, 0xe7, 0x6f, 0xb6, 0x0f, 0x1a, 0x8c, 0x49, 0xbe, 0x29, 0xf2,
- 0xba, 0x5a, 0x9a, 0x81, 0x26, 0x37, 0x24, 0x6f, 0xd7, 0x48, 0x12, 0x6c,
- 0x2e, 0x59, 0xf5, 0x9c, 0x18, 0xbb, 0xd9, 0xf6, 0x68, 0xe2, 0xdf, 0x45,
- 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x5a, 0x30, 0x82, 0x01,
- 0x56, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04,
- 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x0e, 0x06,
- 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01,
- 0x86, 0x30, 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01,
- 0x01, 0x04, 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, 0x2b, 0x06, 0x01,
- 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a,
- 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63,
- 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x7b, 0x06, 0x03, 0x55,
- 0x1d, 0x1f, 0x04, 0x74, 0x30, 0x72, 0x30, 0x37, 0xa0, 0x35, 0xa0, 0x33,
- 0x86, 0x31, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c,
- 0x33, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63,
- 0x6f, 0x6d, 0x2f, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x47,
- 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x52, 0x6f, 0x6f, 0x74, 0x43, 0x41, 0x2e,
- 0x63, 0x72, 0x6c, 0x30, 0x37, 0xa0, 0x35, 0xa0, 0x33, 0x86, 0x31, 0x68,
- 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x34, 0x2e, 0x64,
- 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
- 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x47, 0x6c, 0x6f, 0x62,
- 0x61, 0x6c, 0x52, 0x6f, 0x6f, 0x74, 0x43, 0x41, 0x2e, 0x63, 0x72, 0x6c,
- 0x30, 0x3d, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x36, 0x30, 0x34, 0x30,
- 0x32, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x2a, 0x30, 0x28, 0x06,
- 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1c, 0x68,
- 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x64,
- 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
- 0x43, 0x50, 0x53, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16,
- 0x04, 0x14, 0x90, 0x71, 0xdb, 0x37, 0xeb, 0x73, 0xc8, 0xef, 0xdc, 0xd5,
- 0x1e, 0x12, 0xb6, 0x34, 0xba, 0x2b, 0x5a, 0xa0, 0xa6, 0x92, 0x30, 0x1f,
- 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x03,
- 0xde, 0x50, 0x35, 0x56, 0xd1, 0x4c, 0xbb, 0x66, 0xf0, 0xa3, 0xe2, 0x1b,
- 0x1b, 0xc3, 0x97, 0xb2, 0x3d, 0xd1, 0x55, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82,
- 0x01, 0x01, 0x00, 0x30, 0xce, 0xd1, 0x95, 0x51, 0x00, 0xae, 0x06, 0x0b,
- 0xa1, 0x0e, 0x02, 0xc0, 0x17, 0xac, 0xb6, 0x7f, 0x8f, 0x20, 0xf6, 0x40,
- 0x75, 0x74, 0x1c, 0xcc, 0x78, 0xb1, 0xa4, 0x4f, 0xea, 0xf4, 0xd0, 0xc4,
- 0x9d, 0xa2, 0xde, 0x81, 0x07, 0x26, 0x1f, 0x40, 0x88, 0x51, 0xf0, 0x1f,
- 0xcf, 0xb7, 0x4c, 0x40, 0x99, 0xd0, 0xf4, 0x3c, 0x71, 0x98, 0x73, 0x88,
- 0x97, 0x2c, 0x19, 0xd7, 0x6e, 0x84, 0x8f, 0xa4, 0x1f, 0x9c, 0x5a, 0x20,
- 0xe3, 0x51, 0x5c, 0xb0, 0xc5, 0x9e, 0x99, 0x6a, 0x4f, 0xc8, 0x69, 0xf7,
- 0x10, 0xff, 0x4e, 0xad, 0x19, 0xd9, 0xc9, 0x58, 0xb3, 0x33, 0xae, 0x0c,
- 0xd9, 0x96, 0x29, 0x9e, 0x71, 0xb2, 0x70, 0x63, 0xa3, 0xb6, 0x99, 0x16,
- 0x42, 0x1d, 0x65, 0xf3, 0xf7, 0xa0, 0x1e, 0x7d, 0xc5, 0xd4, 0x65, 0x14,
- 0xb2, 0x62, 0x84, 0xd4, 0x6c, 0x5c, 0x08, 0x0c, 0xd8, 0x6c, 0x93, 0x2b,
- 0xb4, 0x76, 0x59, 0x8a, 0xd1, 0x7f, 0xff, 0x03, 0xd8, 0xc2, 0x5d, 0xb8,
- 0x2f, 0x22, 0xd6, 0x38, 0xf0, 0xf6, 0x9c, 0x6b, 0x7d, 0x46, 0xeb, 0x99,
- 0x74, 0xf7, 0xeb, 0x4a, 0x0e, 0xa9, 0xa6, 0x04, 0xeb, 0x7b, 0xce, 0xf0,
- 0x5c, 0x6b, 0x98, 0x31, 0x5a, 0x98, 0x40, 0xeb, 0x69, 0xc4, 0x05, 0xf4,
- 0x20, 0xa8, 0xca, 0x08, 0x3a, 0x65, 0x6c, 0x38, 0x15, 0xf5, 0x5c, 0x2c,
- 0xb2, 0x55, 0xe4, 0x2c, 0x6b, 0x41, 0xf0, 0xbe, 0x5c, 0x46, 0xca, 0x4a,
- 0x29, 0xa0, 0x48, 0x5e, 0x20, 0xd2, 0x45, 0xff, 0x05, 0xde, 0x34, 0xaf,
- 0x70, 0x4b, 0x81, 0x39, 0xe2, 0xca, 0x07, 0x57, 0x7c, 0xb6, 0x31, 0xdc,
- 0x21, 0x29, 0xe2, 0xbe, 0x97, 0x0e, 0x77, 0x90, 0x14, 0x51, 0x40, 0xe1,
- 0xbf, 0xe3, 0xcc, 0x1b, 0x19, 0x9c, 0x25, 0xca, 0xa7, 0x06, 0xb2, 0x53,
- 0xdf, 0x23, 0xb2, 0xcf, 0x12, 0x19, 0xa3,
-}
-
-var certSet2Cert20 = []byte{
- 0x30, 0x82, 0x04, 0x90, 0x30, 0x82, 0x03, 0xf9, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x1b, 0x09, 0x3b, 0x78, 0x60, 0x96, 0xda, 0x37, 0xbb,
- 0xa4, 0x51, 0x94, 0x46, 0xc8, 0x96, 0x78, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x5f,
- 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55,
- 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e,
- 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e,
- 0x63, 0x2e, 0x31, 0x37, 0x30, 0x35, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13,
- 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62,
- 0x6c, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20,
- 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30,
- 0x1e, 0x17, 0x0d, 0x30, 0x36, 0x31, 0x31, 0x30, 0x38, 0x30, 0x30, 0x30,
- 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x31, 0x31, 0x31, 0x30, 0x37,
- 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x81, 0xca, 0x31, 0x0b,
- 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31,
- 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e, 0x56, 0x65,
- 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e,
- 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x16, 0x56,
- 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, 0x72, 0x75, 0x73,
- 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x31, 0x3a, 0x30,
- 0x38, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x31, 0x28, 0x63, 0x29, 0x20,
- 0x32, 0x30, 0x30, 0x36, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67,
- 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f,
- 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64,
- 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x45, 0x30,
- 0x43, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x3c, 0x56, 0x65, 0x72, 0x69,
- 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x33,
- 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6d,
- 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72,
- 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x35, 0x30, 0x82, 0x01, 0x22,
- 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
- 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a,
- 0x02, 0x82, 0x01, 0x01, 0x00, 0xaf, 0x24, 0x08, 0x08, 0x29, 0x7a, 0x35,
- 0x9e, 0x60, 0x0c, 0xaa, 0xe7, 0x4b, 0x3b, 0x4e, 0xdc, 0x7c, 0xbc, 0x3c,
- 0x45, 0x1c, 0xbb, 0x2b, 0xe0, 0xfe, 0x29, 0x02, 0xf9, 0x57, 0x08, 0xa3,
- 0x64, 0x85, 0x15, 0x27, 0xf5, 0xf1, 0xad, 0xc8, 0x31, 0x89, 0x5d, 0x22,
- 0xe8, 0x2a, 0xaa, 0xa6, 0x42, 0xb3, 0x8f, 0xf8, 0xb9, 0x55, 0xb7, 0xb1,
- 0xb7, 0x4b, 0xb3, 0xfe, 0x8f, 0x7e, 0x07, 0x57, 0xec, 0xef, 0x43, 0xdb,
- 0x66, 0x62, 0x15, 0x61, 0xcf, 0x60, 0x0d, 0xa4, 0xd8, 0xde, 0xf8, 0xe0,
- 0xc3, 0x62, 0x08, 0x3d, 0x54, 0x13, 0xeb, 0x49, 0xca, 0x59, 0x54, 0x85,
- 0x26, 0xe5, 0x2b, 0x8f, 0x1b, 0x9f, 0xeb, 0xf5, 0xa1, 0x91, 0xc2, 0x33,
- 0x49, 0xd8, 0x43, 0x63, 0x6a, 0x52, 0x4b, 0xd2, 0x8f, 0xe8, 0x70, 0x51,
- 0x4d, 0xd1, 0x89, 0x69, 0x7b, 0xc7, 0x70, 0xf6, 0xb3, 0xdc, 0x12, 0x74,
- 0xdb, 0x7b, 0x5d, 0x4b, 0x56, 0xd3, 0x96, 0xbf, 0x15, 0x77, 0xa1, 0xb0,
- 0xf4, 0xa2, 0x25, 0xf2, 0xaf, 0x1c, 0x92, 0x67, 0x18, 0xe5, 0xf4, 0x06,
- 0x04, 0xef, 0x90, 0xb9, 0xe4, 0x00, 0xe4, 0xdd, 0x3a, 0xb5, 0x19, 0xff,
- 0x02, 0xba, 0xf4, 0x3c, 0xee, 0xe0, 0x8b, 0xeb, 0x37, 0x8b, 0xec, 0xf4,
- 0xd7, 0xac, 0xf2, 0xf6, 0xf0, 0x3d, 0xaf, 0xdd, 0x75, 0x91, 0x33, 0x19,
- 0x1d, 0x1c, 0x40, 0xcb, 0x74, 0x24, 0x19, 0x21, 0x93, 0xd9, 0x14, 0xfe,
- 0xac, 0x2a, 0x52, 0xc7, 0x8f, 0xd5, 0x04, 0x49, 0xe4, 0x8d, 0x63, 0x47,
- 0x88, 0x3c, 0x69, 0x83, 0xcb, 0xfe, 0x47, 0xbd, 0x2b, 0x7e, 0x4f, 0xc5,
- 0x95, 0xae, 0x0e, 0x9d, 0xd4, 0xd1, 0x43, 0xc0, 0x67, 0x73, 0xe3, 0x14,
- 0x08, 0x7e, 0xe5, 0x3f, 0x9f, 0x73, 0xb8, 0x33, 0x0a, 0xcf, 0x5d, 0x3f,
- 0x34, 0x87, 0x96, 0x8a, 0xee, 0x53, 0xe8, 0x25, 0x15, 0x02, 0x03, 0x01,
- 0x00, 0x01, 0xa3, 0x82, 0x01, 0x5b, 0x30, 0x82, 0x01, 0x57, 0x30, 0x0f,
- 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03,
- 0x01, 0x01, 0xff, 0x30, 0x31, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2a,
- 0x30, 0x28, 0x30, 0x26, 0xa0, 0x24, 0xa0, 0x22, 0x86, 0x20, 0x68, 0x74,
- 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x76, 0x65, 0x72,
- 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x63,
- 0x61, 0x33, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d,
- 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x3d,
- 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x36, 0x30, 0x34, 0x30, 0x32, 0x06,
- 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x2a, 0x30, 0x28, 0x06, 0x08, 0x2b,
- 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1c, 0x68, 0x74, 0x74,
- 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x76, 0x65, 0x72,
- 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70,
- 0x73, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14,
- 0x7f, 0xd3, 0x65, 0xa7, 0xc2, 0xdd, 0xec, 0xbb, 0xf0, 0x30, 0x09, 0xf3,
- 0x43, 0x39, 0xfa, 0x02, 0xaf, 0x33, 0x31, 0x33, 0x30, 0x6d, 0x06, 0x08,
- 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x0c, 0x04, 0x61, 0x30, 0x5f,
- 0xa1, 0x5d, 0xa0, 0x5b, 0x30, 0x59, 0x30, 0x57, 0x30, 0x55, 0x16, 0x09,
- 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0x30, 0x21, 0x30,
- 0x1f, 0x30, 0x07, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1a, 0x04, 0x14,
- 0x8f, 0xe5, 0xd3, 0x1a, 0x86, 0xac, 0x8d, 0x8e, 0x6b, 0xc3, 0xcf, 0x80,
- 0x6a, 0xd4, 0x48, 0x18, 0x2c, 0x7b, 0x19, 0x2e, 0x30, 0x25, 0x16, 0x23,
- 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e,
- 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d,
- 0x2f, 0x76, 0x73, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x67, 0x69, 0x66, 0x30,
- 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04,
- 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
- 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f,
- 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67,
- 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48,
- 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00,
- 0xa3, 0xcd, 0x7d, 0x1e, 0xf7, 0xc7, 0x75, 0x8d, 0x48, 0xe7, 0x56, 0x34,
- 0x4c, 0x00, 0x90, 0x75, 0xa9, 0x51, 0xa5, 0x56, 0xc1, 0x6d, 0xbc, 0xfe,
- 0xf5, 0x53, 0x22, 0xe9, 0x98, 0xa2, 0xac, 0x9a, 0x7e, 0x70, 0x1e, 0xb3,
- 0x8e, 0x3b, 0x45, 0xe3, 0x86, 0x95, 0x31, 0xda, 0x6d, 0x4c, 0xfb, 0x34,
- 0x50, 0x80, 0x96, 0xcd, 0x24, 0xf2, 0x40, 0xdf, 0x04, 0x3f, 0xe2, 0x65,
- 0xce, 0x34, 0x22, 0x61, 0x15, 0xea, 0x66, 0x70, 0x64, 0xd2, 0xf1, 0x6e,
- 0xf3, 0xca, 0x18, 0x59, 0x6a, 0x41, 0x46, 0x7e, 0x82, 0xde, 0x19, 0xb0,
- 0x70, 0x31, 0x56, 0x69, 0x0d, 0x0c, 0xe6, 0x1d, 0x9d, 0x71, 0x58, 0xdc,
- 0xcc, 0xde, 0x62, 0xf5, 0xe1, 0x7a, 0x10, 0x02, 0xd8, 0x7a, 0xdc, 0x3b,
- 0xfa, 0x57, 0xbd, 0xc9, 0xe9, 0x8f, 0x46, 0x21, 0x39, 0x9f, 0x51, 0x65,
- 0x4c, 0x8e, 0x3a, 0xbe, 0x28, 0x41, 0x70, 0x1d,
-}
-
-var certSet2Cert21 = []byte{
- 0x30, 0x82, 0x04, 0x94, 0x30, 0x82, 0x03, 0x7c, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x01, 0xfd, 0xa3, 0xeb, 0x6e, 0xca, 0x75, 0xc8, 0x88,
- 0x43, 0x8b, 0x72, 0x4b, 0xcf, 0xbc, 0x91, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x61,
- 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55,
- 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c,
- 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63,
- 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77,
- 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e,
- 0x63, 0x6f, 0x6d, 0x31, 0x20, 0x30, 0x1e, 0x06, 0x03, 0x55, 0x04, 0x03,
- 0x13, 0x17, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x47,
- 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43,
- 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x30, 0x33, 0x30, 0x38, 0x31,
- 0x32, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x33, 0x30, 0x33,
- 0x30, 0x38, 0x31, 0x32, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x4d, 0x31,
- 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53,
- 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, 0x44,
- 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x31,
- 0x27, 0x30, 0x25, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1e, 0x44, 0x69,
- 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x53, 0x48, 0x41, 0x32, 0x20,
- 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65,
- 0x72, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09,
- 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03,
- 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01,
- 0x00, 0xdc, 0xae, 0x58, 0x90, 0x4d, 0xc1, 0xc4, 0x30, 0x15, 0x90, 0x35,
- 0x5b, 0x6e, 0x3c, 0x82, 0x15, 0xf5, 0x2c, 0x5c, 0xbd, 0xe3, 0xdb, 0xff,
- 0x71, 0x43, 0xfa, 0x64, 0x25, 0x80, 0xd4, 0xee, 0x18, 0xa2, 0x4d, 0xf0,
- 0x66, 0xd0, 0x0a, 0x73, 0x6e, 0x11, 0x98, 0x36, 0x17, 0x64, 0xaf, 0x37,
- 0x9d, 0xfd, 0xfa, 0x41, 0x84, 0xaf, 0xc7, 0xaf, 0x8c, 0xfe, 0x1a, 0x73,
- 0x4d, 0xcf, 0x33, 0x97, 0x90, 0xa2, 0x96, 0x87, 0x53, 0x83, 0x2b, 0xb9,
- 0xa6, 0x75, 0x48, 0x2d, 0x1d, 0x56, 0x37, 0x7b, 0xda, 0x31, 0x32, 0x1a,
- 0xd7, 0xac, 0xab, 0x06, 0xf4, 0xaa, 0x5d, 0x4b, 0xb7, 0x47, 0x46, 0xdd,
- 0x2a, 0x93, 0xc3, 0x90, 0x2e, 0x79, 0x80, 0x80, 0xef, 0x13, 0x04, 0x6a,
- 0x14, 0x3b, 0xb5, 0x9b, 0x92, 0xbe, 0xc2, 0x07, 0x65, 0x4e, 0xfc, 0xda,
- 0xfc, 0xff, 0x7a, 0xae, 0xdc, 0x5c, 0x7e, 0x55, 0x31, 0x0c, 0xe8, 0x39,
- 0x07, 0xa4, 0xd7, 0xbe, 0x2f, 0xd3, 0x0b, 0x6a, 0xd2, 0xb1, 0xdf, 0x5f,
- 0xfe, 0x57, 0x74, 0x53, 0x3b, 0x35, 0x80, 0xdd, 0xae, 0x8e, 0x44, 0x98,
- 0xb3, 0x9f, 0x0e, 0xd3, 0xda, 0xe0, 0xd7, 0xf4, 0x6b, 0x29, 0xab, 0x44,
- 0xa7, 0x4b, 0x58, 0x84, 0x6d, 0x92, 0x4b, 0x81, 0xc3, 0xda, 0x73, 0x8b,
- 0x12, 0x97, 0x48, 0x90, 0x04, 0x45, 0x75, 0x1a, 0xdd, 0x37, 0x31, 0x97,
- 0x92, 0xe8, 0xcd, 0x54, 0x0d, 0x3b, 0xe4, 0xc1, 0x3f, 0x39, 0x5e, 0x2e,
- 0xb8, 0xf3, 0x5c, 0x7e, 0x10, 0x8e, 0x86, 0x41, 0x00, 0x8d, 0x45, 0x66,
- 0x47, 0xb0, 0xa1, 0x65, 0xce, 0xa0, 0xaa, 0x29, 0x09, 0x4e, 0xf3, 0x97,
- 0xeb, 0xe8, 0x2e, 0xab, 0x0f, 0x72, 0xa7, 0x30, 0x0e, 0xfa, 0xc7, 0xf4,
- 0xfd, 0x14, 0x77, 0xc3, 0xa4, 0x5b, 0x28, 0x57, 0xc2, 0xb3, 0xf9, 0x82,
- 0xfd, 0xb7, 0x45, 0x58, 0x9b, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82,
- 0x01, 0x5a, 0x30, 0x82, 0x01, 0x56, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d,
- 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02,
- 0x01, 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff,
- 0x04, 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 0x34, 0x06, 0x08, 0x2b, 0x06,
- 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x28, 0x30, 0x26, 0x30, 0x24,
- 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18,
- 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e,
- 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d,
- 0x30, 0x7b, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x74, 0x30, 0x72, 0x30,
- 0x37, 0xa0, 0x35, 0xa0, 0x33, 0x86, 0x31, 0x68, 0x74, 0x74, 0x70, 0x3a,
- 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x33, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63,
- 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x69, 0x67, 0x69,
- 0x43, 0x65, 0x72, 0x74, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x52, 0x6f,
- 0x6f, 0x74, 0x43, 0x41, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x37, 0xa0, 0x35,
- 0xa0, 0x33, 0x86, 0x31, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63,
- 0x72, 0x6c, 0x34, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74,
- 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72,
- 0x74, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x52, 0x6f, 0x6f, 0x74, 0x43,
- 0x41, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x3d, 0x06, 0x03, 0x55, 0x1d, 0x20,
- 0x04, 0x36, 0x30, 0x34, 0x30, 0x32, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00,
- 0x30, 0x2a, 0x30, 0x28, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07,
- 0x02, 0x01, 0x16, 0x1c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f,
- 0x77, 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74,
- 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x50, 0x53, 0x30, 0x1d, 0x06, 0x03,
- 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x0f, 0x80, 0x61, 0x1c, 0x82,
- 0x31, 0x61, 0xd5, 0x2f, 0x28, 0xe7, 0x8d, 0x46, 0x38, 0xb4, 0x2c, 0xe1,
- 0xc6, 0xd9, 0xe2, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18,
- 0x30, 0x16, 0x80, 0x14, 0x03, 0xde, 0x50, 0x35, 0x56, 0xd1, 0x4c, 0xbb,
- 0x66, 0xf0, 0xa3, 0xe2, 0x1b, 0x1b, 0xc3, 0x97, 0xb2, 0x3d, 0xd1, 0x55,
- 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
- 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x23, 0x3e, 0xdf, 0x4b,
- 0xd2, 0x31, 0x42, 0xa5, 0xb6, 0x7e, 0x42, 0x5c, 0x1a, 0x44, 0xcc, 0x69,
- 0xd1, 0x68, 0xb4, 0x5d, 0x4b, 0xe0, 0x04, 0x21, 0x6c, 0x4b, 0xe2, 0x6d,
- 0xcc, 0xb1, 0xe0, 0x97, 0x8f, 0xa6, 0x53, 0x09, 0xcd, 0xaa, 0x2a, 0x65,
- 0xe5, 0x39, 0x4f, 0x1e, 0x83, 0xa5, 0x6e, 0x5c, 0x98, 0xa2, 0x24, 0x26,
- 0xe6, 0xfb, 0xa1, 0xed, 0x93, 0xc7, 0x2e, 0x02, 0xc6, 0x4d, 0x4a, 0xbf,
- 0xb0, 0x42, 0xdf, 0x78, 0xda, 0xb3, 0xa8, 0xf9, 0x6d, 0xff, 0x21, 0x85,
- 0x53, 0x36, 0x60, 0x4c, 0x76, 0xce, 0xec, 0x38, 0xdc, 0xd6, 0x51, 0x80,
- 0xf0, 0xc5, 0xd6, 0xe5, 0xd4, 0x4d, 0x27, 0x64, 0xab, 0x9b, 0xc7, 0x3e,
- 0x71, 0xfb, 0x48, 0x97, 0xb8, 0x33, 0x6d, 0xc9, 0x13, 0x07, 0xee, 0x96,
- 0xa2, 0x1b, 0x18, 0x15, 0xf6, 0x5c, 0x4c, 0x40, 0xed, 0xb3, 0xc2, 0xec,
- 0xff, 0x71, 0xc1, 0xe3, 0x47, 0xff, 0xd4, 0xb9, 0x00, 0xb4, 0x37, 0x42,
- 0xda, 0x20, 0xc9, 0xea, 0x6e, 0x8a, 0xee, 0x14, 0x06, 0xae, 0x7d, 0xa2,
- 0x59, 0x98, 0x88, 0xa8, 0x1b, 0x6f, 0x2d, 0xf4, 0xf2, 0xc9, 0x14, 0x5f,
- 0x26, 0xcf, 0x2c, 0x8d, 0x7e, 0xed, 0x37, 0xc0, 0xa9, 0xd5, 0x39, 0xb9,
- 0x82, 0xbf, 0x19, 0x0c, 0xea, 0x34, 0xaf, 0x00, 0x21, 0x68, 0xf8, 0xad,
- 0x73, 0xe2, 0xc9, 0x32, 0xda, 0x38, 0x25, 0x0b, 0x55, 0xd3, 0x9a, 0x1d,
- 0xf0, 0x68, 0x86, 0xed, 0x2e, 0x41, 0x34, 0xef, 0x7c, 0xa5, 0x50, 0x1d,
- 0xbf, 0x3a, 0xf9, 0xd3, 0xc1, 0x08, 0x0c, 0xe6, 0xed, 0x1e, 0x8a, 0x58,
- 0x25, 0xe4, 0xb8, 0x77, 0xad, 0x2d, 0x6e, 0xf5, 0x52, 0xdd, 0xb4, 0x74,
- 0x8f, 0xab, 0x49, 0x2e, 0x9d, 0x3b, 0x93, 0x34, 0x28, 0x1f, 0x78, 0xce,
- 0x94, 0xea, 0xc7, 0xbd, 0xd3, 0xc9, 0x6d, 0x1c, 0xde, 0x5c, 0x32, 0xf3,
-}
-
-var certSet2Cert22 = []byte{
- 0x30, 0x82, 0x04, 0x9a, 0x30, 0x82, 0x03, 0x82, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x0b, 0x1d, 0xb1, 0xa9, 0x19, 0xf2, 0x4c, 0x3c, 0x4e,
- 0xfc, 0xb5, 0x7a, 0x6a, 0x4e, 0x6c, 0xbf, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x58,
- 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55,
- 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d,
- 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63,
- 0x2e, 0x31, 0x31, 0x30, 0x2f, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x28,
- 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x50, 0x72, 0x69,
- 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69,
- 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f,
- 0x72, 0x69, 0x74, 0x79, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x32, 0x30, 0x38,
- 0x32, 0x33, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32,
- 0x32, 0x30, 0x38, 0x32, 0x32, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a,
- 0x30, 0x58, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13,
- 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a,
- 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49,
- 0x6e, 0x63, 0x2e, 0x31, 0x31, 0x30, 0x2f, 0x06, 0x03, 0x55, 0x04, 0x03,
- 0x13, 0x28, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x45,
- 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x20, 0x56, 0x61, 0x6c, 0x69,
- 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x43,
- 0x41, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d,
- 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05,
- 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82,
- 0x01, 0x01, 0x00, 0x9e, 0xc6, 0x21, 0xcd, 0x2e, 0x3d, 0xd0, 0xbb, 0x2a,
- 0x4d, 0xa4, 0x7b, 0x1f, 0xa8, 0x1a, 0xc2, 0x03, 0xa6, 0xff, 0x43, 0x62,
- 0x5b, 0xbf, 0x91, 0xd1, 0x66, 0x52, 0xa9, 0x81, 0x90, 0x68, 0x31, 0x86,
- 0x16, 0xbb, 0x1d, 0x85, 0x58, 0xa9, 0x7e, 0x91, 0x6a, 0x1e, 0x4c, 0x31,
- 0xca, 0x21, 0xc4, 0xbe, 0x70, 0x1b, 0x9f, 0x8c, 0xe4, 0x05, 0x2d, 0x9c,
- 0xed, 0x11, 0x79, 0xad, 0x8f, 0x9c, 0x25, 0x86, 0x4c, 0xba, 0xf2, 0xe5,
- 0x62, 0x79, 0x8e, 0x22, 0x5f, 0x85, 0x7c, 0x22, 0x35, 0x38, 0x23, 0x8d,
- 0x80, 0x3c, 0xac, 0xcc, 0x2d, 0xfc, 0x58, 0xf2, 0x35, 0xbf, 0x66, 0x5b,
- 0xeb, 0xc1, 0x24, 0xf8, 0x70, 0x80, 0x74, 0x32, 0xf9, 0x46, 0xde, 0x32,
- 0x19, 0x80, 0x8c, 0xb7, 0xe7, 0x1a, 0xa1, 0xaa, 0x64, 0x98, 0x8d, 0xca,
- 0xce, 0x0e, 0xdc, 0x6b, 0xf7, 0xe2, 0x90, 0x0a, 0x6c, 0x1c, 0xa5, 0xf4,
- 0x90, 0x32, 0x52, 0xe5, 0xf1, 0x00, 0x42, 0x31, 0x91, 0x48, 0x42, 0x89,
- 0xa8, 0x5d, 0x7f, 0x63, 0x8d, 0x31, 0xb2, 0xd6, 0x48, 0x5c, 0x45, 0x45,
- 0x22, 0xc9, 0xc5, 0x59, 0x12, 0xab, 0x41, 0x94, 0xea, 0xfe, 0x9c, 0x46,
- 0x4d, 0x9a, 0xbc, 0x9c, 0xe0, 0xe2, 0xc6, 0x46, 0xb3, 0xe6, 0x7f, 0xdc,
- 0xf5, 0x0f, 0xa3, 0x13, 0x45, 0x86, 0x6d, 0x79, 0x78, 0xfc, 0xe1, 0x50,
- 0xcf, 0x09, 0x86, 0xe5, 0x9f, 0xbf, 0xcb, 0x3a, 0xd4, 0xe0, 0xb1, 0xd4,
- 0xff, 0xa8, 0x3f, 0x7d, 0x62, 0x1f, 0xc0, 0x6d, 0x78, 0x48, 0xc3, 0xd7,
- 0xa3, 0xa5, 0x23, 0x61, 0xc5, 0x3e, 0x35, 0x4d, 0xb2, 0xe5, 0xf8, 0xfd,
- 0x94, 0x4b, 0xbc, 0x73, 0x53, 0xaf, 0xe3, 0x9a, 0x69, 0x55, 0xbe, 0xcb,
- 0x67, 0xab, 0xe1, 0xbe, 0xef, 0x1b, 0xc2, 0x4d, 0xac, 0xcb, 0x29, 0x5c,
- 0xbc, 0xed, 0xb8, 0x62, 0x9d, 0x10, 0xe9, 0x02, 0x03, 0x01, 0x00, 0x01,
- 0xa3, 0x82, 0x01, 0x5e, 0x30, 0x82, 0x01, 0x5a, 0x30, 0x3d, 0x06, 0x08,
- 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x31, 0x30, 0x2f,
- 0x30, 0x2d, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01,
- 0x86, 0x21, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x45, 0x56, 0x53,
- 0x65, 0x63, 0x75, 0x72, 0x65, 0x2d, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x67,
- 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x30,
- 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30,
- 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x46, 0x06, 0x03, 0x55,
- 0x1d, 0x20, 0x04, 0x3f, 0x30, 0x3d, 0x30, 0x3b, 0x06, 0x04, 0x55, 0x1d,
- 0x20, 0x00, 0x30, 0x33, 0x30, 0x31, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05,
- 0x05, 0x07, 0x02, 0x01, 0x16, 0x25, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
- 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73,
- 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
- 0x63, 0x65, 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x41, 0x06, 0x03, 0x55,
- 0x1d, 0x1f, 0x04, 0x3a, 0x30, 0x38, 0x30, 0x36, 0xa0, 0x34, 0xa0, 0x32,
- 0x86, 0x30, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x45, 0x56, 0x53,
- 0x65, 0x63, 0x75, 0x72, 0x65, 0x2d, 0x63, 0x72, 0x6c, 0x2e, 0x67, 0x65,
- 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47,
- 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x50, 0x43, 0x41, 0x2e, 0x63,
- 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff,
- 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x2a, 0x06, 0x03, 0x55, 0x1d,
- 0x11, 0x04, 0x23, 0x30, 0x21, 0xa4, 0x1f, 0x30, 0x1d, 0x31, 0x1b, 0x30,
- 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x56, 0x65, 0x72, 0x69,
- 0x53, 0x69, 0x67, 0x6e, 0x4d, 0x50, 0x4b, 0x49, 0x2d, 0x32, 0x2d, 0x32,
- 0x35, 0x33, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04,
- 0x14, 0x6f, 0x26, 0x56, 0xd9, 0x5c, 0xe7, 0xf7, 0xc9, 0x04, 0x20, 0xf8,
- 0x1e, 0xba, 0x7c, 0x91, 0x27, 0x2f, 0x8c, 0xfa, 0x07, 0x30, 0x1f, 0x06,
- 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x2c, 0xd5,
- 0x50, 0x41, 0x97, 0x15, 0x8b, 0xf0, 0x8f, 0x36, 0x61, 0x5b, 0x4a, 0xfb,
- 0x6b, 0xd9, 0x99, 0xc9, 0x33, 0x92, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
- 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x01,
- 0x01, 0x00, 0x92, 0x77, 0xe9, 0x57, 0xc9, 0xeb, 0xc4, 0x45, 0x6f, 0xc9,
- 0x4c, 0x6e, 0x7d, 0x00, 0x12, 0x71, 0xa5, 0xe3, 0x39, 0xfe, 0x13, 0x84,
- 0x49, 0x6c, 0xe7, 0x49, 0x71, 0xf5, 0x2c, 0xc7, 0xc0, 0x36, 0xc2, 0x08,
- 0x58, 0xf3, 0x83, 0x75, 0xc5, 0x72, 0xd8, 0x8d, 0x78, 0xf4, 0x65, 0xea,
- 0x8c, 0xd5, 0xe3, 0xa5, 0x0e, 0xa9, 0xad, 0xeb, 0xe3, 0xa1, 0x23, 0xae,
- 0x93, 0xb7, 0xd8, 0x75, 0x75, 0x4a, 0x59, 0xcb, 0xf2, 0x9e, 0xdb, 0x40,
- 0xbf, 0x4e, 0x89, 0xfe, 0x95, 0x42, 0x29, 0x34, 0x7b, 0xf4, 0xdd, 0x6a,
- 0x0d, 0x74, 0x5f, 0xc7, 0x11, 0x13, 0x2e, 0xdd, 0x11, 0x6e, 0xc6, 0xe3,
- 0x5b, 0xb3, 0xcf, 0xa6, 0x8d, 0xe5, 0xf7, 0x67, 0x7b, 0xba, 0xb3, 0xb3,
- 0x69, 0x70, 0x14, 0xb0, 0xc2, 0x99, 0xb4, 0xd2, 0x76, 0x5b, 0x38, 0x17,
- 0x39, 0x45, 0x1b, 0x82, 0xf1, 0x53, 0xb8, 0x3d, 0x55, 0x39, 0x0b, 0x7f,
- 0xff, 0x98, 0xad, 0x6e, 0x96, 0x9a, 0xb6, 0x6a, 0x4c, 0x7a, 0x5e, 0xbd,
- 0xb1, 0x86, 0x12, 0x9d, 0x7c, 0x2c, 0x62, 0xbb, 0x09, 0x93, 0x5f, 0x3f,
- 0xd8, 0xb5, 0x8a, 0xc3, 0x49, 0x28, 0x0f, 0x0b, 0xf9, 0x39, 0x22, 0x1a,
- 0xfe, 0x5d, 0xd3, 0xe8, 0x18, 0x5f, 0x9d, 0x5f, 0xb4, 0xc0, 0x20, 0xc6,
- 0xa9, 0x49, 0x0d, 0x55, 0x73, 0x6a, 0x09, 0x7a, 0xff, 0xa2, 0x99, 0xbf,
- 0xd8, 0xbb, 0x91, 0xdc, 0x30, 0x39, 0xae, 0x28, 0x4b, 0xf6, 0xc5, 0x77,
- 0x24, 0xe8, 0xd6, 0xc6, 0xa7, 0xa0, 0x4e, 0xf2, 0xa6, 0x99, 0x75, 0xcd,
- 0xdd, 0x57, 0xdd, 0x0a, 0x47, 0x92, 0xcb, 0xbb, 0xb7, 0x48, 0xfa, 0x21,
- 0xf0, 0x69, 0x21, 0xff, 0xe5, 0x0c, 0xaa, 0x0c, 0xb1, 0xea, 0xdd, 0x05,
- 0x1c, 0x19, 0x8e, 0xd1, 0x2a, 0x79, 0x68, 0x02, 0x5e, 0xcc, 0x38, 0xe6,
- 0x29, 0xc4, 0x77, 0xf5, 0x19, 0x1c,
-}
-
-var certSet2Cert23 = []byte{
- 0x30, 0x82, 0x04, 0xa0, 0x30, 0x82, 0x03, 0x88, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x03, 0x39, 0x14, 0x84, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
- 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x68, 0x31,
- 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53,
- 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x1c, 0x53,
- 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x54, 0x65, 0x63,
- 0x68, 0x6e, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x65, 0x73, 0x2c, 0x20, 0x49,
- 0x6e, 0x63, 0x2e, 0x31, 0x32, 0x30, 0x30, 0x06, 0x03, 0x55, 0x04, 0x0b,
- 0x13, 0x29, 0x53, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20,
- 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x32, 0x20, 0x43, 0x65, 0x72, 0x74,
- 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75,
- 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, 0x1e, 0x17, 0x0d, 0x31,
- 0x34, 0x30, 0x31, 0x30, 0x31, 0x30, 0x37, 0x30, 0x30, 0x30, 0x30, 0x5a,
- 0x17, 0x0d, 0x33, 0x31, 0x30, 0x35, 0x33, 0x30, 0x30, 0x37, 0x30, 0x30,
- 0x30, 0x30, 0x5a, 0x30, 0x81, 0x8f, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03,
- 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, 0x30, 0x0e, 0x06,
- 0x03, 0x55, 0x04, 0x08, 0x13, 0x07, 0x41, 0x72, 0x69, 0x7a, 0x6f, 0x6e,
- 0x61, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x0a,
- 0x53, 0x63, 0x6f, 0x74, 0x74, 0x73, 0x64, 0x61, 0x6c, 0x65, 0x31, 0x25,
- 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x1c, 0x53, 0x74, 0x61,
- 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x54, 0x65, 0x63, 0x68, 0x6e,
- 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x65, 0x73, 0x2c, 0x20, 0x49, 0x6e, 0x63,
- 0x2e, 0x31, 0x32, 0x30, 0x30, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x29,
- 0x53, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x52, 0x6f,
- 0x6f, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
- 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79,
- 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06,
- 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00,
- 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01,
- 0x01, 0x00, 0xbd, 0xed, 0xc1, 0x03, 0xfc, 0xf6, 0x8f, 0xfc, 0x02, 0xb1,
- 0x6f, 0x5b, 0x9f, 0x48, 0xd9, 0x9d, 0x79, 0xe2, 0xa2, 0xb7, 0x03, 0x61,
- 0x56, 0x18, 0xc3, 0x47, 0xb6, 0xd7, 0xca, 0x3d, 0x35, 0x2e, 0x89, 0x43,
- 0xf7, 0xa1, 0x69, 0x9b, 0xde, 0x8a, 0x1a, 0xfd, 0x13, 0x20, 0x9c, 0xb4,
- 0x49, 0x77, 0x32, 0x29, 0x56, 0xfd, 0xb9, 0xec, 0x8c, 0xdd, 0x22, 0xfa,
- 0x72, 0xdc, 0x27, 0x61, 0x97, 0xee, 0xf6, 0x5a, 0x84, 0xec, 0x6e, 0x19,
- 0xb9, 0x89, 0x2c, 0xdc, 0x84, 0x5b, 0xd5, 0x74, 0xfb, 0x6b, 0x5f, 0xc5,
- 0x89, 0xa5, 0x10, 0x52, 0x89, 0x46, 0x55, 0xf4, 0xb8, 0x75, 0x1c, 0xe6,
- 0x7f, 0xe4, 0x54, 0xae, 0x4b, 0xf8, 0x55, 0x72, 0x57, 0x02, 0x19, 0xf8,
- 0x17, 0x71, 0x59, 0xeb, 0x1e, 0x28, 0x07, 0x74, 0xc5, 0x9d, 0x48, 0xbe,
- 0x6c, 0xb4, 0xf4, 0xa4, 0xb0, 0xf3, 0x64, 0x37, 0x79, 0x92, 0xc0, 0xec,
- 0x46, 0x5e, 0x7f, 0xe1, 0x6d, 0x53, 0x4c, 0x62, 0xaf, 0xcd, 0x1f, 0x0b,
- 0x63, 0xbb, 0x3a, 0x9d, 0xfb, 0xfc, 0x79, 0x00, 0x98, 0x61, 0x74, 0xcf,
- 0x26, 0x82, 0x40, 0x63, 0xf3, 0xb2, 0x72, 0x6a, 0x19, 0x0d, 0x99, 0xca,
- 0xd4, 0x0e, 0x75, 0xcc, 0x37, 0xfb, 0x8b, 0x89, 0xc1, 0x59, 0xf1, 0x62,
- 0x7f, 0x5f, 0xb3, 0x5f, 0x65, 0x30, 0xf8, 0xa7, 0xb7, 0x4d, 0x76, 0x5a,
- 0x1e, 0x76, 0x5e, 0x34, 0xc0, 0xe8, 0x96, 0x56, 0x99, 0x8a, 0xb3, 0xf0,
- 0x7f, 0xa4, 0xcd, 0xbd, 0xdc, 0x32, 0x31, 0x7c, 0x91, 0xcf, 0xe0, 0x5f,
- 0x11, 0xf8, 0x6b, 0xaa, 0x49, 0x5c, 0xd1, 0x99, 0x94, 0xd1, 0xa2, 0xe3,
- 0x63, 0x5b, 0x09, 0x76, 0xb5, 0x56, 0x62, 0xe1, 0x4b, 0x74, 0x1d, 0x96,
- 0xd4, 0x26, 0xd4, 0x08, 0x04, 0x59, 0xd0, 0x98, 0x0e, 0x0e, 0xe6, 0xde,
- 0xfc, 0xc3, 0xec, 0x1f, 0x90, 0xf1, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3,
- 0x82, 0x01, 0x29, 0x30, 0x82, 0x01, 0x25, 0x30, 0x0f, 0x06, 0x03, 0x55,
- 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff,
- 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04,
- 0x03, 0x02, 0x01, 0x06, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04,
- 0x16, 0x04, 0x14, 0x7c, 0x0c, 0x32, 0x1f, 0xa7, 0xd9, 0x30, 0x7f, 0xc4,
- 0x7d, 0x68, 0xa3, 0x62, 0xa8, 0xa1, 0xce, 0xab, 0x07, 0x5b, 0x27, 0x30,
- 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14,
- 0xbf, 0x5f, 0xb7, 0xd1, 0xce, 0xdd, 0x1f, 0x86, 0xf4, 0x5b, 0x55, 0xac,
- 0xdc, 0xd7, 0x10, 0xc2, 0x0e, 0xa9, 0x88, 0xe7, 0x30, 0x3a, 0x06, 0x08,
- 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x2e, 0x30, 0x2c,
- 0x30, 0x2a, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01,
- 0x86, 0x1e, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73,
- 0x70, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x74,
- 0x65, 0x63, 0x68, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x30, 0x38, 0x06, 0x03,
- 0x55, 0x1d, 0x1f, 0x04, 0x31, 0x30, 0x2f, 0x30, 0x2d, 0xa0, 0x2b, 0xa0,
- 0x29, 0x86, 0x27, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72,
- 0x6c, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x74,
- 0x65, 0x63, 0x68, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x66, 0x72, 0x6f,
- 0x6f, 0x74, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x4c, 0x06, 0x03, 0x55, 0x1d,
- 0x20, 0x04, 0x45, 0x30, 0x43, 0x30, 0x41, 0x06, 0x04, 0x55, 0x1d, 0x20,
- 0x00, 0x30, 0x39, 0x30, 0x37, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
- 0x07, 0x02, 0x01, 0x16, 0x2b, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f,
- 0x2f, 0x63, 0x65, 0x72, 0x74, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x66,
- 0x69, 0x65, 0x6c, 0x64, 0x74, 0x65, 0x63, 0x68, 0x2e, 0x63, 0x6f, 0x6d,
- 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f,
- 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
- 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x85, 0x63, 0xc1, 0xd9,
- 0xdd, 0xb9, 0xff, 0xa9, 0xbd, 0xa6, 0x19, 0xdc, 0xbf, 0x13, 0x3a, 0x11,
- 0x38, 0x22, 0x54, 0xb1, 0xac, 0x05, 0x10, 0xfb, 0x7c, 0xb3, 0x96, 0x3f,
- 0x31, 0x8b, 0x66, 0xff, 0x88, 0xf3, 0xe1, 0xbf, 0xfb, 0xc7, 0x1f, 0x00,
- 0xff, 0x46, 0x6a, 0x8b, 0x61, 0x32, 0xc9, 0x01, 0x51, 0x76, 0xfb, 0x9a,
- 0xc6, 0xfa, 0x20, 0x51, 0xc8, 0x46, 0xc4, 0x98, 0xd7, 0x79, 0xa3, 0xe3,
- 0x04, 0x72, 0x3f, 0x8b, 0x4d, 0x34, 0x53, 0x67, 0xec, 0x33, 0x2c, 0x7b,
- 0xe8, 0x94, 0x01, 0x28, 0x7c, 0x3a, 0x34, 0x5b, 0x02, 0x77, 0x16, 0x8d,
- 0x40, 0x25, 0x33, 0xb0, 0xbc, 0x6c, 0x97, 0xd7, 0x05, 0x7a, 0xff, 0x8c,
- 0x85, 0xce, 0x6f, 0xa0, 0x53, 0x00, 0x17, 0x6e, 0x1e, 0x6c, 0xbd, 0x22,
- 0xd7, 0x0a, 0x88, 0x37, 0xf6, 0x7d, 0xeb, 0x99, 0x41, 0xef, 0x27, 0xcb,
- 0x8c, 0x60, 0x6b, 0x4c, 0x01, 0x7e, 0x65, 0x50, 0x0b, 0x4f, 0xb8, 0x95,
- 0x9a, 0x9a, 0x6e, 0x34, 0xfd, 0x73, 0x3a, 0x33, 0xf1, 0x91, 0xd5, 0xf3,
- 0x4e, 0x2d, 0x74, 0xe8, 0xef, 0xd3, 0x90, 0x35, 0xf1, 0x06, 0x68, 0x64,
- 0xd4, 0xd0, 0x13, 0xfd, 0x52, 0xd3, 0xc6, 0x6d, 0xc1, 0x3a, 0x8a, 0x31,
- 0xdd, 0x05, 0x26, 0x35, 0x4a, 0x8c, 0x65, 0xb8, 0x52, 0x6b, 0x81, 0xec,
- 0xd2, 0x9c, 0xb5, 0x34, 0x10, 0x97, 0x9c, 0x3e, 0xc6, 0x2f, 0xed, 0x8e,
- 0x42, 0x42, 0x24, 0x2e, 0xe9, 0x73, 0x9a, 0x25, 0xf9, 0x11, 0xf1, 0xf2,
- 0x23, 0x69, 0xcb, 0xe5, 0x94, 0x69, 0xa0, 0xd2, 0xdc, 0xb0, 0xfc, 0x44,
- 0x89, 0xac, 0x17, 0xa8, 0xcc, 0xd5, 0x37, 0x77, 0x16, 0xc5, 0x80, 0xb9,
- 0x0c, 0x8f, 0x57, 0x02, 0x55, 0x99, 0x85, 0x7b, 0x49, 0xf0, 0x2e, 0x5b,
- 0xa0, 0xc2, 0x57, 0x53, 0x5d, 0xa2, 0xe8, 0xa6, 0x37, 0xc3, 0x01, 0xfa,
-}
-
-var certSet2Cert24 = []byte{
- 0x30, 0x82, 0x04, 0xa6, 0x30, 0x82, 0x03, 0x8e, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x28, 0x1c, 0x89, 0x29, 0x66, 0x14, 0x43, 0x80, 0x42,
- 0x63, 0x55, 0x3a, 0x32, 0x40, 0xae, 0xb3, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81,
- 0x98, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
- 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13,
- 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e,
- 0x63, 0x2e, 0x31, 0x39, 0x30, 0x37, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13,
- 0x30, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x38, 0x20, 0x47, 0x65,
- 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20,
- 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72,
- 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c,
- 0x79, 0x31, 0x36, 0x30, 0x34, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2d,
- 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x50, 0x72, 0x69,
- 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69,
- 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f,
- 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x30, 0x1e, 0x17,
- 0x0d, 0x31, 0x35, 0x30, 0x36, 0x33, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
- 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x35, 0x30, 0x36, 0x32, 0x39, 0x32, 0x33,
- 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x47, 0x31, 0x0b, 0x30, 0x09, 0x06,
- 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14,
- 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72,
- 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x20, 0x30, 0x1e,
- 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x17, 0x52, 0x61, 0x70, 0x69, 0x64,
- 0x53, 0x53, 0x4c, 0x20, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x20, 0x43,
- 0x41, 0x20, 0x2d, 0x20, 0x47, 0x34, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d,
- 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05,
- 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82,
- 0x01, 0x01, 0x00, 0xc0, 0x9e, 0x3a, 0x0f, 0x9a, 0xb2, 0xba, 0xd3, 0xd2,
- 0xdc, 0x15, 0xec, 0xd0, 0x30, 0x54, 0x59, 0x30, 0x4d, 0x40, 0x51, 0xae,
- 0x42, 0x71, 0x71, 0xd2, 0x8d, 0x53, 0x73, 0x81, 0xfe, 0xb8, 0xe0, 0xc4,
- 0x96, 0xc5, 0x8e, 0x7e, 0xc2, 0xf1, 0xb7, 0x63, 0x4a, 0xcf, 0xa7, 0x1e,
- 0x3f, 0xa8, 0xe7, 0xce, 0x53, 0xa0, 0xfa, 0x2d, 0xf7, 0xd6, 0xe6, 0xce,
- 0x70, 0x11, 0xa6, 0xee, 0xe1, 0x03, 0x52, 0xd2, 0x68, 0xde, 0x3d, 0x08,
- 0x0d, 0x87, 0xfd, 0x1c, 0xd7, 0x0b, 0x97, 0x62, 0x6d, 0x82, 0x30, 0x76,
- 0x1b, 0x47, 0x3a, 0xc4, 0xf7, 0xce, 0xed, 0x1d, 0x7c, 0x8c, 0xb7, 0x17,
- 0x8e, 0x53, 0x80, 0x1e, 0x1d, 0x0f, 0x5d, 0x8c, 0xf9, 0x90, 0xe4, 0x04,
- 0x1e, 0x02, 0x7e, 0xcb, 0xb0, 0x49, 0xef, 0xda, 0x52, 0x25, 0xfb, 0xfb,
- 0x67, 0xed, 0xdd, 0x84, 0x74, 0x59, 0x84, 0x0e, 0xf3, 0xde, 0x70, 0x66,
- 0x8d, 0xe4, 0x52, 0x38, 0xf7, 0x53, 0x5a, 0x37, 0x13, 0x67, 0x0b, 0x3e,
- 0xbb, 0xa8, 0x58, 0xb7, 0x2e, 0xed, 0xff, 0xb7, 0x5e, 0x11, 0x73, 0xb9,
- 0x77, 0x45, 0x52, 0x67, 0x46, 0xae, 0xc4, 0xdc, 0x24, 0x81, 0x89, 0x76,
- 0x0a, 0xca, 0xa1, 0x6c, 0x66, 0x73, 0x04, 0x82, 0xaa, 0xf5, 0x70, 0x6c,
- 0x5f, 0x1b, 0x9a, 0x00, 0x79, 0x46, 0xd6, 0x7f, 0x7a, 0x26, 0x17, 0x30,
- 0xcf, 0x39, 0x4b, 0x2c, 0x74, 0xd9, 0x89, 0x44, 0x76, 0x10, 0xd0, 0xed,
- 0xf7, 0x8b, 0xbb, 0x89, 0x05, 0x75, 0x4d, 0x0b, 0x0d, 0xb3, 0xda, 0xe9,
- 0xbf, 0xf1, 0x6a, 0x7d, 0x2a, 0x11, 0xdb, 0x1e, 0x9f, 0x8c, 0xe3, 0xc4,
- 0x06, 0x69, 0xe1, 0x1d, 0x88, 0x45, 0x39, 0xd1, 0x6e, 0x55, 0xd8, 0xaa,
- 0xb7, 0x9b, 0x6f, 0xea, 0xf4, 0xde, 0xac, 0x17, 0x11, 0x92, 0x5d, 0x40,
- 0x9b, 0x83, 0x7b, 0x9a, 0xe2, 0xf7, 0xa9, 0x02, 0x03, 0x01, 0x00, 0x01,
- 0xa3, 0x82, 0x01, 0x3a, 0x30, 0x82, 0x01, 0x36, 0x30, 0x2e, 0x06, 0x08,
- 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x22, 0x30, 0x20,
- 0x30, 0x1e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01,
- 0x86, 0x12, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x2e, 0x73,
- 0x79, 0x6d, 0x63, 0x64, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x12, 0x06, 0x03,
- 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01,
- 0xff, 0x02, 0x01, 0x00, 0x30, 0x49, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04,
- 0x42, 0x30, 0x40, 0x30, 0x3e, 0x06, 0x06, 0x67, 0x81, 0x0c, 0x01, 0x02,
- 0x01, 0x30, 0x34, 0x30, 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
- 0x07, 0x02, 0x01, 0x16, 0x26, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f,
- 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73,
- 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
- 0x63, 0x65, 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x36, 0x06, 0x03, 0x55,
- 0x1d, 0x1f, 0x04, 0x2f, 0x30, 0x2d, 0x30, 0x2b, 0xa0, 0x29, 0xa0, 0x27,
- 0x86, 0x25, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x2e, 0x73,
- 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x65, 0x6f,
- 0x54, 0x72, 0x75, 0x73, 0x74, 0x50, 0x43, 0x41, 0x2d, 0x47, 0x33, 0x2e,
- 0x63, 0x72, 0x6c, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x04, 0x16,
- 0x30, 0x14, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x01,
- 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x02, 0x30, 0x0e,
- 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02,
- 0x01, 0x06, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04,
- 0x14, 0xf3, 0xb5, 0x56, 0x0c, 0xc4, 0x09, 0xb0, 0xb4, 0xcf, 0x1f, 0xaa,
- 0xf9, 0xdd, 0x23, 0x56, 0xf0, 0x77, 0xe8, 0xa1, 0xf9, 0x30, 0x1f, 0x06,
- 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xc4, 0x79,
- 0xca, 0x8e, 0xa1, 0x4e, 0x03, 0x1d, 0x1c, 0xdc, 0x6b, 0xdb, 0x31, 0x5b,
- 0x94, 0x3e, 0x3f, 0x30, 0x7f, 0x2d, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
- 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01,
- 0x01, 0x00, 0xc3, 0x7e, 0xd8, 0x83, 0x4b, 0x04, 0x4c, 0x55, 0x29, 0x2a,
- 0x4f, 0x14, 0x9d, 0x9a, 0x6e, 0xde, 0x90, 0x70, 0xc1, 0xa4, 0x26, 0x4c,
- 0x88, 0x8e, 0x78, 0x48, 0xef, 0xbd, 0x9c, 0xb0, 0xa0, 0xf5, 0xf0, 0x66,
- 0xfc, 0xfe, 0x59, 0x26, 0xe1, 0x79, 0xef, 0xc8, 0xb7, 0x60, 0x64, 0xa8,
- 0x8b, 0x47, 0xea, 0x2f, 0xe0, 0x83, 0x99, 0xda, 0x41, 0x19, 0xd7, 0xc5,
- 0xbe, 0x05, 0xfa, 0xf2, 0x90, 0x11, 0xf0, 0x0a, 0xff, 0x6c, 0xdc, 0x05,
- 0xb4, 0xd8, 0x06, 0x6f, 0xa4, 0x6f, 0x8d, 0xbe, 0x20, 0x2b, 0x54, 0xdb,
- 0xf9, 0xa2, 0x45, 0x83, 0x9a, 0x1e, 0xa5, 0x21, 0x89, 0x35, 0x1d, 0x7c,
- 0x20, 0x5c, 0x17, 0xfd, 0x04, 0x2e, 0x45, 0xd8, 0xb2, 0xc6, 0xf8, 0x42,
- 0x99, 0xfc, 0x54, 0x08, 0x4e, 0x4b, 0x80, 0x5f, 0x39, 0x37, 0xba, 0x95,
- 0x4e, 0xa6, 0x37, 0x0a, 0x9e, 0x93, 0x5e, 0x87, 0x5b, 0xe9, 0x90, 0xd6,
- 0xa8, 0xb6, 0x65, 0x08, 0x8d, 0x61, 0x49, 0xeb, 0x83, 0x20, 0xa9, 0x5d,
- 0x1b, 0x16, 0x60, 0x62, 0x6b, 0x2f, 0x54, 0xfb, 0x5a, 0x02, 0x0d, 0x7a,
- 0x27, 0xe2, 0x4b, 0xe1, 0x05, 0x14, 0xc2, 0xe4, 0xe9, 0xf9, 0x70, 0xc0,
- 0xd9, 0xf7, 0x34, 0x65, 0x0e, 0xa2, 0x91, 0x4b, 0xac, 0x28, 0xf2, 0xb7,
- 0x08, 0x0f, 0x98, 0xca, 0xd7, 0x3e, 0x70, 0xb6, 0xc8, 0x0b, 0xf1, 0x8b,
- 0x9c, 0x51, 0xf8, 0xc6, 0x10, 0x6c, 0xd2, 0x53, 0x4f, 0x62, 0x8c, 0x11,
- 0x00, 0x3e, 0x88, 0xdf, 0xbf, 0xe6, 0xd2, 0xcc, 0x70, 0xbd, 0xed, 0x25,
- 0x9c, 0xfb, 0xdd, 0x24, 0x0a, 0xbd, 0x59, 0x91, 0x4a, 0x42, 0x03, 0x38,
- 0x12, 0x71, 0x32, 0x88, 0x76, 0xa0, 0x8e, 0x7c, 0xbb, 0x32, 0xef, 0x88,
- 0x2a, 0x1b, 0xd4, 0x6a, 0x6f, 0x50, 0xb9, 0x52, 0x67, 0x8b, 0xab, 0x30,
- 0xfa, 0x1f, 0xfd, 0xe3, 0x24, 0x9a,
-}
-
-var certSet2Cert25 = []byte{
- 0x30, 0x82, 0x04, 0xaf, 0x30, 0x82, 0x03, 0x97, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x5d, 0x72, 0xfb, 0x33, 0x76, 0x20, 0xf6, 0x4c, 0x72,
- 0x80, 0xdb, 0xe9, 0x12, 0x81, 0xff, 0x6a, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81,
- 0xa9, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
- 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13,
- 0x0c, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63,
- 0x2e, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f,
- 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x44,
- 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x38, 0x30, 0x36, 0x06,
- 0x03, 0x55, 0x04, 0x0b, 0x13, 0x2f, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30,
- 0x30, 0x36, 0x20, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49,
- 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75,
- 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65,
- 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55,
- 0x04, 0x03, 0x13, 0x16, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x50,
- 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20,
- 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31, 0x30, 0x33, 0x31,
- 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x33, 0x31,
- 0x30, 0x33, 0x30, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x44,
- 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55,
- 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c,
- 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e,
- 0x31, 0x1e, 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x15, 0x74,
- 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x45, 0x56, 0x20, 0x53, 0x53, 0x4c,
- 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x30, 0x82, 0x01, 0x22,
- 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
- 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a,
- 0x02, 0x82, 0x01, 0x01, 0x00, 0xc4, 0xdd, 0xda, 0x94, 0x1e, 0x32, 0xb2,
- 0x2e, 0xa0, 0x83, 0xc0, 0xa6, 0x7d, 0x5f, 0x65, 0x2d, 0xfd, 0x27, 0xb8,
- 0x73, 0x0e, 0xf8, 0x0b, 0xa9, 0xd4, 0x56, 0x26, 0x69, 0x98, 0x67, 0x35,
- 0x39, 0x64, 0x58, 0xce, 0x82, 0x6f, 0x98, 0x94, 0xd1, 0x8f, 0xe0, 0x90,
- 0xd6, 0xed, 0x55, 0x4b, 0x98, 0x4b, 0xd7, 0x10, 0x59, 0x34, 0x02, 0x1b,
- 0xe7, 0x51, 0x31, 0x51, 0xc4, 0x38, 0xc2, 0xbc, 0xdb, 0x03, 0x5c, 0xca,
- 0xe1, 0x7c, 0xdc, 0x4f, 0x59, 0x97, 0xea, 0x07, 0x7f, 0x0f, 0x85, 0x3e,
- 0x92, 0xea, 0xaa, 0xa7, 0xd9, 0xbe, 0x01, 0x41, 0xe4, 0x62, 0x56, 0x47,
- 0x36, 0xbd, 0x57, 0x91, 0xe6, 0x21, 0xd3, 0xf8, 0x41, 0x0b, 0xd8, 0xba,
- 0xe8, 0xed, 0x81, 0xad, 0x70, 0xc0, 0x8b, 0x6e, 0xf3, 0x89, 0x6e, 0x27,
- 0x9e, 0xa6, 0xa6, 0x73, 0x59, 0xbb, 0x71, 0x00, 0xd4, 0x4f, 0x4b, 0x48,
- 0xe9, 0xd5, 0xc9, 0x27, 0x36, 0x9c, 0x7c, 0x1c, 0x02, 0xaa, 0xac, 0xbd,
- 0x3b, 0xd1, 0x53, 0x83, 0x6a, 0x1f, 0xe6, 0x08, 0x47, 0x33, 0xa7, 0xb1,
- 0x9f, 0x02, 0xbe, 0x9b, 0x47, 0xed, 0x33, 0x04, 0xdc, 0x1c, 0x80, 0x27,
- 0xd1, 0x4a, 0x33, 0xa0, 0x8c, 0xeb, 0x01, 0x47, 0xa1, 0x32, 0x90, 0x64,
- 0x7b, 0xc4, 0xe0, 0x84, 0xc9, 0x32, 0xe9, 0xdd, 0x34, 0x1f, 0x8a, 0x68,
- 0x67, 0xf3, 0xad, 0x10, 0x63, 0xeb, 0xee, 0x8a, 0x9a, 0xb1, 0x2a, 0x1b,
- 0x26, 0x74, 0xa1, 0x2a, 0xb0, 0x8f, 0xfe, 0x52, 0x98, 0x46, 0x97, 0xcf,
- 0xa3, 0x56, 0x1c, 0x6f, 0x6e, 0x99, 0x97, 0x8d, 0x26, 0x0e, 0xa9, 0xec,
- 0xc2, 0x53, 0x70, 0xfc, 0x7a, 0xa5, 0x19, 0x49, 0xbd, 0xb5, 0x17, 0x82,
- 0x55, 0xde, 0x97, 0xe0, 0x5d, 0x62, 0x84, 0x81, 0xf0, 0x70, 0xa8, 0x34,
- 0x53, 0x4f, 0x14, 0xfd, 0x3d, 0x5d, 0x3d, 0x6f, 0xb9, 0x02, 0x03, 0x01,
- 0x00, 0x01, 0xa3, 0x82, 0x01, 0x35, 0x30, 0x82, 0x01, 0x31, 0x30, 0x12,
- 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06,
- 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d,
- 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x2f,
- 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x23,
- 0x30, 0x21, 0x30, 0x1f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07,
- 0x30, 0x01, 0x86, 0x13, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x74,
- 0x32, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x30,
- 0x3b, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x34, 0x30, 0x32, 0x30, 0x30,
- 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x28, 0x30, 0x26, 0x06, 0x08,
- 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74,
- 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x74, 0x68,
- 0x61, 0x77, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, 0x73,
- 0x30, 0x32, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2b, 0x30, 0x29, 0x30,
- 0x27, 0xa0, 0x25, 0xa0, 0x23, 0x86, 0x21, 0x68, 0x74, 0x74, 0x70, 0x3a,
- 0x2f, 0x2f, 0x74, 0x31, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63,
- 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x50, 0x43, 0x41,
- 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x29, 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04,
- 0x22, 0x30, 0x20, 0xa4, 0x1e, 0x30, 0x1c, 0x31, 0x1a, 0x30, 0x18, 0x06,
- 0x03, 0x55, 0x04, 0x03, 0x13, 0x11, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74,
- 0x65, 0x63, 0x50, 0x4b, 0x49, 0x2d, 0x31, 0x2d, 0x35, 0x33, 0x36, 0x30,
- 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xf0, 0x70,
- 0x51, 0xda, 0xd3, 0x2a, 0x91, 0x4f, 0x52, 0x77, 0xd7, 0x86, 0x77, 0x74,
- 0x0f, 0xce, 0x71, 0x1a, 0x6c, 0x22, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d,
- 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x7b, 0x5b, 0x45, 0xcf, 0xaf,
- 0xce, 0xcb, 0x7a, 0xfd, 0x31, 0x92, 0x1a, 0x6a, 0xb6, 0xf3, 0x46, 0xeb,
- 0x57, 0x48, 0x50, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7,
- 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0xa1,
- 0x2e, 0x94, 0x3e, 0x9b, 0x16, 0xf4, 0x58, 0x1a, 0x6f, 0xc1, 0xfa, 0xc1,
- 0x7e, 0x43, 0x93, 0xb2, 0xc3, 0xf7, 0x89, 0xeb, 0x13, 0x62, 0x5d, 0xdd,
- 0xcc, 0x61, 0x13, 0x2b, 0x1d, 0x4e, 0x88, 0x79, 0x11, 0x62, 0x14, 0x37,
- 0x30, 0x46, 0xff, 0x89, 0x62, 0x10, 0x85, 0x2a, 0x87, 0x1e, 0xf8, 0xe2,
- 0xaf, 0xfe, 0x93, 0x02, 0x93, 0xca, 0xf2, 0xe9, 0x46, 0x03, 0x6b, 0xa1,
- 0x1a, 0xac, 0xd5, 0xf0, 0x80, 0x1b, 0x98, 0x6f, 0xb8, 0x3a, 0x50, 0xf8,
- 0x54, 0x71, 0x06, 0x03, 0xe7, 0x84, 0xcc, 0x8e, 0x61, 0xd2, 0x5f, 0x4d,
- 0x0c, 0x97, 0x02, 0x65, 0xb5, 0x8c, 0x26, 0xbc, 0x05, 0x98, 0xf4, 0xdc,
- 0xc6, 0xaf, 0xe4, 0x57, 0x7f, 0xe3, 0xdc, 0xa1, 0xd7, 0x27, 0x47, 0x2a,
- 0xe0, 0x2c, 0x3f, 0x09, 0x74, 0xdc, 0x5a, 0xe5, 0xb5, 0x7c, 0xfa, 0x82,
- 0x9a, 0x15, 0xfa, 0x74, 0x2b, 0x84, 0x2e, 0x6b, 0xac, 0xef, 0x35, 0xa6,
- 0x30, 0xfa, 0x47, 0x4a, 0xaa, 0x36, 0x44, 0xf6, 0x5a, 0x91, 0x07, 0xd3,
- 0xe4, 0x4e, 0x97, 0x3f, 0xa6, 0x53, 0xd8, 0x29, 0x33, 0x32, 0x6f, 0x8b,
- 0x3d, 0xb5, 0xa5, 0x0d, 0xe5, 0xe4, 0x8a, 0xe8, 0xf5, 0xc0, 0xfa, 0xaf,
- 0xd8, 0x37, 0x28, 0x27, 0xc3, 0xed, 0x34, 0x31, 0xd9, 0x7c, 0xa6, 0xaf,
- 0x4d, 0x12, 0x4f, 0xd0, 0x2b, 0x92, 0x9c, 0x69, 0x95, 0xf2, 0x28, 0xa6,
- 0xfe, 0xa8, 0xc6, 0xe0, 0x2c, 0x4d, 0x36, 0xeb, 0x11, 0x34, 0xd6, 0xe1,
- 0x81, 0x99, 0x9d, 0x41, 0xf2, 0xe7, 0xc5, 0x57, 0x05, 0x0e, 0x19, 0xca,
- 0xaf, 0x42, 0x39, 0x1f, 0xa7, 0x27, 0x5e, 0xe0, 0x0a, 0x17, 0xb8, 0xae,
- 0x47, 0xab, 0x92, 0xf1, 0x8a, 0x04, 0xdf, 0x30, 0xe0, 0xbb, 0x4f, 0x8a,
- 0xf9, 0x1b, 0x88, 0x4f, 0x03, 0xb4, 0x25, 0x7a, 0x78, 0xde, 0x2e, 0x7d,
- 0x29, 0xd1, 0x31,
-}
-
-var certSet2Cert26 = []byte{
- 0x30, 0x82, 0x04, 0xb1, 0x30, 0x82, 0x03, 0x99, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x04, 0xe1, 0xe7, 0xa4, 0xdc, 0x5c, 0xf2, 0xf3, 0x6d,
- 0xc0, 0x2b, 0x42, 0xb8, 0x5d, 0x15, 0x9f, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x6c,
- 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55,
- 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c,
- 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63,
- 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77,
- 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e,
- 0x63, 0x6f, 0x6d, 0x31, 0x2b, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x03,
- 0x13, 0x22, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x48,
- 0x69, 0x67, 0x68, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6e, 0x63,
- 0x65, 0x20, 0x45, 0x56, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41,
- 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31, 0x30, 0x32, 0x32, 0x31, 0x32,
- 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x38, 0x31, 0x30, 0x32,
- 0x32, 0x31, 0x32, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x70, 0x31, 0x0b,
- 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31,
- 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, 0x44, 0x69,
- 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x31, 0x19,
- 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77, 0x77, 0x77,
- 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f,
- 0x6d, 0x31, 0x2f, 0x30, 0x2d, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x26,
- 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x53, 0x48, 0x41,
- 0x32, 0x20, 0x48, 0x69, 0x67, 0x68, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72,
- 0x61, 0x6e, 0x63, 0x65, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20,
- 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
- 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01,
- 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xb6,
- 0xe0, 0x2f, 0xc2, 0x24, 0x06, 0xc8, 0x6d, 0x04, 0x5f, 0xd7, 0xef, 0x0a,
- 0x64, 0x06, 0xb2, 0x7d, 0x22, 0x26, 0x65, 0x16, 0xae, 0x42, 0x40, 0x9b,
- 0xce, 0xdc, 0x9f, 0x9f, 0x76, 0x07, 0x3e, 0xc3, 0x30, 0x55, 0x87, 0x19,
- 0xb9, 0x4f, 0x94, 0x0e, 0x5a, 0x94, 0x1f, 0x55, 0x56, 0xb4, 0xc2, 0x02,
- 0x2a, 0xaf, 0xd0, 0x98, 0xee, 0x0b, 0x40, 0xd7, 0xc4, 0xd0, 0x3b, 0x72,
- 0xc8, 0x14, 0x9e, 0xef, 0x90, 0xb1, 0x11, 0xa9, 0xae, 0xd2, 0xc8, 0xb8,
- 0x43, 0x3a, 0xd9, 0x0b, 0x0b, 0xd5, 0xd5, 0x95, 0xf5, 0x40, 0xaf, 0xc8,
- 0x1d, 0xed, 0x4d, 0x9c, 0x5f, 0x57, 0xb7, 0x86, 0x50, 0x68, 0x99, 0xf5,
- 0x8a, 0xda, 0xd2, 0xc7, 0x05, 0x1f, 0xa8, 0x97, 0xc9, 0xdc, 0xa4, 0xb1,
- 0x82, 0x84, 0x2d, 0xc6, 0xad, 0xa5, 0x9c, 0xc7, 0x19, 0x82, 0xa6, 0x85,
- 0x0f, 0x5e, 0x44, 0x58, 0x2a, 0x37, 0x8f, 0xfd, 0x35, 0xf1, 0x0b, 0x08,
- 0x27, 0x32, 0x5a, 0xf5, 0xbb, 0x8b, 0x9e, 0xa4, 0xbd, 0x51, 0xd0, 0x27,
- 0xe2, 0xdd, 0x3b, 0x42, 0x33, 0xa3, 0x05, 0x28, 0xc4, 0xbb, 0x28, 0xcc,
- 0x9a, 0xac, 0x2b, 0x23, 0x0d, 0x78, 0xc6, 0x7b, 0xe6, 0x5e, 0x71, 0xb7,
- 0x4a, 0x3e, 0x08, 0xfb, 0x81, 0xb7, 0x16, 0x16, 0xa1, 0x9d, 0x23, 0x12,
- 0x4d, 0xe5, 0xd7, 0x92, 0x08, 0xac, 0x75, 0xa4, 0x9c, 0xba, 0xcd, 0x17,
- 0xb2, 0x1e, 0x44, 0x35, 0x65, 0x7f, 0x53, 0x25, 0x39, 0xd1, 0x1c, 0x0a,
- 0x9a, 0x63, 0x1b, 0x19, 0x92, 0x74, 0x68, 0x0a, 0x37, 0xc2, 0xc2, 0x52,
- 0x48, 0xcb, 0x39, 0x5a, 0xa2, 0xb6, 0xe1, 0x5d, 0xc1, 0xdd, 0xa0, 0x20,
- 0xb8, 0x21, 0xa2, 0x93, 0x26, 0x6f, 0x14, 0x4a, 0x21, 0x41, 0xc7, 0xed,
- 0x6d, 0x9b, 0xf2, 0x48, 0x2f, 0xf3, 0x03, 0xf5, 0xa2, 0x68, 0x92, 0x53,
- 0x2f, 0x5e, 0xe3, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x49,
- 0x30, 0x82, 0x01, 0x45, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01,
- 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00,
- 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04,
- 0x03, 0x02, 0x01, 0x86, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x04,
- 0x16, 0x30, 0x14, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03,
- 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x02, 0x30,
- 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04,
- 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
- 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f,
- 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72,
- 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x4b, 0x06, 0x03, 0x55, 0x1d, 0x1f,
- 0x04, 0x44, 0x30, 0x42, 0x30, 0x40, 0xa0, 0x3e, 0xa0, 0x3c, 0x86, 0x3a,
- 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x34, 0x2e,
- 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d,
- 0x2f, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x48, 0x69, 0x67,
- 0x68, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x45, 0x56,
- 0x52, 0x6f, 0x6f, 0x74, 0x43, 0x41, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x3d,
- 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x36, 0x30, 0x34, 0x30, 0x32, 0x06,
- 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x2a, 0x30, 0x28, 0x06, 0x08, 0x2b,
- 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1c, 0x68, 0x74, 0x74,
- 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67,
- 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x50,
- 0x53, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14,
- 0x51, 0x68, 0xff, 0x90, 0xaf, 0x02, 0x07, 0x75, 0x3c, 0xcc, 0xd9, 0x65,
- 0x64, 0x62, 0xa2, 0x12, 0xb8, 0x59, 0x72, 0x3b, 0x30, 0x1f, 0x06, 0x03,
- 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xb1, 0x3e, 0xc3,
- 0x69, 0x03, 0xf8, 0xbf, 0x47, 0x01, 0xd4, 0x98, 0x26, 0x1a, 0x08, 0x02,
- 0xef, 0x63, 0x64, 0x2b, 0xc3, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48,
- 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01,
- 0x00, 0x18, 0x8a, 0x95, 0x89, 0x03, 0xe6, 0x6d, 0xdf, 0x5c, 0xfc, 0x1d,
- 0x68, 0xea, 0x4a, 0x8f, 0x83, 0xd6, 0x51, 0x2f, 0x8d, 0x6b, 0x44, 0x16,
- 0x9e, 0xac, 0x63, 0xf5, 0xd2, 0x6e, 0x6c, 0x84, 0x99, 0x8b, 0xaa, 0x81,
- 0x71, 0x84, 0x5b, 0xed, 0x34, 0x4e, 0xb0, 0xb7, 0x79, 0x92, 0x29, 0xcc,
- 0x2d, 0x80, 0x6a, 0xf0, 0x8e, 0x20, 0xe1, 0x79, 0xa4, 0xfe, 0x03, 0x47,
- 0x13, 0xea, 0xf5, 0x86, 0xca, 0x59, 0x71, 0x7d, 0xf4, 0x04, 0x96, 0x6b,
- 0xd3, 0x59, 0x58, 0x3d, 0xfe, 0xd3, 0x31, 0x25, 0x5c, 0x18, 0x38, 0x84,
- 0xa3, 0xe6, 0x9f, 0x82, 0xfd, 0x8c, 0x5b, 0x98, 0x31, 0x4e, 0xcd, 0x78,
- 0x9e, 0x1a, 0xfd, 0x85, 0xcb, 0x49, 0xaa, 0xf2, 0x27, 0x8b, 0x99, 0x72,
- 0xfc, 0x3e, 0xaa, 0xd5, 0x41, 0x0b, 0xda, 0xd5, 0x36, 0xa1, 0xbf, 0x1c,
- 0x6e, 0x47, 0x49, 0x7f, 0x5e, 0xd9, 0x48, 0x7c, 0x03, 0xd9, 0xfd, 0x8b,
- 0x49, 0xa0, 0x98, 0x26, 0x42, 0x40, 0xeb, 0xd6, 0x92, 0x11, 0xa4, 0x64,
- 0x0a, 0x57, 0x54, 0xc4, 0xf5, 0x1d, 0xd6, 0x02, 0x5e, 0x6b, 0xac, 0xee,
- 0xc4, 0x80, 0x9a, 0x12, 0x72, 0xfa, 0x56, 0x93, 0xd7, 0xff, 0xbf, 0x30,
- 0x85, 0x06, 0x30, 0xbf, 0x0b, 0x7f, 0x4e, 0xff, 0x57, 0x05, 0x9d, 0x24,
- 0xed, 0x85, 0xc3, 0x2b, 0xfb, 0xa6, 0x75, 0xa8, 0xac, 0x2d, 0x16, 0xef,
- 0x7d, 0x79, 0x27, 0xb2, 0xeb, 0xc2, 0x9d, 0x0b, 0x07, 0xea, 0xaa, 0x85,
- 0xd3, 0x01, 0xa3, 0x20, 0x28, 0x41, 0x59, 0x43, 0x28, 0xd2, 0x81, 0xe3,
- 0xaa, 0xf6, 0xec, 0x7b, 0x3b, 0x77, 0xb6, 0x40, 0x62, 0x80, 0x05, 0x41,
- 0x45, 0x01, 0xef, 0x17, 0x06, 0x3e, 0xde, 0xc0, 0x33, 0x9b, 0x67, 0xd3,
- 0x61, 0x2e, 0x72, 0x87, 0xe4, 0x69, 0xfc, 0x12, 0x00, 0x57, 0x40, 0x1e,
- 0x70, 0xf5, 0x1e, 0xc9, 0xb4,
-}
-
-var certSet2Cert27 = []byte{
- 0x30, 0x82, 0x04, 0xb2, 0x30, 0x82, 0x03, 0x9a, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x16, 0x87, 0xd6, 0x88, 0x6d, 0xe2, 0x30, 0x06, 0x85,
- 0x23, 0x3d, 0xbf, 0x11, 0xbf, 0x65, 0x97, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81,
- 0xa9, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
- 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13,
- 0x0c, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63,
- 0x2e, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f,
- 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x44,
- 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x38, 0x30, 0x36, 0x06,
- 0x03, 0x55, 0x04, 0x0b, 0x13, 0x2f, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30,
- 0x30, 0x36, 0x20, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49,
- 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75,
- 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65,
- 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55,
- 0x04, 0x03, 0x13, 0x16, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x50,
- 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20,
- 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31, 0x30, 0x33, 0x31,
- 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x33, 0x31,
- 0x30, 0x33, 0x30, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x41,
- 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55,
- 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c,
- 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e,
- 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x74,
- 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41,
- 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06,
- 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00,
- 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01,
- 0x01, 0x00, 0xb2, 0xfc, 0x06, 0xfb, 0x04, 0x93, 0xd2, 0xea, 0x59, 0x20,
- 0x3b, 0x44, 0x85, 0x97, 0x52, 0x39, 0xe7, 0x10, 0xf0, 0x7a, 0xe0, 0xb0,
- 0x94, 0x40, 0xda, 0x46, 0xf8, 0x0c, 0x28, 0xbb, 0xb9, 0xce, 0x60, 0x38,
- 0x3f, 0xd2, 0xd8, 0x11, 0x42, 0x1b, 0x91, 0xad, 0x49, 0xee, 0x8f, 0xc7,
- 0xde, 0x6c, 0xde, 0x37, 0x6f, 0xfd, 0x8b, 0x20, 0x3c, 0x6d, 0xe7, 0x74,
- 0xd3, 0xdc, 0xd5, 0x24, 0x88, 0x41, 0x80, 0x89, 0xee, 0x36, 0xbe, 0xc4,
- 0xd5, 0xbe, 0x8d, 0x53, 0x13, 0xaa, 0xe4, 0xa5, 0xb8, 0x93, 0x0a, 0xbe,
- 0xec, 0xda, 0xcd, 0x3c, 0xd4, 0x32, 0x56, 0xef, 0xd0, 0x4e, 0xa0, 0xb8,
- 0x97, 0xbb, 0x39, 0x50, 0x1e, 0x6e, 0x65, 0xc3, 0xfd, 0xb2, 0xce, 0xe0,
- 0x59, 0xa9, 0x48, 0x09, 0xc6, 0xfe, 0xbe, 0xae, 0xfc, 0x3e, 0x3b, 0x81,
- 0x20, 0x97, 0x8b, 0x8f, 0x46, 0xdf, 0x60, 0x64, 0x07, 0x75, 0xbb, 0x1b,
- 0x86, 0x38, 0x9f, 0x47, 0x7b, 0x34, 0xce, 0xa1, 0xd1, 0x97, 0xad, 0x76,
- 0xd8, 0x9f, 0xb7, 0x26, 0xdb, 0x79, 0x80, 0x36, 0x48, 0xf2, 0xc5, 0x37,
- 0xf8, 0xd9, 0x32, 0xae, 0x7c, 0xa4, 0x53, 0x81, 0xc7, 0x99, 0xa1, 0x54,
- 0x38, 0x2f, 0x4f, 0x75, 0xa0, 0xbb, 0x5a, 0xa5, 0xbb, 0xcd, 0xac, 0x02,
- 0x5b, 0x19, 0x02, 0xd5, 0x13, 0x18, 0xa7, 0xce, 0xac, 0x74, 0x55, 0x12,
- 0x05, 0x8b, 0x9b, 0xa2, 0x95, 0x46, 0x64, 0x72, 0x38, 0xcd, 0x5a, 0x1b,
- 0x3a, 0x16, 0xa7, 0xbe, 0x71, 0x99, 0x8c, 0x54, 0x03, 0xb8, 0x96, 0x6c,
- 0x01, 0xd3, 0x3e, 0x06, 0x98, 0x3f, 0x21, 0x81, 0x3b, 0x02, 0x7e, 0x00,
- 0x47, 0x53, 0x01, 0x1e, 0x0e, 0x46, 0x43, 0xfb, 0x4b, 0x2d, 0xdc, 0x0b,
- 0x1a, 0xe8, 0x2f, 0x98, 0xf8, 0x7e, 0xd1, 0x99, 0xab, 0x13, 0x6c, 0xa4,
- 0x17, 0xde, 0x6f, 0xf6, 0x15, 0xf5, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3,
- 0x82, 0x01, 0x3b, 0x30, 0x82, 0x01, 0x37, 0x30, 0x12, 0x06, 0x03, 0x55,
- 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff,
- 0x02, 0x01, 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01,
- 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x32, 0x06, 0x03, 0x55,
- 0x1d, 0x1f, 0x04, 0x2b, 0x30, 0x29, 0x30, 0x27, 0xa0, 0x25, 0xa0, 0x23,
- 0x86, 0x21, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x74, 0x31, 0x2e,
- 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68,
- 0x61, 0x77, 0x74, 0x65, 0x50, 0x43, 0x41, 0x2e, 0x63, 0x72, 0x6c, 0x30,
- 0x2f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04,
- 0x23, 0x30, 0x21, 0x30, 0x1f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
- 0x07, 0x30, 0x01, 0x86, 0x13, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f,
- 0x74, 0x32, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
- 0x30, 0x41, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x3a, 0x30, 0x38, 0x30,
- 0x36, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, 0x07,
- 0x36, 0x30, 0x28, 0x30, 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
- 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f,
- 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2e,
- 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x29, 0x06, 0x03, 0x55,
- 0x1d, 0x11, 0x04, 0x22, 0x30, 0x20, 0xa4, 0x1e, 0x30, 0x1c, 0x31, 0x1a,
- 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x11, 0x53, 0x79, 0x6d,
- 0x61, 0x6e, 0x74, 0x65, 0x63, 0x50, 0x4b, 0x49, 0x2d, 0x31, 0x2d, 0x35,
- 0x33, 0x37, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04,
- 0x14, 0xc2, 0x4f, 0x48, 0x57, 0xfc, 0xd1, 0x4f, 0x9a, 0xc0, 0x5d, 0x38,
- 0x7d, 0x0e, 0x05, 0xdb, 0xd9, 0x2e, 0xb5, 0x52, 0x60, 0x30, 0x1f, 0x06,
- 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x7b, 0x5b,
- 0x45, 0xcf, 0xaf, 0xce, 0xcb, 0x7a, 0xfd, 0x31, 0x92, 0x1a, 0x6a, 0xb6,
- 0xf3, 0x46, 0xeb, 0x57, 0x48, 0x50, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
- 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01,
- 0x01, 0x00, 0x8d, 0x06, 0xde, 0x43, 0xc9, 0x76, 0x02, 0xca, 0xd9, 0x23,
- 0x97, 0x5e, 0xf3, 0x63, 0xd7, 0x7d, 0x44, 0xc2, 0x0f, 0x6b, 0x0a, 0xf5,
- 0x07, 0xe5, 0x8b, 0xb8, 0xfa, 0xe0, 0xa3, 0xfa, 0x6b, 0x80, 0x92, 0xb5,
- 0x03, 0x2c, 0xc5, 0x37, 0xe0, 0xc2, 0xe5, 0x95, 0xb5, 0x92, 0x70, 0x18,
- 0x28, 0x42, 0x94, 0xee, 0x4b, 0x77, 0x6a, 0x01, 0x0f, 0x8b, 0x23, 0xec,
- 0x56, 0x4d, 0xf4, 0x00, 0x69, 0xe5, 0x84, 0xc8, 0xe2, 0xea, 0xde, 0x5b,
- 0x3e, 0xf6, 0x3c, 0x07, 0x3a, 0x94, 0xca, 0x6c, 0x27, 0xb1, 0xcc, 0x83,
- 0x1a, 0x60, 0x71, 0x27, 0xd2, 0xbf, 0x02, 0xf5, 0x1e, 0x44, 0xd3, 0x48,
- 0xd5, 0xa6, 0xd3, 0x76, 0x21, 0x00, 0x9c, 0xfa, 0x98, 0x64, 0xeb, 0x17,
- 0x36, 0x3f, 0xeb, 0x1b, 0x3c, 0x3e, 0xa6, 0xb1, 0xd9, 0x58, 0x06, 0x0e,
- 0x72, 0xd9, 0x68, 0xbe, 0xf1, 0xa7, 0x20, 0xd7, 0x52, 0xe4, 0xa4, 0x77,
- 0x1f, 0x71, 0x70, 0x9d, 0x55, 0x35, 0x85, 0x37, 0xe1, 0x1d, 0x4d, 0x94,
- 0xc2, 0x70, 0x7f, 0x95, 0x40, 0x6e, 0x4b, 0x7d, 0xb2, 0xb4, 0x29, 0x2a,
- 0x03, 0x79, 0xc8, 0xb9, 0x4c, 0x67, 0x61, 0x04, 0xa0, 0x8b, 0x27, 0xff,
- 0x59, 0x00, 0xeb, 0x55, 0x7f, 0xc6, 0xb7, 0x33, 0x35, 0x2d, 0x5e, 0x4e,
- 0xac, 0xb8, 0xea, 0x12, 0xc5, 0xe8, 0xf7, 0xb9, 0xab, 0xbe, 0x74, 0x92,
- 0x2c, 0xb7, 0xd9, 0x4d, 0xca, 0x84, 0x2f, 0x1c, 0xc2, 0xf0, 0x72, 0x7c,
- 0xb2, 0x31, 0x6e, 0xcf, 0x80, 0xe5, 0x88, 0x07, 0x36, 0x51, 0x7b, 0xba,
- 0x61, 0xaf, 0x6d, 0x8d, 0x23, 0x5b, 0x34, 0xa3, 0x95, 0xbc, 0xa2, 0x31,
- 0x7f, 0xf2, 0xf5, 0xe7, 0xb7, 0xe8, 0xef, 0xc4, 0xb5, 0x27, 0x32, 0xe9,
- 0xf7, 0x9e, 0x69, 0xc7, 0x2b, 0xe8, 0xbe, 0xbb, 0x0c, 0xaa, 0xe7, 0xea,
- 0x60, 0x12, 0xea, 0x26, 0x8a, 0x78,
-}
-
-var certSet2Cert28 = []byte{
- 0x30, 0x82, 0x04, 0xb6, 0x30, 0x82, 0x03, 0x9e, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x0c, 0x79, 0xa9, 0x44, 0xb0, 0x8c, 0x11, 0x95, 0x20,
- 0x92, 0x61, 0x5f, 0xe2, 0x6b, 0x1d, 0x83, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x6c,
- 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55,
- 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c,
- 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63,
- 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77,
- 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e,
- 0x63, 0x6f, 0x6d, 0x31, 0x2b, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x03,
- 0x13, 0x22, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x48,
- 0x69, 0x67, 0x68, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6e, 0x63,
- 0x65, 0x20, 0x45, 0x56, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41,
- 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31, 0x30, 0x32, 0x32, 0x31, 0x32,
- 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x38, 0x31, 0x30, 0x32,
- 0x32, 0x31, 0x32, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x75, 0x31, 0x0b,
- 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31,
- 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, 0x44, 0x69,
- 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x31, 0x19,
- 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77, 0x77, 0x77,
- 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f,
- 0x6d, 0x31, 0x34, 0x30, 0x32, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2b,
- 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x53, 0x48, 0x41,
- 0x32, 0x20, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x20, 0x56,
- 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x53, 0x65,
- 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30,
- 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01,
- 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02,
- 0x82, 0x01, 0x01, 0x00, 0xd7, 0x53, 0xa4, 0x04, 0x51, 0xf8, 0x99, 0xa6,
- 0x16, 0x48, 0x4b, 0x67, 0x27, 0xaa, 0x93, 0x49, 0xd0, 0x39, 0xed, 0x0c,
- 0xb0, 0xb0, 0x00, 0x87, 0xf1, 0x67, 0x28, 0x86, 0x85, 0x8c, 0x8e, 0x63,
- 0xda, 0xbc, 0xb1, 0x40, 0x38, 0xe2, 0xd3, 0xf5, 0xec, 0xa5, 0x05, 0x18,
- 0xb8, 0x3d, 0x3e, 0xc5, 0x99, 0x17, 0x32, 0xec, 0x18, 0x8c, 0xfa, 0xf1,
- 0x0c, 0xa6, 0x64, 0x21, 0x85, 0xcb, 0x07, 0x10, 0x34, 0xb0, 0x52, 0x88,
- 0x2b, 0x1f, 0x68, 0x9b, 0xd2, 0xb1, 0x8f, 0x12, 0xb0, 0xb3, 0xd2, 0xe7,
- 0x88, 0x1f, 0x1f, 0xef, 0x38, 0x77, 0x54, 0x53, 0x5f, 0x80, 0x79, 0x3f,
- 0x2e, 0x1a, 0xaa, 0xa8, 0x1e, 0x4b, 0x2b, 0x0d, 0xab, 0xb7, 0x63, 0xb9,
- 0x35, 0xb7, 0x7d, 0x14, 0xbc, 0x59, 0x4b, 0xdf, 0x51, 0x4a, 0xd2, 0xa1,
- 0xe2, 0x0c, 0xe2, 0x90, 0x82, 0x87, 0x6a, 0xae, 0xea, 0xd7, 0x64, 0xd6,
- 0x98, 0x55, 0xe8, 0xfd, 0xaf, 0x1a, 0x50, 0x6c, 0x54, 0xbc, 0x11, 0xf2,
- 0xfd, 0x4a, 0xf2, 0x9d, 0xbb, 0x7f, 0x0e, 0xf4, 0xd5, 0xbe, 0x8e, 0x16,
- 0x89, 0x12, 0x55, 0xd8, 0xc0, 0x71, 0x34, 0xee, 0xf6, 0xdc, 0x2d, 0xec,
- 0xc4, 0x87, 0x25, 0x86, 0x8d, 0xd8, 0x21, 0xe4, 0xb0, 0x4d, 0x0c, 0x89,
- 0xdc, 0x39, 0x26, 0x17, 0xdd, 0xf6, 0xd7, 0x94, 0x85, 0xd8, 0x04, 0x21,
- 0x70, 0x9d, 0x6f, 0x6f, 0xff, 0x5c, 0xba, 0x19, 0xe1, 0x45, 0xcb, 0x56,
- 0x57, 0x28, 0x7e, 0x1c, 0x0d, 0x41, 0x57, 0xaa, 0xb7, 0xb8, 0x27, 0xbb,
- 0xb1, 0xe4, 0xfa, 0x2a, 0xef, 0x21, 0x23, 0x75, 0x1a, 0xad, 0x2d, 0x9b,
- 0x86, 0x35, 0x8c, 0x9c, 0x77, 0xb5, 0x73, 0xad, 0xd8, 0x94, 0x2d, 0xe4,
- 0xf3, 0x0c, 0x9d, 0xee, 0xc1, 0x4e, 0x62, 0x7e, 0x17, 0xc0, 0x71, 0x9e,
- 0x2c, 0xde, 0xf1, 0xf9, 0x10, 0x28, 0x19, 0x33, 0x02, 0x03, 0x01, 0x00,
- 0x01, 0xa3, 0x82, 0x01, 0x49, 0x30, 0x82, 0x01, 0x45, 0x30, 0x12, 0x06,
- 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01,
- 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f,
- 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 0x1d, 0x06,
- 0x03, 0x55, 0x1d, 0x25, 0x04, 0x16, 0x30, 0x14, 0x06, 0x08, 0x2b, 0x06,
- 0x01, 0x05, 0x05, 0x07, 0x03, 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05,
- 0x05, 0x07, 0x03, 0x02, 0x30, 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05,
- 0x05, 0x07, 0x01, 0x01, 0x04, 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08,
- 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74,
- 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x64, 0x69,
- 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x4b,
- 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x44, 0x30, 0x42, 0x30, 0x40, 0xa0,
- 0x3e, 0xa0, 0x3c, 0x86, 0x3a, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f,
- 0x63, 0x72, 0x6c, 0x34, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72,
- 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65,
- 0x72, 0x74, 0x48, 0x69, 0x67, 0x68, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61,
- 0x6e, 0x63, 0x65, 0x45, 0x56, 0x52, 0x6f, 0x6f, 0x74, 0x43, 0x41, 0x2e,
- 0x63, 0x72, 0x6c, 0x30, 0x3d, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x36,
- 0x30, 0x34, 0x30, 0x32, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x2a,
- 0x30, 0x28, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01,
- 0x16, 0x1c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77,
- 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63,
- 0x6f, 0x6d, 0x2f, 0x43, 0x50, 0x53, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d,
- 0x0e, 0x04, 0x16, 0x04, 0x14, 0x3d, 0xd3, 0x50, 0xa5, 0xd6, 0xa0, 0xad,
- 0xee, 0xf3, 0x4a, 0x60, 0x0a, 0x65, 0xd3, 0x21, 0xd4, 0xf8, 0xf8, 0xd6,
- 0x0f, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16,
- 0x80, 0x14, 0xb1, 0x3e, 0xc3, 0x69, 0x03, 0xf8, 0xbf, 0x47, 0x01, 0xd4,
- 0x98, 0x26, 0x1a, 0x08, 0x02, 0xef, 0x63, 0x64, 0x2b, 0xc3, 0x30, 0x0d,
- 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05,
- 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x9d, 0xb6, 0xd0, 0x90, 0x86, 0xe1,
- 0x86, 0x02, 0xed, 0xc5, 0xa0, 0xf0, 0x34, 0x1c, 0x74, 0xc1, 0x8d, 0x76,
- 0xcc, 0x86, 0x0a, 0xa8, 0xf0, 0x4a, 0x8a, 0x42, 0xd6, 0x3f, 0xc8, 0xa9,
- 0x4d, 0xad, 0x7c, 0x08, 0xad, 0xe6, 0xb6, 0x50, 0xb8, 0xa2, 0x1a, 0x4d,
- 0x88, 0x07, 0xb1, 0x29, 0x21, 0xdc, 0xe7, 0xda, 0xc6, 0x3c, 0x21, 0xe0,
- 0xe3, 0x11, 0x49, 0x70, 0xac, 0x7a, 0x1d, 0x01, 0xa4, 0xca, 0x11, 0x3a,
- 0x57, 0xab, 0x7d, 0x57, 0x2a, 0x40, 0x74, 0xfd, 0xd3, 0x1d, 0x85, 0x18,
- 0x50, 0xdf, 0x57, 0x47, 0x75, 0xa1, 0x7d, 0x55, 0x20, 0x2e, 0x47, 0x37,
- 0x50, 0x72, 0x8c, 0x7f, 0x82, 0x1b, 0xd2, 0x62, 0x8f, 0x2d, 0x03, 0x5a,
- 0xda, 0xc3, 0xc8, 0xa1, 0xce, 0x2c, 0x52, 0xa2, 0x00, 0x63, 0xeb, 0x73,
- 0xba, 0x71, 0xc8, 0x49, 0x27, 0x23, 0x97, 0x64, 0x85, 0x9e, 0x38, 0x0e,
- 0xad, 0x63, 0x68, 0x3c, 0xba, 0x52, 0x81, 0x58, 0x79, 0xa3, 0x2c, 0x0c,
- 0xdf, 0xde, 0x6d, 0xeb, 0x31, 0xf2, 0xba, 0xa0, 0x7c, 0x6c, 0xf1, 0x2c,
- 0xd4, 0xe1, 0xbd, 0x77, 0x84, 0x37, 0x03, 0xce, 0x32, 0xb5, 0xc8, 0x9a,
- 0x81, 0x1a, 0x4a, 0x92, 0x4e, 0x3b, 0x46, 0x9a, 0x85, 0xfe, 0x83, 0xa2,
- 0xf9, 0x9e, 0x8c, 0xa3, 0xcc, 0x0d, 0x5e, 0xb3, 0x3d, 0xcf, 0x04, 0x78,
- 0x8f, 0x14, 0x14, 0x7b, 0x32, 0x9c, 0xc7, 0x00, 0xa6, 0x5c, 0xc4, 0xb5,
- 0xa1, 0x55, 0x8d, 0x5a, 0x56, 0x68, 0xa4, 0x22, 0x70, 0xaa, 0x3c, 0x81,
- 0x71, 0xd9, 0x9d, 0xa8, 0x45, 0x3b, 0xf4, 0xe5, 0xf6, 0xa2, 0x51, 0xdd,
- 0xc7, 0x7b, 0x62, 0xe8, 0x6f, 0x0c, 0x74, 0xeb, 0xb8, 0xda, 0xf8, 0xbf,
- 0x87, 0x0d, 0x79, 0x50, 0x91, 0x90, 0x9b, 0x18, 0x3b, 0x91, 0x59, 0x27,
- 0xf1, 0x35, 0x28, 0x13, 0xab, 0x26, 0x7e, 0xd5, 0xf7, 0x7a,
-}
-
-var certSet2Cert29 = []byte{
- 0x30, 0x82, 0x04, 0xc2, 0x30, 0x82, 0x03, 0xaa, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x36, 0x34, 0x9e, 0x18, 0xc9, 0x9c, 0x26, 0x69, 0xb6,
- 0x56, 0x2e, 0x6c, 0xe5, 0xad, 0x71, 0x32, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81,
- 0xae, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
- 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13,
- 0x0c, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63,
- 0x2e, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f,
- 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x44,
- 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x38, 0x30, 0x36, 0x06,
- 0x03, 0x55, 0x04, 0x0b, 0x13, 0x2f, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30,
- 0x30, 0x38, 0x20, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49,
- 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75,
- 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65,
- 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, 0x55,
- 0x04, 0x03, 0x13, 0x1b, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x50,
- 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20,
- 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x30, 0x1e, 0x17, 0x0d, 0x31,
- 0x33, 0x30, 0x35, 0x32, 0x33, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a,
- 0x17, 0x0d, 0x32, 0x33, 0x30, 0x35, 0x32, 0x32, 0x32, 0x33, 0x35, 0x39,
- 0x35, 0x39, 0x5a, 0x30, 0x43, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55,
- 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03,
- 0x55, 0x04, 0x0a, 0x13, 0x0c, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c,
- 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x1d, 0x30, 0x1b, 0x06, 0x03, 0x55,
- 0x04, 0x03, 0x13, 0x14, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x53,
- 0x48, 0x41, 0x32, 0x35, 0x36, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41,
- 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
- 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00,
- 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xa3, 0x63, 0x2b,
- 0xd4, 0xba, 0x5d, 0x38, 0xae, 0xb0, 0xcf, 0xb9, 0x4c, 0x38, 0xdf, 0x20,
- 0x7d, 0xf1, 0x2b, 0x47, 0x71, 0x1d, 0x8b, 0x68, 0xf3, 0x56, 0xf9, 0x9c,
- 0xda, 0xaa, 0xe5, 0x84, 0x26, 0xde, 0xa5, 0x71, 0x30, 0xbc, 0xf3, 0x31,
- 0x23, 0x9d, 0xe8, 0x3b, 0x80, 0xc8, 0x66, 0x57, 0x75, 0xb6, 0x57, 0x0e,
- 0xdb, 0x93, 0xf5, 0x26, 0x8e, 0x70, 0xba, 0x64, 0x52, 0x66, 0x8a, 0x2a,
- 0x88, 0x5c, 0x44, 0x18, 0x4d, 0xa8, 0xa2, 0x7c, 0xbd, 0x56, 0x61, 0x32,
- 0x90, 0x12, 0xf9, 0x35, 0x87, 0x48, 0x60, 0xb0, 0x6e, 0x90, 0x67, 0x44,
- 0x01, 0x8d, 0xe7, 0xc9, 0x0d, 0x63, 0x68, 0x72, 0x72, 0xab, 0x63, 0x3c,
- 0x86, 0xb8, 0x1f, 0x7d, 0xad, 0x88, 0x25, 0xa7, 0x6a, 0x88, 0x29, 0xfb,
- 0x59, 0xc6, 0x78, 0x71, 0x5f, 0x2c, 0xba, 0x89, 0xe6, 0xd3, 0x80, 0xfd,
- 0x57, 0xec, 0xb9, 0x51, 0x5f, 0x43, 0x33, 0x2e, 0x7e, 0x25, 0x3b, 0xa4,
- 0x04, 0xd1, 0x60, 0x8c, 0xb3, 0x44, 0x33, 0x93, 0x0c, 0xad, 0x2a, 0xb6,
- 0x44, 0xa2, 0x19, 0x3b, 0xaf, 0xc4, 0x90, 0x6f, 0x7b, 0x05, 0x87, 0x86,
- 0x9b, 0x2c, 0x6a, 0x9d, 0x2b, 0x6c, 0x77, 0xc9, 0x00, 0x9f, 0xc9, 0xcf,
- 0xac, 0xed, 0x3e, 0x1b, 0xf7, 0xc3, 0xf3, 0xd9, 0xf8, 0x6c, 0xd4, 0xa0,
- 0x57, 0xc4, 0xfb, 0x28, 0x32, 0xaa, 0x33, 0xf0, 0xe6, 0xba, 0x98, 0xdf,
- 0xe5, 0xc2, 0x4e, 0x9c, 0x74, 0xbf, 0x8a, 0x48, 0xc2, 0xf2, 0x1b, 0xf0,
- 0x77, 0x40, 0x41, 0x07, 0x04, 0xb2, 0x3a, 0xd5, 0x4c, 0xc4, 0x29, 0xa9,
- 0x11, 0x40, 0x3f, 0x02, 0x46, 0xf0, 0x91, 0xd5, 0xd2, 0x81, 0x83, 0x86,
- 0x13, 0xb3, 0x31, 0xed, 0x46, 0xab, 0xa8, 0x87, 0x76, 0xa9, 0x99, 0x7d,
- 0xbc, 0xcd, 0x31, 0x50, 0xf4, 0xa5, 0xb5, 0xdc, 0xa5, 0x32, 0xb3, 0x8b,
- 0x8b, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x44, 0x30, 0x82,
- 0x01, 0x40, 0x30, 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07,
- 0x01, 0x01, 0x04, 0x26, 0x30, 0x24, 0x30, 0x22, 0x06, 0x08, 0x2b, 0x06,
- 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x16, 0x68, 0x74, 0x74, 0x70,
- 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x74, 0x68, 0x61, 0x77,
- 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d,
- 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02,
- 0x01, 0x00, 0x30, 0x41, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x3a, 0x30,
- 0x38, 0x30, 0x36, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45,
- 0x01, 0x07, 0x36, 0x30, 0x28, 0x30, 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01,
- 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x73,
- 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74,
- 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x37, 0x06,
- 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x30, 0x30, 0x2e, 0x30, 0x2c, 0xa0, 0x2a,
- 0xa0, 0x28, 0x86, 0x26, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63,
- 0x72, 0x6c, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2e, 0x63, 0x6f,
- 0x6d, 0x2f, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x50, 0x43, 0x41, 0x2d,
- 0x47, 0x33, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d,
- 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x2a,
- 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, 0x23, 0x30, 0x21, 0xa4, 0x1f, 0x30,
- 0x1d, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12,
- 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x4d, 0x50, 0x4b, 0x49,
- 0x2d, 0x32, 0x2d, 0x34, 0x31, 0x35, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d,
- 0x0e, 0x04, 0x16, 0x04, 0x14, 0x2b, 0x9a, 0x35, 0xae, 0x01, 0x18, 0x38,
- 0x30, 0xe1, 0x70, 0x7a, 0x05, 0xe0, 0x11, 0x76, 0xa3, 0xce, 0xbd, 0x90,
- 0x14, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16,
- 0x80, 0x14, 0xad, 0x6c, 0xaa, 0x94, 0x60, 0x9c, 0xed, 0xe4, 0xff, 0xfa,
- 0x3e, 0x0a, 0x74, 0x2b, 0x63, 0x03, 0xf7, 0xb6, 0x59, 0xbf, 0x30, 0x0d,
- 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05,
- 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x74, 0xa6, 0x56, 0xe8, 0xaf, 0x93,
- 0x96, 0x19, 0xfb, 0x26, 0xf9, 0x0d, 0xb0, 0x44, 0xa5, 0xcd, 0xe9, 0x7a,
- 0x48, 0x03, 0x74, 0x01, 0x6c, 0x13, 0x71, 0xb7, 0xe0, 0x82, 0x90, 0x99,
- 0x62, 0x23, 0xe3, 0xd6, 0x99, 0xaf, 0xf0, 0xc7, 0x1e, 0x9e, 0xa8, 0x18,
- 0x21, 0xdb, 0xb4, 0x94, 0x3f, 0x34, 0x56, 0x1b, 0x99, 0x55, 0x2f, 0x8e,
- 0xf0, 0x45, 0x33, 0x32, 0xb7, 0x72, 0xc1, 0x13, 0x5b, 0x34, 0xd3, 0xf5,
- 0x60, 0xe5, 0x2e, 0x18, 0xd1, 0x5c, 0xc5, 0x6a, 0xc1, 0xaa, 0x87, 0x50,
- 0x0c, 0x1c, 0x9d, 0x64, 0x2b, 0xff, 0x1b, 0xdc, 0xd5, 0x2e, 0x61, 0x0b,
- 0xe7, 0xb9, 0xb6, 0x91, 0x53, 0x86, 0xd9, 0x03, 0x2a, 0xd1, 0x3d, 0x7b,
- 0x4a, 0xda, 0x2b, 0x07, 0xbe, 0x29, 0xf2, 0x60, 0x42, 0xa9, 0x91, 0x1a,
- 0x0e, 0x2e, 0x3c, 0xd1, 0x7d, 0xa5, 0x13, 0x14, 0x02, 0xfa, 0xee, 0x8b,
- 0x8d, 0xb6, 0xc8, 0xb8, 0x3e, 0x56, 0x81, 0x57, 0x21, 0x24, 0x3f, 0x65,
- 0xc3, 0xb4, 0xc9, 0xce, 0x5c, 0x8d, 0x46, 0xac, 0x53, 0xf3, 0xf9, 0x55,
- 0x74, 0xc8, 0x2b, 0xfd, 0xd2, 0x78, 0x70, 0xf5, 0xf8, 0x11, 0xe5, 0xf4,
- 0xa7, 0xad, 0x20, 0xf5, 0x9d, 0xf1, 0xec, 0x70, 0xf6, 0x13, 0xac, 0xe6,
- 0x8c, 0x8d, 0xdb, 0x3f, 0xc6, 0xf2, 0x79, 0x0e, 0xab, 0x52, 0xf2, 0xcc,
- 0x1b, 0x79, 0x27, 0xcf, 0x16, 0xb3, 0xd6, 0xf3, 0xc6, 0x36, 0x80, 0x43,
- 0xec, 0xc5, 0x94, 0xf0, 0xdd, 0x90, 0x8d, 0xf8, 0xc6, 0x52, 0x46, 0x56,
- 0xeb, 0x74, 0x47, 0xbe, 0xa6, 0xf3, 0x19, 0xae, 0x71, 0x4c, 0xc0, 0xe1,
- 0xe7, 0xd4, 0xcf, 0xed, 0xd4, 0x06, 0x28, 0x2a, 0x11, 0x3c, 0xba, 0xd9,
- 0x41, 0x6e, 0x00, 0xe7, 0x81, 0x37, 0x93, 0xe4, 0xda, 0x62, 0xc6, 0x1d,
- 0x67, 0x6f, 0x63, 0xb4, 0x14, 0x86, 0xd9, 0xa6, 0x62, 0xf0,
-}
-
-var certSet2Cert30 = []byte{
- 0x30, 0x82, 0x04, 0xc6, 0x30, 0x82, 0x04, 0x2f, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x35, 0x97, 0x31, 0x87, 0xf3, 0x87, 0x3a, 0x07, 0x32,
- 0x7e, 0xce, 0x58, 0x0c, 0x9b, 0x7e, 0xda, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x5f,
- 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55,
- 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e,
- 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e,
- 0x63, 0x2e, 0x31, 0x37, 0x30, 0x35, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13,
- 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62,
- 0x6c, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20,
- 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30,
- 0x1e, 0x17, 0x0d, 0x30, 0x36, 0x31, 0x31, 0x30, 0x38, 0x30, 0x30, 0x30,
- 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x31, 0x31, 0x31, 0x30, 0x37,
- 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x81, 0xca, 0x31, 0x0b,
- 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31,
- 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e, 0x56, 0x65,
- 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e,
- 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x16, 0x56,
- 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, 0x72, 0x75, 0x73,
- 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x31, 0x3a, 0x30,
- 0x38, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x31, 0x28, 0x63, 0x29, 0x20,
- 0x32, 0x30, 0x30, 0x36, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67,
- 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f,
- 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64,
- 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x45, 0x30,
- 0x43, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x3c, 0x56, 0x65, 0x72, 0x69,
- 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x33,
- 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6d,
- 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72,
- 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x35, 0x30, 0x82, 0x01, 0x22,
- 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
- 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a,
- 0x02, 0x82, 0x01, 0x01, 0x00, 0xaf, 0x24, 0x08, 0x08, 0x29, 0x7a, 0x35,
- 0x9e, 0x60, 0x0c, 0xaa, 0xe7, 0x4b, 0x3b, 0x4e, 0xdc, 0x7c, 0xbc, 0x3c,
- 0x45, 0x1c, 0xbb, 0x2b, 0xe0, 0xfe, 0x29, 0x02, 0xf9, 0x57, 0x08, 0xa3,
- 0x64, 0x85, 0x15, 0x27, 0xf5, 0xf1, 0xad, 0xc8, 0x31, 0x89, 0x5d, 0x22,
- 0xe8, 0x2a, 0xaa, 0xa6, 0x42, 0xb3, 0x8f, 0xf8, 0xb9, 0x55, 0xb7, 0xb1,
- 0xb7, 0x4b, 0xb3, 0xfe, 0x8f, 0x7e, 0x07, 0x57, 0xec, 0xef, 0x43, 0xdb,
- 0x66, 0x62, 0x15, 0x61, 0xcf, 0x60, 0x0d, 0xa4, 0xd8, 0xde, 0xf8, 0xe0,
- 0xc3, 0x62, 0x08, 0x3d, 0x54, 0x13, 0xeb, 0x49, 0xca, 0x59, 0x54, 0x85,
- 0x26, 0xe5, 0x2b, 0x8f, 0x1b, 0x9f, 0xeb, 0xf5, 0xa1, 0x91, 0xc2, 0x33,
- 0x49, 0xd8, 0x43, 0x63, 0x6a, 0x52, 0x4b, 0xd2, 0x8f, 0xe8, 0x70, 0x51,
- 0x4d, 0xd1, 0x89, 0x69, 0x7b, 0xc7, 0x70, 0xf6, 0xb3, 0xdc, 0x12, 0x74,
- 0xdb, 0x7b, 0x5d, 0x4b, 0x56, 0xd3, 0x96, 0xbf, 0x15, 0x77, 0xa1, 0xb0,
- 0xf4, 0xa2, 0x25, 0xf2, 0xaf, 0x1c, 0x92, 0x67, 0x18, 0xe5, 0xf4, 0x06,
- 0x04, 0xef, 0x90, 0xb9, 0xe4, 0x00, 0xe4, 0xdd, 0x3a, 0xb5, 0x19, 0xff,
- 0x02, 0xba, 0xf4, 0x3c, 0xee, 0xe0, 0x8b, 0xeb, 0x37, 0x8b, 0xec, 0xf4,
- 0xd7, 0xac, 0xf2, 0xf6, 0xf0, 0x3d, 0xaf, 0xdd, 0x75, 0x91, 0x33, 0x19,
- 0x1d, 0x1c, 0x40, 0xcb, 0x74, 0x24, 0x19, 0x21, 0x93, 0xd9, 0x14, 0xfe,
- 0xac, 0x2a, 0x52, 0xc7, 0x8f, 0xd5, 0x04, 0x49, 0xe4, 0x8d, 0x63, 0x47,
- 0x88, 0x3c, 0x69, 0x83, 0xcb, 0xfe, 0x47, 0xbd, 0x2b, 0x7e, 0x4f, 0xc5,
- 0x95, 0xae, 0x0e, 0x9d, 0xd4, 0xd1, 0x43, 0xc0, 0x67, 0x73, 0xe3, 0x14,
- 0x08, 0x7e, 0xe5, 0x3f, 0x9f, 0x73, 0xb8, 0x33, 0x0a, 0xcf, 0x5d, 0x3f,
- 0x34, 0x87, 0x96, 0x8a, 0xee, 0x53, 0xe8, 0x25, 0x15, 0x02, 0x03, 0x01,
- 0x00, 0x01, 0xa3, 0x82, 0x01, 0x91, 0x30, 0x82, 0x01, 0x8d, 0x30, 0x0f,
- 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03,
- 0x01, 0x01, 0xff, 0x30, 0x31, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2a,
- 0x30, 0x28, 0x30, 0x26, 0xa0, 0x24, 0xa0, 0x22, 0x86, 0x20, 0x68, 0x74,
- 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x76, 0x65, 0x72,
- 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x63,
- 0x61, 0x33, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d,
- 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x3d,
- 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x36, 0x30, 0x34, 0x30, 0x32, 0x06,
- 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x2a, 0x30, 0x28, 0x06, 0x08, 0x2b,
- 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1c, 0x68, 0x74, 0x74,
- 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x76, 0x65, 0x72,
- 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70,
- 0x73, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14,
- 0x7f, 0xd3, 0x65, 0xa7, 0xc2, 0xdd, 0xec, 0xbb, 0xf0, 0x30, 0x09, 0xf3,
- 0x43, 0x39, 0xfa, 0x02, 0xaf, 0x33, 0x31, 0x33, 0x30, 0x34, 0x06, 0x03,
- 0x55, 0x1d, 0x25, 0x04, 0x2d, 0x30, 0x2b, 0x06, 0x09, 0x60, 0x86, 0x48,
- 0x01, 0x86, 0xf8, 0x42, 0x04, 0x01, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01,
- 0x86, 0xf8, 0x45, 0x01, 0x08, 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05,
- 0x05, 0x07, 0x03, 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07,
- 0x03, 0x02, 0x30, 0x6d, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07,
- 0x01, 0x0c, 0x04, 0x61, 0x30, 0x5f, 0xa1, 0x5d, 0xa0, 0x5b, 0x30, 0x59,
- 0x30, 0x57, 0x30, 0x55, 0x16, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f,
- 0x67, 0x69, 0x66, 0x30, 0x21, 0x30, 0x1f, 0x30, 0x07, 0x06, 0x05, 0x2b,
- 0x0e, 0x03, 0x02, 0x1a, 0x04, 0x14, 0x8f, 0xe5, 0xd3, 0x1a, 0x86, 0xac,
- 0x8d, 0x8e, 0x6b, 0xc3, 0xcf, 0x80, 0x6a, 0xd4, 0x48, 0x18, 0x2c, 0x7b,
- 0x19, 0x2e, 0x30, 0x25, 0x16, 0x23, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
- 0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69,
- 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x76, 0x73, 0x6c, 0x6f, 0x67,
- 0x6f, 0x2e, 0x67, 0x69, 0x66, 0x30, 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01,
- 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x28, 0x30, 0x26, 0x30, 0x24, 0x06,
- 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, 0x68,
- 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x76,
- 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x30,
- 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05,
- 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x0f, 0x25, 0xae, 0x48, 0xed, 0x1b,
- 0x33, 0x85, 0x4c, 0x0c, 0xb5, 0xc2, 0xd7, 0xfe, 0x4d, 0xd6, 0x83, 0x28,
- 0x4c, 0x41, 0x65, 0x60, 0x00, 0x0b, 0x77, 0x48, 0x71, 0x82, 0xfe, 0x7f,
- 0xdb, 0x5a, 0x0e, 0x20, 0xcc, 0xd2, 0xea, 0x47, 0xbc, 0x64, 0x42, 0x61,
- 0x44, 0x34, 0x74, 0x30, 0x81, 0x81, 0x26, 0x8a, 0x4a, 0xf7, 0x44, 0x5d,
- 0x7e, 0x34, 0x80, 0xa8, 0xb8, 0x83, 0xe2, 0x09, 0xd7, 0x6d, 0x23, 0xdd,
- 0x89, 0xed, 0x28, 0x08, 0xbd, 0x63, 0x5a, 0x11, 0x57, 0x08, 0xc4, 0x9e,
- 0xda, 0xe2, 0x68, 0x28, 0xaf, 0xdd, 0x50, 0x3c, 0xec, 0x82, 0x21, 0xd8,
- 0x00, 0xc2, 0x55, 0x44, 0x50, 0x70, 0x41, 0xad, 0x83, 0x17, 0x79, 0xba,
- 0x08, 0xf3, 0x2b, 0xde, 0xed, 0x34, 0x1d, 0x44, 0x9e, 0xd2, 0x04, 0x93,
- 0xf4, 0xcb, 0x05, 0x17, 0x2d, 0x09, 0x2d, 0x2d, 0x63, 0xef, 0xf6, 0x26,
- 0x0b, 0x7b,
-}
-
-var certSet2Cert31 = []byte{
- 0x30, 0x82, 0x04, 0xd0, 0x30, 0x82, 0x03, 0xb8, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x01, 0x07, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
- 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, 0x83, 0x31, 0x0b,
- 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31,
- 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x07, 0x41, 0x72,
- 0x69, 0x7a, 0x6f, 0x6e, 0x61, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55,
- 0x04, 0x07, 0x13, 0x0a, 0x53, 0x63, 0x6f, 0x74, 0x74, 0x73, 0x64, 0x61,
- 0x6c, 0x65, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13,
- 0x11, 0x47, 0x6f, 0x44, 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, 0x6f, 0x6d,
- 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x31, 0x30, 0x2f, 0x06, 0x03,
- 0x55, 0x04, 0x03, 0x13, 0x28, 0x47, 0x6f, 0x20, 0x44, 0x61, 0x64, 0x64,
- 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69,
- 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f,
- 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x1e, 0x17,
- 0x0d, 0x31, 0x31, 0x30, 0x35, 0x30, 0x33, 0x30, 0x37, 0x30, 0x30, 0x30,
- 0x30, 0x5a, 0x17, 0x0d, 0x33, 0x31, 0x30, 0x35, 0x30, 0x33, 0x30, 0x37,
- 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x81, 0xb4, 0x31, 0x0b, 0x30, 0x09,
- 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, 0x30,
- 0x0e, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x07, 0x41, 0x72, 0x69, 0x7a,
- 0x6f, 0x6e, 0x61, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x07,
- 0x13, 0x0a, 0x53, 0x63, 0x6f, 0x74, 0x74, 0x73, 0x64, 0x61, 0x6c, 0x65,
- 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x11, 0x47,
- 0x6f, 0x44, 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x2c, 0x20,
- 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x2d, 0x30, 0x2b, 0x06, 0x03, 0x55, 0x04,
- 0x0b, 0x13, 0x24, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x65,
- 0x72, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x64, 0x61, 0x64, 0x64, 0x79, 0x2e,
- 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f,
- 0x72, 0x79, 0x2f, 0x31, 0x33, 0x30, 0x31, 0x06, 0x03, 0x55, 0x04, 0x03,
- 0x13, 0x2a, 0x47, 0x6f, 0x20, 0x44, 0x61, 0x64, 0x64, 0x79, 0x20, 0x53,
- 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66,
- 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72,
- 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22,
- 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
- 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a,
- 0x02, 0x82, 0x01, 0x01, 0x00, 0xb9, 0xe0, 0xcb, 0x10, 0xd4, 0xaf, 0x76,
- 0xbd, 0xd4, 0x93, 0x62, 0xeb, 0x30, 0x64, 0xb8, 0x81, 0x08, 0x6c, 0xc3,
- 0x04, 0xd9, 0x62, 0x17, 0x8e, 0x2f, 0xff, 0x3e, 0x65, 0xcf, 0x8f, 0xce,
- 0x62, 0xe6, 0x3c, 0x52, 0x1c, 0xda, 0x16, 0x45, 0x4b, 0x55, 0xab, 0x78,
- 0x6b, 0x63, 0x83, 0x62, 0x90, 0xce, 0x0f, 0x69, 0x6c, 0x99, 0xc8, 0x1a,
- 0x14, 0x8b, 0x4c, 0xcc, 0x45, 0x33, 0xea, 0x88, 0xdc, 0x9e, 0xa3, 0xaf,
- 0x2b, 0xfe, 0x80, 0x61, 0x9d, 0x79, 0x57, 0xc4, 0xcf, 0x2e, 0xf4, 0x3f,
- 0x30, 0x3c, 0x5d, 0x47, 0xfc, 0x9a, 0x16, 0xbc, 0xc3, 0x37, 0x96, 0x41,
- 0x51, 0x8e, 0x11, 0x4b, 0x54, 0xf8, 0x28, 0xbe, 0xd0, 0x8c, 0xbe, 0xf0,
- 0x30, 0x38, 0x1e, 0xf3, 0xb0, 0x26, 0xf8, 0x66, 0x47, 0x63, 0x6d, 0xde,
- 0x71, 0x26, 0x47, 0x8f, 0x38, 0x47, 0x53, 0xd1, 0x46, 0x1d, 0xb4, 0xe3,
- 0xdc, 0x00, 0xea, 0x45, 0xac, 0xbd, 0xbc, 0x71, 0xd9, 0xaa, 0x6f, 0x00,
- 0xdb, 0xdb, 0xcd, 0x30, 0x3a, 0x79, 0x4f, 0x5f, 0x4c, 0x47, 0xf8, 0x1d,
- 0xef, 0x5b, 0xc2, 0xc4, 0x9d, 0x60, 0x3b, 0xb1, 0xb2, 0x43, 0x91, 0xd8,
- 0xa4, 0x33, 0x4e, 0xea, 0xb3, 0xd6, 0x27, 0x4f, 0xad, 0x25, 0x8a, 0xa5,
- 0xc6, 0xf4, 0xd5, 0xd0, 0xa6, 0xae, 0x74, 0x05, 0x64, 0x57, 0x88, 0xb5,
- 0x44, 0x55, 0xd4, 0x2d, 0x2a, 0x3a, 0x3e, 0xf8, 0xb8, 0xbd, 0xe9, 0x32,
- 0x0a, 0x02, 0x94, 0x64, 0xc4, 0x16, 0x3a, 0x50, 0xf1, 0x4a, 0xae, 0xe7,
- 0x79, 0x33, 0xaf, 0x0c, 0x20, 0x07, 0x7f, 0xe8, 0xdf, 0x04, 0x39, 0xc2,
- 0x69, 0x02, 0x6c, 0x63, 0x52, 0xfa, 0x77, 0xc1, 0x1b, 0xc8, 0x74, 0x87,
- 0xc8, 0xb9, 0x93, 0x18, 0x50, 0x54, 0x35, 0x4b, 0x69, 0x4e, 0xbc, 0x3b,
- 0xd3, 0x49, 0x2e, 0x1f, 0xdc, 0xc1, 0xd2, 0x52, 0xfb, 0x02, 0x03, 0x01,
- 0x00, 0x01, 0xa3, 0x82, 0x01, 0x1a, 0x30, 0x82, 0x01, 0x16, 0x30, 0x0f,
- 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03,
- 0x01, 0x01, 0xff, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01,
- 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x1d, 0x06, 0x03, 0x55,
- 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x40, 0xc2, 0xbd, 0x27, 0x8e, 0xcc,
- 0x34, 0x83, 0x30, 0xa2, 0x33, 0xd7, 0xfb, 0x6c, 0xb3, 0xf0, 0xb4, 0x2c,
- 0x80, 0xce, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30,
- 0x16, 0x80, 0x14, 0x3a, 0x9a, 0x85, 0x07, 0x10, 0x67, 0x28, 0xb6, 0xef,
- 0xf6, 0xbd, 0x05, 0x41, 0x6e, 0x20, 0xc1, 0x94, 0xda, 0x0f, 0xde, 0x30,
- 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04,
- 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
- 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f,
- 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x67, 0x6f, 0x64, 0x61, 0x64, 0x64, 0x79,
- 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x30, 0x35, 0x06, 0x03, 0x55, 0x1d, 0x1f,
- 0x04, 0x2e, 0x30, 0x2c, 0x30, 0x2a, 0xa0, 0x28, 0xa0, 0x26, 0x86, 0x24,
- 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x67,
- 0x6f, 0x64, 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67,
- 0x64, 0x72, 0x6f, 0x6f, 0x74, 0x2d, 0x67, 0x32, 0x2e, 0x63, 0x72, 0x6c,
- 0x30, 0x46, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x3f, 0x30, 0x3d, 0x30,
- 0x3b, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x33, 0x30, 0x31, 0x06,
- 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x25, 0x68,
- 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x73,
- 0x2e, 0x67, 0x6f, 0x64, 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, 0x6f, 0x6d,
- 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f,
- 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
- 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x08, 0x7e, 0x6c, 0x93,
- 0x10, 0xc8, 0x38, 0xb8, 0x96, 0xa9, 0x90, 0x4b, 0xff, 0xa1, 0x5f, 0x4f,
- 0x04, 0xef, 0x6c, 0x3e, 0x9c, 0x88, 0x06, 0xc9, 0x50, 0x8f, 0xa6, 0x73,
- 0xf7, 0x57, 0x31, 0x1b, 0xbe, 0xbc, 0xe4, 0x2f, 0xdb, 0xf8, 0xba, 0xd3,
- 0x5b, 0xe0, 0xb4, 0xe7, 0xe6, 0x79, 0x62, 0x0e, 0x0c, 0xa2, 0xd7, 0x6a,
- 0x63, 0x73, 0x31, 0xb5, 0xf5, 0xa8, 0x48, 0xa4, 0x3b, 0x08, 0x2d, 0xa2,
- 0x5d, 0x90, 0xd7, 0xb4, 0x7c, 0x25, 0x4f, 0x11, 0x56, 0x30, 0xc4, 0xb6,
- 0x44, 0x9d, 0x7b, 0x2c, 0x9d, 0xe5, 0x5e, 0xe6, 0xef, 0x0c, 0x61, 0xaa,
- 0xbf, 0xe4, 0x2a, 0x1b, 0xee, 0x84, 0x9e, 0xb8, 0x83, 0x7d, 0xc1, 0x43,
- 0xce, 0x44, 0xa7, 0x13, 0x70, 0x0d, 0x91, 0x1f, 0xf4, 0xc8, 0x13, 0xad,
- 0x83, 0x60, 0xd9, 0xd8, 0x72, 0xa8, 0x73, 0x24, 0x1e, 0xb5, 0xac, 0x22,
- 0x0e, 0xca, 0x17, 0x89, 0x62, 0x58, 0x44, 0x1b, 0xab, 0x89, 0x25, 0x01,
- 0x00, 0x0f, 0xcd, 0xc4, 0x1b, 0x62, 0xdb, 0x51, 0xb4, 0xd3, 0x0f, 0x51,
- 0x2a, 0x9b, 0xf4, 0xbc, 0x73, 0xfc, 0x76, 0xce, 0x36, 0xa4, 0xcd, 0xd9,
- 0xd8, 0x2c, 0xea, 0xae, 0x9b, 0xf5, 0x2a, 0xb2, 0x90, 0xd1, 0x4d, 0x75,
- 0x18, 0x8a, 0x3f, 0x8a, 0x41, 0x90, 0x23, 0x7d, 0x5b, 0x4b, 0xfe, 0xa4,
- 0x03, 0x58, 0x9b, 0x46, 0xb2, 0xc3, 0x60, 0x60, 0x83, 0xf8, 0x7d, 0x50,
- 0x41, 0xce, 0xc2, 0xa1, 0x90, 0xc3, 0xbb, 0xef, 0x02, 0x2f, 0xd2, 0x15,
- 0x54, 0xee, 0x44, 0x15, 0xd9, 0x0a, 0xae, 0xa7, 0x8a, 0x33, 0xed, 0xb1,
- 0x2d, 0x76, 0x36, 0x26, 0xdc, 0x04, 0xeb, 0x9f, 0xf7, 0x61, 0x1f, 0x15,
- 0xdc, 0x87, 0x6f, 0xee, 0x46, 0x96, 0x28, 0xad, 0xa1, 0x26, 0x7d, 0x0a,
- 0x09, 0xa7, 0x2e, 0x04, 0xa3, 0x8d, 0xbc, 0xf8, 0xbc, 0x04, 0x30, 0x01,
-}
-
-var certSet2Cert32 = []byte{
- 0x30, 0x82, 0x04, 0xd0, 0x30, 0x82, 0x03, 0xb8, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x0a, 0x48, 0x9e, 0x88, 0x53, 0x7e, 0x8a, 0xa6, 0x45,
- 0x4d, 0x6e, 0x2c, 0x4b, 0x2a, 0xeb, 0x20, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81,
- 0xae, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
- 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13,
- 0x0c, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63,
- 0x2e, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f,
- 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x44,
- 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x38, 0x30, 0x36, 0x06,
- 0x03, 0x55, 0x04, 0x0b, 0x13, 0x2f, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30,
- 0x30, 0x38, 0x20, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49,
- 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75,
- 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65,
- 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, 0x55,
- 0x04, 0x03, 0x13, 0x1b, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x50,
- 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20,
- 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x30, 0x1e, 0x17, 0x0d, 0x31,
- 0x33, 0x30, 0x34, 0x30, 0x39, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a,
- 0x17, 0x0d, 0x32, 0x33, 0x30, 0x34, 0x30, 0x38, 0x32, 0x33, 0x35, 0x39,
- 0x35, 0x39, 0x5a, 0x30, 0x57, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55,
- 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03,
- 0x55, 0x04, 0x0a, 0x13, 0x0c, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c,
- 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x31, 0x30, 0x2f, 0x06, 0x03, 0x55,
- 0x04, 0x03, 0x13, 0x28, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x45,
- 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x20, 0x56, 0x61, 0x6c, 0x69,
- 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x53, 0x48, 0x41, 0x32, 0x35,
- 0x36, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22,
- 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
- 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a,
- 0x02, 0x82, 0x01, 0x01, 0x00, 0xf2, 0xc4, 0xbc, 0x74, 0xe8, 0x25, 0xf6,
- 0x00, 0x62, 0x28, 0xe3, 0x4c, 0xe8, 0xb8, 0xdf, 0x13, 0x9f, 0x8b, 0x07,
- 0x37, 0xef, 0x62, 0x4a, 0xf1, 0x57, 0x09, 0xf6, 0x82, 0xe8, 0x75, 0xf0,
- 0x0a, 0xa9, 0x27, 0xcf, 0x93, 0x3b, 0xec, 0x36, 0x89, 0xa5, 0x6e, 0x1d,
- 0xd6, 0x54, 0xf3, 0xb8, 0x04, 0x97, 0x72, 0xb4, 0x69, 0x25, 0xcc, 0xd1,
- 0x42, 0x0e, 0x5b, 0xd5, 0x1c, 0x7f, 0xa2, 0x60, 0x6e, 0xb1, 0x52, 0x1a,
- 0xdb, 0x93, 0x2f, 0xbb, 0x0b, 0x0d, 0x64, 0x53, 0x16, 0xcb, 0x1c, 0x09,
- 0x24, 0x95, 0x29, 0x22, 0xb4, 0x8a, 0x18, 0x00, 0x89, 0xfe, 0xf7, 0x1f,
- 0x72, 0xc8, 0xe8, 0x5c, 0x2f, 0x1a, 0x1b, 0xa2, 0x18, 0xb8, 0xef, 0x18,
- 0x5c, 0xcb, 0xb5, 0xdb, 0x3a, 0x4e, 0xdb, 0x0f, 0xae, 0xdf, 0xc4, 0x79,
- 0xe3, 0x1e, 0xaa, 0x5c, 0xa3, 0xa4, 0xe5, 0xac, 0x61, 0x9b, 0x37, 0x85,
- 0x8f, 0x48, 0x75, 0x1b, 0xb9, 0xd5, 0x68, 0x96, 0xe9, 0x27, 0x79, 0x70,
- 0x57, 0x23, 0x1a, 0xbb, 0x6c, 0x93, 0x90, 0xc7, 0x45, 0xd7, 0x17, 0xd2,
- 0x37, 0x2a, 0x76, 0xb3, 0xcd, 0x82, 0xa9, 0x4f, 0xc0, 0x03, 0x7b, 0xe1,
- 0x3d, 0x7a, 0x7e, 0x5b, 0xb8, 0x85, 0xf2, 0xf5, 0x15, 0xfb, 0x70, 0xa9,
- 0xbd, 0xf5, 0x50, 0x65, 0x16, 0x9d, 0xe3, 0xb6, 0x6b, 0x61, 0x6e, 0xa1,
- 0x7a, 0x9e, 0xe8, 0x0d, 0x1c, 0xf7, 0x2a, 0x8e, 0x69, 0x7e, 0x43, 0x30,
- 0x8e, 0x78, 0xce, 0xee, 0x65, 0x1e, 0x3b, 0x9b, 0x87, 0x1e, 0x49, 0x1c,
- 0xf8, 0x32, 0x46, 0x5d, 0x28, 0x46, 0x79, 0x2a, 0x4e, 0x27, 0x5d, 0x17,
- 0x58, 0xa8, 0x37, 0xfe, 0xa8, 0x13, 0xa9, 0x69, 0x15, 0xdf, 0x36, 0x22,
- 0x89, 0x75, 0xba, 0xca, 0x01, 0x40, 0x2e, 0xed, 0x9d, 0xd7, 0x0c, 0xaa,
- 0x31, 0xce, 0x27, 0xae, 0x57, 0xd5, 0xd2, 0x51, 0xfb, 0x02, 0x03, 0x01,
- 0x00, 0x01, 0xa3, 0x82, 0x01, 0x3e, 0x30, 0x82, 0x01, 0x3a, 0x30, 0x12,
- 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06,
- 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d,
- 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x32,
- 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x26,
- 0x30, 0x24, 0x30, 0x22, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07,
- 0x30, 0x01, 0x86, 0x16, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f,
- 0x63, 0x73, 0x70, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2e, 0x63,
- 0x6f, 0x6d, 0x30, 0x3b, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x34, 0x30,
- 0x32, 0x30, 0x30, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x28, 0x30,
- 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16,
- 0x1a, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77,
- 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
- 0x63, 0x70, 0x73, 0x30, 0x37, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x30,
- 0x30, 0x2e, 0x30, 0x2c, 0xa0, 0x2a, 0xa0, 0x28, 0x86, 0x26, 0x68, 0x74,
- 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x74, 0x68, 0x61,
- 0x77, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x61, 0x77,
- 0x74, 0x65, 0x50, 0x43, 0x41, 0x2d, 0x47, 0x33, 0x2e, 0x63, 0x72, 0x6c,
- 0x30, 0x2a, 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, 0x23, 0x30, 0x21, 0xa4,
- 0x1f, 0x30, 0x1d, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03,
- 0x13, 0x12, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x4d, 0x50,
- 0x4b, 0x49, 0x2d, 0x32, 0x2d, 0x33, 0x37, 0x34, 0x30, 0x1d, 0x06, 0x03,
- 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x3b, 0x24, 0xc8, 0x31, 0xa0,
- 0xb7, 0x5a, 0xd0, 0x6a, 0xb8, 0xd2, 0xca, 0x07, 0x74, 0xcc, 0x1e, 0x24,
- 0xd4, 0xc4, 0xdc, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18,
- 0x30, 0x16, 0x80, 0x14, 0xad, 0x6c, 0xaa, 0x94, 0x60, 0x9c, 0xed, 0xe4,
- 0xff, 0xfa, 0x3e, 0x0a, 0x74, 0x2b, 0x63, 0x03, 0xf7, 0xb6, 0x59, 0xbf,
- 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
- 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x68, 0x98, 0x26, 0xaa,
- 0xd4, 0x33, 0xc9, 0xba, 0x75, 0x70, 0xd4, 0x9f, 0x49, 0xad, 0xd6, 0xc1,
- 0x54, 0xdc, 0xee, 0xaa, 0x56, 0x1f, 0x78, 0xa7, 0xf0, 0xa1, 0xa4, 0xee,
- 0x0b, 0xf9, 0x12, 0xaf, 0xdf, 0xa6, 0xb8, 0xee, 0xc3, 0xcb, 0x35, 0x13,
- 0x6a, 0x59, 0x2a, 0xf8, 0xc9, 0xe9, 0x4c, 0x2f, 0xbc, 0xb1, 0xbc, 0x2b,
- 0xc2, 0x02, 0x30, 0xe1, 0xc3, 0xbe, 0xc2, 0xf0, 0x81, 0x8c, 0x99, 0x77,
- 0x89, 0x58, 0x00, 0xa3, 0xcc, 0x7f, 0xa3, 0x02, 0x4c, 0x53, 0xb2, 0x6e,
- 0x36, 0x4f, 0xfe, 0xdf, 0x87, 0x76, 0xb3, 0x3f, 0xec, 0x5a, 0x62, 0x50,
- 0xb6, 0x00, 0x45, 0x58, 0xf2, 0x87, 0xac, 0x77, 0xe6, 0xd0, 0x20, 0x50,
- 0x63, 0xc5, 0xe4, 0xb2, 0x70, 0x15, 0x18, 0x90, 0x05, 0x7b, 0x7b, 0xaf,
- 0x2b, 0x46, 0xbe, 0x6b, 0x4e, 0x1f, 0x53, 0xfc, 0x84, 0x27, 0xae, 0x83,
- 0xd2, 0x8d, 0x47, 0x53, 0xa7, 0x0e, 0x1f, 0x63, 0xb5, 0xba, 0xdb, 0x16,
- 0xd8, 0x6a, 0x09, 0x25, 0x55, 0x7d, 0x8f, 0x3d, 0x4a, 0xc1, 0x83, 0xf9,
- 0xb3, 0xb9, 0xa7, 0x04, 0x5a, 0xc8, 0xf3, 0x11, 0x04, 0x91, 0x53, 0x30,
- 0xd9, 0x52, 0x87, 0xcb, 0x39, 0x00, 0x9c, 0xec, 0x53, 0xc3, 0x02, 0x09,
- 0x7e, 0xa7, 0x36, 0x8e, 0x72, 0x21, 0x2f, 0x23, 0xbb, 0x4c, 0xc6, 0x47,
- 0xa5, 0xa1, 0xee, 0x67, 0xc4, 0x2f, 0x5c, 0x3a, 0x47, 0x38, 0x61, 0xe2,
- 0xc3, 0x1e, 0x37, 0x92, 0x9e, 0xc8, 0x2f, 0x6b, 0xfa, 0xef, 0xd2, 0xc3,
- 0xcd, 0x29, 0x8d, 0x98, 0xf8, 0x52, 0x17, 0xed, 0xb5, 0x53, 0x3c, 0xdf,
- 0xaf, 0xc9, 0x1b, 0x62, 0xad, 0xdf, 0x02, 0xee, 0x5d, 0x34, 0xf6, 0x41,
- 0x4b, 0xcb, 0xc3, 0x55, 0xaf, 0xb1, 0xcb, 0xda, 0x9c, 0x73, 0xd5, 0x02,
- 0xa8, 0x2d, 0xa7, 0xac, 0xfc, 0xe1, 0xe5, 0x07, 0xd0, 0x51, 0xe8, 0x35,
-}
-
-var certSet2Cert33 = []byte{
- 0x30, 0x82, 0x04, 0xd0, 0x30, 0x82, 0x04, 0x39, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x25, 0x0c, 0xe8, 0xe0, 0x30, 0x61, 0x2e, 0x9f, 0x2b,
- 0x89, 0xf7, 0x05, 0x4d, 0x7c, 0xf8, 0xfd, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x5f,
- 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55,
- 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e,
- 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e,
- 0x63, 0x2e, 0x31, 0x37, 0x30, 0x35, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13,
- 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62,
- 0x6c, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20,
- 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30,
- 0x1e, 0x17, 0x0d, 0x30, 0x36, 0x31, 0x31, 0x30, 0x38, 0x30, 0x30, 0x30,
- 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x31, 0x31, 0x31, 0x30, 0x37,
- 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x81, 0xca, 0x31, 0x0b,
- 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31,
- 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e, 0x56, 0x65,
- 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e,
- 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x16, 0x56,
- 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, 0x72, 0x75, 0x73,
- 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x31, 0x3a, 0x30,
- 0x38, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x31, 0x28, 0x63, 0x29, 0x20,
- 0x32, 0x30, 0x30, 0x36, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67,
- 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f,
- 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64,
- 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x45, 0x30,
- 0x43, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x3c, 0x56, 0x65, 0x72, 0x69,
- 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x33,
- 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6d,
- 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72,
- 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x35, 0x30, 0x82, 0x01, 0x22,
- 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
- 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a,
- 0x02, 0x82, 0x01, 0x01, 0x00, 0xaf, 0x24, 0x08, 0x08, 0x29, 0x7a, 0x35,
- 0x9e, 0x60, 0x0c, 0xaa, 0xe7, 0x4b, 0x3b, 0x4e, 0xdc, 0x7c, 0xbc, 0x3c,
- 0x45, 0x1c, 0xbb, 0x2b, 0xe0, 0xfe, 0x29, 0x02, 0xf9, 0x57, 0x08, 0xa3,
- 0x64, 0x85, 0x15, 0x27, 0xf5, 0xf1, 0xad, 0xc8, 0x31, 0x89, 0x5d, 0x22,
- 0xe8, 0x2a, 0xaa, 0xa6, 0x42, 0xb3, 0x8f, 0xf8, 0xb9, 0x55, 0xb7, 0xb1,
- 0xb7, 0x4b, 0xb3, 0xfe, 0x8f, 0x7e, 0x07, 0x57, 0xec, 0xef, 0x43, 0xdb,
- 0x66, 0x62, 0x15, 0x61, 0xcf, 0x60, 0x0d, 0xa4, 0xd8, 0xde, 0xf8, 0xe0,
- 0xc3, 0x62, 0x08, 0x3d, 0x54, 0x13, 0xeb, 0x49, 0xca, 0x59, 0x54, 0x85,
- 0x26, 0xe5, 0x2b, 0x8f, 0x1b, 0x9f, 0xeb, 0xf5, 0xa1, 0x91, 0xc2, 0x33,
- 0x49, 0xd8, 0x43, 0x63, 0x6a, 0x52, 0x4b, 0xd2, 0x8f, 0xe8, 0x70, 0x51,
- 0x4d, 0xd1, 0x89, 0x69, 0x7b, 0xc7, 0x70, 0xf6, 0xb3, 0xdc, 0x12, 0x74,
- 0xdb, 0x7b, 0x5d, 0x4b, 0x56, 0xd3, 0x96, 0xbf, 0x15, 0x77, 0xa1, 0xb0,
- 0xf4, 0xa2, 0x25, 0xf2, 0xaf, 0x1c, 0x92, 0x67, 0x18, 0xe5, 0xf4, 0x06,
- 0x04, 0xef, 0x90, 0xb9, 0xe4, 0x00, 0xe4, 0xdd, 0x3a, 0xb5, 0x19, 0xff,
- 0x02, 0xba, 0xf4, 0x3c, 0xee, 0xe0, 0x8b, 0xeb, 0x37, 0x8b, 0xec, 0xf4,
- 0xd7, 0xac, 0xf2, 0xf6, 0xf0, 0x3d, 0xaf, 0xdd, 0x75, 0x91, 0x33, 0x19,
- 0x1d, 0x1c, 0x40, 0xcb, 0x74, 0x24, 0x19, 0x21, 0x93, 0xd9, 0x14, 0xfe,
- 0xac, 0x2a, 0x52, 0xc7, 0x8f, 0xd5, 0x04, 0x49, 0xe4, 0x8d, 0x63, 0x47,
- 0x88, 0x3c, 0x69, 0x83, 0xcb, 0xfe, 0x47, 0xbd, 0x2b, 0x7e, 0x4f, 0xc5,
- 0x95, 0xae, 0x0e, 0x9d, 0xd4, 0xd1, 0x43, 0xc0, 0x67, 0x73, 0xe3, 0x14,
- 0x08, 0x7e, 0xe5, 0x3f, 0x9f, 0x73, 0xb8, 0x33, 0x0a, 0xcf, 0x5d, 0x3f,
- 0x34, 0x87, 0x96, 0x8a, 0xee, 0x53, 0xe8, 0x25, 0x15, 0x02, 0x03, 0x01,
- 0x00, 0x01, 0xa3, 0x82, 0x01, 0x9b, 0x30, 0x82, 0x01, 0x97, 0x30, 0x0f,
- 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03,
- 0x01, 0x01, 0xff, 0x30, 0x31, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2a,
- 0x30, 0x28, 0x30, 0x26, 0xa0, 0x24, 0xa0, 0x22, 0x86, 0x20, 0x68, 0x74,
- 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x76, 0x65, 0x72,
- 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x63,
- 0x61, 0x33, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d,
- 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x3d,
- 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x36, 0x30, 0x34, 0x30, 0x32, 0x06,
- 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x2a, 0x30, 0x28, 0x06, 0x08, 0x2b,
- 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1c, 0x68, 0x74, 0x74,
- 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x76, 0x65, 0x72,
- 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70,
- 0x73, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14,
- 0x7f, 0xd3, 0x65, 0xa7, 0xc2, 0xdd, 0xec, 0xbb, 0xf0, 0x30, 0x09, 0xf3,
- 0x43, 0x39, 0xfa, 0x02, 0xaf, 0x33, 0x31, 0x33, 0x30, 0x6d, 0x06, 0x08,
- 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x0c, 0x04, 0x61, 0x30, 0x5f,
- 0xa1, 0x5d, 0xa0, 0x5b, 0x30, 0x59, 0x30, 0x57, 0x30, 0x55, 0x16, 0x09,
- 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0x30, 0x21, 0x30,
- 0x1f, 0x30, 0x07, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1a, 0x04, 0x14,
- 0x8f, 0xe5, 0xd3, 0x1a, 0x86, 0xac, 0x8d, 0x8e, 0x6b, 0xc3, 0xcf, 0x80,
- 0x6a, 0xd4, 0x48, 0x18, 0x2c, 0x7b, 0x19, 0x2e, 0x30, 0x25, 0x16, 0x23,
- 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e,
- 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d,
- 0x2f, 0x76, 0x73, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x67, 0x69, 0x66, 0x30,
- 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04,
- 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
- 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f,
- 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67,
- 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x3e, 0x06, 0x03, 0x55, 0x1d, 0x25,
- 0x04, 0x37, 0x30, 0x35, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07,
- 0x03, 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x02,
- 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x03, 0x06, 0x09,
- 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x42, 0x04, 0x01, 0x06, 0x0a, 0x60,
- 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, 0x08, 0x01, 0x30, 0x0d, 0x06,
- 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00,
- 0x03, 0x81, 0x81, 0x00, 0x13, 0x02, 0xdd, 0xf8, 0xe8, 0x86, 0x00, 0xf2,
- 0x5a, 0xf8, 0xf8, 0x20, 0x0c, 0x59, 0x88, 0x62, 0x07, 0xce, 0xce, 0xf7,
- 0x4e, 0xf9, 0xbb, 0x59, 0xa1, 0x98, 0xe5, 0xe1, 0x38, 0xdd, 0x4e, 0xbc,
- 0x66, 0x18, 0xd3, 0xad, 0xeb, 0x18, 0xf2, 0x0d, 0xc9, 0x6d, 0x3e, 0x4a,
- 0x94, 0x20, 0xc3, 0x3c, 0xba, 0xbd, 0x65, 0x54, 0xc6, 0xaf, 0x44, 0xb3,
- 0x10, 0xad, 0x2c, 0x6b, 0x3e, 0xab, 0xd7, 0x07, 0xb6, 0xb8, 0x81, 0x63,
- 0xc5, 0xf9, 0x5e, 0x2e, 0xe5, 0x2a, 0x67, 0xce, 0xcd, 0x33, 0x0c, 0x2a,
- 0xd7, 0x89, 0x56, 0x03, 0x23, 0x1f, 0xb3, 0xbe, 0xe8, 0x3a, 0x08, 0x59,
- 0xb4, 0xec, 0x45, 0x35, 0xf7, 0x8a, 0x5b, 0xff, 0x66, 0xcf, 0x50, 0xaf,
- 0xc6, 0x6d, 0x57, 0x8d, 0x19, 0x78, 0xb7, 0xb9, 0xa2, 0xd1, 0x57, 0xea,
- 0x1f, 0x9a, 0x4b, 0xaf, 0xba, 0xc9, 0x8e, 0x12, 0x7e, 0xc6, 0xbd, 0xff,
-}
-
-var certSet2Cert34 = []byte{
- 0x30, 0x82, 0x04, 0xd2, 0x30, 0x82, 0x03, 0xba, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x2c, 0x69, 0xe1, 0x2f, 0x6a, 0x67, 0x0b, 0xd9, 0x9d,
- 0xd2, 0x0f, 0x91, 0x9e, 0xf0, 0x9e, 0x51, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81,
- 0xa9, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
- 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13,
- 0x0c, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63,
- 0x2e, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f,
- 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x44,
- 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x38, 0x30, 0x36, 0x06,
- 0x03, 0x55, 0x04, 0x0b, 0x13, 0x2f, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30,
- 0x30, 0x36, 0x20, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49,
- 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75,
- 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65,
- 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55,
- 0x04, 0x03, 0x13, 0x16, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x50,
- 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20,
- 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34, 0x30, 0x36, 0x31, 0x30,
- 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x34, 0x30,
- 0x36, 0x30, 0x39, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x63,
- 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55,
- 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c,
- 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e,
- 0x31, 0x1d, 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x14, 0x44,
- 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61,
- 0x74, 0x65, 0x64, 0x20, 0x53, 0x53, 0x4c, 0x31, 0x1e, 0x30, 0x1c, 0x06,
- 0x03, 0x55, 0x04, 0x03, 0x13, 0x15, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65,
- 0x20, 0x44, 0x56, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, 0x20, 0x2d,
- 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82,
- 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00,
- 0xea, 0x94, 0x07, 0x85, 0xc8, 0x41, 0x2c, 0xf6, 0x83, 0x12, 0x6c, 0x92,
- 0x5f, 0xab, 0x1f, 0x00, 0xd4, 0x96, 0x6f, 0x74, 0xcd, 0x2e, 0x11, 0xe9,
- 0x6c, 0x0f, 0x39, 0x01, 0xb9, 0x48, 0x90, 0x40, 0x39, 0x4d, 0xc4, 0xa2,
- 0xc8, 0x79, 0x6a, 0xa5, 0x9a, 0xbd, 0x91, 0x44, 0x65, 0x77, 0x54, 0xad,
- 0xff, 0x25, 0x5f, 0xee, 0x42, 0xfb, 0xb3, 0x02, 0x0f, 0xea, 0x5d, 0x7a,
- 0xdd, 0x1a, 0x54, 0x9e, 0xd7, 0x73, 0x42, 0x9b, 0xcc, 0x79, 0x5f, 0xc5,
- 0x4d, 0xf4, 0xb7, 0x0b, 0x18, 0x39, 0x20, 0x7a, 0xdd, 0x50, 0x01, 0x5d,
- 0x34, 0x45, 0x5f, 0x4c, 0x11, 0x0e, 0xf5, 0x87, 0x26, 0x26, 0xb4, 0xb0,
- 0xf3, 0x7e, 0x71, 0xa0, 0x31, 0x71, 0x50, 0x89, 0x68, 0x5a, 0x63, 0x8a,
- 0x14, 0x62, 0xe5, 0x8c, 0x3a, 0x16, 0x55, 0x0d, 0x3e, 0xeb, 0xaa, 0x80,
- 0x1d, 0x71, 0x7a, 0xe3, 0x87, 0x07, 0xab, 0xbd, 0xa2, 0x74, 0xcd, 0xda,
- 0x08, 0x01, 0x9d, 0x1b, 0xcc, 0x27, 0x88, 0x8c, 0x47, 0xd4, 0x69, 0x25,
- 0x42, 0xd6, 0xbb, 0x50, 0x6d, 0x85, 0x50, 0xd0, 0x48, 0x82, 0x0d, 0x08,
- 0x9f, 0xe9, 0x23, 0xe3, 0x42, 0xc6, 0x3c, 0x98, 0xb8, 0xbb, 0x6e, 0xc5,
- 0x70, 0x13, 0xdf, 0x19, 0x1d, 0x01, 0xfd, 0xd2, 0xb5, 0x4e, 0xe6, 0x62,
- 0xf4, 0x07, 0xfa, 0x6b, 0x7d, 0x11, 0x77, 0xc4, 0x62, 0x4f, 0x40, 0x4e,
- 0xa5, 0x78, 0x97, 0xab, 0x2c, 0x4d, 0x0c, 0xa7, 0x7c, 0xc3, 0xc4, 0x50,
- 0x32, 0x9f, 0xd0, 0x70, 0x9b, 0x0f, 0xff, 0xff, 0x75, 0x59, 0x34, 0x85,
- 0xad, 0x49, 0xd5, 0x35, 0xee, 0x4f, 0x5b, 0xd4, 0xd4, 0x36, 0x95, 0xa0,
- 0x7e, 0xe8, 0xc5, 0xa1, 0x1c, 0xbd, 0x13, 0x4e, 0x7d, 0xee, 0x63, 0x6a,
- 0x96, 0x19, 0x99, 0xc8, 0xa7, 0x2a, 0x00, 0xe6, 0x51, 0x8d, 0x46, 0xeb,
- 0x30, 0x58, 0xe8, 0x2d, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01,
- 0x39, 0x30, 0x82, 0x01, 0x35, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13,
- 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01,
- 0x00, 0x30, 0x41, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x3a, 0x30, 0x38,
- 0x30, 0x36, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01,
- 0x07, 0x36, 0x30, 0x28, 0x30, 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05,
- 0x05, 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a,
- 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65,
- 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x0e, 0x06, 0x03,
- 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06,
- 0x30, 0x2e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01,
- 0x04, 0x22, 0x30, 0x20, 0x30, 0x1e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05,
- 0x05, 0x07, 0x30, 0x01, 0x86, 0x12, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
- 0x2f, 0x74, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x64, 0x2e, 0x63, 0x6f, 0x6d,
- 0x30, 0x31, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2a, 0x30, 0x28, 0x30,
- 0x26, 0xa0, 0x24, 0xa0, 0x22, 0x86, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a,
- 0x2f, 0x2f, 0x74, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f,
- 0x6d, 0x2f, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x50, 0x43, 0x41, 0x2e,
- 0x63, 0x72, 0x6c, 0x30, 0x29, 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, 0x22,
- 0x30, 0x20, 0xa4, 0x1e, 0x30, 0x1c, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03,
- 0x55, 0x04, 0x03, 0x13, 0x11, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65,
- 0x63, 0x50, 0x4b, 0x49, 0x2d, 0x31, 0x2d, 0x36, 0x39, 0x38, 0x30, 0x1d,
- 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x9f, 0xb8, 0xc1,
- 0xa9, 0x6c, 0xf2, 0xf5, 0xc0, 0x22, 0x2a, 0x94, 0xed, 0x5c, 0x99, 0xac,
- 0xd4, 0xec, 0xd7, 0xc6, 0x07, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23,
- 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x7b, 0x5b, 0x45, 0xcf, 0xaf, 0xce,
- 0xcb, 0x7a, 0xfd, 0x31, 0x92, 0x1a, 0x6a, 0xb6, 0xf3, 0x46, 0xeb, 0x57,
- 0x48, 0x50, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
- 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x53, 0x54,
- 0xf2, 0x47, 0xa8, 0x02, 0xd7, 0xef, 0xaa, 0x35, 0x78, 0xbe, 0x4a, 0x08,
- 0x0d, 0x90, 0x18, 0x4b, 0x6d, 0x9e, 0x2a, 0x53, 0x2b, 0xe9, 0x54, 0x17,
- 0x77, 0x74, 0x29, 0x7e, 0xd0, 0x37, 0x07, 0x05, 0xb8, 0xe4, 0xfa, 0xb8,
- 0xb4, 0x63, 0x98, 0x44, 0xdc, 0xc6, 0x4f, 0x81, 0x06, 0x8c, 0x3a, 0xbe,
- 0xc7, 0x30, 0x57, 0xc6, 0x70, 0xfc, 0xd6, 0x93, 0x19, 0x9f, 0xc3, 0x55,
- 0xd7, 0x3e, 0x1f, 0x72, 0x8a, 0x9d, 0x30, 0x5a, 0x35, 0x97, 0x32, 0xcb,
- 0x63, 0xe4, 0xc6, 0x72, 0xdf, 0xfb, 0x68, 0xca, 0x69, 0x2f, 0xdb, 0xcd,
- 0x50, 0x38, 0x3e, 0x2b, 0xbb, 0xab, 0x3b, 0x82, 0xc7, 0xfd, 0x4b, 0x9b,
- 0xbd, 0x7c, 0x41, 0x98, 0xef, 0x01, 0x53, 0xd8, 0x35, 0x8f, 0x25, 0xc9,
- 0x03, 0x06, 0xe6, 0x9c, 0x57, 0xc1, 0x51, 0x0f, 0x9e, 0xf6, 0x7d, 0x93,
- 0x4d, 0xf8, 0x76, 0xc8, 0x3a, 0x6b, 0xf4, 0xc4, 0x8f, 0x33, 0x32, 0x7f,
- 0x9d, 0x21, 0x84, 0x34, 0xd9, 0xa7, 0xf9, 0x92, 0xfa, 0x41, 0x91, 0x61,
- 0x84, 0x05, 0x9d, 0xa3, 0x79, 0x46, 0xce, 0x67, 0xe7, 0x81, 0xf2, 0x5e,
- 0xac, 0x4c, 0xbc, 0xa8, 0xab, 0x6a, 0x6d, 0x15, 0xe2, 0x9c, 0x4e, 0x5a,
- 0xd9, 0x63, 0x80, 0xbc, 0xf7, 0x42, 0xeb, 0x9a, 0x44, 0xc6, 0x8c, 0x6b,
- 0x06, 0x36, 0xb4, 0x8b, 0x32, 0x89, 0xde, 0xc2, 0xf1, 0xa8, 0x26, 0xaa,
- 0xa9, 0xac, 0xff, 0xea, 0x71, 0xa6, 0xe7, 0x8c, 0x41, 0xfa, 0x17, 0x35,
- 0xbb, 0xb3, 0x87, 0x31, 0xa9, 0x93, 0xc2, 0xc8, 0x58, 0xe1, 0x0a, 0x4e,
- 0x95, 0x83, 0x9c, 0xb9, 0xed, 0x3b, 0xa5, 0xef, 0x08, 0xe0, 0x74, 0xf9,
- 0xc3, 0x1b, 0xe6, 0x07, 0xa3, 0xee, 0x07, 0xd7, 0x42, 0x22, 0x79, 0x21,
- 0xa0, 0xa1, 0xd4, 0x1d, 0x26, 0xd3, 0xd0, 0xd6, 0xa6, 0x5d, 0x2b, 0x41,
- 0xc0, 0x79,
-}
-
-var certSet2Cert35 = []byte{
- 0x30, 0x82, 0x04, 0xe4, 0x30, 0x82, 0x03, 0xcc, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x4f, 0xe3, 0xe2, 0x65, 0x21, 0x07, 0xab, 0x20, 0x37,
- 0x41, 0x6e, 0x48, 0x70, 0xce, 0xd2, 0xc2, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x6f,
- 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x53,
- 0x45, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0b,
- 0x41, 0x64, 0x64, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x41, 0x42, 0x31,
- 0x26, 0x30, 0x24, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1d, 0x41, 0x64,
- 0x64, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x45, 0x78, 0x74, 0x65, 0x72,
- 0x6e, 0x61, 0x6c, 0x20, 0x54, 0x54, 0x50, 0x20, 0x4e, 0x65, 0x74, 0x77,
- 0x6f, 0x72, 0x6b, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x03,
- 0x13, 0x19, 0x41, 0x64, 0x64, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x45,
- 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x20, 0x43, 0x41, 0x20, 0x52,
- 0x6f, 0x6f, 0x74, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x30, 0x35, 0x32,
- 0x35, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x30,
- 0x30, 0x35, 0x33, 0x30, 0x31, 0x30, 0x34, 0x38, 0x33, 0x38, 0x5a, 0x30,
- 0x6b, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
- 0x55, 0x53, 0x31, 0x2d, 0x30, 0x2b, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13,
- 0x24, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x20, 0x53, 0x65, 0x63,
- 0x75, 0x72, 0x65, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63,
- 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74,
- 0x79, 0x31, 0x2d, 0x30, 0x2b, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x24,
- 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x20, 0x53, 0x65, 0x63, 0x75,
- 0x72, 0x65, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
- 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79,
- 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
- 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00,
- 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0x80, 0x0b, 0x42,
- 0xc6, 0x06, 0x6c, 0xcf, 0x22, 0xb3, 0x1a, 0x9e, 0x11, 0x2e, 0x42, 0x6e,
- 0x39, 0xbf, 0xe8, 0x12, 0xaf, 0x3c, 0x42, 0x21, 0x12, 0x95, 0x40, 0x5d,
- 0x32, 0xb1, 0x6d, 0x1c, 0x21, 0xd1, 0x34, 0xe5, 0x4f, 0xa8, 0xd1, 0x43,
- 0xa2, 0x26, 0x4e, 0x30, 0x7d, 0x73, 0x44, 0x2c, 0x73, 0xaa, 0xc5, 0x4d,
- 0x66, 0x01, 0x19, 0xd2, 0xea, 0x50, 0x59, 0x65, 0xd0, 0x68, 0x9d, 0x05,
- 0xa0, 0x7c, 0xa1, 0x79, 0x53, 0xd0, 0x21, 0x90, 0x59, 0x0e, 0x37, 0xdb,
- 0x1e, 0xdc, 0x92, 0xa7, 0x8b, 0x0d, 0xc4, 0xf5, 0xf8, 0xe6, 0xff, 0xb5,
- 0x35, 0x1a, 0xda, 0xa8, 0xb6, 0x9b, 0x20, 0x85, 0x65, 0xc4, 0xa2, 0x4d,
- 0xdf, 0xf3, 0x94, 0x4d, 0x63, 0x7e, 0xee, 0x89, 0x07, 0xaf, 0xfe, 0xe1,
- 0xba, 0x00, 0x15, 0x2d, 0xc6, 0x77, 0x8e, 0xa3, 0xfe, 0xad, 0xcf, 0x26,
- 0x54, 0x5a, 0xdf, 0xfc, 0xd2, 0xde, 0xc2, 0xad, 0xf6, 0xb2, 0x23, 0xfd,
- 0xa8, 0x83, 0xe5, 0x65, 0xbd, 0x27, 0xf7, 0x27, 0x1a, 0x18, 0x59, 0x6a,
- 0x9e, 0x14, 0xf6, 0xb4, 0x86, 0xff, 0x1c, 0x58, 0x14, 0x43, 0x73, 0x96,
- 0x24, 0xbf, 0x10, 0x43, 0xd5, 0x5c, 0x89, 0xf0, 0xce, 0xf7, 0xe1, 0x96,
- 0x16, 0x5e, 0x18, 0x4a, 0x27, 0x28, 0x90, 0x80, 0x18, 0xfc, 0x32, 0xfe,
- 0xf4, 0xc7, 0xb8, 0xd6, 0x82, 0x3d, 0x35, 0xaf, 0xbb, 0x4a, 0x1c, 0x5b,
- 0x05, 0x78, 0xf6, 0xfd, 0x55, 0x3e, 0x82, 0x74, 0xb2, 0x73, 0xb8, 0x89,
- 0x4e, 0xf7, 0x1b, 0x85, 0x9a, 0xd8, 0xca, 0xb1, 0x5a, 0xb1, 0x00, 0x20,
- 0x41, 0x14, 0x30, 0x2b, 0x14, 0x24, 0xed, 0x37, 0x0e, 0x32, 0x3e, 0x23,
- 0x88, 0x39, 0x7e, 0xb9, 0xd9, 0x38, 0x03, 0xe2, 0x4c, 0xd9, 0x0d, 0x43,
- 0x41, 0x33, 0x10, 0xeb, 0x30, 0x72, 0x53, 0x88, 0xf7, 0x52, 0x9b, 0x4f,
- 0x81, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x7e, 0x30, 0x82,
- 0x01, 0x7a, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30,
- 0x16, 0x80, 0x14, 0xad, 0xbd, 0x98, 0x7a, 0x34, 0xb4, 0x26, 0xf7, 0xfa,
- 0xc4, 0x26, 0x54, 0xef, 0x03, 0xbd, 0xe0, 0x24, 0xcb, 0x54, 0x1a, 0x30,
- 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xcc, 0x03,
- 0x5b, 0x96, 0x5a, 0x9e, 0x16, 0xcc, 0x26, 0x1e, 0xbd, 0xa3, 0x70, 0xfb,
- 0xe3, 0xcb, 0x79, 0x19, 0xfc, 0x4d, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d,
- 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x12,
- 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06,
- 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x18, 0x06, 0x03, 0x55, 0x1d,
- 0x20, 0x04, 0x11, 0x30, 0x0f, 0x30, 0x0d, 0x06, 0x0b, 0x2b, 0x06, 0x01,
- 0x04, 0x01, 0xb2, 0x31, 0x01, 0x02, 0x02, 0x08, 0x30, 0x44, 0x06, 0x03,
- 0x55, 0x1d, 0x1f, 0x04, 0x3d, 0x30, 0x3b, 0x30, 0x39, 0xa0, 0x37, 0xa0,
- 0x35, 0x86, 0x33, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72,
- 0x6c, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e,
- 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x64, 0x64, 0x54, 0x72, 0x75, 0x73, 0x74,
- 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x41, 0x52, 0x6f,
- 0x6f, 0x74, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x81, 0xb3, 0x06, 0x08, 0x2b,
- 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x81, 0xa6, 0x30, 0x81,
- 0xa3, 0x30, 0x3f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30,
- 0x02, 0x86, 0x33, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72,
- 0x74, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e,
- 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x64, 0x64, 0x54, 0x72, 0x75, 0x73, 0x74,
- 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x41, 0x52, 0x6f,
- 0x6f, 0x74, 0x2e, 0x70, 0x37, 0x63, 0x30, 0x39, 0x06, 0x08, 0x2b, 0x06,
- 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x2d, 0x68, 0x74, 0x74, 0x70,
- 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x74, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x74,
- 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x64, 0x64,
- 0x54, 0x72, 0x75, 0x73, 0x74, 0x55, 0x54, 0x4e, 0x53, 0x47, 0x43, 0x43,
- 0x41, 0x2e, 0x63, 0x72, 0x74, 0x30, 0x25, 0x06, 0x08, 0x2b, 0x06, 0x01,
- 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x19, 0x68, 0x74, 0x74, 0x70, 0x3a,
- 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x74,
- 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x0d, 0x06, 0x09,
- 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03,
- 0x82, 0x01, 0x01, 0x00, 0x7b, 0xf0, 0xfc, 0xa1, 0x28, 0x47, 0xbc, 0x2b,
- 0xb4, 0x04, 0x73, 0x3f, 0x4b, 0xdd, 0x1e, 0xd1, 0xb9, 0xcd, 0x1c, 0xed,
- 0x7d, 0xe5, 0xe8, 0xcb, 0x51, 0xf4, 0x92, 0xbf, 0xdd, 0x9c, 0x0d, 0x5c,
- 0x6e, 0x1d, 0x95, 0xed, 0x5b, 0x70, 0x50, 0x89, 0xd4, 0x67, 0x9a, 0x15,
- 0x54, 0xd1, 0x90, 0x0a, 0xfa, 0x09, 0x68, 0x06, 0x18, 0xbb, 0xd7, 0x27,
- 0xe4, 0x93, 0xff, 0x43, 0x48, 0x81, 0x3b, 0xc8, 0x59, 0x49, 0x35, 0xea,
- 0xac, 0xb6, 0xae, 0x46, 0xb5, 0xd4, 0xf3, 0xb8, 0xc3, 0xc6, 0xe4, 0x91,
- 0xbf, 0xc9, 0x34, 0xfd, 0x7e, 0xd0, 0x59, 0x6e, 0x61, 0xa1, 0x1f, 0x48,
- 0x63, 0x54, 0xb2, 0x7d, 0x46, 0xbf, 0xc8, 0xfa, 0xc3, 0xbf, 0x48, 0x58,
- 0x98, 0xf6, 0x69, 0x84, 0xa7, 0x16, 0x69, 0x08, 0x27, 0xa4, 0x22, 0xcb,
- 0xa2, 0x2c, 0xc8, 0xdf, 0x6e, 0xa9, 0xee, 0xf8, 0x41, 0xdf, 0x1b, 0xa8,
- 0xb7, 0xf3, 0xe3, 0xae, 0xce, 0xa3, 0xfe, 0xd9, 0x27, 0x60, 0x50, 0x3f,
- 0x04, 0x7d, 0x7a, 0x44, 0xea, 0x76, 0x42, 0x5c, 0xd3, 0x55, 0x46, 0xef,
- 0x27, 0xc5, 0x6a, 0x4a, 0x80, 0xe7, 0x35, 0xa0, 0x91, 0xc6, 0x1b, 0xa6,
- 0x86, 0x9c, 0x5a, 0x3b, 0x04, 0x83, 0x54, 0x34, 0xd7, 0xd1, 0x88, 0xa6,
- 0x36, 0xe9, 0x7f, 0x40, 0x27, 0xda, 0x56, 0x0a, 0x50, 0x21, 0x9d, 0x29,
- 0x8b, 0xa0, 0x84, 0xec, 0xfe, 0x71, 0x23, 0x53, 0x04, 0x18, 0x19, 0x70,
- 0x67, 0x86, 0x44, 0x95, 0x72, 0x40, 0x55, 0xf6, 0xdd, 0xa3, 0xb4, 0x3d,
- 0x2d, 0x09, 0x60, 0xa5, 0xe7, 0x5f, 0xfc, 0xac, 0x3b, 0xec, 0x0c, 0x91,
- 0x9f, 0xf8, 0xee, 0x6a, 0xba, 0xb2, 0x3c, 0xfd, 0x95, 0x7d, 0x9a, 0x07,
- 0xf4, 0xb0, 0x65, 0x43, 0xa2, 0xf6, 0xdf, 0x7d, 0xb8, 0x21, 0x49, 0x84,
- 0x04, 0xee, 0xbd, 0xce, 0x53, 0x8f, 0x0f, 0x29,
-}
-
-var certSet2Cert36 = []byte{
- 0x30, 0x82, 0x04, 0xf2, 0x30, 0x82, 0x03, 0xda, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x04, 0x38, 0x63, 0xe9, 0xfc, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x81,
- 0xb4, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0b,
- 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x31,
- 0x40, 0x30, 0x3e, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x14, 0x37, 0x77, 0x77,
- 0x77, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65,
- 0x74, 0x2f, 0x43, 0x50, 0x53, 0x5f, 0x32, 0x30, 0x34, 0x38, 0x20, 0x69,
- 0x6e, 0x63, 0x6f, 0x72, 0x70, 0x2e, 0x20, 0x62, 0x79, 0x20, 0x72, 0x65,
- 0x66, 0x2e, 0x20, 0x28, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x20, 0x6c,
- 0x69, 0x61, 0x62, 0x2e, 0x29, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55,
- 0x04, 0x0b, 0x13, 0x1c, 0x28, 0x63, 0x29, 0x20, 0x31, 0x39, 0x39, 0x39,
- 0x20, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74,
- 0x20, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x31, 0x33, 0x30, 0x31,
- 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2a, 0x45, 0x6e, 0x74, 0x72, 0x75,
- 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69,
- 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74,
- 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x28, 0x32, 0x30, 0x34, 0x38,
- 0x29, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x39, 0x31, 0x32, 0x31, 0x30, 0x32,
- 0x30, 0x34, 0x33, 0x35, 0x34, 0x5a, 0x17, 0x0d, 0x31, 0x39, 0x31, 0x32,
- 0x31, 0x30, 0x32, 0x31, 0x31, 0x33, 0x35, 0x34, 0x5a, 0x30, 0x81, 0xb1,
- 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55,
- 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d,
- 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, 0x63,
- 0x2e, 0x31, 0x39, 0x30, 0x37, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x30,
- 0x77, 0x77, 0x77, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e,
- 0x6e, 0x65, 0x74, 0x2f, 0x72, 0x70, 0x61, 0x20, 0x69, 0x73, 0x20, 0x69,
- 0x6e, 0x63, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20,
- 0x62, 0x79, 0x20, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
- 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x16, 0x28,
- 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x39, 0x20, 0x45, 0x6e, 0x74, 0x72,
- 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x2e, 0x30,
- 0x2c, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x25, 0x45, 0x6e, 0x74, 0x72,
- 0x75, 0x73, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72,
- 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x4c, 0x31, 0x43, 0x30, 0x82, 0x01,
- 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01,
- 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01,
- 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0x97, 0xa3, 0x2d, 0x3c, 0x9e, 0xde,
- 0x05, 0xda, 0x13, 0xc2, 0x11, 0x8d, 0x9d, 0x8e, 0xe3, 0x7f, 0xc7, 0x4b,
- 0x7e, 0x5a, 0x9f, 0xb3, 0xff, 0x62, 0xab, 0x73, 0xc8, 0x28, 0x6b, 0xba,
- 0x10, 0x64, 0x82, 0x87, 0x13, 0xcd, 0x57, 0x18, 0xff, 0x28, 0xce, 0xc0,
- 0xe6, 0x0e, 0x06, 0x91, 0x50, 0x29, 0x83, 0xd1, 0xf2, 0xc3, 0x2a, 0xdb,
- 0xd8, 0xdb, 0x4e, 0x04, 0xcc, 0x00, 0xeb, 0x8b, 0xb6, 0x96, 0xdc, 0xbc,
- 0xaa, 0xfa, 0x52, 0x77, 0x04, 0xc1, 0xdb, 0x19, 0xe4, 0xae, 0x9c, 0xfd,
- 0x3c, 0x8b, 0x03, 0xef, 0x4d, 0xbc, 0x1a, 0x03, 0x65, 0xf9, 0xc1, 0xb1,
- 0x3f, 0x72, 0x86, 0xf2, 0x38, 0xaa, 0x19, 0xae, 0x10, 0x88, 0x78, 0x28,
- 0xda, 0x75, 0xc3, 0x3d, 0x02, 0x82, 0x02, 0x9c, 0xb9, 0xc1, 0x65, 0x77,
- 0x76, 0x24, 0x4c, 0x98, 0xf7, 0x6d, 0x31, 0x38, 0xfb, 0xdb, 0xfe, 0xdb,
- 0x37, 0x02, 0x76, 0xa1, 0x18, 0x97, 0xa6, 0xcc, 0xde, 0x20, 0x09, 0x49,
- 0x36, 0x24, 0x69, 0x42, 0xf6, 0xe4, 0x37, 0x62, 0xf1, 0x59, 0x6d, 0xa9,
- 0x3c, 0xed, 0x34, 0x9c, 0xa3, 0x8e, 0xdb, 0xdc, 0x3a, 0xd7, 0xf7, 0x0a,
- 0x6f, 0xef, 0x2e, 0xd8, 0xd5, 0x93, 0x5a, 0x7a, 0xed, 0x08, 0x49, 0x68,
- 0xe2, 0x41, 0xe3, 0x5a, 0x90, 0xc1, 0x86, 0x55, 0xfc, 0x51, 0x43, 0x9d,
- 0xe0, 0xb2, 0xc4, 0x67, 0xb4, 0xcb, 0x32, 0x31, 0x25, 0xf0, 0x54, 0x9f,
- 0x4b, 0xd1, 0x6f, 0xdb, 0xd4, 0xdd, 0xfc, 0xaf, 0x5e, 0x6c, 0x78, 0x90,
- 0x95, 0xde, 0xca, 0x3a, 0x48, 0xb9, 0x79, 0x3c, 0x9b, 0x19, 0xd6, 0x75,
- 0x05, 0xa0, 0xf9, 0x88, 0xd7, 0xc1, 0xe8, 0xa5, 0x09, 0xe4, 0x1a, 0x15,
- 0xdc, 0x87, 0x23, 0xaa, 0xb2, 0x75, 0x8c, 0x63, 0x25, 0x87, 0xd8, 0xf8,
- 0x3d, 0xa6, 0xc2, 0xcc, 0x66, 0xff, 0xa5, 0x66, 0x68, 0x55, 0x02, 0x03,
- 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x0b, 0x30, 0x82, 0x01, 0x07, 0x30,
- 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03,
- 0x02, 0x01, 0x06, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01,
- 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x33, 0x06, 0x08,
- 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x27, 0x30, 0x25,
- 0x30, 0x23, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01,
- 0x86, 0x17, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73,
- 0x70, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65,
- 0x74, 0x30, 0x32, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2b, 0x30, 0x29,
- 0x30, 0x27, 0xa0, 0x25, 0xa0, 0x23, 0x86, 0x21, 0x68, 0x74, 0x74, 0x70,
- 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75,
- 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x32, 0x30, 0x34, 0x38, 0x63,
- 0x61, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x3b, 0x06, 0x03, 0x55, 0x1d, 0x20,
- 0x04, 0x34, 0x30, 0x32, 0x30, 0x30, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00,
- 0x30, 0x28, 0x30, 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07,
- 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77,
- 0x77, 0x77, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e,
- 0x65, 0x74, 0x2f, 0x72, 0x70, 0x61, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d,
- 0x0e, 0x04, 0x16, 0x04, 0x14, 0x1e, 0xf1, 0xab, 0x89, 0x06, 0xf8, 0x49,
- 0x0f, 0x01, 0x33, 0x77, 0xee, 0x14, 0x7a, 0xee, 0x19, 0x7c, 0x93, 0x28,
- 0x4d, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16,
- 0x80, 0x14, 0x55, 0xe4, 0x81, 0xd1, 0x11, 0x80, 0xbe, 0xd8, 0x89, 0xb9,
- 0x08, 0xa3, 0x31, 0xf9, 0xa1, 0x24, 0x09, 0x16, 0xb9, 0x70, 0x30, 0x0d,
- 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05,
- 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x07, 0xf6, 0x5f, 0x82, 0x84, 0x7f,
- 0x80, 0x40, 0xc7, 0x90, 0x34, 0x46, 0x42, 0x24, 0x03, 0xce, 0x2f, 0xab,
- 0xba, 0x83, 0x9e, 0x25, 0x73, 0x0d, 0xed, 0xac, 0x05, 0x69, 0xc6, 0x87,
- 0xed, 0xa3, 0x5c, 0xf2, 0x57, 0xc1, 0xb1, 0x49, 0x76, 0x9a, 0x4d, 0xf2,
- 0x3f, 0xdd, 0xe4, 0x0e, 0xfe, 0x0b, 0x3e, 0xb9, 0x98, 0xd9, 0x32, 0x95,
- 0x1d, 0x32, 0xf4, 0x01, 0xee, 0x9c, 0xc8, 0xc8, 0xe5, 0x3f, 0xe0, 0x53,
- 0x76, 0x62, 0xfc, 0xdd, 0xab, 0x6d, 0x3d, 0x94, 0x90, 0xf2, 0xc0, 0xb3,
- 0x3c, 0x98, 0x27, 0x36, 0x5e, 0x28, 0x97, 0x22, 0xfc, 0x1b, 0x40, 0xd3,
- 0x2b, 0x0d, 0xad, 0xb5, 0x57, 0x6d, 0xdf, 0x0f, 0xe3, 0x4b, 0xef, 0x73,
- 0x02, 0x10, 0x65, 0xfa, 0x1b, 0xd0, 0xac, 0x31, 0xd5, 0xe3, 0x0f, 0xe8,
- 0xba, 0x32, 0x30, 0x83, 0xee, 0x4a, 0xd0, 0xbf, 0xdf, 0x22, 0x90, 0x7a,
- 0xbe, 0xec, 0x3a, 0x1b, 0xc4, 0x49, 0x04, 0x1d, 0xf1, 0xae, 0x80, 0x77,
- 0x3c, 0x42, 0x08, 0xdb, 0xa7, 0x3b, 0x28, 0xa6, 0x80, 0x01, 0x03, 0xe6,
- 0x39, 0xa3, 0xeb, 0xdf, 0x80, 0x59, 0x1b, 0xf3, 0x2c, 0xbe, 0xdc, 0x72,
- 0x44, 0x79, 0xa0, 0x6c, 0x07, 0xa5, 0x6d, 0x4d, 0x44, 0x8e, 0x42, 0x68,
- 0xca, 0x94, 0x7c, 0x2e, 0x36, 0xba, 0x85, 0x9e, 0xcd, 0xaa, 0xc4, 0x5e,
- 0x3c, 0x54, 0xbe, 0xfe, 0x2f, 0xea, 0x69, 0x9d, 0x1c, 0x1e, 0x29, 0x9b,
- 0x96, 0xd8, 0xc8, 0xfe, 0x51, 0x90, 0xf1, 0x24, 0xa6, 0x90, 0x06, 0xb3,
- 0xf0, 0x29, 0xa2, 0xff, 0x78, 0x2e, 0x77, 0x5c, 0x45, 0x21, 0xd9, 0x44,
- 0x00, 0x31, 0xf3, 0xbe, 0x32, 0x4f, 0xf5, 0x0a, 0x32, 0x0d, 0xfc, 0xfc,
- 0xba, 0x16, 0x76, 0x56, 0xb2, 0xd6, 0x48, 0x92, 0xf2, 0x8b, 0xa6, 0x3e,
- 0xb7, 0xac, 0x5c, 0x69, 0xea, 0x0b, 0x3f, 0x66, 0x45, 0xb9,
-}
-
-var certSet2Cert37 = []byte{
- 0x30, 0x82, 0x04, 0xfc, 0x30, 0x82, 0x03, 0xe4, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x16, 0x90, 0xc3, 0x29, 0xb6, 0x78, 0x06, 0x07, 0x51,
- 0x1f, 0x05, 0xb0, 0x34, 0x48, 0x46, 0xcb, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x6f,
- 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x53,
- 0x45, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0b,
- 0x41, 0x64, 0x64, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x41, 0x42, 0x31,
- 0x26, 0x30, 0x24, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1d, 0x41, 0x64,
- 0x64, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x45, 0x78, 0x74, 0x65, 0x72,
- 0x6e, 0x61, 0x6c, 0x20, 0x54, 0x54, 0x50, 0x20, 0x4e, 0x65, 0x74, 0x77,
- 0x6f, 0x72, 0x6b, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x03,
- 0x13, 0x19, 0x41, 0x64, 0x64, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x45,
- 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x20, 0x43, 0x41, 0x20, 0x52,
- 0x6f, 0x6f, 0x74, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x30, 0x34, 0x31,
- 0x36, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x30,
- 0x30, 0x35, 0x33, 0x30, 0x31, 0x30, 0x34, 0x38, 0x33, 0x38, 0x5a, 0x30,
- 0x81, 0x89, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13,
- 0x02, 0x47, 0x42, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x08,
- 0x13, 0x12, 0x47, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x4d, 0x61,
- 0x6e, 0x63, 0x68, 0x65, 0x73, 0x74, 0x65, 0x72, 0x31, 0x10, 0x30, 0x0e,
- 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x07, 0x53, 0x61, 0x6c, 0x66, 0x6f,
- 0x72, 0x64, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13,
- 0x11, 0x43, 0x4f, 0x4d, 0x4f, 0x44, 0x4f, 0x20, 0x43, 0x41, 0x20, 0x4c,
- 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x31, 0x2f, 0x30, 0x2d, 0x06, 0x03,
- 0x55, 0x04, 0x03, 0x13, 0x26, 0x43, 0x4f, 0x4d, 0x4f, 0x44, 0x4f, 0x20,
- 0x48, 0x69, 0x67, 0x68, 0x2d, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6e,
- 0x63, 0x65, 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x53, 0x65,
- 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30,
- 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01,
- 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02,
- 0x82, 0x01, 0x01, 0x00, 0xe7, 0x87, 0xda, 0xc0, 0x77, 0xe4, 0xbb, 0x3a,
- 0xfa, 0x6a, 0x24, 0xc8, 0x80, 0x41, 0xac, 0xd2, 0x16, 0x13, 0x15, 0x3d,
- 0xfa, 0xf7, 0xf8, 0x2a, 0x76, 0xdc, 0xa8, 0x2d, 0x39, 0x08, 0xce, 0x48,
- 0x4a, 0xbe, 0x0f, 0x7d, 0xf0, 0xde, 0xba, 0xbb, 0x47, 0xd5, 0xbd, 0x2d,
- 0xd7, 0x1b, 0xab, 0x0f, 0x20, 0x81, 0x23, 0x08, 0x72, 0xb1, 0xc0, 0x11,
- 0x95, 0x0d, 0xe6, 0xea, 0xa9, 0x87, 0xff, 0xc7, 0x6e, 0x1e, 0x4f, 0x66,
- 0x32, 0xba, 0x53, 0xbc, 0x05, 0xaa, 0x1c, 0x2c, 0x0c, 0xef, 0x4d, 0x37,
- 0x47, 0x6b, 0x10, 0x0c, 0xdb, 0xc5, 0xa0, 0x98, 0x7e, 0x58, 0xdb, 0x37,
- 0xd6, 0xae, 0xe9, 0x06, 0xbd, 0xd7, 0xa8, 0x65, 0xf3, 0x37, 0xb9, 0xc7,
- 0x6d, 0xce, 0x77, 0xc7, 0x26, 0xe0, 0xd7, 0x74, 0x1f, 0xa6, 0x98, 0x16,
- 0xbb, 0x0c, 0x6b, 0xc8, 0xbe, 0x77, 0xd0, 0xef, 0x58, 0xa7, 0x29, 0xa0,
- 0xb9, 0xb8, 0x69, 0x05, 0x36, 0xcb, 0xb2, 0xda, 0x58, 0xa3, 0x0b, 0x75,
- 0xad, 0x3d, 0x8b, 0x22, 0x82, 0x20, 0x3e, 0x70, 0x86, 0x99, 0x1c, 0xb9,
- 0x4f, 0xcf, 0x77, 0xa4, 0x07, 0x1a, 0x23, 0x63, 0xd1, 0x38, 0x56, 0x84,
- 0xec, 0xbf, 0x8f, 0xc5, 0x4e, 0xf4, 0x18, 0x96, 0x9b, 0x1a, 0xe8, 0x93,
- 0xec, 0x8d, 0xaf, 0x15, 0x9c, 0x24, 0xf0, 0x5a, 0x3b, 0xe8, 0x0f, 0xb9,
- 0xa8, 0x5a, 0x01, 0xd3, 0xb2, 0x1c, 0x60, 0xc9, 0x9c, 0x52, 0x04, 0xdd,
- 0x92, 0xa7, 0xfe, 0x0c, 0xac, 0xe2, 0x45, 0x8d, 0x03, 0x61, 0xbc, 0x79,
- 0xe0, 0x77, 0x2e, 0x87, 0x41, 0x3c, 0x58, 0x5f, 0xcb, 0xf5, 0xc5, 0x77,
- 0xf2, 0x58, 0xc8, 0x4d, 0x28, 0xd0, 0x9a, 0xfa, 0xf3, 0x73, 0x09, 0x24,
- 0x68, 0x74, 0xbc, 0x20, 0x4c, 0xd8, 0x2c, 0xb0, 0xaa, 0xe8, 0xd9, 0x4e,
- 0x6d, 0xf2, 0x8c, 0x24, 0xd3, 0x93, 0x5d, 0x91, 0x02, 0x03, 0x01, 0x00,
- 0x01, 0xa3, 0x82, 0x01, 0x77, 0x30, 0x82, 0x01, 0x73, 0x30, 0x1f, 0x06,
- 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xad, 0xbd,
- 0x98, 0x7a, 0x34, 0xb4, 0x26, 0xf7, 0xfa, 0xc4, 0x26, 0x54, 0xef, 0x03,
- 0xbd, 0xe0, 0x24, 0xcb, 0x54, 0x1a, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d,
- 0x0e, 0x04, 0x16, 0x04, 0x14, 0x3f, 0xd5, 0xb5, 0xd0, 0xd6, 0x44, 0x79,
- 0x50, 0x4a, 0x17, 0xa3, 0x9b, 0x8c, 0x4a, 0xdc, 0xb8, 0xb0, 0x22, 0x64,
- 0x6b, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04,
- 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13,
- 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01,
- 0x00, 0x30, 0x11, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x0a, 0x30, 0x08,
- 0x30, 0x06, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x44, 0x06, 0x03,
- 0x55, 0x1d, 0x1f, 0x04, 0x3d, 0x30, 0x3b, 0x30, 0x39, 0xa0, 0x37, 0xa0,
- 0x35, 0x86, 0x33, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72,
- 0x6c, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e,
- 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x64, 0x64, 0x54, 0x72, 0x75, 0x73, 0x74,
- 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x41, 0x52, 0x6f,
- 0x6f, 0x74, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x81, 0xb3, 0x06, 0x08, 0x2b,
- 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x81, 0xa6, 0x30, 0x81,
- 0xa3, 0x30, 0x3f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30,
- 0x02, 0x86, 0x33, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72,
- 0x74, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e,
- 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x64, 0x64, 0x54, 0x72, 0x75, 0x73, 0x74,
- 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x41, 0x52, 0x6f,
- 0x6f, 0x74, 0x2e, 0x70, 0x37, 0x63, 0x30, 0x39, 0x06, 0x08, 0x2b, 0x06,
- 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x2d, 0x68, 0x74, 0x74, 0x70,
- 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x74, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x74,
- 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x64, 0x64,
- 0x54, 0x72, 0x75, 0x73, 0x74, 0x55, 0x54, 0x4e, 0x53, 0x47, 0x43, 0x43,
- 0x41, 0x2e, 0x63, 0x72, 0x74, 0x30, 0x25, 0x06, 0x08, 0x2b, 0x06, 0x01,
- 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x19, 0x68, 0x74, 0x74, 0x70, 0x3a,
- 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x74,
- 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x0d, 0x06, 0x09,
- 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03,
- 0x82, 0x01, 0x01, 0x00, 0x13, 0x85, 0x1f, 0x52, 0x80, 0x18, 0xc9, 0x53,
- 0xf7, 0xfe, 0x2e, 0x1a, 0xaf, 0xcc, 0xd9, 0x0b, 0x3c, 0xc2, 0xd3, 0x85,
- 0x81, 0x10, 0xf0, 0x28, 0x8d, 0xb9, 0x40, 0x7e, 0x2c, 0x9e, 0x8f, 0xd6,
- 0x36, 0x86, 0x0a, 0x4c, 0x14, 0x2d, 0xd6, 0x97, 0x43, 0x92, 0x41, 0x19,
- 0x37, 0x4b, 0x96, 0x9e, 0xeb, 0xa9, 0x30, 0x79, 0x12, 0x95, 0xb3, 0x02,
- 0x36, 0x57, 0xed, 0x2b, 0xb9, 0x1d, 0x98, 0x1a, 0xa3, 0x18, 0x0a, 0x3f,
- 0x9b, 0x39, 0x8b, 0xcd, 0xa1, 0x49, 0x29, 0x4c, 0x2f, 0xf9, 0xd0, 0x95,
- 0x8c, 0xc8, 0x4d, 0x95, 0xba, 0xa8, 0x43, 0xcf, 0x33, 0xaa, 0x25, 0x2a,
- 0x5a, 0x0e, 0xaa, 0x27, 0xc9, 0x4e, 0x6b, 0xb1, 0xe6, 0x73, 0x1f, 0xb3,
- 0x74, 0x04, 0xc3, 0xf3, 0x4c, 0xe2, 0xa8, 0xeb, 0x67, 0xb7, 0x5d, 0xb8,
- 0x08, 0x05, 0x1a, 0x56, 0x9a, 0x54, 0x29, 0x85, 0xf5, 0x29, 0x4e, 0x80,
- 0x3b, 0x95, 0xd0, 0x7b, 0x53, 0x96, 0x11, 0x56, 0xc1, 0x02, 0xd3, 0xea,
- 0xb2, 0x7f, 0xca, 0x8f, 0x9c, 0x70, 0x4a, 0x14, 0x8d, 0x5a, 0xb9, 0x16,
- 0x60, 0x75, 0xd6, 0xcd, 0x27, 0x1e, 0x16, 0xcd, 0x5b, 0x33, 0x8e, 0x79,
- 0x40, 0xcf, 0x28, 0x48, 0xe7, 0xdc, 0x71, 0x16, 0x4e, 0x74, 0x91, 0x75,
- 0xb9, 0x2a, 0x8c, 0xf1, 0x70, 0xac, 0x26, 0xdd, 0x04, 0xb9, 0x40, 0xc2,
- 0x85, 0xde, 0x1c, 0x93, 0x40, 0xd0, 0xcc, 0x6e, 0xc3, 0x9b, 0xaa, 0xef,
- 0x60, 0x65, 0xdf, 0x60, 0x22, 0xf0, 0x5a, 0xa5, 0x7a, 0xa2, 0x2f, 0xe4,
- 0x70, 0x73, 0xee, 0x3c, 0xd4, 0x26, 0x2b, 0x68, 0x07, 0xc1, 0x20, 0x7a,
- 0xe8, 0x98, 0x5a, 0x3e, 0x7b, 0x9f, 0x02, 0x8b, 0x62, 0xc0, 0x85, 0x81,
- 0x80, 0x60, 0x35, 0x7e, 0xa5, 0x1d, 0x0c, 0xd2, 0x9c, 0xdf, 0x62, 0x45,
- 0x0d, 0xdb, 0xfc, 0x37, 0xfb, 0xf5, 0x25, 0x22,
-}
-
-var certSet2Cert38 = []byte{
- 0x30, 0x82, 0x04, 0xff, 0x30, 0x82, 0x03, 0xe7, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x04, 0x51, 0xd3, 0x40, 0x44, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81,
- 0xb0, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
- 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13,
- 0x0d, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e,
- 0x63, 0x2e, 0x31, 0x39, 0x30, 0x37, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13,
- 0x30, 0x77, 0x77, 0x77, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74,
- 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x43, 0x50, 0x53, 0x20, 0x69, 0x73, 0x20,
- 0x69, 0x6e, 0x63, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x64,
- 0x20, 0x62, 0x79, 0x20, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63,
- 0x65, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x16,
- 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x36, 0x20, 0x45, 0x6e, 0x74,
- 0x72, 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x2d,
- 0x30, 0x2b, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x24, 0x45, 0x6e, 0x74,
- 0x72, 0x75, 0x73, 0x74, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x65,
- 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20,
- 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, 0x1e, 0x17,
- 0x0d, 0x31, 0x34, 0x30, 0x39, 0x32, 0x32, 0x31, 0x37, 0x31, 0x34, 0x35,
- 0x37, 0x5a, 0x17, 0x0d, 0x32, 0x34, 0x30, 0x39, 0x32, 0x33, 0x30, 0x31,
- 0x33, 0x31, 0x35, 0x33, 0x5a, 0x30, 0x81, 0xbe, 0x31, 0x0b, 0x30, 0x09,
- 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30,
- 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x45, 0x6e, 0x74, 0x72,
- 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x28, 0x30,
- 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f, 0x53, 0x65, 0x65, 0x20,
- 0x77, 0x77, 0x77, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e,
- 0x6e, 0x65, 0x74, 0x2f, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x2d, 0x74, 0x65,
- 0x72, 0x6d, 0x73, 0x31, 0x39, 0x30, 0x37, 0x06, 0x03, 0x55, 0x04, 0x0b,
- 0x13, 0x30, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x39, 0x20, 0x45,
- 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e,
- 0x20, 0x2d, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f,
- 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e,
- 0x6c, 0x79, 0x31, 0x32, 0x30, 0x30, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13,
- 0x29, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x20, 0x52, 0x6f, 0x6f,
- 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74,
- 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d,
- 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05,
- 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82,
- 0x01, 0x01, 0x00, 0xba, 0x84, 0xb6, 0x72, 0xdb, 0x9e, 0x0c, 0x6b, 0xe2,
- 0x99, 0xe9, 0x30, 0x01, 0xa7, 0x76, 0xea, 0x32, 0xb8, 0x95, 0x41, 0x1a,
- 0xc9, 0xda, 0x61, 0x4e, 0x58, 0x72, 0xcf, 0xfe, 0xf6, 0x82, 0x79, 0xbf,
- 0x73, 0x61, 0x06, 0x0a, 0xa5, 0x27, 0xd8, 0xb3, 0x5f, 0xd3, 0x45, 0x4e,
- 0x1c, 0x72, 0xd6, 0x4e, 0x32, 0xf2, 0x72, 0x8a, 0x0f, 0xf7, 0x83, 0x19,
- 0xd0, 0x6a, 0x80, 0x80, 0x00, 0x45, 0x1e, 0xb0, 0xc7, 0xe7, 0x9a, 0xbf,
- 0x12, 0x57, 0x27, 0x1c, 0xa3, 0x68, 0x2f, 0x0a, 0x87, 0xbd, 0x6a, 0x6b,
- 0x0e, 0x5e, 0x65, 0xf3, 0x1c, 0x77, 0xd5, 0xd4, 0x85, 0x8d, 0x70, 0x21,
- 0xb4, 0xb3, 0x32, 0xe7, 0x8b, 0xa2, 0xd5, 0x86, 0x39, 0x02, 0xb1, 0xb8,
- 0xd2, 0x47, 0xce, 0xe4, 0xc9, 0x49, 0xc4, 0x3b, 0xa7, 0xde, 0xfb, 0x54,
- 0x7d, 0x57, 0xbe, 0xf0, 0xe8, 0x6e, 0xc2, 0x79, 0xb2, 0x3a, 0x0b, 0x55,
- 0xe2, 0x50, 0x98, 0x16, 0x32, 0x13, 0x5c, 0x2f, 0x78, 0x56, 0xc1, 0xc2,
- 0x94, 0xb3, 0xf2, 0x5a, 0xe4, 0x27, 0x9a, 0x9f, 0x24, 0xd7, 0xc6, 0xec,
- 0xd0, 0x9b, 0x25, 0x82, 0xe3, 0xcc, 0xc2, 0xc4, 0x45, 0xc5, 0x8c, 0x97,
- 0x7a, 0x06, 0x6b, 0x2a, 0x11, 0x9f, 0xa9, 0x0a, 0x6e, 0x48, 0x3b, 0x6f,
- 0xdb, 0xd4, 0x11, 0x19, 0x42, 0xf7, 0x8f, 0x07, 0xbf, 0xf5, 0x53, 0x5f,
- 0x9c, 0x3e, 0xf4, 0x17, 0x2c, 0xe6, 0x69, 0xac, 0x4e, 0x32, 0x4c, 0x62,
- 0x77, 0xea, 0xb7, 0xe8, 0xe5, 0xbb, 0x34, 0xbc, 0x19, 0x8b, 0xae, 0x9c,
- 0x51, 0xe7, 0xb7, 0x7e, 0xb5, 0x53, 0xb1, 0x33, 0x22, 0xe5, 0x6d, 0xcf,
- 0x70, 0x3c, 0x1a, 0xfa, 0xe2, 0x9b, 0x67, 0xb6, 0x83, 0xf4, 0x8d, 0xa5,
- 0xaf, 0x62, 0x4c, 0x4d, 0xe0, 0x58, 0xac, 0x64, 0x34, 0x12, 0x03, 0xf8,
- 0xb6, 0x8d, 0x94, 0x63, 0x24, 0xa4, 0x71, 0x02, 0x03, 0x01, 0x00, 0x01,
- 0xa3, 0x82, 0x01, 0x0f, 0x30, 0x82, 0x01, 0x0b, 0x30, 0x0e, 0x06, 0x03,
- 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06,
- 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08,
- 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x01, 0x30, 0x33, 0x06, 0x08,
- 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x27, 0x30, 0x25,
- 0x30, 0x23, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01,
- 0x86, 0x17, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73,
- 0x70, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65,
- 0x74, 0x30, 0x33, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2c, 0x30, 0x2a,
- 0x30, 0x28, 0xa0, 0x26, 0xa0, 0x24, 0x86, 0x22, 0x68, 0x74, 0x74, 0x70,
- 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75,
- 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x72, 0x6f, 0x6f, 0x74, 0x63,
- 0x61, 0x31, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x3b, 0x06, 0x03, 0x55, 0x1d,
- 0x20, 0x04, 0x34, 0x30, 0x32, 0x30, 0x30, 0x06, 0x04, 0x55, 0x1d, 0x20,
- 0x00, 0x30, 0x28, 0x30, 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
- 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f,
- 0x77, 0x77, 0x77, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e,
- 0x6e, 0x65, 0x74, 0x2f, 0x43, 0x50, 0x53, 0x30, 0x1d, 0x06, 0x03, 0x55,
- 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x6a, 0x72, 0x26, 0x7a, 0xd0, 0x1e,
- 0xef, 0x7d, 0xe7, 0x3b, 0x69, 0x51, 0xd4, 0x6c, 0x8d, 0x9f, 0x90, 0x12,
- 0x66, 0xab, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30,
- 0x16, 0x80, 0x14, 0x68, 0x90, 0xe4, 0x67, 0xa4, 0xa6, 0x53, 0x80, 0xc7,
- 0x86, 0x66, 0xa4, 0xf1, 0xf7, 0x4b, 0x43, 0xfb, 0x84, 0xbd, 0x6d, 0x30,
- 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b,
- 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x69, 0x33, 0x83, 0xfc, 0x28,
- 0x7a, 0x6f, 0x7d, 0xef, 0x9d, 0x55, 0xeb, 0xc5, 0x3e, 0x7a, 0x9d, 0x75,
- 0xb3, 0xcc, 0xc3, 0x38, 0x36, 0xd9, 0x34, 0xa2, 0x28, 0x68, 0x18, 0xea,
- 0x1e, 0x69, 0xd3, 0xbd, 0xe7, 0xd0, 0x77, 0xda, 0xb8, 0x00, 0x83, 0x4e,
- 0x4a, 0xcf, 0x6f, 0xd1, 0xf1, 0xc1, 0x22, 0x3f, 0x74, 0xe4, 0xf7, 0x98,
- 0x49, 0x9e, 0x9b, 0xb6, 0x9e, 0xe1, 0xdb, 0x98, 0x77, 0x2d, 0x56, 0x34,
- 0xb1, 0xa8, 0x3c, 0xd9, 0xfd, 0xc0, 0xcd, 0xc7, 0xbf, 0x05, 0x03, 0xd4,
- 0x02, 0xc5, 0xf1, 0xe5, 0xc6, 0xda, 0x08, 0xa5, 0x13, 0xc7, 0x62, 0x23,
- 0x11, 0xd1, 0x61, 0x30, 0x1d, 0x60, 0x84, 0x45, 0xef, 0x79, 0xa8, 0xc6,
- 0x26, 0x93, 0xa4, 0xb7, 0xcd, 0x34, 0xb8, 0x69, 0xc5, 0x13, 0xf6, 0x91,
- 0xb3, 0xc9, 0x45, 0x73, 0x76, 0xb6, 0x92, 0xf6, 0x76, 0x0a, 0x5b, 0xe1,
- 0x03, 0x47, 0xb7, 0xe9, 0x29, 0x4c, 0x91, 0x32, 0x23, 0x37, 0x4a, 0x9c,
- 0x35, 0xd8, 0x78, 0xfd, 0x1d, 0x1f, 0xe4, 0x83, 0x89, 0x24, 0x80, 0xad,
- 0xb7, 0xf9, 0xcf, 0xe4, 0x5d, 0xa5, 0xd4, 0x71, 0xc4, 0x85, 0x5b, 0x70,
- 0x1f, 0xdb, 0x3f, 0x1c, 0x01, 0xeb, 0x1a, 0x45, 0x26, 0x31, 0x14, 0xcc,
- 0x65, 0xbf, 0x67, 0xde, 0xca, 0xcc, 0x33, 0x65, 0xe5, 0x41, 0x91, 0xd7,
- 0x37, 0xbe, 0x41, 0x1a, 0x96, 0x9d, 0xe6, 0x8a, 0x97, 0x9d, 0xa7, 0xce,
- 0xac, 0x4e, 0x9a, 0x3d, 0xbd, 0x01, 0xa0, 0x6a, 0xd9, 0x4f, 0x22, 0x00,
- 0x8b, 0x44, 0xd5, 0x69, 0x62, 0x7b, 0x2e, 0xeb, 0xcc, 0xba, 0xe7, 0x92,
- 0x7d, 0x69, 0x67, 0x3d, 0xfc, 0xb8, 0x7c, 0xde, 0x41, 0x87, 0xd0, 0x69,
- 0xea, 0xba, 0x0a, 0x18, 0x7a, 0x1a, 0x95, 0x43, 0xb3, 0x79, 0x71, 0x28,
- 0x76, 0x6d, 0xa1, 0xfb, 0x57, 0x4a, 0xec, 0x4d, 0xc8, 0x0e, 0x10,
-}
-
-var certSet2Cert39 = []byte{
- 0x30, 0x82, 0x05, 0x00, 0x30, 0x82, 0x03, 0xe8, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x01, 0x07, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
- 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, 0x8f, 0x31, 0x0b,
- 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31,
- 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x07, 0x41, 0x72,
- 0x69, 0x7a, 0x6f, 0x6e, 0x61, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55,
- 0x04, 0x07, 0x13, 0x0a, 0x53, 0x63, 0x6f, 0x74, 0x74, 0x73, 0x64, 0x61,
- 0x6c, 0x65, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13,
- 0x1c, 0x53, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x54,
- 0x65, 0x63, 0x68, 0x6e, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x65, 0x73, 0x2c,
- 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x32, 0x30, 0x30, 0x06, 0x03, 0x55,
- 0x04, 0x03, 0x13, 0x29, 0x53, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c,
- 0x64, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69,
- 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f,
- 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x1e, 0x17,
- 0x0d, 0x31, 0x31, 0x30, 0x35, 0x30, 0x33, 0x30, 0x37, 0x30, 0x30, 0x30,
- 0x30, 0x5a, 0x17, 0x0d, 0x33, 0x31, 0x30, 0x35, 0x30, 0x33, 0x30, 0x37,
- 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x81, 0xc6, 0x31, 0x0b, 0x30, 0x09,
- 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, 0x30,
- 0x0e, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x07, 0x41, 0x72, 0x69, 0x7a,
- 0x6f, 0x6e, 0x61, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x07,
- 0x13, 0x0a, 0x53, 0x63, 0x6f, 0x74, 0x74, 0x73, 0x64, 0x61, 0x6c, 0x65,
- 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x1c, 0x53,
- 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x54, 0x65, 0x63,
- 0x68, 0x6e, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x65, 0x73, 0x2c, 0x20, 0x49,
- 0x6e, 0x63, 0x2e, 0x31, 0x33, 0x30, 0x31, 0x06, 0x03, 0x55, 0x04, 0x0b,
- 0x13, 0x2a, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x65, 0x72,
- 0x74, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64,
- 0x74, 0x65, 0x63, 0x68, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70,
- 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x31, 0x34, 0x30, 0x32,
- 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2b, 0x53, 0x74, 0x61, 0x72, 0x66,
- 0x69, 0x65, 0x6c, 0x64, 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20,
- 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20,
- 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20,
- 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
- 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01,
- 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xe5,
- 0x90, 0x66, 0x4b, 0xec, 0xf9, 0x46, 0x71, 0xa9, 0x20, 0x83, 0xbe, 0xe9,
- 0x6c, 0xbf, 0x4a, 0xc9, 0x48, 0x69, 0x81, 0x75, 0x4e, 0x6d, 0x24, 0xf6,
- 0xcb, 0x17, 0x13, 0xf8, 0xb0, 0x71, 0x59, 0x84, 0x7a, 0x6b, 0x2b, 0x85,
- 0xa4, 0x34, 0xb5, 0x16, 0xe5, 0xcb, 0xcc, 0xe9, 0x41, 0x70, 0x2c, 0xa4,
- 0x2e, 0xd6, 0xfa, 0x32, 0x7d, 0xe1, 0xa8, 0xde, 0x94, 0x10, 0xac, 0x31,
- 0xc1, 0xc0, 0xd8, 0x6a, 0xff, 0x59, 0x27, 0xab, 0x76, 0xd6, 0xfc, 0x0b,
- 0x74, 0x6b, 0xb8, 0xa7, 0xae, 0x3f, 0xc4, 0x54, 0xf4, 0xb4, 0x31, 0x44,
- 0xdd, 0x93, 0x56, 0x8c, 0xa4, 0x4c, 0x5e, 0x9b, 0x89, 0xcb, 0x24, 0x83,
- 0x9b, 0xe2, 0x57, 0x7d, 0xb7, 0xd8, 0x12, 0x1f, 0xc9, 0x85, 0x6d, 0xf4,
- 0xd1, 0x80, 0xf1, 0x50, 0x9b, 0x87, 0xae, 0xd4, 0x0b, 0x10, 0x05, 0xfb,
- 0x27, 0xba, 0x28, 0x6d, 0x17, 0xe9, 0x0e, 0xd6, 0x4d, 0xb9, 0x39, 0x55,
- 0x06, 0xff, 0x0a, 0x24, 0x05, 0x7e, 0x2f, 0xc6, 0x1d, 0x72, 0x6c, 0xd4,
- 0x8b, 0x29, 0x8c, 0x57, 0x7d, 0xda, 0xd9, 0xeb, 0x66, 0x1a, 0xd3, 0x4f,
- 0xa7, 0xdf, 0x7f, 0x52, 0xc4, 0x30, 0xc5, 0xa5, 0xc9, 0x0e, 0x02, 0xc5,
- 0x53, 0xbf, 0x77, 0x38, 0x68, 0x06, 0x24, 0xc3, 0x66, 0xc8, 0x37, 0x7e,
- 0x30, 0x1e, 0x45, 0x71, 0x23, 0x35, 0xff, 0x90, 0xd8, 0x2a, 0x9d, 0x8d,
- 0xe7, 0xb0, 0x92, 0x4d, 0x3c, 0x7f, 0x2a, 0x0a, 0x93, 0xdc, 0xcd, 0x16,
- 0x46, 0x65, 0xf7, 0x60, 0x84, 0x8b, 0x76, 0x4b, 0x91, 0x27, 0x73, 0x14,
- 0x92, 0xe0, 0xea, 0xee, 0x8f, 0x16, 0xea, 0x8d, 0x0e, 0x3e, 0x76, 0x17,
- 0xbf, 0x7d, 0x89, 0x80, 0x80, 0x44, 0x43, 0xe7, 0x2d, 0xe0, 0x43, 0x09,
- 0x75, 0xda, 0x36, 0xe8, 0xad, 0xdb, 0x89, 0x3a, 0xf5, 0x5d, 0x12, 0x8e,
- 0x23, 0x04, 0x83, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x2c,
- 0x30, 0x82, 0x01, 0x28, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01,
- 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0e, 0x06,
- 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01,
- 0x06, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14,
- 0x25, 0x45, 0x81, 0x68, 0x50, 0x26, 0x38, 0x3d, 0x3b, 0x2d, 0x2c, 0xbe,
- 0xcd, 0x6a, 0xd9, 0xb6, 0x3d, 0xb3, 0x66, 0x63, 0x30, 0x1f, 0x06, 0x03,
- 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x7c, 0x0c, 0x32,
- 0x1f, 0xa7, 0xd9, 0x30, 0x7f, 0xc4, 0x7d, 0x68, 0xa3, 0x62, 0xa8, 0xa1,
- 0xce, 0xab, 0x07, 0x5b, 0x27, 0x30, 0x3a, 0x06, 0x08, 0x2b, 0x06, 0x01,
- 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x2e, 0x30, 0x2c, 0x30, 0x2a, 0x06,
- 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x1e, 0x68,
- 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x73,
- 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x74, 0x65, 0x63, 0x68,
- 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x30, 0x3b, 0x06, 0x03, 0x55, 0x1d, 0x1f,
- 0x04, 0x34, 0x30, 0x32, 0x30, 0x30, 0xa0, 0x2e, 0xa0, 0x2c, 0x86, 0x2a,
- 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x73,
- 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x74, 0x65, 0x63, 0x68,
- 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x66, 0x72, 0x6f, 0x6f, 0x74, 0x2d,
- 0x67, 0x32, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x4c, 0x06, 0x03, 0x55, 0x1d,
- 0x20, 0x04, 0x45, 0x30, 0x43, 0x30, 0x41, 0x06, 0x04, 0x55, 0x1d, 0x20,
- 0x00, 0x30, 0x39, 0x30, 0x37, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
- 0x07, 0x02, 0x01, 0x16, 0x2b, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f,
- 0x2f, 0x63, 0x65, 0x72, 0x74, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x66,
- 0x69, 0x65, 0x6c, 0x64, 0x74, 0x65, 0x63, 0x68, 0x2e, 0x63, 0x6f, 0x6d,
- 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f,
- 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
- 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x56, 0x65, 0xca, 0xfe,
- 0xf3, 0x3f, 0x0a, 0xa8, 0x93, 0x8b, 0x18, 0xc7, 0xde, 0x43, 0x69, 0x13,
- 0x34, 0x20, 0xbe, 0x4e, 0x5f, 0x78, 0xa8, 0x6b, 0x9c, 0xdb, 0x6a, 0x4d,
- 0x41, 0xdb, 0xc1, 0x13, 0xec, 0xdc, 0x31, 0x00, 0x22, 0x5e, 0xf7, 0x00,
- 0x9e, 0x0c, 0xe0, 0x34, 0x65, 0x34, 0xf9, 0xb1, 0x3a, 0x4e, 0x48, 0xc8,
- 0x12, 0x81, 0x88, 0x5c, 0x5b, 0x3e, 0x08, 0x53, 0x7a, 0xf7, 0x1a, 0x64,
- 0xdf, 0xb8, 0x50, 0x61, 0xcc, 0x53, 0x51, 0x40, 0x29, 0x4b, 0xc2, 0xf4,
- 0xae, 0x3a, 0x5f, 0xe4, 0xca, 0xad, 0x26, 0xcc, 0x4e, 0x61, 0x43, 0xe5,
- 0xfd, 0x57, 0xa6, 0x37, 0x70, 0xce, 0x43, 0x2b, 0xb0, 0x94, 0xc3, 0x92,
- 0xe9, 0xe1, 0x5f, 0xaa, 0x10, 0x49, 0xb7, 0x69, 0xe4, 0xe0, 0xd0, 0x1f,
- 0x64, 0xa4, 0x2b, 0xcd, 0x1f, 0x6f, 0xa0, 0xf8, 0x84, 0x24, 0x18, 0xce,
- 0x79, 0x3d, 0xa9, 0x91, 0xbf, 0x54, 0x18, 0x13, 0x89, 0x99, 0x54, 0x11,
- 0x0d, 0x55, 0xc5, 0x26, 0x0b, 0x79, 0x4f, 0x5a, 0x1c, 0x6e, 0xf9, 0x63,
- 0xdb, 0x14, 0x80, 0xa4, 0x07, 0xab, 0xfa, 0xb2, 0xa5, 0xb9, 0x88, 0xdd,
- 0x91, 0xfe, 0x65, 0x3b, 0xa4, 0xa3, 0x79, 0xbe, 0x89, 0x4d, 0xe1, 0xd0,
- 0xb0, 0xf4, 0xc8, 0x17, 0x0c, 0x0a, 0x96, 0x14, 0x7c, 0x09, 0xb7, 0x6c,
- 0xe1, 0xc2, 0xd8, 0x55, 0xd4, 0x18, 0xa0, 0xaa, 0x41, 0x69, 0x70, 0x24,
- 0xa3, 0xb9, 0xef, 0xe9, 0x5a, 0xdc, 0x3e, 0xeb, 0x94, 0x4a, 0xf0, 0xb7,
- 0xde, 0x5f, 0x0e, 0x76, 0xfa, 0xfb, 0xfb, 0x69, 0x03, 0x45, 0x40, 0x50,
- 0xee, 0x72, 0x0c, 0xa4, 0x12, 0x86, 0x81, 0xcd, 0x13, 0xd1, 0x4e, 0xc4,
- 0x3c, 0xca, 0x4e, 0x0d, 0xd2, 0x26, 0xf1, 0x00, 0xb7, 0xb4, 0xa6, 0xa2,
- 0xe1, 0x6e, 0x7a, 0x81, 0xfd, 0x30, 0xac, 0x7a, 0x1f, 0xc7, 0x59, 0x7b,
-}
-
-var certSet2Cert40 = []byte{
- 0x30, 0x82, 0x05, 0x03, 0x30, 0x82, 0x03, 0xeb, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x04, 0x51, 0xd3, 0x60, 0xee, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81,
- 0xbe, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
- 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13,
- 0x0d, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e,
- 0x63, 0x2e, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13,
- 0x1f, 0x53, 0x65, 0x65, 0x20, 0x77, 0x77, 0x77, 0x2e, 0x65, 0x6e, 0x74,
- 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x6c, 0x65, 0x67,
- 0x61, 0x6c, 0x2d, 0x74, 0x65, 0x72, 0x6d, 0x73, 0x31, 0x39, 0x30, 0x37,
- 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x30, 0x28, 0x63, 0x29, 0x20, 0x32,
- 0x30, 0x30, 0x39, 0x20, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2c,
- 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x66, 0x6f, 0x72, 0x20,
- 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75,
- 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x32, 0x30, 0x30, 0x06,
- 0x03, 0x55, 0x04, 0x03, 0x13, 0x29, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73,
- 0x74, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69,
- 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74,
- 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30,
- 0x1e, 0x17, 0x0d, 0x31, 0x34, 0x31, 0x30, 0x32, 0x32, 0x31, 0x37, 0x30,
- 0x35, 0x31, 0x34, 0x5a, 0x17, 0x0d, 0x32, 0x34, 0x31, 0x30, 0x32, 0x33,
- 0x30, 0x37, 0x33, 0x33, 0x32, 0x32, 0x5a, 0x30, 0x81, 0xba, 0x31, 0x0b,
- 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31,
- 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x45, 0x6e,
- 0x74, 0x72, 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31,
- 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f, 0x53, 0x65,
- 0x65, 0x20, 0x77, 0x77, 0x77, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73,
- 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x2d,
- 0x74, 0x65, 0x72, 0x6d, 0x73, 0x31, 0x39, 0x30, 0x37, 0x06, 0x03, 0x55,
- 0x04, 0x0b, 0x13, 0x30, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, 0x31, 0x32,
- 0x20, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e,
- 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74,
- 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20,
- 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x2e, 0x30, 0x2c, 0x06, 0x03, 0x55, 0x04,
- 0x03, 0x13, 0x25, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x20, 0x43,
- 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d,
- 0x20, 0x4c, 0x31, 0x4b, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09,
- 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03,
- 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01,
- 0x00, 0xda, 0x3f, 0x96, 0xd0, 0x4d, 0xb9, 0x2f, 0x44, 0xe7, 0xdb, 0x39,
- 0x5e, 0x9b, 0x50, 0xee, 0x5c, 0xa5, 0x61, 0xda, 0x41, 0x67, 0x53, 0x09,
- 0xaa, 0x00, 0x9a, 0x8e, 0x57, 0x7f, 0x29, 0x6b, 0xdb, 0xc7, 0xe1, 0x21,
- 0x24, 0xaa, 0x3a, 0xd0, 0x8d, 0x47, 0x23, 0xd2, 0xed, 0x72, 0x16, 0xf0,
- 0x91, 0x21, 0xd2, 0x5d, 0xb7, 0xb8, 0x4b, 0xa8, 0x83, 0x8f, 0xb7, 0x91,
- 0x32, 0x68, 0xcf, 0xce, 0x25, 0x93, 0x2c, 0xb2, 0x7d, 0x97, 0xc8, 0xfe,
- 0xc1, 0xb4, 0x17, 0xba, 0x09, 0x9e, 0x03, 0x90, 0x93, 0x7b, 0x7c, 0x49,
- 0x83, 0x22, 0x68, 0x8a, 0x9b, 0xde, 0x47, 0xc3, 0x31, 0x98, 0x7a, 0x2e,
- 0x7d, 0x40, 0x0b, 0xd2, 0xef, 0x3e, 0xd3, 0xb2, 0x8c, 0xaa, 0x8f, 0x48,
- 0xa9, 0xff, 0x00, 0xe8, 0x29, 0x58, 0x06, 0xf7, 0xb6, 0x93, 0x5a, 0x94,
- 0x73, 0x26, 0x26, 0xad, 0x58, 0x0e, 0xe5, 0x42, 0xb8, 0xd5, 0xea, 0x73,
- 0x79, 0x64, 0x68, 0x53, 0x25, 0xb8, 0x84, 0xcf, 0x94, 0x7a, 0xae, 0x06,
- 0x45, 0x0c, 0xa3, 0x6b, 0x4d, 0xd0, 0xc6, 0xbe, 0xea, 0x18, 0xa4, 0x36,
- 0xf0, 0x92, 0xb2, 0xba, 0x1c, 0x88, 0x8f, 0x3a, 0x52, 0x7f, 0xf7, 0x5e,
- 0x6d, 0x83, 0x1c, 0x9d, 0xf0, 0x1f, 0xe5, 0xc3, 0xd6, 0xdd, 0xa5, 0x78,
- 0x92, 0x3d, 0xb0, 0x6d, 0x2c, 0xea, 0xc9, 0xcf, 0x94, 0x41, 0x19, 0x71,
- 0x44, 0x68, 0xba, 0x47, 0x3c, 0x04, 0xe9, 0x5d, 0xba, 0x3e, 0xf0, 0x35,
- 0xf7, 0x15, 0xb6, 0x9e, 0xf2, 0x2e, 0x15, 0x1e, 0x3f, 0x47, 0xc8, 0xc8,
- 0x38, 0xa7, 0x73, 0x45, 0x5d, 0x4d, 0xb0, 0x3b, 0xb1, 0x8e, 0x17, 0x29,
- 0x37, 0xea, 0xdd, 0x05, 0x01, 0x22, 0xbb, 0x94, 0x36, 0x2a, 0x8d, 0x5b,
- 0x35, 0xfe, 0x53, 0x19, 0x2f, 0x08, 0x46, 0xc1, 0x2a, 0xb3, 0x1a, 0x62,
- 0x1d, 0x4e, 0x2b, 0xd9, 0x1b, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82,
- 0x01, 0x09, 0x30, 0x82, 0x01, 0x05, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d,
- 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x0f,
- 0x06, 0x03, 0x55, 0x1d, 0x13, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff,
- 0x02, 0x01, 0x00, 0x30, 0x33, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
- 0x07, 0x01, 0x01, 0x04, 0x27, 0x30, 0x25, 0x30, 0x23, 0x06, 0x08, 0x2b,
- 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x17, 0x68, 0x74, 0x74,
- 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x65, 0x6e, 0x74,
- 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x30, 0x30, 0x06, 0x03,
- 0x55, 0x1d, 0x1f, 0x04, 0x29, 0x30, 0x27, 0x30, 0x25, 0xa0, 0x23, 0xa0,
- 0x21, 0x86, 0x1f, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72,
- 0x6c, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65,
- 0x74, 0x2f, 0x67, 0x32, 0x63, 0x61, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x3b,
- 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x34, 0x30, 0x32, 0x30, 0x30, 0x06,
- 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x28, 0x30, 0x26, 0x06, 0x08, 0x2b,
- 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74,
- 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x65, 0x6e, 0x74, 0x72,
- 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x72, 0x70, 0x61, 0x30,
- 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x82, 0xa2,
- 0x70, 0x74, 0xdd, 0xbc, 0x53, 0x3f, 0xcf, 0x7b, 0xd4, 0xf7, 0xcd, 0x7f,
- 0xa7, 0x60, 0xc6, 0x0a, 0x4c, 0xbf, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d,
- 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x6a, 0x72, 0x26, 0x7a, 0xd0,
- 0x1e, 0xef, 0x7d, 0xe7, 0x3b, 0x69, 0x51, 0xd4, 0x6c, 0x8d, 0x9f, 0x90,
- 0x12, 0x66, 0xab, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7,
- 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x3f,
- 0x1c, 0x1a, 0x5b, 0xff, 0x40, 0x22, 0x1d, 0x8f, 0x35, 0x0c, 0x2d, 0xaa,
- 0x99, 0x27, 0xab, 0xc0, 0x11, 0x32, 0x70, 0xd7, 0x36, 0x28, 0x69, 0xa5,
- 0x8d, 0xb1, 0x27, 0x99, 0x42, 0xbe, 0xc4, 0x93, 0xeb, 0x48, 0x57, 0x43,
- 0x71, 0x23, 0xc4, 0xe5, 0x4e, 0xad, 0xae, 0x43, 0x6f, 0x92, 0x76, 0xc5,
- 0x19, 0xef, 0xca, 0xbc, 0x6f, 0x42, 0x4c, 0x16, 0x9a, 0x86, 0xa9, 0x04,
- 0x38, 0xc7, 0x65, 0xf0, 0xf5, 0x0c, 0xe0, 0x4a, 0xdf, 0xa2, 0xfa, 0xce,
- 0x1a, 0x11, 0xa8, 0x9c, 0x69, 0x2f, 0x1b, 0xdf, 0xea, 0xe2, 0x32, 0xf3,
- 0xce, 0x4c, 0xbc, 0x46, 0x0c, 0xc0, 0x89, 0x80, 0xd1, 0x87, 0x6b, 0xa2,
- 0xcf, 0x6b, 0xd4, 0x7f, 0xfd, 0xf5, 0x60, 0x52, 0x67, 0x57, 0xa0, 0x6d,
- 0xd1, 0x64, 0x41, 0x14, 0x6d, 0x34, 0x62, 0xed, 0x06, 0x6c, 0x24, 0xf2,
- 0x06, 0xbc, 0x28, 0x02, 0xaf, 0x03, 0x2d, 0xc2, 0x33, 0x05, 0xfb, 0xcb,
- 0xaa, 0x16, 0xe8, 0x65, 0x10, 0x43, 0xf5, 0x69, 0x5c, 0xe3, 0x81, 0x58,
- 0x99, 0xcd, 0x6b, 0xd3, 0xb8, 0xc7, 0x7b, 0x19, 0x55, 0xc9, 0x40, 0xce,
- 0x79, 0x55, 0xb8, 0x73, 0x89, 0xe9, 0x5c, 0x40, 0x66, 0x43, 0x12, 0x7f,
- 0x07, 0xb8, 0x65, 0x56, 0xd5, 0x8d, 0xc3, 0xa7, 0xf5, 0xb1, 0xb6, 0x65,
- 0x9e, 0xc0, 0x83, 0x36, 0x7f, 0x16, 0x45, 0x3c, 0x74, 0x4b, 0x93, 0x8a,
- 0x3c, 0xf1, 0x2b, 0xf5, 0x35, 0x70, 0x73, 0x7b, 0xe7, 0x82, 0x04, 0xb1,
- 0x18, 0x98, 0x0e, 0xd4, 0x9c, 0x6f, 0x1a, 0xfc, 0xfc, 0xa7, 0x33, 0xa5,
- 0xbb, 0xbb, 0x18, 0xf3, 0x6b, 0x7a, 0x5d, 0x32, 0x87, 0xf7, 0x6d, 0x25,
- 0xe4, 0xe2, 0x76, 0x86, 0x21, 0x1e, 0x11, 0x46, 0xcd, 0x76, 0x0e, 0x6f,
- 0x4f, 0xa4, 0x21, 0x71, 0x0a, 0x84, 0xa7, 0x2d, 0x36, 0xa9, 0x48, 0x22,
- 0x51, 0x7e, 0x82,
-}
-
-var certSet2Cert41 = []byte{
- 0x30, 0x82, 0x05, 0x1f, 0x30, 0x82, 0x04, 0x07, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x04, 0x07, 0x27, 0xa4, 0x6b, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x5a,
- 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x49,
- 0x45, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x09,
- 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x31, 0x13, 0x30,
- 0x11, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0a, 0x43, 0x79, 0x62, 0x65,
- 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03,
- 0x55, 0x04, 0x03, 0x13, 0x19, 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f,
- 0x72, 0x65, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73,
- 0x74, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34,
- 0x30, 0x34, 0x30, 0x32, 0x31, 0x34, 0x33, 0x36, 0x31, 0x30, 0x5a, 0x17,
- 0x0d, 0x32, 0x31, 0x30, 0x34, 0x30, 0x32, 0x31, 0x34, 0x33, 0x35, 0x35,
- 0x32, 0x5a, 0x30, 0x81, 0x8d, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55,
- 0x04, 0x06, 0x13, 0x02, 0x4e, 0x4c, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03,
- 0x55, 0x04, 0x07, 0x13, 0x09, 0x41, 0x6d, 0x73, 0x74, 0x65, 0x72, 0x64,
- 0x61, 0x6d, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13,
- 0x1c, 0x56, 0x65, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x20, 0x45, 0x6e, 0x74,
- 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x20, 0x53, 0x6f, 0x6c, 0x75,
- 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55,
- 0x04, 0x0b, 0x13, 0x0a, 0x43, 0x79, 0x62, 0x65, 0x72, 0x74, 0x72, 0x75,
- 0x73, 0x74, 0x31, 0x2e, 0x30, 0x2c, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13,
- 0x25, 0x56, 0x65, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x20, 0x41, 0x6b, 0x61,
- 0x6d, 0x61, 0x69, 0x20, 0x53, 0x75, 0x72, 0x65, 0x53, 0x65, 0x72, 0x76,
- 0x65, 0x72, 0x20, 0x43, 0x41, 0x20, 0x47, 0x31, 0x34, 0x2d, 0x53, 0x48,
- 0x41, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
- 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01,
- 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xdd,
- 0x6e, 0x9e, 0x02, 0x69, 0x02, 0xb5, 0xa3, 0x99, 0x2e, 0x08, 0x64, 0x32,
- 0x6a, 0x59, 0xf3, 0xc6, 0x9e, 0xa6, 0x20, 0x07, 0xd2, 0x48, 0xd1, 0xa8,
- 0x93, 0xc7, 0xea, 0x47, 0x8f, 0x83, 0x39, 0x40, 0xd7, 0x20, 0x5d, 0x8d,
- 0x9a, 0xba, 0xab, 0xd8, 0x70, 0xec, 0x9d, 0x88, 0xd1, 0xbd, 0x62, 0xf6,
- 0xdb, 0xec, 0x9d, 0x5e, 0x35, 0x01, 0x76, 0x03, 0x23, 0xe5, 0x6f, 0xd2,
- 0xaf, 0x46, 0x35, 0x59, 0x5a, 0x5c, 0xd1, 0xa8, 0x23, 0xc1, 0xeb, 0xe9,
- 0x20, 0xd4, 0x49, 0xd6, 0x3f, 0x00, 0xd8, 0xa8, 0x22, 0xde, 0x43, 0x79,
- 0x81, 0xac, 0xe9, 0xa4, 0x92, 0xf5, 0x77, 0x70, 0x05, 0x1e, 0x5c, 0xb6,
- 0xa0, 0xf7, 0x90, 0xa4, 0xcd, 0xab, 0x28, 0x2c, 0x90, 0xc2, 0xe7, 0x0f,
- 0xc3, 0xaf, 0x1c, 0x47, 0x59, 0xd5, 0x84, 0x2e, 0xdf, 0x26, 0x07, 0x45,
- 0x23, 0x5a, 0xc6, 0xe8, 0x90, 0xc8, 0x85, 0x4b, 0x8c, 0x16, 0x1e, 0x60,
- 0xf9, 0x01, 0x13, 0xf1, 0x14, 0x1f, 0xe6, 0xe8, 0x14, 0xed, 0xc5, 0xd2,
- 0x6f, 0x63, 0x28, 0x6e, 0x72, 0x8c, 0x49, 0xae, 0x08, 0x72, 0xc7, 0x93,
- 0x95, 0xb4, 0x0b, 0x0c, 0xae, 0x8f, 0x9a, 0x67, 0x84, 0xf5, 0x57, 0x1b,
- 0xdb, 0x81, 0xd7, 0x17, 0x9d, 0x41, 0x11, 0x43, 0x19, 0xbd, 0x6d, 0x4a,
- 0x85, 0xed, 0x8f, 0x70, 0x25, 0xab, 0x66, 0xab, 0xf6, 0xfa, 0x6d, 0x1c,
- 0x3c, 0xab, 0xed, 0x17, 0xbd, 0x56, 0x84, 0xe1, 0xdb, 0x75, 0x33, 0xb2,
- 0x28, 0x4b, 0x99, 0x8e, 0xf9, 0x4b, 0x82, 0x33, 0x50, 0x9f, 0x92, 0x53,
- 0xed, 0xfa, 0xad, 0x0f, 0x95, 0x9c, 0xa3, 0xf2, 0xcb, 0x60, 0xf0, 0x77,
- 0x1d, 0xc9, 0x01, 0x8b, 0x5f, 0x2d, 0x86, 0xbe, 0xbf, 0x36, 0xb8, 0x24,
- 0x96, 0x13, 0x7c, 0xc1, 0x86, 0x5a, 0x6c, 0xc1, 0x48, 0x2a, 0x7f, 0x3e,
- 0x93, 0x60, 0xc5, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0xb7,
- 0x30, 0x82, 0x01, 0xb3, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01,
- 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x02,
- 0x30, 0x4c, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x45, 0x30, 0x43, 0x30,
- 0x41, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0xb1, 0x3e, 0x01, 0x32,
- 0x30, 0x34, 0x30, 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07,
- 0x02, 0x01, 0x16, 0x26, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f,
- 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x2e, 0x6f, 0x6d, 0x6e, 0x69, 0x72,
- 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f,
- 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x30, 0x81, 0xba, 0x06, 0x08, 0x2b,
- 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x81, 0xad, 0x30, 0x81,
- 0xaa, 0x30, 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30,
- 0x01, 0x86, 0x26, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63,
- 0x73, 0x70, 0x2e, 0x6f, 0x6d, 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x2e,
- 0x63, 0x6f, 0x6d, 0x2f, 0x62, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72,
- 0x65, 0x72, 0x6f, 0x6f, 0x74, 0x30, 0x39, 0x06, 0x08, 0x2b, 0x06, 0x01,
- 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x2d, 0x68, 0x74, 0x74, 0x70, 0x73,
- 0x3a, 0x2f, 0x2f, 0x63, 0x61, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x6f, 0x6d,
- 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x62,
- 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x72, 0x6f, 0x6f, 0x74,
- 0x2e, 0x63, 0x72, 0x74, 0x30, 0x39, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05,
- 0x05, 0x07, 0x30, 0x02, 0x86, 0x2d, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a,
- 0x2f, 0x2f, 0x63, 0x61, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x6f, 0x6d, 0x6e,
- 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x62, 0x61,
- 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x72, 0x6f, 0x6f, 0x74, 0x2e,
- 0x64, 0x65, 0x72, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01,
- 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0xc6, 0x30, 0x1f, 0x06, 0x03, 0x55,
- 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xe5, 0x9d, 0x59, 0x30,
- 0x82, 0x47, 0x58, 0xcc, 0xac, 0xfa, 0x08, 0x54, 0x36, 0x86, 0x7b, 0x3a,
- 0xb5, 0x04, 0x4d, 0xf0, 0x30, 0x42, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04,
- 0x3b, 0x30, 0x39, 0x30, 0x37, 0xa0, 0x35, 0xa0, 0x33, 0x86, 0x31, 0x68,
- 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x64, 0x70, 0x31, 0x2e, 0x70,
- 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2d, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e,
- 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x52, 0x4c, 0x2f, 0x4f, 0x6d, 0x6e, 0x69,
- 0x72, 0x6f, 0x6f, 0x74, 0x32, 0x30, 0x32, 0x35, 0x2e, 0x63, 0x72, 0x6c,
- 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xf8,
- 0xbd, 0xfa, 0xaf, 0x73, 0x77, 0xc6, 0xc7, 0x1b, 0xf9, 0x4b, 0x4d, 0x11,
- 0xa7, 0xd1, 0x33, 0xaf, 0xaf, 0x72, 0x11, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82,
- 0x01, 0x01, 0x00, 0x80, 0xd9, 0x7a, 0xed, 0x72, 0x05, 0x37, 0x8f, 0x61,
- 0xaa, 0x73, 0x7c, 0x9a, 0x6a, 0xfc, 0xfe, 0x01, 0xe2, 0x19, 0x81, 0x70,
- 0x07, 0x25, 0x32, 0xb0, 0xf0, 0x6f, 0x3b, 0xc7, 0x6a, 0x28, 0x3d, 0xe4,
- 0x51, 0x87, 0xe6, 0x7e, 0x82, 0xec, 0xae, 0x48, 0xa7, 0xb1, 0x77, 0x38,
- 0xc2, 0xd6, 0x56, 0xaf, 0x8f, 0xf2, 0x01, 0xfc, 0x65, 0x65, 0x10, 0x09,
- 0xf7, 0x74, 0x29, 0xb5, 0x0e, 0x92, 0xee, 0x90, 0x98, 0xd1, 0x88, 0xa2,
- 0x65, 0xb7, 0xcd, 0x9c, 0x0e, 0xa7, 0x86, 0x98, 0x28, 0xbc, 0xae, 0x15,
- 0x83, 0xb6, 0x1a, 0xd7, 0x1d, 0xec, 0x19, 0xda, 0x7a, 0x8e, 0x40, 0xf9,
- 0x99, 0x15, 0xd5, 0x7d, 0xa5, 0xba, 0xab, 0xfd, 0x26, 0x98, 0x6e, 0x9c,
- 0x41, 0x3b, 0xb6, 0x81, 0x18, 0xec, 0x70, 0x48, 0xd7, 0x6e, 0x7f, 0xa6,
- 0xe1, 0x77, 0x25, 0xd6, 0xdd, 0x62, 0xe8, 0x52, 0xf3, 0x8c, 0x16, 0x39,
- 0x67, 0xe2, 0x22, 0x0d, 0x77, 0x2e, 0xfb, 0x11, 0x6c, 0xe4, 0xdd, 0x38,
- 0xb4, 0x27, 0x5f, 0x03, 0xa8, 0x3d, 0x44, 0xe2, 0xf2, 0x84, 0x4b, 0x84,
- 0xfd, 0x56, 0xa6, 0x9e, 0x4d, 0x7b, 0xa2, 0x16, 0x4f, 0x07, 0xf5, 0x34,
- 0x24, 0x72, 0xa5, 0xa2, 0xfa, 0x16, 0x66, 0x2a, 0xa4, 0x4a, 0x0e, 0xc8,
- 0x0d, 0x27, 0x44, 0x9c, 0x77, 0xd4, 0x12, 0x10, 0x87, 0xd2, 0x00, 0x2c,
- 0x7a, 0xbb, 0x8e, 0x88, 0x22, 0x91, 0x15, 0xbe, 0xa2, 0x59, 0xca, 0x34,
- 0xe0, 0x1c, 0x61, 0x94, 0x86, 0x20, 0x33, 0xcd, 0xe7, 0x4c, 0x5d, 0x3b,
- 0x92, 0x3e, 0xcb, 0xd6, 0x2d, 0xea, 0x54, 0xfa, 0xfb, 0xaf, 0x54, 0xf5,
- 0xa8, 0xc5, 0x0b, 0xca, 0x8b, 0x87, 0x00, 0xe6, 0x9f, 0xe6, 0x95, 0xbf,
- 0xb7, 0xc4, 0xa3, 0x59, 0xf5, 0x16, 0x6c, 0x5f, 0x3e, 0x69, 0x55, 0x80,
- 0x39, 0xf6, 0x75, 0x50, 0x14, 0x3e, 0x32,
-}
-
-var certSet2Cert42 = []byte{
- 0x30, 0x82, 0x05, 0x2b, 0x30, 0x82, 0x04, 0x13, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x7e, 0xe1, 0x4a, 0x6f, 0x6f, 0xef, 0xf2, 0xd3, 0x7f,
- 0x3f, 0xad, 0x65, 0x4d, 0x3a, 0xda, 0xb4, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81,
- 0xca, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
- 0x55, 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13,
- 0x0e, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49,
- 0x6e, 0x63, 0x2e, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b,
- 0x13, 0x16, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54,
- 0x72, 0x75, 0x73, 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,
- 0x31, 0x3a, 0x30, 0x38, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x31, 0x28,
- 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x36, 0x20, 0x56, 0x65, 0x72, 0x69,
- 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d,
- 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69,
- 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79,
- 0x31, 0x45, 0x30, 0x43, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x3c, 0x56,
- 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73,
- 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x50,
- 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69,
- 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74,
- 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x35, 0x30,
- 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31, 0x30, 0x33, 0x31, 0x30, 0x30, 0x30,
- 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x33, 0x31, 0x30, 0x33, 0x30,
- 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x77, 0x31, 0x0b, 0x30,
- 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x1d,
- 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x14, 0x53, 0x79, 0x6d,
- 0x61, 0x6e, 0x74, 0x65, 0x63, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55,
- 0x04, 0x0b, 0x13, 0x16, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63,
- 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f,
- 0x72, 0x6b, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13,
- 0x1f, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x20, 0x43, 0x6c,
- 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x45, 0x56, 0x20, 0x53, 0x53, 0x4c,
- 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x30, 0x82, 0x01, 0x22,
- 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
- 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a,
- 0x02, 0x82, 0x01, 0x01, 0x00, 0xd8, 0xa1, 0x65, 0x74, 0x23, 0xe8, 0x2b,
- 0x64, 0xe2, 0x32, 0xd7, 0x33, 0x37, 0x3d, 0x8e, 0xf5, 0x34, 0x16, 0x48,
- 0xdd, 0x4f, 0x7f, 0x87, 0x1c, 0xf8, 0x44, 0x23, 0x13, 0x8e, 0xfb, 0x11,
- 0xd8, 0x44, 0x5a, 0x18, 0x71, 0x8e, 0x60, 0x16, 0x26, 0x92, 0x9b, 0xfd,
- 0x17, 0x0b, 0xe1, 0x71, 0x70, 0x42, 0xfe, 0xbf, 0xfa, 0x1c, 0xc0, 0xaa,
- 0xa3, 0xa7, 0xb5, 0x71, 0xe8, 0xff, 0x18, 0x83, 0xf6, 0xdf, 0x10, 0x0a,
- 0x13, 0x62, 0xc8, 0x3d, 0x9c, 0xa7, 0xde, 0x2e, 0x3f, 0x0c, 0xd9, 0x1d,
- 0xe7, 0x2e, 0xfb, 0x2a, 0xce, 0xc8, 0x9a, 0x7f, 0x87, 0xbf, 0xd8, 0x4c,
- 0x04, 0x15, 0x32, 0xc9, 0xd1, 0xcc, 0x95, 0x71, 0xa0, 0x4e, 0x28, 0x4f,
- 0x84, 0xd9, 0x35, 0xfb, 0xe3, 0x86, 0x6f, 0x94, 0x53, 0xe6, 0x72, 0x8a,
- 0x63, 0x67, 0x2e, 0xbe, 0x69, 0xf6, 0xf7, 0x6e, 0x8e, 0x9c, 0x60, 0x04,
- 0xeb, 0x29, 0xfa, 0xc4, 0x47, 0x42, 0xd2, 0x78, 0x98, 0xe3, 0xec, 0x0b,
- 0xa5, 0x92, 0xdc, 0xb7, 0x9a, 0xbd, 0x80, 0x64, 0x2b, 0x38, 0x7c, 0x38,
- 0x09, 0x5b, 0x66, 0xf6, 0x2d, 0x95, 0x7a, 0x86, 0xb2, 0x34, 0x2e, 0x85,
- 0x9e, 0x90, 0x0e, 0x5f, 0xb7, 0x5d, 0xa4, 0x51, 0x72, 0x46, 0x70, 0x13,
- 0xbf, 0x67, 0xf2, 0xb6, 0xa7, 0x4d, 0x14, 0x1e, 0x6c, 0xb9, 0x53, 0xee,
- 0x23, 0x1a, 0x4e, 0x8d, 0x48, 0x55, 0x43, 0x41, 0xb1, 0x89, 0x75, 0x6a,
- 0x40, 0x28, 0xc5, 0x7d, 0xdd, 0xd2, 0x6e, 0xd2, 0x02, 0x19, 0x2f, 0x7b,
- 0x24, 0x94, 0x4b, 0xeb, 0xf1, 0x1a, 0xa9, 0x9b, 0xe3, 0x23, 0x9a, 0xea,
- 0xfa, 0x33, 0xab, 0x0a, 0x2c, 0xb7, 0xf4, 0x60, 0x08, 0xdd, 0x9f, 0x1c,
- 0xcd, 0xdd, 0x2d, 0x01, 0x66, 0x80, 0xaf, 0xb3, 0x2f, 0x29, 0x1d, 0x23,
- 0xb8, 0x8a, 0xe1, 0xa1, 0x70, 0x07, 0x0c, 0x34, 0x0f, 0x02, 0x03, 0x01,
- 0x00, 0x01, 0xa3, 0x82, 0x01, 0x5d, 0x30, 0x82, 0x01, 0x59, 0x30, 0x2f,
- 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x23,
- 0x30, 0x21, 0x30, 0x1f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07,
- 0x30, 0x01, 0x86, 0x13, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x73,
- 0x32, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x30,
- 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30,
- 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x65, 0x06, 0x03, 0x55,
- 0x1d, 0x20, 0x04, 0x5e, 0x30, 0x5c, 0x30, 0x5a, 0x06, 0x04, 0x55, 0x1d,
- 0x20, 0x00, 0x30, 0x52, 0x30, 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05,
- 0x05, 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
- 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x79, 0x6d, 0x61, 0x75, 0x74, 0x68,
- 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x28, 0x06, 0x08,
- 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x02, 0x30, 0x1c, 0x1a, 0x1a,
- 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73,
- 0x79, 0x6d, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72,
- 0x70, 0x61, 0x30, 0x30, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x29, 0x30,
- 0x27, 0x30, 0x25, 0xa0, 0x23, 0xa0, 0x21, 0x86, 0x1f, 0x68, 0x74, 0x74,
- 0x70, 0x3a, 0x2f, 0x2f, 0x73, 0x31, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62,
- 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x63, 0x61, 0x33, 0x2d, 0x67, 0x35,
- 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01,
- 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x29, 0x06, 0x03,
- 0x55, 0x1d, 0x11, 0x04, 0x22, 0x30, 0x20, 0xa4, 0x1e, 0x30, 0x1c, 0x31,
- 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x11, 0x53, 0x79,
- 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x50, 0x4b, 0x49, 0x2d, 0x31, 0x2d,
- 0x35, 0x33, 0x33, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16,
- 0x04, 0x14, 0x01, 0x59, 0xab, 0xe7, 0xdd, 0x3a, 0x0b, 0x59, 0xa6, 0x64,
- 0x63, 0xd6, 0xcf, 0x20, 0x07, 0x57, 0xd5, 0x91, 0xe7, 0x6a, 0x30, 0x1f,
- 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x7f,
- 0xd3, 0x65, 0xa7, 0xc2, 0xdd, 0xec, 0xbb, 0xf0, 0x30, 0x09, 0xf3, 0x43,
- 0x39, 0xfa, 0x02, 0xaf, 0x33, 0x31, 0x33, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82,
- 0x01, 0x01, 0x00, 0x42, 0x01, 0x55, 0x7b, 0xd0, 0x16, 0x1a, 0x5d, 0x58,
- 0xe8, 0xbb, 0x9b, 0xa8, 0x4d, 0xd7, 0xf3, 0xd7, 0xeb, 0x13, 0x94, 0x86,
- 0xd6, 0x7f, 0x21, 0x0b, 0x47, 0xbc, 0x57, 0x9b, 0x92, 0x5d, 0x4f, 0x05,
- 0x9f, 0x38, 0xa4, 0x10, 0x7c, 0xcf, 0x83, 0xbe, 0x06, 0x43, 0x46, 0x8d,
- 0x08, 0xbc, 0x6a, 0xd7, 0x10, 0xa6, 0xfa, 0xab, 0xaf, 0x2f, 0x61, 0xa8,
- 0x63, 0xf2, 0x65, 0xdf, 0x7f, 0x4c, 0x88, 0x12, 0x88, 0x4f, 0xb3, 0x69,
- 0xd9, 0xff, 0x27, 0xc0, 0x0a, 0x97, 0x91, 0x8f, 0x56, 0xfb, 0x89, 0xc4,
- 0xa8, 0xbb, 0x92, 0x2d, 0x1b, 0x73, 0xb0, 0xc6, 0xab, 0x36, 0xf4, 0x96,
- 0x6c, 0x20, 0x08, 0xef, 0x0a, 0x1e, 0x66, 0x24, 0x45, 0x4f, 0x67, 0x00,
- 0x40, 0xc8, 0x07, 0x54, 0x74, 0x33, 0x3b, 0xa6, 0xad, 0xbb, 0x23, 0x9f,
- 0x66, 0xed, 0xa2, 0x44, 0x70, 0x34, 0xfb, 0x0e, 0xea, 0x01, 0xfd, 0xcf,
- 0x78, 0x74, 0xdf, 0xa7, 0xad, 0x55, 0xb7, 0x5f, 0x4d, 0xf6, 0xd6, 0x3f,
- 0xe0, 0x86, 0xce, 0x24, 0xc7, 0x42, 0xa9, 0x13, 0x14, 0x44, 0x35, 0x4b,
- 0xb6, 0xdf, 0xc9, 0x60, 0xac, 0x0c, 0x7f, 0xd9, 0x93, 0x21, 0x4b, 0xee,
- 0x9c, 0xe4, 0x49, 0x02, 0x98, 0xd3, 0x60, 0x7b, 0x5c, 0xbc, 0xd5, 0x30,
- 0x2f, 0x07, 0xce, 0x44, 0x42, 0xc4, 0x0b, 0x99, 0xfe, 0xe6, 0x9f, 0xfc,
- 0xb0, 0x78, 0x86, 0x51, 0x6d, 0xd1, 0x2c, 0x9d, 0xc6, 0x96, 0xfb, 0x85,
- 0x82, 0xbb, 0x04, 0x2f, 0xf7, 0x62, 0x80, 0xef, 0x62, 0xda, 0x7f, 0xf6,
- 0x0e, 0xac, 0x90, 0xb8, 0x56, 0xbd, 0x79, 0x3f, 0xf2, 0x80, 0x6e, 0xa3,
- 0xd9, 0xb9, 0x0f, 0x5d, 0x3a, 0x07, 0x1d, 0x91, 0x93, 0x86, 0x4b, 0x29,
- 0x4c, 0xe1, 0xdc, 0xb5, 0xe1, 0xe0, 0x33, 0x9d, 0xb3, 0xcb, 0x36, 0x91,
- 0x4b, 0xfe, 0xa1, 0xb4, 0xee, 0xf0, 0xf9,
-}
-
-var certSet2Cert43 = []byte{
- 0x30, 0x82, 0x05, 0x38, 0x30, 0x82, 0x04, 0x20, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x51, 0x3f, 0xb9, 0x74, 0x38, 0x70, 0xb7, 0x34, 0x40,
- 0x41, 0x8d, 0x30, 0x93, 0x06, 0x99, 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81,
- 0xca, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
- 0x55, 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13,
- 0x0e, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49,
- 0x6e, 0x63, 0x2e, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b,
- 0x13, 0x16, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54,
- 0x72, 0x75, 0x73, 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,
- 0x31, 0x3a, 0x30, 0x38, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x31, 0x28,
- 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x36, 0x20, 0x56, 0x65, 0x72, 0x69,
- 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d,
- 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69,
- 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79,
- 0x31, 0x45, 0x30, 0x43, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x3c, 0x56,
- 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73,
- 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x50,
- 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69,
- 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74,
- 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x35, 0x30,
- 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31, 0x30, 0x33, 0x31, 0x30, 0x30, 0x30,
- 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x33, 0x31, 0x30, 0x33, 0x30,
- 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x7e, 0x31, 0x0b, 0x30,
- 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x1d,
- 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x14, 0x53, 0x79, 0x6d,
- 0x61, 0x6e, 0x74, 0x65, 0x63, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55,
- 0x04, 0x0b, 0x13, 0x16, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63,
- 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f,
- 0x72, 0x6b, 0x31, 0x2f, 0x30, 0x2d, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13,
- 0x26, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x20, 0x43, 0x6c,
- 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65,
- 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x20, 0x2d,
- 0x20, 0x47, 0x34, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82,
- 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00,
- 0xb2, 0xd8, 0x05, 0xca, 0x1c, 0x74, 0x2d, 0xb5, 0x17, 0x56, 0x39, 0xc5,
- 0x4a, 0x52, 0x09, 0x96, 0xe8, 0x4b, 0xd8, 0x0c, 0xf1, 0x68, 0x9f, 0x9a,
- 0x42, 0x28, 0x62, 0xc3, 0xa5, 0x30, 0x53, 0x7e, 0x55, 0x11, 0x82, 0x5b,
- 0x03, 0x7a, 0x0d, 0x2f, 0xe1, 0x79, 0x04, 0xc9, 0xb4, 0x96, 0x77, 0x19,
- 0x81, 0x01, 0x94, 0x59, 0xf9, 0xbc, 0xf7, 0x7a, 0x99, 0x27, 0x82, 0x2d,
- 0xb7, 0x83, 0xdd, 0x5a, 0x27, 0x7f, 0xb2, 0x03, 0x7a, 0x9c, 0x53, 0x25,
- 0xe9, 0x48, 0x1f, 0x46, 0x4f, 0xc8, 0x9d, 0x29, 0xf8, 0xbe, 0x79, 0x56,
- 0xf6, 0xf7, 0xfd, 0xd9, 0x3a, 0x68, 0xda, 0x8b, 0x4b, 0x82, 0x33, 0x41,
- 0x12, 0xc3, 0xc8, 0x3c, 0xcc, 0xd6, 0x96, 0x7a, 0x84, 0x21, 0x1a, 0x22,
- 0x04, 0x03, 0x27, 0x17, 0x8b, 0x1c, 0x68, 0x61, 0x93, 0x0f, 0x0e, 0x51,
- 0x80, 0x33, 0x1d, 0xb4, 0xb5, 0xce, 0xeb, 0x7e, 0xd0, 0x62, 0xac, 0xee,
- 0xb3, 0x7b, 0x01, 0x74, 0xef, 0x69, 0x35, 0xeb, 0xca, 0xd5, 0x3d, 0xa9,
- 0xee, 0x97, 0x98, 0xca, 0x8d, 0xaa, 0x44, 0x0e, 0x25, 0x99, 0x4a, 0x15,
- 0x96, 0xa4, 0xce, 0x6d, 0x02, 0x54, 0x1f, 0x2a, 0x6a, 0x26, 0xe2, 0x06,
- 0x3a, 0x63, 0x48, 0xac, 0xb4, 0x4c, 0xd1, 0x75, 0x93, 0x50, 0xff, 0x13,
- 0x2f, 0xd6, 0xda, 0xe1, 0xc6, 0x18, 0xf5, 0x9f, 0xc9, 0x25, 0x5d, 0xf3,
- 0x00, 0x3a, 0xde, 0x26, 0x4d, 0xb4, 0x29, 0x09, 0xcd, 0x0f, 0x3d, 0x23,
- 0x6f, 0x16, 0x4a, 0x81, 0x16, 0xfb, 0xf2, 0x83, 0x10, 0xc3, 0xb8, 0xd6,
- 0xd8, 0x55, 0x32, 0x3d, 0xf1, 0xbd, 0x0f, 0xbd, 0x8c, 0x52, 0x95, 0x4a,
- 0x16, 0x97, 0x7a, 0x52, 0x21, 0x63, 0x75, 0x2f, 0x16, 0xf9, 0xc4, 0x66,
- 0xbe, 0xf5, 0xb5, 0x09, 0xd8, 0xff, 0x27, 0x00, 0xcd, 0x44, 0x7c, 0x6f,
- 0x4b, 0x3f, 0xb0, 0xf7, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01,
- 0x63, 0x30, 0x82, 0x01, 0x5f, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13,
- 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01,
- 0x00, 0x30, 0x30, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x29, 0x30, 0x27,
- 0x30, 0x25, 0xa0, 0x23, 0xa0, 0x21, 0x86, 0x1f, 0x68, 0x74, 0x74, 0x70,
- 0x3a, 0x2f, 0x2f, 0x73, 0x31, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e,
- 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x63, 0x61, 0x33, 0x2d, 0x67, 0x35, 0x2e,
- 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01,
- 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x2f, 0x06, 0x08, 0x2b,
- 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x23, 0x30, 0x21, 0x30,
- 0x1f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86,
- 0x13, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x73, 0x32, 0x2e, 0x73,
- 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x6b, 0x06, 0x03,
- 0x55, 0x1d, 0x20, 0x04, 0x64, 0x30, 0x62, 0x30, 0x60, 0x06, 0x0a, 0x60,
- 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, 0x07, 0x36, 0x30, 0x52, 0x30,
- 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16,
- 0x1a, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e,
- 0x73, 0x79, 0x6d, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
- 0x63, 0x70, 0x73, 0x30, 0x28, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
- 0x07, 0x02, 0x02, 0x30, 0x1c, 0x1a, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x3a,
- 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x79, 0x6d, 0x61, 0x75, 0x74,
- 0x68, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x70, 0x61, 0x30, 0x29, 0x06,
- 0x03, 0x55, 0x1d, 0x11, 0x04, 0x22, 0x30, 0x20, 0xa4, 0x1e, 0x30, 0x1c,
- 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x11, 0x53,
- 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x50, 0x4b, 0x49, 0x2d, 0x31,
- 0x2d, 0x35, 0x33, 0x34, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04,
- 0x16, 0x04, 0x14, 0x5f, 0x60, 0xcf, 0x61, 0x90, 0x55, 0xdf, 0x84, 0x43,
- 0x14, 0x8a, 0x60, 0x2a, 0xb2, 0xf5, 0x7a, 0xf4, 0x43, 0x18, 0xef, 0x30,
- 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14,
- 0x7f, 0xd3, 0x65, 0xa7, 0xc2, 0xdd, 0xec, 0xbb, 0xf0, 0x30, 0x09, 0xf3,
- 0x43, 0x39, 0xfa, 0x02, 0xaf, 0x33, 0x31, 0x33, 0x30, 0x0d, 0x06, 0x09,
- 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03,
- 0x82, 0x01, 0x01, 0x00, 0x5e, 0x94, 0x56, 0x49, 0xdd, 0x8e, 0x2d, 0x65,
- 0xf5, 0xc1, 0x36, 0x51, 0xb6, 0x03, 0xe3, 0xda, 0x9e, 0x73, 0x19, 0xf2,
- 0x1f, 0x59, 0xab, 0x58, 0x7e, 0x6c, 0x26, 0x05, 0x2c, 0xfa, 0x81, 0xd7,
- 0x5c, 0x23, 0x17, 0x22, 0x2c, 0x37, 0x93, 0xf7, 0x86, 0xec, 0x85, 0xe6,
- 0xb0, 0xa3, 0xfd, 0x1f, 0xe2, 0x32, 0xa8, 0x45, 0x6f, 0xe1, 0xd9, 0xfb,
- 0xb9, 0xaf, 0xd2, 0x70, 0xa0, 0x32, 0x42, 0x65, 0xbf, 0x84, 0xfe, 0x16,
- 0x2a, 0x8f, 0x3f, 0xc5, 0xa6, 0xd6, 0xa3, 0x93, 0x7d, 0x43, 0xe9, 0x74,
- 0x21, 0x91, 0x35, 0x28, 0xf4, 0x63, 0xe9, 0x2e, 0xed, 0xf7, 0xf5, 0x5c,
- 0x7f, 0x4b, 0x9a, 0xb5, 0x20, 0xe9, 0x0a, 0xbd, 0xe0, 0x45, 0x10, 0x0c,
- 0x14, 0x94, 0x9a, 0x5d, 0xa5, 0xe3, 0x4b, 0x91, 0xe8, 0x24, 0x9b, 0x46,
- 0x40, 0x65, 0xf4, 0x22, 0x72, 0xcd, 0x99, 0xf8, 0x88, 0x11, 0xf5, 0xf3,
- 0x7f, 0xe6, 0x33, 0x82, 0xe6, 0xa8, 0xc5, 0x7e, 0xfe, 0xd0, 0x08, 0xe2,
- 0x25, 0x58, 0x08, 0x71, 0x68, 0xe6, 0xcd, 0xa2, 0xe6, 0x14, 0xde, 0x4e,
- 0x52, 0x24, 0x2d, 0xfd, 0xe5, 0x79, 0x13, 0x53, 0xe7, 0x5e, 0x2f, 0x2d,
- 0x4d, 0x1b, 0x6d, 0x40, 0x15, 0x52, 0x2b, 0xf7, 0x87, 0x89, 0x78, 0x12,
- 0x81, 0x6e, 0xd9, 0x4d, 0xaa, 0x2d, 0x78, 0xd4, 0xc2, 0x2c, 0x3d, 0x08,
- 0x5f, 0x87, 0x91, 0x9e, 0x1f, 0x0e, 0xb0, 0xde, 0x30, 0x52, 0x64, 0x86,
- 0x89, 0xaa, 0x9d, 0x66, 0x9c, 0x0e, 0x76, 0x0c, 0x80, 0xf2, 0x74, 0xd8,
- 0x2a, 0xf8, 0xb8, 0x3a, 0xce, 0xd7, 0xd6, 0x0f, 0x11, 0xbe, 0x6b, 0xab,
- 0x14, 0xf5, 0xbd, 0x41, 0xa0, 0x22, 0x63, 0x89, 0xf1, 0xba, 0x0f, 0x6f,
- 0x29, 0x63, 0x66, 0x2d, 0x3f, 0xac, 0x8c, 0x72, 0xc5, 0xfb, 0xc7, 0xe4,
- 0xd4, 0x0f, 0xf2, 0x3b, 0x4f, 0x8c, 0x29, 0xc7,
-}
-
-var certSet2Cert44 = []byte{
- 0x30, 0x82, 0x05, 0x86, 0x30, 0x82, 0x04, 0x6e, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x04, 0x07, 0x27, 0x9a, 0xa9, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x5a,
- 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x49,
- 0x45, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x09,
- 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x31, 0x13, 0x30,
- 0x11, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0a, 0x43, 0x79, 0x62, 0x65,
- 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03,
- 0x55, 0x04, 0x03, 0x13, 0x19, 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f,
- 0x72, 0x65, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73,
- 0x74, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33,
- 0x31, 0x32, 0x31, 0x39, 0x32, 0x30, 0x30, 0x37, 0x33, 0x32, 0x5a, 0x17,
- 0x0d, 0x31, 0x37, 0x31, 0x32, 0x31, 0x39, 0x32, 0x30, 0x30, 0x36, 0x35,
- 0x35, 0x5a, 0x30, 0x81, 0x8b, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55,
- 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03,
- 0x55, 0x04, 0x08, 0x13, 0x0a, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67,
- 0x74, 0x6f, 0x6e, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x07,
- 0x13, 0x07, 0x52, 0x65, 0x64, 0x6d, 0x6f, 0x6e, 0x64, 0x31, 0x1e, 0x30,
- 0x1c, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x15, 0x4d, 0x69, 0x63, 0x72,
- 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55,
- 0x04, 0x0b, 0x13, 0x0c, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66,
- 0x74, 0x20, 0x49, 0x54, 0x31, 0x1e, 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04,
- 0x03, 0x13, 0x15, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74,
- 0x20, 0x49, 0x54, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x53, 0x48, 0x41, 0x32,
- 0x30, 0x82, 0x02, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
- 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x02, 0x0f, 0x00,
- 0x30, 0x82, 0x02, 0x0a, 0x02, 0x82, 0x02, 0x01, 0x00, 0xd1, 0xe8, 0x37,
- 0xa7, 0x76, 0x8a, 0x70, 0x4b, 0x19, 0xf0, 0x20, 0x37, 0x09, 0x24, 0x37,
- 0x7f, 0xea, 0xfb, 0x78, 0xe6, 0x05, 0xba, 0x6a, 0xad, 0x4e, 0x27, 0x0d,
- 0xfc, 0x72, 0x6a, 0xd9, 0x6c, 0x21, 0xc4, 0x64, 0x11, 0x95, 0x73, 0x10,
- 0x0a, 0x5c, 0x25, 0x7b, 0x88, 0x6c, 0x94, 0x04, 0xfd, 0xc7, 0xdb, 0xae,
- 0x7b, 0xdc, 0x4a, 0x08, 0xb3, 0x3e, 0x16, 0xf1, 0xd0, 0xad, 0xdb, 0x30,
- 0x6d, 0xd7, 0x1a, 0x1e, 0x52, 0xb5, 0x3d, 0xf0, 0x47, 0x19, 0x03, 0xe2,
- 0x7d, 0xa6, 0xbd, 0x57, 0x13, 0x3f, 0x54, 0xea, 0x3a, 0xa3, 0xb1, 0x77,
- 0xfc, 0x42, 0xf0, 0x63, 0x49, 0x6a, 0x91, 0x80, 0x2e, 0x30, 0x49, 0xc0,
- 0x8a, 0xeb, 0x2b, 0xaf, 0xfe, 0x3a, 0xeb, 0x07, 0x5d, 0x06, 0xf7, 0xe9,
- 0xfd, 0x84, 0x0e, 0x91, 0xbd, 0x09, 0x20, 0x29, 0xe8, 0x6e, 0x5d, 0x09,
- 0xce, 0x15, 0xd3, 0xe7, 0xef, 0xdb, 0x50, 0xeb, 0x44, 0xef, 0x18, 0x57,
- 0xab, 0x04, 0x1d, 0xbc, 0x31, 0xf9, 0xf7, 0x7b, 0x2a, 0x13, 0xcf, 0xd1,
- 0x3d, 0x51, 0xaf, 0x1b, 0xc5, 0xb5, 0x7b, 0xe7, 0xb0, 0xfc, 0x53, 0xbb,
- 0x9a, 0xe7, 0x63, 0xde, 0x41, 0x33, 0xb6, 0x47, 0x24, 0x69, 0x5d, 0xb8,
- 0x46, 0xa7, 0xff, 0xad, 0xab, 0xdf, 0x4f, 0x7a, 0x78, 0x25, 0x27, 0x21,
- 0x26, 0x34, 0xca, 0x02, 0x6e, 0x37, 0x51, 0xf0, 0xed, 0x58, 0x1a, 0x60,
- 0x94, 0xf6, 0xc4, 0x93, 0xd8, 0xdd, 0x30, 0x24, 0x25, 0xd7, 0x1c, 0xeb,
- 0x19, 0x94, 0x35, 0x5d, 0x93, 0xb2, 0xae, 0xaa, 0x29, 0x83, 0x73, 0xc4,
- 0x74, 0x59, 0x05, 0x52, 0x67, 0x9d, 0xda, 0x67, 0x51, 0x39, 0x05, 0x3a,
- 0x36, 0xea, 0xf2, 0x1e, 0x76, 0x2b, 0x14, 0xae, 0xec, 0x3d, 0xf9, 0x14,
- 0x99, 0x8b, 0x07, 0x6e, 0xbc, 0xe7, 0x0c, 0x56, 0xde, 0xac, 0xbe, 0xae,
- 0xdb, 0x75, 0x32, 0x90, 0x9e, 0x63, 0xbd, 0x74, 0xbf, 0xe0, 0x0a, 0xca,
- 0xf8, 0x34, 0x96, 0x67, 0x84, 0xcd, 0xd1, 0x42, 0x38, 0x78, 0xc7, 0x99,
- 0xb6, 0x0c, 0xce, 0xb6, 0x0f, 0xe9, 0x1b, 0xcb, 0xf4, 0x59, 0xbe, 0x11,
- 0x0e, 0xcb, 0x2c, 0x32, 0xc8, 0xfa, 0x83, 0x29, 0x64, 0x79, 0x3c, 0x8b,
- 0x4b, 0xf0, 0x32, 0x74, 0x6c, 0xf3, 0x93, 0xb8, 0x96, 0x6b, 0x5d, 0x57,
- 0x5a, 0x68, 0xc1, 0xcc, 0x0c, 0x79, 0x8a, 0x19, 0xde, 0xf5, 0x49, 0x02,
- 0x5e, 0x08, 0x80, 0x01, 0x89, 0x0c, 0x32, 0xcd, 0xd2, 0xd6, 0x96, 0xd5,
- 0x4b, 0xa0, 0xf3, 0xec, 0xbf, 0xab, 0xf4, 0x7d, 0xb3, 0xa1, 0xb9, 0x7c,
- 0xda, 0x4e, 0xd7, 0xe5, 0xb7, 0xac, 0xb9, 0xf2, 0x25, 0x5f, 0x01, 0xcb,
- 0x8c, 0x96, 0xa8, 0x28, 0xae, 0xc1, 0x33, 0x5a, 0xf6, 0x3f, 0x08, 0x90,
- 0xdc, 0xeb, 0xff, 0x39, 0xd8, 0x26, 0xc8, 0x12, 0x9d, 0x1c, 0x9a, 0xaa,
- 0xa9, 0xc0, 0x16, 0x8e, 0x86, 0xed, 0x67, 0x52, 0x96, 0x00, 0x7f, 0x0d,
- 0x92, 0x3d, 0x3d, 0xd9, 0x70, 0x36, 0xe5, 0xea, 0x42, 0x6f, 0x1f, 0xae,
- 0x95, 0xe5, 0x5b, 0x5d, 0xf8, 0xd0, 0x3a, 0xc7, 0xd4, 0xde, 0x77, 0x86,
- 0xd0, 0xfc, 0x9e, 0x4e, 0xe2, 0xe2, 0xb8, 0xa9, 0x68, 0x37, 0x09, 0xc4,
- 0x39, 0xe3, 0x85, 0xb8, 0x89, 0xf3, 0x1f, 0x6e, 0xb7, 0x6d, 0x1f, 0x4a,
- 0x2f, 0x18, 0x09, 0x6f, 0xde, 0x4a, 0x01, 0x8f, 0x14, 0xc9, 0xb7, 0xa6,
- 0xee, 0xa7, 0x63, 0x9f, 0x33, 0xa4, 0x54, 0x7c, 0x42, 0x83, 0x68, 0xb8,
- 0xa5, 0xdf, 0xbf, 0xec, 0xb9, 0x1a, 0x5d, 0x13, 0x3b, 0xd9, 0xad, 0x68,
- 0xfd, 0x20, 0x0a, 0x55, 0x91, 0x21, 0x64, 0xf9, 0xd7, 0x13, 0x01, 0xa0,
- 0x08, 0x5d, 0x59, 0x89, 0x1b, 0x44, 0xaf, 0xa4, 0xac, 0xc7, 0x05, 0x10,
- 0xfa, 0x41, 0x4a, 0xa8, 0xfb, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82,
- 0x01, 0x20, 0x30, 0x82, 0x01, 0x1c, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d,
- 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02,
- 0x01, 0x00, 0x30, 0x53, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x4c, 0x30,
- 0x4a, 0x30, 0x48, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0xb1, 0x3e,
- 0x01, 0x00, 0x30, 0x3b, 0x30, 0x39, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05,
- 0x05, 0x07, 0x02, 0x01, 0x16, 0x2d, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
- 0x2f, 0x63, 0x79, 0x62, 0x65, 0x72, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e,
- 0x6f, 0x6d, 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x6f, 0x6d,
- 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2e,
- 0x63, 0x66, 0x6d, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01,
- 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 0x1d, 0x06, 0x03, 0x55,
- 0x1d, 0x25, 0x04, 0x16, 0x30, 0x14, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05,
- 0x05, 0x07, 0x03, 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07,
- 0x03, 0x02, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30,
- 0x16, 0x80, 0x14, 0xe5, 0x9d, 0x59, 0x30, 0x82, 0x47, 0x58, 0xcc, 0xac,
- 0xfa, 0x08, 0x54, 0x36, 0x86, 0x7b, 0x3a, 0xb5, 0x04, 0x4d, 0xf0, 0x30,
- 0x42, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x3b, 0x30, 0x39, 0x30, 0x37,
- 0xa0, 0x35, 0xa0, 0x33, 0x86, 0x31, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
- 0x2f, 0x63, 0x64, 0x70, 0x31, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63,
- 0x2d, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43,
- 0x52, 0x4c, 0x2f, 0x4f, 0x6d, 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x32,
- 0x30, 0x32, 0x35, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x1d, 0x06, 0x03, 0x55,
- 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x51, 0xaf, 0x24, 0x26, 0x9c, 0xf4,
- 0x68, 0x22, 0x57, 0x80, 0x26, 0x2b, 0x3b, 0x46, 0x62, 0x15, 0x7b, 0x1e,
- 0xcc, 0xa5, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
- 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x76, 0x85,
- 0xc5, 0x23, 0x31, 0x1f, 0xb4, 0x73, 0xea, 0xa0, 0xbc, 0xa5, 0xed, 0xdf,
- 0x45, 0x43, 0x6a, 0x7f, 0x69, 0x20, 0x1b, 0x80, 0xb2, 0xfb, 0x1c, 0xdd,
- 0xaa, 0x7f, 0x88, 0xd3, 0x31, 0x41, 0x36, 0xf7, 0xfb, 0xfb, 0x6b, 0xad,
- 0x98, 0x8c, 0x78, 0x1f, 0x9d, 0x11, 0x67, 0x3a, 0xcd, 0x4b, 0xec, 0xa8,
- 0xbc, 0x9d, 0x15, 0x19, 0xc4, 0x3b, 0x0b, 0xa7, 0x93, 0xce, 0xe8, 0xfc,
- 0x9d, 0x5b, 0xe8, 0x1f, 0xcb, 0x56, 0xae, 0x76, 0x43, 0x2b, 0xc7, 0x13,
- 0x51, 0x77, 0x41, 0xa8, 0x66, 0x4c, 0x5f, 0xa7, 0xd1, 0xd7, 0xaa, 0x75,
- 0xc5, 0x1b, 0x29, 0x4c, 0xc9, 0xf4, 0x6d, 0xa1, 0x5e, 0xa1, 0x85, 0x93,
- 0x16, 0xc2, 0xcb, 0x3b, 0xab, 0x14, 0x7d, 0x44, 0xfd, 0xda, 0x25, 0x29,
- 0x86, 0x2a, 0xfe, 0x63, 0x20, 0xca, 0xd2, 0x0b, 0xc2, 0x34, 0x15, 0xbb,
- 0xaf, 0x5b, 0x7f, 0x8a, 0xe0, 0xaa, 0xed, 0x45, 0xa6, 0xea, 0x79, 0xdb,
- 0xd8, 0x35, 0x66, 0x54, 0x43, 0xde, 0x37, 0x33, 0xd1, 0xe4, 0xe0, 0xcd,
- 0x57, 0xca, 0x71, 0xb0, 0x7d, 0xe9, 0x16, 0x77, 0x64, 0xe8, 0x59, 0x97,
- 0xb9, 0xd5, 0x2e, 0xd1, 0xb4, 0x91, 0xda, 0x77, 0x71, 0xf3, 0x4a, 0x0f,
- 0x48, 0xd2, 0x34, 0x99, 0x60, 0x95, 0x37, 0xac, 0x1f, 0x01, 0xcd, 0x10,
- 0x9d, 0xe8, 0x2a, 0xa5, 0x20, 0xc7, 0x50, 0x9b, 0xb3, 0x6c, 0x49, 0x78,
- 0x2b, 0x58, 0x92, 0x64, 0x89, 0xb8, 0x95, 0x36, 0xa8, 0x34, 0xaa, 0xf0,
- 0x41, 0xd2, 0x95, 0x5a, 0x24, 0x54, 0x97, 0x4d, 0x6e, 0x05, 0xc4, 0x95,
- 0xad, 0xc4, 0x7a, 0xa3, 0x39, 0xfb, 0x79, 0x06, 0x8a, 0x9b, 0xa6, 0x4f,
- 0xd9, 0x22, 0xfa, 0x44, 0x4e, 0x36, 0xf3, 0xc9, 0x0f, 0xa6, 0x39, 0xe7,
- 0x80, 0xb2, 0x5e, 0xbf, 0xbd, 0x39, 0xd1, 0x46, 0xe5, 0x55, 0x47, 0xdb,
- 0xbc, 0x6e,
-}
-
-var certSet2Cert45 = []byte{
- 0x30, 0x82, 0x05, 0xa3, 0x30, 0x82, 0x03, 0x8b, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x67, 0x3f, 0x33, 0x4f, 0x21, 0x53, 0x36, 0x52, 0xc3,
- 0x5e, 0x15, 0xd2, 0xfd, 0xb3, 0x02, 0x0f, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x55,
- 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x43,
- 0x4e, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x11,
- 0x57, 0x6f, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x41, 0x20, 0x4c, 0x69,
- 0x6d, 0x69, 0x74, 0x65, 0x64, 0x31, 0x2a, 0x30, 0x28, 0x06, 0x03, 0x55,
- 0x04, 0x03, 0x13, 0x21, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72,
- 0x69, 0x74, 0x79, 0x20, 0x6f, 0x66, 0x20, 0x57, 0x6f, 0x53, 0x69, 0x67,
- 0x6e, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x39, 0x30, 0x38, 0x30, 0x38, 0x30,
- 0x31, 0x30, 0x30, 0x30, 0x35, 0x5a, 0x17, 0x0d, 0x32, 0x34, 0x30, 0x38,
- 0x30, 0x38, 0x30, 0x31, 0x30, 0x30, 0x30, 0x35, 0x5a, 0x30, 0x4f, 0x31,
- 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x43, 0x4e,
- 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x11, 0x57,
- 0x6f, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x41, 0x20, 0x4c, 0x69, 0x6d,
- 0x69, 0x74, 0x65, 0x64, 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, 0x55, 0x04,
- 0x03, 0x13, 0x1b, 0x57, 0x6f, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c,
- 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x4f, 0x56, 0x20, 0x53, 0x65, 0x72,
- 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d,
- 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05,
- 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82,
- 0x01, 0x01, 0x00, 0xbc, 0x89, 0xbe, 0x61, 0x51, 0x53, 0xc8, 0x2b, 0x96,
- 0x75, 0xb3, 0x5a, 0xd3, 0x0e, 0x34, 0xfe, 0x4a, 0xc2, 0x9f, 0xa3, 0x18,
- 0x83, 0xa2, 0xac, 0xe3, 0x2e, 0x5e, 0x93, 0x79, 0x0b, 0x13, 0x49, 0x5e,
- 0x93, 0xb2, 0x8f, 0x84, 0x10, 0xed, 0x91, 0x8f, 0x82, 0xba, 0xad, 0x67,
- 0xdf, 0x33, 0x1b, 0xae, 0x84, 0xf2, 0x55, 0xb0, 0x5b, 0xf4, 0xb3, 0x9e,
- 0xbc, 0xe6, 0x04, 0x0f, 0x1d, 0xef, 0x04, 0x5a, 0xa8, 0x0b, 0xec, 0x12,
- 0x6d, 0x56, 0x19, 0x64, 0x70, 0x49, 0x0f, 0x57, 0x92, 0xf3, 0x5f, 0x21,
- 0xa6, 0x4d, 0xb4, 0xd2, 0x96, 0x2b, 0x3c, 0x32, 0xb3, 0xef, 0x8f, 0x59,
- 0x0b, 0x14, 0xba, 0x6e, 0xa2, 0x9e, 0x71, 0xdb, 0xf2, 0x88, 0x3f, 0x28,
- 0x3b, 0xec, 0xce, 0xbe, 0x47, 0xac, 0x45, 0xc7, 0x8a, 0x9e, 0xfa, 0x61,
- 0x93, 0xc5, 0x49, 0x17, 0xb6, 0x46, 0xb6, 0xf7, 0x99, 0x16, 0x8c, 0x1c,
- 0x6e, 0x31, 0xae, 0x69, 0xce, 0xed, 0xc6, 0x24, 0x92, 0x70, 0xa1, 0xcb,
- 0x96, 0xc3, 0x6c, 0x16, 0xd0, 0xee, 0xcc, 0x4f, 0x86, 0x33, 0xb3, 0x41,
- 0xe6, 0x3d, 0x3d, 0xdb, 0x0e, 0x8c, 0x33, 0x74, 0xbb, 0xc3, 0xfc, 0x0b,
- 0xa7, 0xfc, 0xd1, 0x71, 0xe2, 0xc1, 0x0c, 0xd4, 0xf7, 0xba, 0x3e, 0x80,
- 0x90, 0xd4, 0x48, 0xeb, 0xa2, 0x83, 0x70, 0xd8, 0xdb, 0x30, 0x07, 0x29,
- 0x89, 0xf9, 0x81, 0x21, 0x2c, 0xff, 0xeb, 0x47, 0xf6, 0x7a, 0x6d, 0x43,
- 0x96, 0x67, 0x17, 0x3e, 0xf3, 0xe2, 0x73, 0x51, 0xc7, 0x76, 0x1e, 0xe9,
- 0x1c, 0xa0, 0xec, 0x11, 0x1a, 0xb1, 0xcf, 0x1e, 0x2d, 0x9c, 0x55, 0xee,
- 0x3b, 0xc6, 0x2d, 0xae, 0xdc, 0x66, 0x65, 0x91, 0xa2, 0x66, 0x9c, 0xac,
- 0x82, 0xf1, 0xa4, 0x17, 0xb5, 0xd7, 0x43, 0x83, 0xc3, 0x88, 0xa0, 0x64,
- 0xde, 0xca, 0x72, 0x45, 0xdc, 0x38, 0xfb, 0x02, 0x03, 0x01, 0x00, 0x01,
- 0xa3, 0x82, 0x01, 0x73, 0x30, 0x82, 0x01, 0x6f, 0x30, 0x0e, 0x06, 0x03,
- 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06,
- 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x04, 0x16, 0x30, 0x14, 0x06,
- 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x02, 0x06, 0x08, 0x2b,
- 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x01, 0x30, 0x12, 0x06, 0x03, 0x55,
- 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff,
- 0x02, 0x01, 0x00, 0x30, 0x30, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x29,
- 0x30, 0x27, 0x30, 0x25, 0xa0, 0x23, 0xa0, 0x21, 0x86, 0x1f, 0x68, 0x74,
- 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x73, 0x31, 0x2e, 0x77,
- 0x6f, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x61,
- 0x31, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x71, 0x06, 0x08, 0x2b, 0x06, 0x01,
- 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x65, 0x30, 0x63, 0x30, 0x27, 0x06,
- 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x1b, 0x68,
- 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x31, 0x2e,
- 0x77, 0x6f, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63,
- 0x61, 0x31, 0x30, 0x38, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07,
- 0x30, 0x02, 0x86, 0x2c, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x61,
- 0x69, 0x61, 0x31, 0x2e, 0x77, 0x6f, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63,
- 0x6f, 0x6d, 0x2f, 0x63, 0x61, 0x31, 0x2d, 0x63, 0x6c, 0x61, 0x73, 0x73,
- 0x33, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x63, 0x65, 0x72,
- 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x62,
- 0x2e, 0x81, 0xd9, 0xe3, 0x42, 0x79, 0x14, 0xa3, 0xcd, 0xd9, 0x54, 0x8a,
- 0x6e, 0xf8, 0xde, 0x95, 0xaa, 0x8f, 0x98, 0x30, 0x1f, 0x06, 0x03, 0x55,
- 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xe1, 0x66, 0xcf, 0x0e,
- 0xd1, 0xf1, 0xb3, 0x4b, 0xb7, 0x06, 0x20, 0x14, 0xfe, 0x87, 0x12, 0xd5,
- 0xf6, 0xfe, 0xfb, 0x3e, 0x30, 0x45, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04,
- 0x3e, 0x30, 0x3c, 0x30, 0x3a, 0x06, 0x0b, 0x2b, 0x06, 0x01, 0x04, 0x01,
- 0x82, 0x9b, 0x51, 0x01, 0x03, 0x02, 0x30, 0x2b, 0x30, 0x29, 0x06, 0x08,
- 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1d, 0x68, 0x74,
- 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x6f, 0x73,
- 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x6f, 0x6c, 0x69,
- 0x63, 0x79, 0x2f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7,
- 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x02, 0x01, 0x00, 0xab,
- 0x70, 0xaa, 0x64, 0xc4, 0x0b, 0x34, 0x91, 0xb9, 0x63, 0x20, 0x5e, 0xb0,
- 0x9c, 0x21, 0xff, 0x25, 0x79, 0x6c, 0x57, 0x4e, 0x56, 0x44, 0x58, 0x83,
- 0xb9, 0x00, 0xce, 0x2d, 0x65, 0xa8, 0x6d, 0x95, 0x38, 0xea, 0x82, 0x2d,
- 0x55, 0x18, 0x60, 0x12, 0x7e, 0x1a, 0x1d, 0x6b, 0x62, 0x34, 0x2c, 0xd9,
- 0xcd, 0x17, 0x00, 0x43, 0x84, 0x3e, 0xad, 0xbc, 0xff, 0x26, 0x85, 0x1f,
- 0x4a, 0xa7, 0x46, 0x13, 0xb0, 0x7d, 0x3b, 0x0b, 0xd9, 0x4b, 0x9d, 0xb0,
- 0xcf, 0x8d, 0xf4, 0x05, 0xcb, 0x12, 0x29, 0xfe, 0xe1, 0x97, 0xc7, 0xb7,
- 0xc7, 0xaa, 0x53, 0x7e, 0x39, 0x2d, 0x9d, 0xf6, 0xd4, 0x5e, 0xb7, 0x8c,
- 0x15, 0x6a, 0x81, 0xd2, 0x37, 0x1a, 0x43, 0x0e, 0xcb, 0xe6, 0x30, 0x21,
- 0x43, 0x83, 0x69, 0x0f, 0xef, 0x6b, 0xcd, 0x10, 0xf9, 0x84, 0x60, 0xcf,
- 0x89, 0xe9, 0x88, 0x10, 0x01, 0xaf, 0x09, 0xf3, 0x48, 0xbb, 0x07, 0x09,
- 0x75, 0x01, 0x84, 0xfa, 0xb1, 0x1e, 0x51, 0x19, 0x8f, 0xc6, 0xc9, 0x85,
- 0x65, 0x16, 0x5f, 0xe0, 0x56, 0x7e, 0xb7, 0xbf, 0x40, 0xc2, 0xd4, 0xd0,
- 0x05, 0x1f, 0x93, 0x63, 0xc9, 0x24, 0x08, 0x3b, 0x91, 0xb2, 0x35, 0xe1,
- 0xa4, 0x8f, 0x35, 0xdb, 0x24, 0x58, 0x75, 0x39, 0xe4, 0xdd, 0x10, 0x1a,
- 0xb0, 0xdf, 0x13, 0x12, 0x73, 0x9e, 0x6d, 0xe7, 0x67, 0x3c, 0xdb, 0x1c,
- 0x1c, 0xdd, 0x10, 0xdd, 0xcc, 0xf4, 0x07, 0x09, 0xb9, 0x2e, 0xe5, 0x75,
- 0x6d, 0x97, 0xb7, 0x60, 0x5b, 0x89, 0x70, 0x81, 0xd2, 0x26, 0xd8, 0xc6,
- 0x09, 0x2b, 0xb2, 0x05, 0x7f, 0xc4, 0xb8, 0x14, 0x41, 0x1e, 0x07, 0xf0,
- 0x48, 0x41, 0x63, 0xcb, 0x0c, 0xaa, 0x45, 0x7e, 0x84, 0xf9, 0x33, 0xb3,
- 0x58, 0x87, 0xbc, 0xb1, 0xd6, 0xc2, 0x65, 0xc7, 0x57, 0xc6, 0x95, 0xe8,
- 0x85, 0x90, 0xb0, 0x62, 0x50, 0xf5, 0xee, 0x12, 0xf1, 0xd8, 0x7e, 0x73,
- 0xcb, 0xc0, 0xc3, 0xa0, 0x25, 0x17, 0x23, 0x37, 0x91, 0xba, 0x63, 0xbd,
- 0x84, 0xaf, 0xf3, 0x89, 0xe0, 0x51, 0xc2, 0x73, 0x35, 0x6d, 0x63, 0x86,
- 0x21, 0xf2, 0x73, 0xbd, 0xc2, 0x47, 0xe0, 0x4d, 0x7e, 0x46, 0x37, 0x4b,
- 0xd0, 0xf7, 0x61, 0x2a, 0xc7, 0x94, 0x50, 0x25, 0x36, 0xe8, 0xae, 0xda,
- 0x2e, 0x1f, 0xb8, 0x08, 0xb2, 0x55, 0x7c, 0x6b, 0x66, 0x43, 0x8f, 0x02,
- 0x1d, 0xdd, 0xa7, 0xeb, 0x98, 0x00, 0xa7, 0x25, 0x74, 0xf5, 0x93, 0x1b,
- 0x6d, 0x26, 0xbb, 0x1d, 0xe5, 0xb7, 0xfc, 0x21, 0x25, 0x26, 0xd1, 0x77,
- 0x1b, 0xa8, 0x6e, 0xaa, 0xc3, 0x4b, 0x64, 0x51, 0x7f, 0x91, 0x0e, 0x41,
- 0x5c, 0x19, 0x83, 0xa1, 0xa8, 0x1f, 0x94, 0x99, 0x43, 0x0f, 0x99, 0xdb,
- 0x18, 0xdc, 0x21, 0x6f, 0x76, 0xd1, 0x9e, 0xea, 0xa3, 0x76, 0xe0, 0xf0,
- 0x09, 0xbc, 0xb9, 0xb4, 0xf7, 0x43, 0x6c, 0x1f, 0xd3, 0x2a, 0x86, 0x6a,
- 0x2f, 0xe0, 0x6c, 0xf1, 0x83, 0x39, 0xd7, 0x70, 0xdb, 0xa2, 0x91, 0xab,
- 0x54, 0xbe, 0xf4, 0x47, 0x88, 0x8c, 0xf0, 0x10, 0xd2, 0xe4, 0xad, 0xeb,
- 0x7e, 0xb1, 0xba, 0x08, 0x4b, 0x67, 0x04, 0xa3, 0xf2, 0xe9, 0x90, 0x2b,
- 0x81, 0xe3, 0x74, 0x76, 0x3d, 0x00, 0x9d, 0xd2, 0xbb, 0xfc, 0xa5, 0xa0,
- 0x15, 0x1c, 0x28, 0xdf, 0x10, 0x4f, 0x47, 0xd7, 0x33, 0x46, 0x9d, 0xb2,
- 0x57, 0xd2, 0xc6, 0x1f, 0xfb, 0xe4, 0x59, 0x4a, 0x2b, 0x28, 0xa9, 0x13,
- 0xdd, 0xb9, 0xe9, 0x93, 0xb4, 0x88, 0xee, 0xe2, 0x5b, 0xa0, 0x07, 0x25,
- 0xfe, 0x8a, 0x2e, 0x78, 0xe4, 0xb4, 0xe1, 0xd5, 0x1d, 0xf6, 0x1a, 0x3a,
- 0xe3, 0x1c, 0x01, 0x2a, 0x1e, 0xa1, 0x86, 0x54, 0x9e, 0x49, 0xdc, 0xc9,
- 0x59, 0xe3, 0x0d, 0x6d, 0x5a, 0x13, 0x36,
-}
-
-var certSet2Cert46 = []byte{
- 0x30, 0x82, 0x05, 0xe1, 0x30, 0x82, 0x04, 0xc9, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x04, 0x07, 0x27, 0xaa, 0x47, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x5a,
- 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x49,
- 0x45, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x09,
- 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x31, 0x13, 0x30,
- 0x11, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0a, 0x43, 0x79, 0x62, 0x65,
- 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03,
- 0x55, 0x04, 0x03, 0x13, 0x19, 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f,
- 0x72, 0x65, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73,
- 0x74, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34,
- 0x30, 0x35, 0x30, 0x37, 0x31, 0x37, 0x30, 0x34, 0x30, 0x39, 0x5a, 0x17,
- 0x0d, 0x31, 0x38, 0x30, 0x35, 0x30, 0x37, 0x31, 0x37, 0x30, 0x33, 0x33,
- 0x30, 0x5a, 0x30, 0x81, 0x8b, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55,
- 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03,
- 0x55, 0x04, 0x08, 0x13, 0x0a, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67,
- 0x74, 0x6f, 0x6e, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x07,
- 0x13, 0x07, 0x52, 0x65, 0x64, 0x6d, 0x6f, 0x6e, 0x64, 0x31, 0x1e, 0x30,
- 0x1c, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x15, 0x4d, 0x69, 0x63, 0x72,
- 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55,
- 0x04, 0x0b, 0x13, 0x0c, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66,
- 0x74, 0x20, 0x49, 0x54, 0x31, 0x1e, 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04,
- 0x03, 0x13, 0x15, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74,
- 0x20, 0x49, 0x54, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x53, 0x48, 0x41, 0x32,
- 0x30, 0x82, 0x02, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
- 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x02, 0x0f, 0x00,
- 0x30, 0x82, 0x02, 0x0a, 0x02, 0x82, 0x02, 0x01, 0x00, 0xd1, 0xe8, 0x37,
- 0xa7, 0x76, 0x8a, 0x70, 0x4b, 0x19, 0xf0, 0x20, 0x37, 0x09, 0x24, 0x37,
- 0x7f, 0xea, 0xfb, 0x78, 0xe6, 0x05, 0xba, 0x6a, 0xad, 0x4e, 0x27, 0x0d,
- 0xfc, 0x72, 0x6a, 0xd9, 0x6c, 0x21, 0xc4, 0x64, 0x11, 0x95, 0x73, 0x10,
- 0x0a, 0x5c, 0x25, 0x7b, 0x88, 0x6c, 0x94, 0x04, 0xfd, 0xc7, 0xdb, 0xae,
- 0x7b, 0xdc, 0x4a, 0x08, 0xb3, 0x3e, 0x16, 0xf1, 0xd0, 0xad, 0xdb, 0x30,
- 0x6d, 0xd7, 0x1a, 0x1e, 0x52, 0xb5, 0x3d, 0xf0, 0x47, 0x19, 0x03, 0xe2,
- 0x7d, 0xa6, 0xbd, 0x57, 0x13, 0x3f, 0x54, 0xea, 0x3a, 0xa3, 0xb1, 0x77,
- 0xfc, 0x42, 0xf0, 0x63, 0x49, 0x6a, 0x91, 0x80, 0x2e, 0x30, 0x49, 0xc0,
- 0x8a, 0xeb, 0x2b, 0xaf, 0xfe, 0x3a, 0xeb, 0x07, 0x5d, 0x06, 0xf7, 0xe9,
- 0xfd, 0x84, 0x0e, 0x91, 0xbd, 0x09, 0x20, 0x29, 0xe8, 0x6e, 0x5d, 0x09,
- 0xce, 0x15, 0xd3, 0xe7, 0xef, 0xdb, 0x50, 0xeb, 0x44, 0xef, 0x18, 0x57,
- 0xab, 0x04, 0x1d, 0xbc, 0x31, 0xf9, 0xf7, 0x7b, 0x2a, 0x13, 0xcf, 0xd1,
- 0x3d, 0x51, 0xaf, 0x1b, 0xc5, 0xb5, 0x7b, 0xe7, 0xb0, 0xfc, 0x53, 0xbb,
- 0x9a, 0xe7, 0x63, 0xde, 0x41, 0x33, 0xb6, 0x47, 0x24, 0x69, 0x5d, 0xb8,
- 0x46, 0xa7, 0xff, 0xad, 0xab, 0xdf, 0x4f, 0x7a, 0x78, 0x25, 0x27, 0x21,
- 0x26, 0x34, 0xca, 0x02, 0x6e, 0x37, 0x51, 0xf0, 0xed, 0x58, 0x1a, 0x60,
- 0x94, 0xf6, 0xc4, 0x93, 0xd8, 0xdd, 0x30, 0x24, 0x25, 0xd7, 0x1c, 0xeb,
- 0x19, 0x94, 0x35, 0x5d, 0x93, 0xb2, 0xae, 0xaa, 0x29, 0x83, 0x73, 0xc4,
- 0x74, 0x59, 0x05, 0x52, 0x67, 0x9d, 0xda, 0x67, 0x51, 0x39, 0x05, 0x3a,
- 0x36, 0xea, 0xf2, 0x1e, 0x76, 0x2b, 0x14, 0xae, 0xec, 0x3d, 0xf9, 0x14,
- 0x99, 0x8b, 0x07, 0x6e, 0xbc, 0xe7, 0x0c, 0x56, 0xde, 0xac, 0xbe, 0xae,
- 0xdb, 0x75, 0x32, 0x90, 0x9e, 0x63, 0xbd, 0x74, 0xbf, 0xe0, 0x0a, 0xca,
- 0xf8, 0x34, 0x96, 0x67, 0x84, 0xcd, 0xd1, 0x42, 0x38, 0x78, 0xc7, 0x99,
- 0xb6, 0x0c, 0xce, 0xb6, 0x0f, 0xe9, 0x1b, 0xcb, 0xf4, 0x59, 0xbe, 0x11,
- 0x0e, 0xcb, 0x2c, 0x32, 0xc8, 0xfa, 0x83, 0x29, 0x64, 0x79, 0x3c, 0x8b,
- 0x4b, 0xf0, 0x32, 0x74, 0x6c, 0xf3, 0x93, 0xb8, 0x96, 0x6b, 0x5d, 0x57,
- 0x5a, 0x68, 0xc1, 0xcc, 0x0c, 0x79, 0x8a, 0x19, 0xde, 0xf5, 0x49, 0x02,
- 0x5e, 0x08, 0x80, 0x01, 0x89, 0x0c, 0x32, 0xcd, 0xd2, 0xd6, 0x96, 0xd5,
- 0x4b, 0xa0, 0xf3, 0xec, 0xbf, 0xab, 0xf4, 0x7d, 0xb3, 0xa1, 0xb9, 0x7c,
- 0xda, 0x4e, 0xd7, 0xe5, 0xb7, 0xac, 0xb9, 0xf2, 0x25, 0x5f, 0x01, 0xcb,
- 0x8c, 0x96, 0xa8, 0x28, 0xae, 0xc1, 0x33, 0x5a, 0xf6, 0x3f, 0x08, 0x90,
- 0xdc, 0xeb, 0xff, 0x39, 0xd8, 0x26, 0xc8, 0x12, 0x9d, 0x1c, 0x9a, 0xaa,
- 0xa9, 0xc0, 0x16, 0x8e, 0x86, 0xed, 0x67, 0x52, 0x96, 0x00, 0x7f, 0x0d,
- 0x92, 0x3d, 0x3d, 0xd9, 0x70, 0x36, 0xe5, 0xea, 0x42, 0x6f, 0x1f, 0xae,
- 0x95, 0xe5, 0x5b, 0x5d, 0xf8, 0xd0, 0x3a, 0xc7, 0xd4, 0xde, 0x77, 0x86,
- 0xd0, 0xfc, 0x9e, 0x4e, 0xe2, 0xe2, 0xb8, 0xa9, 0x68, 0x37, 0x09, 0xc4,
- 0x39, 0xe3, 0x85, 0xb8, 0x89, 0xf3, 0x1f, 0x6e, 0xb7, 0x6d, 0x1f, 0x4a,
- 0x2f, 0x18, 0x09, 0x6f, 0xde, 0x4a, 0x01, 0x8f, 0x14, 0xc9, 0xb7, 0xa6,
- 0xee, 0xa7, 0x63, 0x9f, 0x33, 0xa4, 0x54, 0x7c, 0x42, 0x83, 0x68, 0xb8,
- 0xa5, 0xdf, 0xbf, 0xec, 0xb9, 0x1a, 0x5d, 0x13, 0x3b, 0xd9, 0xad, 0x68,
- 0xfd, 0x20, 0x0a, 0x55, 0x91, 0x21, 0x64, 0xf9, 0xd7, 0x13, 0x01, 0xa0,
- 0x08, 0x5d, 0x59, 0x89, 0x1b, 0x44, 0xaf, 0xa4, 0xac, 0xc7, 0x05, 0x10,
- 0xfa, 0x41, 0x4a, 0xa8, 0xfb, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82,
- 0x01, 0x7b, 0x30, 0x82, 0x01, 0x77, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d,
- 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02,
- 0x01, 0x00, 0x30, 0x60, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x59, 0x30,
- 0x57, 0x30, 0x48, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0xb1, 0x3e,
- 0x01, 0x00, 0x30, 0x3b, 0x30, 0x39, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05,
- 0x05, 0x07, 0x02, 0x01, 0x16, 0x2d, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
- 0x2f, 0x63, 0x79, 0x62, 0x65, 0x72, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e,
- 0x6f, 0x6d, 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x6f, 0x6d,
- 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2e,
- 0x63, 0x66, 0x6d, 0x30, 0x0b, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01,
- 0x82, 0x37, 0x2a, 0x01, 0x30, 0x42, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05,
- 0x05, 0x07, 0x01, 0x01, 0x04, 0x36, 0x30, 0x34, 0x30, 0x32, 0x06, 0x08,
- 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x26, 0x68, 0x74,
- 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x6f, 0x6d,
- 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x62,
- 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x72, 0x6f, 0x6f, 0x74,
- 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04,
- 0x03, 0x02, 0x01, 0x86, 0x30, 0x27, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x04,
- 0x20, 0x30, 0x1e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03,
- 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x02, 0x06,
- 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x09, 0x30, 0x1f, 0x06,
- 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xe5, 0x9d,
- 0x59, 0x30, 0x82, 0x47, 0x58, 0xcc, 0xac, 0xfa, 0x08, 0x54, 0x36, 0x86,
- 0x7b, 0x3a, 0xb5, 0x04, 0x4d, 0xf0, 0x30, 0x42, 0x06, 0x03, 0x55, 0x1d,
- 0x1f, 0x04, 0x3b, 0x30, 0x39, 0x30, 0x37, 0xa0, 0x35, 0xa0, 0x33, 0x86,
- 0x31, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x64, 0x70, 0x31,
- 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2d, 0x74, 0x72, 0x75, 0x73,
- 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x52, 0x4c, 0x2f, 0x4f, 0x6d,
- 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x32, 0x30, 0x32, 0x35, 0x2e, 0x63,
- 0x72, 0x6c, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04,
- 0x14, 0x51, 0xaf, 0x24, 0x26, 0x9c, 0xf4, 0x68, 0x22, 0x57, 0x80, 0x26,
- 0x2b, 0x3b, 0x46, 0x62, 0x15, 0x7b, 0x1e, 0xcc, 0xa5, 0x30, 0x0d, 0x06,
- 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00,
- 0x03, 0x82, 0x01, 0x01, 0x00, 0x69, 0x62, 0xf6, 0x84, 0x91, 0x00, 0xc4,
- 0x6f, 0x82, 0x7b, 0x24, 0xe1, 0x42, 0xa2, 0xa5, 0x8b, 0x82, 0x5c, 0xa7,
- 0xc5, 0x44, 0xcb, 0xe7, 0x52, 0x76, 0x63, 0xd3, 0x76, 0x9e, 0x78, 0xe2,
- 0x69, 0x35, 0xb1, 0x38, 0xba, 0xb0, 0x96, 0xc6, 0x1f, 0xac, 0x7b, 0xc6,
- 0xb2, 0x65, 0x77, 0x8b, 0x7d, 0x8d, 0xae, 0x64, 0xb9, 0xa5, 0x8c, 0x17,
- 0xca, 0x58, 0x65, 0xc3, 0xad, 0x82, 0xf5, 0xc5, 0xa2, 0xf5, 0x01, 0x13,
- 0x93, 0xc6, 0x7e, 0x44, 0xe5, 0xc4, 0x61, 0xfa, 0x03, 0xb6, 0x56, 0xc1,
- 0x72, 0xe1, 0xc8, 0x28, 0xc5, 0x69, 0x21, 0x8f, 0xac, 0x6e, 0xfd, 0x7f,
- 0x43, 0x83, 0x36, 0xb8, 0xc0, 0xd6, 0xa0, 0x28, 0xfe, 0x1a, 0x45, 0xbe,
- 0xfd, 0x93, 0x8c, 0x8d, 0xa4, 0x64, 0x79, 0x1f, 0x14, 0xdb, 0xa1, 0x9f,
- 0x21, 0xdc, 0xc0, 0x4e, 0x7b, 0x17, 0x22, 0x17, 0xb1, 0xb6, 0x3c, 0xd3,
- 0x9b, 0xe2, 0x0a, 0xa3, 0x7e, 0x99, 0xb0, 0xc1, 0xac, 0xd8, 0xf4, 0x86,
- 0xdf, 0x3c, 0xda, 0x7d, 0x14, 0x9c, 0x40, 0xc1, 0x7c, 0xd2, 0x18, 0x6f,
- 0xf1, 0x4f, 0x26, 0x45, 0x09, 0x95, 0x94, 0x5c, 0xda, 0xd0, 0x98, 0xf8,
- 0xf4, 0x4c, 0x82, 0x96, 0x10, 0xde, 0xac, 0x30, 0xcb, 0x2b, 0xae, 0xf9,
- 0x92, 0xea, 0xbf, 0x79, 0x03, 0xfc, 0x1e, 0x3f, 0xac, 0x09, 0xa4, 0x3f,
- 0x65, 0xfd, 0x91, 0x4f, 0x96, 0x24, 0xa7, 0xce, 0xb4, 0x4e, 0x6a, 0x96,
- 0x29, 0x17, 0xae, 0xc0, 0xa8, 0xdf, 0x17, 0x22, 0xf4, 0x17, 0xe3, 0xdc,
- 0x1c, 0x39, 0x06, 0x56, 0x10, 0xea, 0xea, 0xb5, 0x74, 0x17, 0x3c, 0x4e,
- 0xdd, 0x7e, 0x91, 0x0a, 0xa8, 0x0b, 0x78, 0x07, 0xa7, 0x31, 0x44, 0x08,
- 0x31, 0xab, 0x18, 0x84, 0x0f, 0x12, 0x9c, 0xe7, 0xde, 0x84, 0x2c, 0xe9,
- 0x6d, 0x93, 0x45, 0xbf, 0xa8, 0xc1, 0x3f, 0x34, 0xdc,
-}
-
-var certSet2Cert47 = []byte{
- 0x30, 0x82, 0x05, 0xec, 0x30, 0x82, 0x04, 0xd4, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x6e, 0xcc, 0x7a, 0xa5, 0xa7, 0x03, 0x20, 0x09, 0xb8,
- 0xce, 0xbc, 0xf4, 0xe9, 0x52, 0xd4, 0x91, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x81,
- 0xca, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
- 0x55, 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13,
- 0x0e, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49,
- 0x6e, 0x63, 0x2e, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b,
- 0x13, 0x16, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54,
- 0x72, 0x75, 0x73, 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,
- 0x31, 0x3a, 0x30, 0x38, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x31, 0x28,
- 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x36, 0x20, 0x56, 0x65, 0x72, 0x69,
- 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d,
- 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69,
- 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79,
- 0x31, 0x45, 0x30, 0x43, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x3c, 0x56,
- 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73,
- 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x50,
- 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69,
- 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74,
- 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x35, 0x30,
- 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x30, 0x32, 0x30, 0x38, 0x30, 0x30, 0x30,
- 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x30, 0x30, 0x32, 0x30, 0x37,
- 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x81, 0xb5, 0x31, 0x0b,
- 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31,
- 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e, 0x56, 0x65,
- 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e,
- 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x16, 0x56,
- 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, 0x72, 0x75, 0x73,
- 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x31, 0x3b, 0x30,
- 0x39, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x32, 0x54, 0x65, 0x72, 0x6d,
- 0x73, 0x20, 0x6f, 0x66, 0x20, 0x75, 0x73, 0x65, 0x20, 0x61, 0x74, 0x20,
- 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e,
- 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d,
- 0x2f, 0x72, 0x70, 0x61, 0x20, 0x28, 0x63, 0x29, 0x31, 0x30, 0x31, 0x2f,
- 0x30, 0x2d, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x26, 0x56, 0x65, 0x72,
- 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20,
- 0x33, 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x53, 0x65, 0x72,
- 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x30,
- 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7,
- 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30,
- 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xb1, 0x87, 0x84, 0x1f,
- 0xc2, 0x0c, 0x45, 0xf5, 0xbc, 0xab, 0x25, 0x97, 0xa7, 0xad, 0xa2, 0x3e,
- 0x9c, 0xba, 0xf6, 0xc1, 0x39, 0xb8, 0x8b, 0xca, 0xc2, 0xac, 0x56, 0xc6,
- 0xe5, 0xbb, 0x65, 0x8e, 0x44, 0x4f, 0x4d, 0xce, 0x6f, 0xed, 0x09, 0x4a,
- 0xd4, 0xaf, 0x4e, 0x10, 0x9c, 0x68, 0x8b, 0x2e, 0x95, 0x7b, 0x89, 0x9b,
- 0x13, 0xca, 0xe2, 0x34, 0x34, 0xc1, 0xf3, 0x5b, 0xf3, 0x49, 0x7b, 0x62,
- 0x83, 0x48, 0x81, 0x74, 0xd1, 0x88, 0x78, 0x6c, 0x02, 0x53, 0xf9, 0xbc,
- 0x7f, 0x43, 0x26, 0x57, 0x58, 0x33, 0x83, 0x3b, 0x33, 0x0a, 0x17, 0xb0,
- 0xd0, 0x4e, 0x91, 0x24, 0xad, 0x86, 0x7d, 0x64, 0x12, 0xdc, 0x74, 0x4a,
- 0x34, 0xa1, 0x1d, 0x0a, 0xea, 0x96, 0x1d, 0x0b, 0x15, 0xfc, 0xa3, 0x4b,
- 0x3b, 0xce, 0x63, 0x88, 0xd0, 0xf8, 0x2d, 0x0c, 0x94, 0x86, 0x10, 0xca,
- 0xb6, 0x9a, 0x3d, 0xca, 0xeb, 0x37, 0x9c, 0x00, 0x48, 0x35, 0x86, 0x29,
- 0x50, 0x78, 0xe8, 0x45, 0x63, 0xcd, 0x19, 0x41, 0x4f, 0xf5, 0x95, 0xec,
- 0x7b, 0x98, 0xd4, 0xc4, 0x71, 0xb3, 0x50, 0xbe, 0x28, 0xb3, 0x8f, 0xa0,
- 0xb9, 0x53, 0x9c, 0xf5, 0xca, 0x2c, 0x23, 0xa9, 0xfd, 0x14, 0x06, 0xe8,
- 0x18, 0xb4, 0x9a, 0xe8, 0x3c, 0x6e, 0x81, 0xfd, 0xe4, 0xcd, 0x35, 0x36,
- 0xb3, 0x51, 0xd3, 0x69, 0xec, 0x12, 0xba, 0x56, 0x6e, 0x6f, 0x9b, 0x57,
- 0xc5, 0x8b, 0x14, 0xe7, 0x0e, 0xc7, 0x9c, 0xed, 0x4a, 0x54, 0x6a, 0xc9,
- 0x4d, 0xc5, 0xbf, 0x11, 0xb1, 0xae, 0x1c, 0x67, 0x81, 0xcb, 0x44, 0x55,
- 0x33, 0x99, 0x7f, 0x24, 0x9b, 0x3f, 0x53, 0x45, 0x7f, 0x86, 0x1a, 0xf3,
- 0x3c, 0xfa, 0x6d, 0x7f, 0x81, 0xf5, 0xb8, 0x4a, 0xd3, 0xf5, 0x85, 0x37,
- 0x1c, 0xb5, 0xa6, 0xd0, 0x09, 0xe4, 0x18, 0x7b, 0x38, 0x4e, 0xfa, 0x0f,
- 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0xdf, 0x30, 0x82, 0x01,
- 0xdb, 0x30, 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01,
- 0x01, 0x04, 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, 0x2b, 0x06, 0x01,
- 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a,
- 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73,
- 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x12, 0x06, 0x03, 0x55,
- 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff,
- 0x02, 0x01, 0x00, 0x30, 0x70, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x69,
- 0x30, 0x67, 0x30, 0x65, 0x06, 0x0b, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8,
- 0x45, 0x01, 0x07, 0x17, 0x03, 0x30, 0x56, 0x30, 0x28, 0x06, 0x08, 0x2b,
- 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1c, 0x68, 0x74, 0x74,
- 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x76, 0x65, 0x72,
- 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70,
- 0x73, 0x30, 0x2a, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02,
- 0x02, 0x30, 0x1e, 0x1a, 0x1c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f,
- 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67,
- 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x70, 0x61, 0x30, 0x34, 0x06,
- 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2d, 0x30, 0x2b, 0x30, 0x29, 0xa0, 0x27,
- 0xa0, 0x25, 0x86, 0x23, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63,
- 0x72, 0x6c, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e,
- 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x63, 0x61, 0x33, 0x2d, 0x67, 0x35, 0x2e,
- 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01,
- 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x6d, 0x06, 0x08, 0x2b,
- 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x0c, 0x04, 0x61, 0x30, 0x5f, 0xa1,
- 0x5d, 0xa0, 0x5b, 0x30, 0x59, 0x30, 0x57, 0x30, 0x55, 0x16, 0x09, 0x69,
- 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0x30, 0x21, 0x30, 0x1f,
- 0x30, 0x07, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1a, 0x04, 0x14, 0x8f,
- 0xe5, 0xd3, 0x1a, 0x86, 0xac, 0x8d, 0x8e, 0x6b, 0xc3, 0xcf, 0x80, 0x6a,
- 0xd4, 0x48, 0x18, 0x2c, 0x7b, 0x19, 0x2e, 0x30, 0x25, 0x16, 0x23, 0x68,
- 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x76,
- 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
- 0x76, 0x73, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x67, 0x69, 0x66, 0x30, 0x28,
- 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, 0x21, 0x30, 0x1f, 0xa4, 0x1d, 0x30,
- 0x1b, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x10,
- 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x4d, 0x50, 0x4b, 0x49,
- 0x2d, 0x32, 0x2d, 0x36, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04,
- 0x16, 0x04, 0x14, 0x0d, 0x44, 0x5c, 0x16, 0x53, 0x44, 0xc1, 0x82, 0x7e,
- 0x1d, 0x20, 0xab, 0x25, 0xf4, 0x01, 0x63, 0xd8, 0xbe, 0x79, 0xa5, 0x30,
- 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14,
- 0x7f, 0xd3, 0x65, 0xa7, 0xc2, 0xdd, 0xec, 0xbb, 0xf0, 0x30, 0x09, 0xf3,
- 0x43, 0x39, 0xfa, 0x02, 0xaf, 0x33, 0x31, 0x33, 0x30, 0x0d, 0x06, 0x09,
- 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03,
- 0x82, 0x01, 0x01, 0x00, 0x0c, 0x83, 0x24, 0xef, 0xdd, 0xc3, 0x0c, 0xd9,
- 0x58, 0x9c, 0xfe, 0x36, 0xb6, 0xeb, 0x8a, 0x80, 0x4b, 0xd1, 0xa3, 0xf7,
- 0x9d, 0xf3, 0xcc, 0x53, 0xef, 0x82, 0x9e, 0xa3, 0xa1, 0xe6, 0x97, 0xc1,
- 0x58, 0x9d, 0x75, 0x6c, 0xe0, 0x1d, 0x1b, 0x4c, 0xfa, 0xd1, 0xc1, 0x2d,
- 0x05, 0xc0, 0xea, 0x6e, 0xb2, 0x22, 0x70, 0x55, 0xd9, 0x20, 0x33, 0x40,
- 0x33, 0x07, 0xc2, 0x65, 0x83, 0xfa, 0x8f, 0x43, 0x37, 0x9b, 0xea, 0x0e,
- 0x9a, 0x6c, 0x70, 0xee, 0xf6, 0x9c, 0x80, 0x3b, 0xd9, 0x37, 0xf4, 0x7a,
- 0x6d, 0xec, 0xd0, 0x18, 0x7d, 0x49, 0x4a, 0xca, 0x99, 0xc7, 0x19, 0x28,
- 0xa2, 0xbe, 0xd8, 0x77, 0x24, 0xf7, 0x85, 0x26, 0x86, 0x6d, 0x87, 0x05,
- 0x40, 0x41, 0x67, 0xd1, 0x27, 0x3a, 0xed, 0xdc, 0x48, 0x1d, 0x22, 0xcd,
- 0x0b, 0x0b, 0x8b, 0xbc, 0xf4, 0xb1, 0x7b, 0xfd, 0xb4, 0x99, 0xa8, 0xe9,
- 0x76, 0x2a, 0xe1, 0x1a, 0x2d, 0x87, 0x6e, 0x74, 0xd3, 0x88, 0xdd, 0x1e,
- 0x22, 0xc6, 0xdf, 0x16, 0xb6, 0x2b, 0x82, 0x14, 0x0a, 0x94, 0x5c, 0xf2,
- 0x50, 0xec, 0xaf, 0xce, 0xff, 0x62, 0x37, 0x0d, 0xad, 0x65, 0xd3, 0x06,
- 0x41, 0x53, 0xed, 0x02, 0x14, 0xc8, 0xb5, 0x58, 0x28, 0xa1, 0xac, 0xe0,
- 0x5b, 0xec, 0xb3, 0x7f, 0x95, 0x4a, 0xfb, 0x03, 0xc8, 0xad, 0x26, 0xdb,
- 0xe6, 0x66, 0x78, 0x12, 0x4a, 0xd9, 0x9f, 0x42, 0xfb, 0xe1, 0x98, 0xe6,
- 0x42, 0x83, 0x9b, 0x8f, 0x8f, 0x67, 0x24, 0xe8, 0x61, 0x19, 0xb5, 0xdd,
- 0xcd, 0xb5, 0x0b, 0x26, 0x05, 0x8e, 0xc3, 0x6e, 0xc4, 0xc8, 0x75, 0xb8,
- 0x46, 0xcf, 0xe2, 0x18, 0x06, 0x5e, 0xa9, 0xae, 0xa8, 0x81, 0x9a, 0x47,
- 0x16, 0xde, 0x0c, 0x28, 0x6c, 0x25, 0x27, 0xb9, 0xde, 0xb7, 0x84, 0x58,
- 0xc6, 0x1f, 0x38, 0x1e, 0xa4, 0xc4, 0xcb, 0x66,
-}
-
-var certSet2Cert48 = []byte{
- 0x30, 0x82, 0x06, 0x1e, 0x30, 0x82, 0x05, 0x06, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x2c, 0x48, 0xdd, 0x93, 0x0d, 0xf5, 0x59, 0x8e, 0xf9,
- 0x3c, 0x99, 0x54, 0x7a, 0x60, 0xed, 0x43, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x81,
- 0xca, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
- 0x55, 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13,
- 0x0e, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49,
- 0x6e, 0x63, 0x2e, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b,
- 0x13, 0x16, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54,
- 0x72, 0x75, 0x73, 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,
- 0x31, 0x3a, 0x30, 0x38, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x31, 0x28,
- 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x36, 0x20, 0x56, 0x65, 0x72, 0x69,
- 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d,
- 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69,
- 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79,
- 0x31, 0x45, 0x30, 0x43, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x3c, 0x56,
- 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73,
- 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x50,
- 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69,
- 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74,
- 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x35, 0x30,
- 0x1e, 0x17, 0x0d, 0x30, 0x36, 0x31, 0x31, 0x30, 0x38, 0x30, 0x30, 0x30,
- 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x31, 0x36, 0x31, 0x31, 0x30, 0x37,
- 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x81, 0xbe, 0x31, 0x0b,
- 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31,
- 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e, 0x56, 0x65,
- 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e,
- 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x16, 0x56,
- 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, 0x72, 0x75, 0x73,
- 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x31, 0x3b, 0x30,
- 0x39, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x32, 0x54, 0x65, 0x72, 0x6d,
- 0x73, 0x20, 0x6f, 0x66, 0x20, 0x75, 0x73, 0x65, 0x20, 0x61, 0x74, 0x20,
- 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e,
- 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d,
- 0x2f, 0x72, 0x70, 0x61, 0x20, 0x28, 0x63, 0x29, 0x30, 0x36, 0x31, 0x38,
- 0x30, 0x36, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2f, 0x56, 0x65, 0x72,
- 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20,
- 0x33, 0x20, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x20, 0x56,
- 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x53, 0x53,
- 0x4c, 0x20, 0x53, 0x47, 0x43, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22,
- 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
- 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a,
- 0x02, 0x82, 0x01, 0x01, 0x00, 0xbd, 0x56, 0x88, 0xba, 0x88, 0x34, 0x64,
- 0x64, 0xcf, 0xcd, 0xca, 0xb0, 0xee, 0xe7, 0x19, 0x73, 0xc5, 0x72, 0xd9,
- 0xbb, 0x45, 0xbc, 0xb5, 0xa8, 0xff, 0x83, 0xbe, 0x1c, 0x03, 0xdb, 0xed,
- 0x89, 0xb7, 0x2e, 0x10, 0x1a, 0x25, 0xbc, 0x55, 0xca, 0x41, 0xa1, 0x9f,
- 0x0b, 0xcf, 0x19, 0x5e, 0x70, 0xb9, 0x5e, 0x39, 0x4b, 0x9e, 0x31, 0x1c,
- 0x5f, 0x87, 0xae, 0x2a, 0xaa, 0xa8, 0x2b, 0xa2, 0x1b, 0x3b, 0x10, 0x23,
- 0x5f, 0x13, 0xb1, 0xdd, 0x08, 0x8c, 0x4e, 0x14, 0xda, 0x83, 0x81, 0xe3,
- 0xb5, 0x8c, 0xe3, 0x68, 0xed, 0x24, 0x67, 0xce, 0x56, 0xb6, 0xac, 0x9b,
- 0x73, 0x96, 0x44, 0xdb, 0x8a, 0x8c, 0xb3, 0xd6, 0xf0, 0x71, 0x93, 0x8e,
- 0xdb, 0x71, 0x54, 0x4a, 0xeb, 0x73, 0x59, 0x6a, 0x8f, 0x70, 0x51, 0x2c,
- 0x03, 0x9f, 0x97, 0xd1, 0xcc, 0x11, 0x7a, 0xbc, 0x62, 0x0d, 0x95, 0x2a,
- 0xc9, 0x1c, 0x75, 0x57, 0xe9, 0xf5, 0xc7, 0xea, 0xba, 0x84, 0x35, 0xcb,
- 0xc7, 0x85, 0x5a, 0x7e, 0xe4, 0x4d, 0xe1, 0x11, 0x97, 0x7d, 0x0e, 0x20,
- 0x34, 0x45, 0xdb, 0xf1, 0xa2, 0x09, 0xeb, 0xeb, 0x3d, 0x9e, 0xb8, 0x96,
- 0x43, 0x5e, 0x34, 0x4b, 0x08, 0x25, 0x1e, 0x43, 0x1a, 0xa2, 0xd9, 0xb7,
- 0x8a, 0x01, 0x34, 0x3d, 0xc3, 0xf8, 0xe5, 0xaf, 0x4f, 0x8c, 0xff, 0xcd,
- 0x65, 0xf0, 0x23, 0x4e, 0xc5, 0x97, 0xb3, 0x5c, 0xda, 0x90, 0x1c, 0x82,
- 0x85, 0x0d, 0x06, 0x0d, 0xc1, 0x22, 0xb6, 0x7b, 0x28, 0xa4, 0x03, 0xc3,
- 0x4c, 0x53, 0xd1, 0x58, 0xbc, 0x72, 0xbc, 0x08, 0x39, 0xfc, 0xa0, 0x76,
- 0xa8, 0xa8, 0xe9, 0x4b, 0x6e, 0x88, 0x3d, 0xe3, 0xb3, 0x31, 0x25, 0x8c,
- 0x73, 0x29, 0x48, 0x0e, 0x32, 0x79, 0x06, 0xed, 0x3d, 0x43, 0xf4, 0xf6,
- 0xe4, 0xe9, 0xfc, 0x7d, 0xbe, 0x8e, 0x08, 0xd5, 0x1f, 0x02, 0x03, 0x01,
- 0x00, 0x01, 0xa3, 0x82, 0x02, 0x08, 0x30, 0x82, 0x02, 0x04, 0x30, 0x1d,
- 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x4e, 0x43, 0xc8,
- 0x1d, 0x76, 0xef, 0x37, 0x53, 0x7a, 0x4f, 0xf2, 0x58, 0x6f, 0x94, 0xf3,
- 0x38, 0xe2, 0xd5, 0xbd, 0xdf, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13,
- 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01,
- 0x00, 0x30, 0x3d, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x36, 0x30, 0x34,
- 0x30, 0x32, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x2a, 0x30, 0x28,
- 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1c,
- 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e,
- 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d,
- 0x2f, 0x63, 0x70, 0x73, 0x30, 0x3d, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04,
- 0x36, 0x30, 0x34, 0x30, 0x32, 0xa0, 0x30, 0xa0, 0x2e, 0x86, 0x2c, 0x68,
- 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x45, 0x56, 0x53, 0x65, 0x63, 0x75,
- 0x72, 0x65, 0x2d, 0x63, 0x72, 0x6c, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73,
- 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x63, 0x61, 0x33,
- 0x2d, 0x67, 0x35, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55,
- 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30,
- 0x11, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x42, 0x01, 0x01,
- 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x6d, 0x06, 0x08, 0x2b, 0x06,
- 0x01, 0x05, 0x05, 0x07, 0x01, 0x0c, 0x04, 0x61, 0x30, 0x5f, 0xa1, 0x5d,
- 0xa0, 0x5b, 0x30, 0x59, 0x30, 0x57, 0x30, 0x55, 0x16, 0x09, 0x69, 0x6d,
- 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0x30, 0x21, 0x30, 0x1f, 0x30,
- 0x07, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1a, 0x04, 0x14, 0x8f, 0xe5,
- 0xd3, 0x1a, 0x86, 0xac, 0x8d, 0x8e, 0x6b, 0xc3, 0xcf, 0x80, 0x6a, 0xd4,
- 0x48, 0x18, 0x2c, 0x7b, 0x19, 0x2e, 0x30, 0x25, 0x16, 0x23, 0x68, 0x74,
- 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x76, 0x65,
- 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x76,
- 0x73, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x67, 0x69, 0x66, 0x30, 0x29, 0x06,
- 0x03, 0x55, 0x1d, 0x11, 0x04, 0x22, 0x30, 0x20, 0xa4, 0x1e, 0x30, 0x1c,
- 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x11, 0x43,
- 0x6c, 0x61, 0x73, 0x73, 0x33, 0x43, 0x41, 0x32, 0x30, 0x34, 0x38, 0x2d,
- 0x31, 0x2d, 0x34, 0x38, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04,
- 0x18, 0x30, 0x16, 0x80, 0x14, 0x7f, 0xd3, 0x65, 0xa7, 0xc2, 0xdd, 0xec,
- 0xbb, 0xf0, 0x30, 0x09, 0xf3, 0x43, 0x39, 0xfa, 0x02, 0xaf, 0x33, 0x31,
- 0x33, 0x30, 0x3d, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01,
- 0x01, 0x04, 0x31, 0x30, 0x2f, 0x30, 0x2d, 0x06, 0x08, 0x2b, 0x06, 0x01,
- 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x21, 0x68, 0x74, 0x74, 0x70, 0x3a,
- 0x2f, 0x2f, 0x45, 0x56, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x2d, 0x6f,
- 0x63, 0x73, 0x70, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e,
- 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x34, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x04,
- 0x2d, 0x30, 0x2b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x42,
- 0x04, 0x01, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01,
- 0x08, 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x01,
- 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x02, 0x30, 0x0d,
- 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05,
- 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x27, 0x74, 0xa6, 0x34, 0xea, 0x1d,
- 0x9d, 0xe1, 0x53, 0xd6, 0x1c, 0x9d, 0x0c, 0xa7, 0x5b, 0x4c, 0xa9, 0x67,
- 0xf2, 0xf0, 0x32, 0xb7, 0x01, 0x0f, 0xfb, 0x42, 0x18, 0x38, 0xde, 0xe4,
- 0xee, 0x49, 0xc8, 0x13, 0xc9, 0x0b, 0xec, 0x04, 0xc3, 0x40, 0x71, 0x18,
- 0x72, 0x76, 0x43, 0x02, 0x23, 0x5d, 0xab, 0x7b, 0xc8, 0x48, 0x14, 0x1a,
- 0xc8, 0x7b, 0x1d, 0xfc, 0xf6, 0x0a, 0x9f, 0x36, 0xa1, 0xd2, 0x09, 0x73,
- 0x71, 0x66, 0x96, 0x75, 0x51, 0x34, 0xbf, 0x99, 0x30, 0x51, 0x67, 0x9d,
- 0x54, 0xb7, 0x26, 0x45, 0xac, 0x73, 0x08, 0x23, 0x86, 0x26, 0x99, 0x71,
- 0xf4, 0x8e, 0xd7, 0xea, 0x39, 0x9b, 0x06, 0x09, 0x23, 0xbf, 0x62, 0xdd,
- 0xa8, 0xc4, 0xb6, 0x7d, 0xa4, 0x89, 0x07, 0x3e, 0xf3, 0x6d, 0xae, 0x40,
- 0x59, 0x50, 0x79, 0x97, 0x37, 0x3d, 0x32, 0x78, 0x7d, 0xb2, 0x63, 0x4b,
- 0xf9, 0xea, 0x08, 0x69, 0x0e, 0x13, 0xed, 0xe8, 0xcf, 0xbb, 0xac, 0x05,
- 0x86, 0xca, 0x22, 0xcf, 0x88, 0x62, 0x5d, 0x3c, 0x22, 0x49, 0xd8, 0x63,
- 0xd5, 0x24, 0xa6, 0xbd, 0xef, 0x5c, 0xe3, 0xcc, 0x20, 0x3b, 0x22, 0xea,
- 0xfc, 0x44, 0xc6, 0xa8, 0xe5, 0x1f, 0xe1, 0x86, 0xcd, 0x0c, 0x4d, 0x8f,
- 0x93, 0x53, 0xd9, 0x7f, 0xee, 0xa1, 0x08, 0xa7, 0xb3, 0x30, 0x96, 0x49,
- 0x70, 0x6e, 0xa3, 0x6c, 0x3d, 0xd0, 0x63, 0xef, 0x25, 0x66, 0x63, 0xcc,
- 0xaa, 0xb7, 0x18, 0x17, 0x4e, 0xea, 0x70, 0x76, 0xf6, 0xba, 0x42, 0xa6,
- 0x80, 0x37, 0x09, 0x4e, 0x9f, 0x66, 0x88, 0x2e, 0x6b, 0x33, 0x66, 0xc8,
- 0xc0, 0x71, 0xa4, 0x41, 0xeb, 0x5a, 0xe3, 0xfc, 0x14, 0x2e, 0x4b, 0x88,
- 0xfd, 0xae, 0x6e, 0x5b, 0x65, 0xe9, 0x27, 0xe4, 0xbf, 0xe4, 0xb0, 0x23,
- 0xc1, 0xb2, 0x7d, 0x5b, 0x62, 0x25, 0xd7, 0x3e, 0x10, 0xd4,
-}
-
-var certSet2Cert49 = []byte{
- 0x30, 0x82, 0x06, 0x29, 0x30, 0x82, 0x05, 0x11, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x64, 0x1b, 0xe8, 0x20, 0xce, 0x02, 0x08, 0x13, 0xf3,
- 0x2d, 0x4d, 0x2d, 0x95, 0xd6, 0x7e, 0x67, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x81,
- 0xca, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
- 0x55, 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13,
- 0x0e, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49,
- 0x6e, 0x63, 0x2e, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b,
- 0x13, 0x16, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54,
- 0x72, 0x75, 0x73, 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,
- 0x31, 0x3a, 0x30, 0x38, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x31, 0x28,
- 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x36, 0x20, 0x56, 0x65, 0x72, 0x69,
- 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d,
- 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69,
- 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79,
- 0x31, 0x45, 0x30, 0x43, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x3c, 0x56,
- 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73,
- 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x50,
- 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69,
- 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74,
- 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x35, 0x30,
- 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x30, 0x32, 0x30, 0x38, 0x30, 0x30, 0x30,
- 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x30, 0x30, 0x32, 0x30, 0x37,
- 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x81, 0xbc, 0x31, 0x0b,
- 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31,
- 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e, 0x56, 0x65,
- 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e,
- 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x16, 0x56,
- 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, 0x72, 0x75, 0x73,
- 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x31, 0x3b, 0x30,
- 0x39, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x32, 0x54, 0x65, 0x72, 0x6d,
- 0x73, 0x20, 0x6f, 0x66, 0x20, 0x75, 0x73, 0x65, 0x20, 0x61, 0x74, 0x20,
- 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e,
- 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d,
- 0x2f, 0x72, 0x70, 0x61, 0x20, 0x28, 0x63, 0x29, 0x31, 0x30, 0x31, 0x36,
- 0x30, 0x34, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2d, 0x56, 0x65, 0x72,
- 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20,
- 0x33, 0x20, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x61, 0x6c, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x43,
- 0x41, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d,
- 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05,
- 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82,
- 0x01, 0x01, 0x00, 0x99, 0xd6, 0x9c, 0x62, 0xf0, 0x15, 0xf4, 0x81, 0x9a,
- 0x41, 0x08, 0x59, 0x8f, 0x13, 0x9d, 0x17, 0xc9, 0x9f, 0x51, 0xdc, 0xda,
- 0xb1, 0x52, 0xef, 0xff, 0xe3, 0x41, 0xdd, 0xe0, 0xdf, 0xc4, 0x28, 0xc6,
- 0xe3, 0xad, 0x79, 0x1f, 0x27, 0x10, 0x98, 0xb8, 0xbb, 0x20, 0x97, 0xc1,
- 0x28, 0x44, 0x41, 0x0f, 0xea, 0xa9, 0xa8, 0x52, 0xcf, 0x4d, 0x4e, 0x1b,
- 0x8b, 0xbb, 0xb5, 0xc4, 0x76, 0xd9, 0xcc, 0x56, 0x06, 0xee, 0xb3, 0x55,
- 0x20, 0x2a, 0xde, 0x15, 0x8d, 0x71, 0xcb, 0x54, 0xc8, 0x6f, 0x17, 0xcd,
- 0x89, 0x00, 0xe4, 0xdc, 0xff, 0xe1, 0xc0, 0x1f, 0x68, 0x71, 0xe9, 0xc7,
- 0x29, 0x2e, 0x7e, 0xbc, 0x3b, 0xfc, 0xe5, 0xbb, 0xab, 0x26, 0x54, 0x8b,
- 0x66, 0x90, 0xcd, 0xf6, 0x92, 0xb9, 0x31, 0x24, 0x80, 0xbc, 0x9e, 0x6c,
- 0xd5, 0xfc, 0x7e, 0xd2, 0xe1, 0x4b, 0x8c, 0xdc, 0x42, 0xfa, 0x44, 0x4b,
- 0x5f, 0xf8, 0x18, 0xb5, 0x2e, 0x30, 0xf4, 0x3d, 0x12, 0x98, 0xd3, 0x62,
- 0x05, 0x73, 0x54, 0xa6, 0x9c, 0xa2, 0x1d, 0xbe, 0x52, 0x83, 0x3a, 0x07,
- 0x46, 0xc4, 0x3b, 0x02, 0x56, 0x21, 0xbf, 0xf2, 0x51, 0x4f, 0xd0, 0xa6,
- 0x99, 0x39, 0xe9, 0xae, 0xa5, 0x3f, 0x89, 0x9b, 0x9c, 0x7d, 0xfe, 0x4d,
- 0x60, 0x07, 0x25, 0x20, 0xf7, 0xbb, 0xd7, 0x69, 0x83, 0x2b, 0x82, 0x93,
- 0x43, 0x37, 0xd9, 0x83, 0x41, 0x1b, 0x6b, 0x0b, 0xab, 0x4a, 0x66, 0x84,
- 0x4f, 0x4a, 0x8e, 0xde, 0x7e, 0x34, 0x99, 0x8e, 0x68, 0xd6, 0xca, 0x39,
- 0x06, 0x9b, 0x4c, 0xb3, 0x9a, 0x48, 0x4d, 0x13, 0x46, 0xb4, 0x58, 0x21,
- 0x04, 0xc4, 0xfb, 0xa0, 0x4d, 0xac, 0x2e, 0x4b, 0x62, 0x12, 0xe3, 0xfb,
- 0x4d, 0xf6, 0xc9, 0x51, 0x00, 0x01, 0x1f, 0xfc, 0x1e, 0x6a, 0x81, 0x2a,
- 0x38, 0xe0, 0xb9, 0x4f, 0xd6, 0x2d, 0x45, 0x02, 0x03, 0x01, 0x00, 0x01,
- 0xa3, 0x82, 0x02, 0x15, 0x30, 0x82, 0x02, 0x11, 0x30, 0x12, 0x06, 0x03,
- 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01,
- 0xff, 0x02, 0x01, 0x00, 0x30, 0x70, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04,
- 0x69, 0x30, 0x67, 0x30, 0x65, 0x06, 0x0b, 0x60, 0x86, 0x48, 0x01, 0x86,
- 0xf8, 0x45, 0x01, 0x07, 0x17, 0x03, 0x30, 0x56, 0x30, 0x28, 0x06, 0x08,
- 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1c, 0x68, 0x74,
- 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x76, 0x65,
- 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63,
- 0x70, 0x73, 0x30, 0x2a, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07,
- 0x02, 0x02, 0x30, 0x1e, 0x1a, 0x1c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a,
- 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69,
- 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x70, 0x61, 0x30, 0x0e,
- 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02,
- 0x01, 0x06, 0x30, 0x6d, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07,
- 0x01, 0x0c, 0x04, 0x61, 0x30, 0x5f, 0xa1, 0x5d, 0xa0, 0x5b, 0x30, 0x59,
- 0x30, 0x57, 0x30, 0x55, 0x16, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f,
- 0x67, 0x69, 0x66, 0x30, 0x21, 0x30, 0x1f, 0x30, 0x07, 0x06, 0x05, 0x2b,
- 0x0e, 0x03, 0x02, 0x1a, 0x04, 0x14, 0x8f, 0xe5, 0xd3, 0x1a, 0x86, 0xac,
- 0x8d, 0x8e, 0x6b, 0xc3, 0xcf, 0x80, 0x6a, 0xd4, 0x48, 0x18, 0x2c, 0x7b,
- 0x19, 0x2e, 0x30, 0x25, 0x16, 0x23, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
- 0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69,
- 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x76, 0x73, 0x6c, 0x6f, 0x67,
- 0x6f, 0x2e, 0x67, 0x69, 0x66, 0x30, 0x34, 0x06, 0x03, 0x55, 0x1d, 0x25,
- 0x04, 0x2d, 0x30, 0x2b, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07,
- 0x03, 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x02,
- 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x42, 0x04, 0x01, 0x06,
- 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, 0x08, 0x01, 0x30,
- 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04,
- 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
- 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f,
- 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67,
- 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x34, 0x06, 0x03, 0x55, 0x1d, 0x1f,
- 0x04, 0x2d, 0x30, 0x2b, 0x30, 0x29, 0xa0, 0x27, 0xa0, 0x25, 0x86, 0x23,
- 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x76,
- 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
- 0x70, 0x63, 0x61, 0x33, 0x2d, 0x67, 0x35, 0x2e, 0x63, 0x72, 0x6c, 0x30,
- 0x28, 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, 0x21, 0x30, 0x1f, 0xa4, 0x1d,
- 0x30, 0x1b, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13,
- 0x10, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x4d, 0x50, 0x4b,
- 0x49, 0x2d, 0x32, 0x2d, 0x37, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e,
- 0x04, 0x16, 0x04, 0x14, 0xd7, 0x9b, 0x7c, 0xd8, 0x22, 0xa0, 0x15, 0xf7,
- 0xdd, 0xad, 0x5f, 0xce, 0x29, 0x9b, 0x58, 0xc3, 0xbc, 0x46, 0x00, 0xb5,
- 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80,
- 0x14, 0x7f, 0xd3, 0x65, 0xa7, 0xc2, 0xdd, 0xec, 0xbb, 0xf0, 0x30, 0x09,
- 0xf3, 0x43, 0x39, 0xfa, 0x02, 0xaf, 0x33, 0x31, 0x33, 0x30, 0x0d, 0x06,
- 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00,
- 0x03, 0x82, 0x01, 0x01, 0x00, 0x71, 0xb5, 0x7d, 0x73, 0x52, 0x4a, 0xdd,
- 0xd7, 0x4d, 0x34, 0x2b, 0x2e, 0xaf, 0x94, 0x46, 0xa5, 0x49, 0x50, 0x02,
- 0x4f, 0xf8, 0x2f, 0x17, 0x70, 0xf2, 0x13, 0xdc, 0x1f, 0x21, 0x86, 0xaa,
- 0xc2, 0x4f, 0x7c, 0x37, 0x3c, 0xd4, 0x46, 0x78, 0xae, 0x5d, 0x78, 0x6f,
- 0xd1, 0xba, 0x5a, 0xbc, 0x10, 0xab, 0x58, 0x36, 0xc5, 0x8c, 0x62, 0x15,
- 0x45, 0x60, 0x17, 0x21, 0xe2, 0xd5, 0x42, 0xa8, 0x77, 0xa1, 0x55, 0xd8,
- 0x43, 0x04, 0x51, 0xf6, 0x6e, 0xba, 0x48, 0xe6, 0x5d, 0x4c, 0xb7, 0x44,
- 0xd3, 0x3e, 0xa4, 0xd5, 0xd6, 0x33, 0x9a, 0x9f, 0x0d, 0xe6, 0xd7, 0x4e,
- 0x96, 0x44, 0x95, 0x5a, 0x6c, 0xd6, 0xa3, 0x16, 0x53, 0x0e, 0x98, 0x43,
- 0xce, 0xa4, 0xb8, 0xc3, 0x66, 0x7a, 0x05, 0x5c, 0x62, 0x10, 0xe8, 0x1b,
- 0x12, 0xdb, 0x7d, 0x2e, 0x76, 0x50, 0xff, 0xdf, 0xd7, 0x6b, 0x1b, 0xcc,
- 0x8a, 0xcc, 0x71, 0xfa, 0xb3, 0x40, 0x56, 0x7c, 0x33, 0x7a, 0x77, 0x94,
- 0x5b, 0xf5, 0x0b, 0x53, 0xfb, 0x0e, 0x5f, 0xbc, 0x68, 0xfb, 0xaf, 0x2a,
- 0xee, 0x30, 0x37, 0x79, 0x16, 0x93, 0x25, 0x7f, 0x4d, 0x10, 0xff, 0x57,
- 0xfb, 0xbf, 0x6e, 0x3b, 0x33, 0x21, 0xde, 0x79, 0xdc, 0x86, 0x17, 0x59,
- 0x2d, 0x43, 0x64, 0xb7, 0xa6, 0x66, 0x87, 0xea, 0xbc, 0x96, 0x46, 0x19,
- 0x1a, 0x86, 0x8b, 0x6f, 0xd7, 0xb7, 0x49, 0x00, 0x5b, 0xdb, 0xa3, 0xbf,
- 0x29, 0x9a, 0xee, 0xf7, 0xd3, 0x33, 0xae, 0xa3, 0xf4, 0x9e, 0x4c, 0xca,
- 0x5e, 0x69, 0xd4, 0x1b, 0xad, 0xb7, 0x90, 0x77, 0x6a, 0xd8, 0x59, 0x6f,
- 0x79, 0xab, 0x01, 0xfa, 0x55, 0xf0, 0x8a, 0x21, 0x66, 0xe5, 0x65, 0x6e,
- 0xfd, 0x7c, 0xd3, 0xdf, 0x1e, 0xeb, 0x7e, 0x3f, 0x06, 0x90, 0xfb, 0x19,
- 0x0b, 0xd3, 0x06, 0x02, 0x1b, 0x78, 0x43, 0x99, 0xa8,
-}
-
-var certSet2Cert50 = []byte{
- 0x30, 0x82, 0x06, 0x34, 0x30, 0x82, 0x04, 0x1c, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x01, 0x1a, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
- 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x7d, 0x31, 0x0b, 0x30,
- 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x49, 0x4c, 0x31, 0x16,
- 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x53, 0x74, 0x61,
- 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x20, 0x4c, 0x74, 0x64, 0x2e, 0x31, 0x2b,
- 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x22, 0x53, 0x65, 0x63,
- 0x75, 0x72, 0x65, 0x20, 0x44, 0x69, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x20,
- 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20,
- 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x31, 0x29, 0x30, 0x27, 0x06,
- 0x03, 0x55, 0x04, 0x03, 0x13, 0x20, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43,
- 0x6f, 0x6d, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69,
- 0x74, 0x79, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x37, 0x31, 0x30, 0x32, 0x34,
- 0x32, 0x30, 0x35, 0x37, 0x30, 0x39, 0x5a, 0x17, 0x0d, 0x31, 0x37, 0x31,
- 0x30, 0x32, 0x34, 0x32, 0x30, 0x35, 0x37, 0x30, 0x39, 0x5a, 0x30, 0x81,
- 0x8c, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
- 0x49, 0x4c, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13,
- 0x0d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x20, 0x4c, 0x74,
- 0x64, 0x2e, 0x31, 0x2b, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13,
- 0x22, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x44, 0x69, 0x67, 0x69,
- 0x74, 0x61, 0x6c, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63,
- 0x61, 0x74, 0x65, 0x20, 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x31,
- 0x38, 0x30, 0x36, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2f, 0x53, 0x74,
- 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73,
- 0x20, 0x32, 0x20, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x49,
- 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x20,
- 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01,
- 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01,
- 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01,
- 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xe2, 0x4f, 0x39, 0x2f, 0xa1, 0x8c,
- 0x9a, 0x85, 0xad, 0x08, 0x0e, 0x08, 0x3e, 0x57, 0xf2, 0x88, 0x01, 0x21,
- 0x1b, 0x94, 0xa9, 0x6c, 0xe2, 0xb8, 0xdb, 0xaa, 0x19, 0x18, 0x46, 0x3a,
- 0x52, 0xa1, 0xf5, 0x0f, 0xf4, 0x6e, 0x8c, 0xea, 0x96, 0x8c, 0x96, 0x87,
- 0x79, 0x13, 0x40, 0x51, 0x2f, 0x22, 0xf2, 0x0c, 0x8b, 0x87, 0x0f, 0x65,
- 0xdf, 0x71, 0x74, 0x34, 0x43, 0x55, 0xb1, 0x35, 0x09, 0x9b, 0xd9, 0xbc,
- 0x1f, 0xfa, 0xeb, 0x42, 0xd0, 0x97, 0x40, 0x72, 0xb7, 0x43, 0x96, 0x3d,
- 0xba, 0x96, 0x9d, 0x5d, 0x50, 0x02, 0x1c, 0x9b, 0x91, 0x8d, 0x9c, 0xc0,
- 0xac, 0xd7, 0xbb, 0x2f, 0x17, 0xd7, 0xcb, 0x3e, 0x82, 0x9d, 0x73, 0xeb,
- 0x07, 0x42, 0x92, 0xb2, 0xcd, 0x64, 0xb3, 0x74, 0x55, 0x1b, 0xb4, 0x4b,
- 0x86, 0x21, 0x2c, 0xf7, 0x78, 0x87, 0x32, 0xe0, 0x16, 0xe4, 0xda, 0xbd,
- 0x4c, 0x95, 0xea, 0xa4, 0x0a, 0x7e, 0xb6, 0x0a, 0x0d, 0x2e, 0x8a, 0xcf,
- 0x55, 0xab, 0xc3, 0xe5, 0xdd, 0x41, 0x8a, 0x4e, 0xe6, 0x6f, 0x65, 0x6c,
- 0xb2, 0x40, 0xcf, 0x17, 0x5d, 0xb9, 0xc3, 0x6a, 0x0b, 0x27, 0x11, 0x84,
- 0x77, 0x61, 0xf6, 0xc2, 0x7c, 0xed, 0xc0, 0x8d, 0x78, 0x14, 0x18, 0x99,
- 0x81, 0x99, 0x75, 0x63, 0xb7, 0xe8, 0x53, 0xd3, 0xba, 0x61, 0xe9, 0x0e,
- 0xfa, 0xa2, 0x30, 0xf3, 0x46, 0xa2, 0xb9, 0xc9, 0x1f, 0x6c, 0x80, 0x5a,
- 0x40, 0xac, 0x27, 0xed, 0x48, 0x47, 0x33, 0xb0, 0x54, 0xc6, 0x46, 0x1a,
- 0xf3, 0x35, 0x61, 0xc1, 0x02, 0x29, 0x90, 0x54, 0x7e, 0x64, 0x4d, 0xc4,
- 0x30, 0x52, 0x02, 0x82, 0xd7, 0xdf, 0xce, 0x21, 0x6e, 0x18, 0x91, 0xd7,
- 0xb8, 0xab, 0x8c, 0x27, 0x17, 0xb5, 0xf0, 0xa3, 0x01, 0x2f, 0x8e, 0xd2,
- 0x2e, 0x87, 0x3a, 0x3d, 0xb4, 0x29, 0x67, 0x8a, 0xc4, 0x03, 0x02, 0x03,
- 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0xad, 0x30, 0x82, 0x01, 0xa9, 0x30,
- 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30,
- 0x03, 0x01, 0x01, 0xff, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01,
- 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x1d, 0x06, 0x03,
- 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x11, 0xdb, 0x23, 0x45, 0xfd,
- 0x54, 0xcc, 0x6a, 0x71, 0x6f, 0x84, 0x8a, 0x03, 0xd7, 0xbe, 0xf7, 0x01,
- 0x2f, 0x26, 0x86, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18,
- 0x30, 0x16, 0x80, 0x14, 0x4e, 0x0b, 0xef, 0x1a, 0xa4, 0x40, 0x5b, 0xa5,
- 0x17, 0x69, 0x87, 0x30, 0xca, 0x34, 0x68, 0x43, 0xd0, 0x41, 0xae, 0xf2,
- 0x30, 0x66, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01,
- 0x04, 0x5a, 0x30, 0x58, 0x30, 0x27, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05,
- 0x05, 0x07, 0x30, 0x01, 0x86, 0x1b, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
- 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x73,
- 0x73, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x61, 0x30, 0x2d, 0x06,
- 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x21, 0x68,
- 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x74,
- 0x61, 0x72, 0x74, 0x73, 0x73, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73,
- 0x66, 0x73, 0x63, 0x61, 0x2e, 0x63, 0x72, 0x74, 0x30, 0x5b, 0x06, 0x03,
- 0x55, 0x1d, 0x1f, 0x04, 0x54, 0x30, 0x52, 0x30, 0x27, 0xa0, 0x25, 0xa0,
- 0x23, 0x86, 0x21, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77,
- 0x77, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x73, 0x73, 0x6c, 0x2e, 0x63,
- 0x6f, 0x6d, 0x2f, 0x73, 0x66, 0x73, 0x63, 0x61, 0x2e, 0x63, 0x72, 0x6c,
- 0x30, 0x27, 0xa0, 0x25, 0xa0, 0x23, 0x86, 0x21, 0x68, 0x74, 0x74, 0x70,
- 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x74,
- 0x73, 0x73, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x66, 0x73, 0x63,
- 0x61, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x81, 0x80, 0x06, 0x03, 0x55, 0x1d,
- 0x20, 0x04, 0x79, 0x30, 0x77, 0x30, 0x75, 0x06, 0x0b, 0x2b, 0x06, 0x01,
- 0x04, 0x01, 0x81, 0xb5, 0x37, 0x01, 0x02, 0x01, 0x30, 0x66, 0x30, 0x2e,
- 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x22,
- 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73,
- 0x74, 0x61, 0x72, 0x74, 0x73, 0x73, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
- 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x70, 0x64, 0x66, 0x30, 0x34,
- 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x28,
- 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73,
- 0x74, 0x61, 0x72, 0x74, 0x73, 0x73, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
- 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65,
- 0x2e, 0x70, 0x64, 0x66, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
- 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x02, 0x01, 0x00,
- 0x9d, 0x07, 0xe1, 0xee, 0x90, 0x76, 0x31, 0x67, 0x16, 0x45, 0x70, 0x8c,
- 0xcb, 0x84, 0x8b, 0x4b, 0x57, 0x68, 0x44, 0xa5, 0x89, 0xc1, 0xf2, 0x7e,
- 0xcb, 0x28, 0x8b, 0xf5, 0xe7, 0x70, 0x77, 0xd5, 0xb6, 0xf4, 0x0b, 0x21,
- 0x60, 0xa5, 0xa1, 0x74, 0x73, 0x24, 0x22, 0x80, 0xd6, 0xd8, 0xba, 0x8d,
- 0xa2, 0x62, 0x5d, 0x09, 0x35, 0x42, 0x29, 0xfb, 0x39, 0x63, 0x45, 0x0b,
- 0xa4, 0xb0, 0x38, 0x1a, 0x68, 0xf4, 0x95, 0x13, 0xcc, 0xe0, 0x43, 0x94,
- 0xec, 0xeb, 0x39, 0x1a, 0xec, 0x57, 0x29, 0xd9, 0x99, 0x6d, 0xf5, 0x84,
- 0xcd, 0x8e, 0x73, 0xae, 0xc9, 0xdc, 0x6a, 0xfa, 0x9e, 0x9d, 0x16, 0x64,
- 0x93, 0x08, 0xc7, 0x1c, 0xc2, 0x89, 0x54, 0x9e, 0x77, 0x80, 0x90, 0xf6,
- 0xb9, 0x29, 0x76, 0xeb, 0x13, 0x67, 0x48, 0x59, 0xf8, 0x2e, 0x3a, 0x31,
- 0xb8, 0xc9, 0xd3, 0x88, 0xe5, 0x5f, 0x4e, 0xd2, 0x19, 0x3d, 0x43, 0x8e,
- 0xd7, 0x92, 0xff, 0xcf, 0x38, 0xb6, 0xe1, 0x5b, 0x8a, 0x53, 0x1d, 0xce,
- 0xac, 0xb4, 0x76, 0x2f, 0xd8, 0xf7, 0x40, 0x63, 0xd5, 0xee, 0x69, 0xf3,
- 0x45, 0x7d, 0xa0, 0x62, 0xc1, 0x61, 0xc3, 0x75, 0xed, 0xb2, 0x7b, 0x4d,
- 0xac, 0x21, 0x27, 0x30, 0x4e, 0x59, 0x46, 0x6a, 0x93, 0x17, 0xca, 0xc8,
- 0x39, 0x2d, 0x01, 0x73, 0x65, 0x5b, 0xe9, 0x41, 0x9b, 0x11, 0x17, 0x9c,
- 0xc8, 0xc8, 0x4a, 0xef, 0xa1, 0x76, 0x60, 0x2d, 0xae, 0x93, 0xff, 0x0c,
- 0xd5, 0x33, 0x13, 0x9f, 0x4f, 0x13, 0xce, 0xdd, 0x86, 0xf1, 0xfc, 0xf8,
- 0x35, 0x54, 0x15, 0xa8, 0x5b, 0xe7, 0x85, 0x7e, 0xfa, 0x37, 0x09, 0xff,
- 0x8b, 0xb8, 0x31, 0x49, 0x9e, 0x0d, 0x6e, 0xde, 0xb4, 0xd2, 0x12, 0x2d,
- 0xb8, 0xed, 0xc8, 0xc3, 0xf1, 0xb6, 0x42, 0xa0, 0x4c, 0x97, 0x79, 0xdf,
- 0xfe, 0xc3, 0xa3, 0x9f, 0xa1, 0xf4, 0x6d, 0x2c, 0x84, 0x77, 0xa4, 0xa2,
- 0x05, 0xe1, 0x17, 0xff, 0x31, 0xdd, 0x9a, 0xf3, 0xb8, 0x7a, 0xc3, 0x52,
- 0xc2, 0x11, 0x11, 0xb7, 0x50, 0x31, 0x8a, 0x7f, 0xcc, 0xe7, 0x5a, 0x89,
- 0xcc, 0xf7, 0x86, 0x9a, 0x61, 0x92, 0x4f, 0x2f, 0x94, 0xb6, 0x98, 0xc7,
- 0x78, 0xe0, 0x62, 0x4b, 0x43, 0x7d, 0x3c, 0xde, 0xd6, 0x9a, 0xb4, 0x10,
- 0xa1, 0x40, 0x9c, 0x4b, 0x2a, 0xdc, 0xb8, 0xd0, 0xd4, 0x9e, 0xfd, 0xf1,
- 0x84, 0x78, 0x1b, 0x0e, 0x57, 0x8f, 0x69, 0x54, 0x42, 0x68, 0x7b, 0xea,
- 0xa0, 0xef, 0x75, 0x0f, 0x07, 0xa2, 0x8c, 0x73, 0x99, 0xab, 0x55, 0xf5,
- 0x07, 0x09, 0xd2, 0xaf, 0x38, 0x03, 0x6a, 0x90, 0x03, 0x0c, 0x2f, 0x8f,
- 0xe2, 0xe8, 0x43, 0xc2, 0x31, 0xe9, 0x6f, 0xad, 0x87, 0xe5, 0x8d, 0xbd,
- 0x4e, 0x2c, 0x89, 0x4b, 0x51, 0xe6, 0x9c, 0x4c, 0x54, 0x76, 0xc0, 0x12,
- 0x81, 0x53, 0x9b, 0xec, 0xa0, 0xfc, 0x2c, 0x9c, 0xda, 0x18, 0x95, 0x6e,
- 0x1e, 0x38, 0x26, 0x42, 0x27, 0x78, 0x60, 0x08, 0xdf, 0x7f, 0x6d, 0x32,
- 0xe8, 0xd8, 0xc0, 0x6f, 0x1f, 0xeb, 0x26, 0x75, 0x9f, 0x93, 0xfc, 0x7b,
- 0x1b, 0xfe, 0x35, 0x90, 0xdc, 0x53, 0xa3, 0x07, 0xa6, 0x3f, 0x83, 0x55,
- 0x0a, 0x2b, 0x4e, 0x62, 0x82, 0x25, 0xce, 0x66, 0x30, 0x5d, 0x2c, 0xe0,
- 0xf9, 0x19, 0x1b, 0x75, 0xb9, 0x9d, 0x98, 0x56, 0xa6, 0x83, 0x27, 0x7a,
- 0xd1, 0x8f, 0x8d, 0x59, 0x93, 0xfc, 0x3f, 0x73, 0xd7, 0x2e, 0xb4, 0x2c,
- 0x95, 0xd8, 0x8b, 0xf7, 0xc9, 0x7e, 0xc7, 0xfc, 0x9d, 0xac, 0x72, 0x04,
- 0x1f, 0xd2, 0xcc, 0x17, 0xf4, 0xed, 0x34, 0x60, 0x9b, 0x9e, 0x4a, 0x97,
- 0x04, 0xfe, 0xdd, 0x72, 0x0e, 0x57, 0x54, 0x51, 0x06, 0x70, 0x4d, 0xef,
- 0xaa, 0x1c, 0xa4, 0x82, 0xe0, 0x33, 0xc7, 0xf4,
-}
-
-var certSet2Cert51 = []byte{
- 0x30, 0x82, 0x06, 0x58, 0x30, 0x82, 0x05, 0x40, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x0a, 0x5f, 0x11, 0x4d, 0x03, 0x5b, 0x17, 0x91, 0x17,
- 0xd2, 0xef, 0xd4, 0x03, 0x8c, 0x3f, 0x3b, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x6c,
- 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55,
- 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c,
- 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63,
- 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77,
- 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e,
- 0x63, 0x6f, 0x6d, 0x31, 0x2b, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x03,
- 0x13, 0x22, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x48,
- 0x69, 0x67, 0x68, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6e, 0x63,
- 0x65, 0x20, 0x45, 0x56, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41,
- 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x38, 0x30, 0x34, 0x30, 0x32, 0x31, 0x32,
- 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x32, 0x30, 0x34, 0x30,
- 0x33, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x66, 0x31, 0x0b,
- 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31,
- 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, 0x44, 0x69,
- 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x31, 0x19,
- 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77, 0x77, 0x77,
- 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f,
- 0x6d, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1c,
- 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x48, 0x69, 0x67,
- 0x68, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x20,
- 0x43, 0x41, 0x2d, 0x33, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09,
- 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03,
- 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01,
- 0x00, 0xbf, 0x61, 0x0a, 0x29, 0x10, 0x1f, 0x5e, 0xfe, 0x34, 0x37, 0x51,
- 0x08, 0xf8, 0x1e, 0xfb, 0x22, 0xed, 0x61, 0xbe, 0x0b, 0x0d, 0x70, 0x4c,
- 0x50, 0x63, 0x26, 0x75, 0x15, 0xb9, 0x41, 0x88, 0x97, 0xb6, 0xf0, 0xa0,
- 0x15, 0xbb, 0x08, 0x60, 0xe0, 0x42, 0xe8, 0x05, 0x29, 0x10, 0x87, 0x36,
- 0x8a, 0x28, 0x65, 0xa8, 0xef, 0x31, 0x07, 0x74, 0x6d, 0x36, 0x97, 0x2f,
- 0x28, 0x46, 0x66, 0x04, 0xc7, 0x2a, 0x79, 0x26, 0x7a, 0x99, 0xd5, 0x8e,
- 0xc3, 0x6d, 0x4f, 0xa0, 0x5e, 0xad, 0xbc, 0x3d, 0x91, 0xc2, 0x59, 0x7b,
- 0x5e, 0x36, 0x6c, 0xc0, 0x53, 0xcf, 0x00, 0x08, 0x32, 0x3e, 0x10, 0x64,
- 0x58, 0x10, 0x13, 0x69, 0xc7, 0x0c, 0xee, 0x9c, 0x42, 0x51, 0x00, 0xf9,
- 0x05, 0x44, 0xee, 0x24, 0xce, 0x7a, 0x1f, 0xed, 0x8c, 0x11, 0xbd, 0x12,
- 0xa8, 0xf3, 0x15, 0xf4, 0x1c, 0x7a, 0x31, 0x69, 0x01, 0x1b, 0xa7, 0xe6,
- 0x5d, 0xc0, 0x9a, 0x6c, 0x7e, 0x09, 0x9e, 0xe7, 0x52, 0x44, 0x4a, 0x10,
- 0x3a, 0x23, 0xe4, 0x9b, 0xb6, 0x03, 0xaf, 0xa8, 0x9c, 0xb4, 0x5b, 0x9f,
- 0xd4, 0x4b, 0xad, 0x92, 0x8c, 0xce, 0xb5, 0x11, 0x2a, 0xaa, 0x37, 0x18,
- 0x8d, 0xb4, 0xc2, 0xb8, 0xd8, 0x5c, 0x06, 0x8c, 0xf8, 0xff, 0x23, 0xbd,
- 0x35, 0x5e, 0xd4, 0x7c, 0x3e, 0x7e, 0x83, 0x0e, 0x91, 0x96, 0x05, 0x98,
- 0xc3, 0xb2, 0x1f, 0xe3, 0xc8, 0x65, 0xeb, 0xa9, 0x7b, 0x5d, 0xa0, 0x2c,
- 0xcc, 0xfc, 0x3c, 0xd9, 0x6d, 0xed, 0xcc, 0xfa, 0x4b, 0x43, 0x8c, 0xc9,
- 0xd4, 0xb8, 0xa5, 0x61, 0x1c, 0xb2, 0x40, 0xb6, 0x28, 0x12, 0xdf, 0xb9,
- 0xf8, 0x5f, 0xfe, 0xd3, 0xb2, 0xc9, 0xef, 0x3d, 0xb4, 0x1e, 0x4b, 0x7c,
- 0x1c, 0x4c, 0x99, 0x36, 0x9e, 0x3d, 0xeb, 0xec, 0xa7, 0x68, 0x5e, 0x1d,
- 0xdf, 0x67, 0x6e, 0x5e, 0xfb, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82,
- 0x02, 0xfa, 0x30, 0x82, 0x02, 0xf6, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d,
- 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 0x82,
- 0x01, 0xc6, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x82, 0x01, 0xbd, 0x30,
- 0x82, 0x01, 0xb9, 0x30, 0x82, 0x01, 0xb5, 0x06, 0x0b, 0x60, 0x86, 0x48,
- 0x01, 0x86, 0xfd, 0x6c, 0x01, 0x03, 0x00, 0x02, 0x30, 0x82, 0x01, 0xa4,
- 0x30, 0x3a, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01,
- 0x16, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77,
- 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f,
- 0x6d, 0x2f, 0x73, 0x73, 0x6c, 0x2d, 0x63, 0x70, 0x73, 0x2d, 0x72, 0x65,
- 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x68, 0x74, 0x6d,
- 0x30, 0x82, 0x01, 0x64, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07,
- 0x02, 0x02, 0x30, 0x82, 0x01, 0x56, 0x1e, 0x82, 0x01, 0x52, 0x00, 0x41,
- 0x00, 0x6e, 0x00, 0x79, 0x00, 0x20, 0x00, 0x75, 0x00, 0x73, 0x00, 0x65,
- 0x00, 0x20, 0x00, 0x6f, 0x00, 0x66, 0x00, 0x20, 0x00, 0x74, 0x00, 0x68,
- 0x00, 0x69, 0x00, 0x73, 0x00, 0x20, 0x00, 0x43, 0x00, 0x65, 0x00, 0x72,
- 0x00, 0x74, 0x00, 0x69, 0x00, 0x66, 0x00, 0x69, 0x00, 0x63, 0x00, 0x61,
- 0x00, 0x74, 0x00, 0x65, 0x00, 0x20, 0x00, 0x63, 0x00, 0x6f, 0x00, 0x6e,
- 0x00, 0x73, 0x00, 0x74, 0x00, 0x69, 0x00, 0x74, 0x00, 0x75, 0x00, 0x74,
- 0x00, 0x65, 0x00, 0x73, 0x00, 0x20, 0x00, 0x61, 0x00, 0x63, 0x00, 0x63,
- 0x00, 0x65, 0x00, 0x70, 0x00, 0x74, 0x00, 0x61, 0x00, 0x6e, 0x00, 0x63,
- 0x00, 0x65, 0x00, 0x20, 0x00, 0x6f, 0x00, 0x66, 0x00, 0x20, 0x00, 0x74,
- 0x00, 0x68, 0x00, 0x65, 0x00, 0x20, 0x00, 0x44, 0x00, 0x69, 0x00, 0x67,
- 0x00, 0x69, 0x00, 0x43, 0x00, 0x65, 0x00, 0x72, 0x00, 0x74, 0x00, 0x20,
- 0x00, 0x43, 0x00, 0x50, 0x00, 0x2f, 0x00, 0x43, 0x00, 0x50, 0x00, 0x53,
- 0x00, 0x20, 0x00, 0x61, 0x00, 0x6e, 0x00, 0x64, 0x00, 0x20, 0x00, 0x74,
- 0x00, 0x68, 0x00, 0x65, 0x00, 0x20, 0x00, 0x52, 0x00, 0x65, 0x00, 0x6c,
- 0x00, 0x79, 0x00, 0x69, 0x00, 0x6e, 0x00, 0x67, 0x00, 0x20, 0x00, 0x50,
- 0x00, 0x61, 0x00, 0x72, 0x00, 0x74, 0x00, 0x79, 0x00, 0x20, 0x00, 0x41,
- 0x00, 0x67, 0x00, 0x72, 0x00, 0x65, 0x00, 0x65, 0x00, 0x6d, 0x00, 0x65,
- 0x00, 0x6e, 0x00, 0x74, 0x00, 0x20, 0x00, 0x77, 0x00, 0x68, 0x00, 0x69,
- 0x00, 0x63, 0x00, 0x68, 0x00, 0x20, 0x00, 0x6c, 0x00, 0x69, 0x00, 0x6d,
- 0x00, 0x69, 0x00, 0x74, 0x00, 0x20, 0x00, 0x6c, 0x00, 0x69, 0x00, 0x61,
- 0x00, 0x62, 0x00, 0x69, 0x00, 0x6c, 0x00, 0x69, 0x00, 0x74, 0x00, 0x79,
- 0x00, 0x20, 0x00, 0x61, 0x00, 0x6e, 0x00, 0x64, 0x00, 0x20, 0x00, 0x61,
- 0x00, 0x72, 0x00, 0x65, 0x00, 0x20, 0x00, 0x69, 0x00, 0x6e, 0x00, 0x63,
- 0x00, 0x6f, 0x00, 0x72, 0x00, 0x70, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x61,
- 0x00, 0x74, 0x00, 0x65, 0x00, 0x64, 0x00, 0x20, 0x00, 0x68, 0x00, 0x65,
- 0x00, 0x72, 0x00, 0x65, 0x00, 0x69, 0x00, 0x6e, 0x00, 0x20, 0x00, 0x62,
- 0x00, 0x79, 0x00, 0x20, 0x00, 0x72, 0x00, 0x65, 0x00, 0x66, 0x00, 0x65,
- 0x00, 0x72, 0x00, 0x65, 0x00, 0x6e, 0x00, 0x63, 0x00, 0x65, 0x00, 0x2e,
- 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08,
- 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x34, 0x06, 0x08,
- 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x28, 0x30, 0x26,
- 0x30, 0x24, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01,
- 0x86, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73,
- 0x70, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63,
- 0x6f, 0x6d, 0x30, 0x81, 0x8f, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x81,
- 0x87, 0x30, 0x81, 0x84, 0x30, 0x40, 0xa0, 0x3e, 0xa0, 0x3c, 0x86, 0x3a,
- 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x33, 0x2e,
- 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d,
- 0x2f, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x48, 0x69, 0x67,
- 0x68, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x45, 0x56,
- 0x52, 0x6f, 0x6f, 0x74, 0x43, 0x41, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x40,
- 0xa0, 0x3e, 0xa0, 0x3c, 0x86, 0x3a, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
- 0x2f, 0x63, 0x72, 0x6c, 0x34, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65,
- 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x69, 0x67, 0x69, 0x43,
- 0x65, 0x72, 0x74, 0x48, 0x69, 0x67, 0x68, 0x41, 0x73, 0x73, 0x75, 0x72,
- 0x61, 0x6e, 0x63, 0x65, 0x45, 0x56, 0x52, 0x6f, 0x6f, 0x74, 0x43, 0x41,
- 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04,
- 0x18, 0x30, 0x16, 0x80, 0x14, 0xb1, 0x3e, 0xc3, 0x69, 0x03, 0xf8, 0xbf,
- 0x47, 0x01, 0xd4, 0x98, 0x26, 0x1a, 0x08, 0x02, 0xef, 0x63, 0x64, 0x2b,
- 0xc3, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14,
- 0x50, 0xea, 0x73, 0x89, 0xdb, 0x29, 0xfb, 0x10, 0x8f, 0x9e, 0xe5, 0x01,
- 0x20, 0xd4, 0xde, 0x79, 0x99, 0x48, 0x83, 0xf7, 0x30, 0x0d, 0x06, 0x09,
- 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03,
- 0x82, 0x01, 0x01, 0x00, 0x1e, 0xe2, 0xa5, 0x48, 0x9e, 0x6c, 0xdb, 0x53,
- 0x38, 0x0f, 0xef, 0xa6, 0x1a, 0x2a, 0xac, 0xe2, 0x03, 0x43, 0xed, 0x9a,
- 0xbc, 0x3e, 0x8e, 0x75, 0x1b, 0xf0, 0xfd, 0x2e, 0x22, 0x59, 0xac, 0x13,
- 0xc0, 0x61, 0xe2, 0xe7, 0xfa, 0xe9, 0x99, 0xcd, 0x87, 0x09, 0x75, 0x54,
- 0x28, 0xbf, 0x46, 0x60, 0xdc, 0xbe, 0x51, 0x2c, 0x92, 0xf3, 0x1b, 0x91,
- 0x7c, 0x31, 0x08, 0x70, 0xe2, 0x37, 0xb9, 0xc1, 0x5b, 0xa8, 0xbd, 0xa3,
- 0x0b, 0x00, 0xfb, 0x1a, 0x15, 0xfd, 0x03, 0xad, 0x58, 0x6a, 0xc5, 0xc7,
- 0x24, 0x99, 0x48, 0x47, 0x46, 0x31, 0x1e, 0x92, 0xef, 0xb4, 0x5f, 0x4e,
- 0x34, 0xc7, 0x90, 0xbf, 0x31, 0xc1, 0xf8, 0xb1, 0x84, 0x86, 0xd0, 0x9c,
- 0x01, 0xaa, 0xdf, 0x8a, 0x56, 0x06, 0xce, 0x3a, 0xe9, 0x0e, 0xae, 0x97,
- 0x74, 0x5d, 0xd7, 0x71, 0x9a, 0x42, 0x74, 0x5f, 0xde, 0x8d, 0x43, 0x7c,
- 0xde, 0xe9, 0x55, 0xed, 0x69, 0x00, 0xcb, 0x05, 0xe0, 0x7a, 0x61, 0x61,
- 0x33, 0xd1, 0x19, 0x4d, 0xf9, 0x08, 0xee, 0xa0, 0x39, 0xc5, 0x25, 0x35,
- 0xb7, 0x2b, 0xc4, 0x0f, 0xb2, 0xdd, 0xf1, 0xa5, 0xb7, 0x0e, 0x24, 0xc4,
- 0x26, 0x28, 0x8d, 0x79, 0x77, 0xf5, 0x2f, 0xf0, 0x57, 0xba, 0x7c, 0x07,
- 0xd4, 0xe1, 0xfc, 0xcd, 0x5a, 0x30, 0x57, 0x7e, 0x86, 0x10, 0x47, 0xdd,
- 0x31, 0x1f, 0xd7, 0xfc, 0xa2, 0xc2, 0xbf, 0x30, 0x7c, 0x5d, 0x24, 0xaa,
- 0xe8, 0xf9, 0xae, 0x5f, 0x6a, 0x74, 0xc2, 0xce, 0x6b, 0xb3, 0x46, 0xd8,
- 0x21, 0xbe, 0x29, 0xd4, 0x8e, 0x5e, 0x15, 0xd6, 0x42, 0x4a, 0xe7, 0x32,
- 0x6f, 0xa4, 0xb1, 0x6b, 0x51, 0x83, 0x58, 0xbe, 0x3f, 0x6d, 0xc7, 0xfb,
- 0xda, 0x03, 0x21, 0xcb, 0x6a, 0x16, 0x19, 0x4e, 0x0a, 0xf0, 0xad, 0x84,
- 0xca, 0x5d, 0x94, 0xb3, 0x5a, 0x76, 0xf7, 0x61,
-}
-
-var certSet2Cert52 = []byte{
- 0x30, 0x82, 0x06, 0x5c, 0x30, 0x82, 0x04, 0x44, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x07, 0x19, 0xc2, 0x85, 0x30, 0xe9, 0x3b, 0x36, 0x30, 0x0d,
- 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05,
- 0x00, 0x30, 0x7d, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,
- 0x13, 0x02, 0x49, 0x4c, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04,
- 0x0a, 0x13, 0x0d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x20,
- 0x4c, 0x74, 0x64, 0x2e, 0x31, 0x2b, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04,
- 0x0b, 0x13, 0x22, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x44, 0x69,
- 0x67, 0x69, 0x74, 0x61, 0x6c, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66,
- 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e,
- 0x67, 0x31, 0x29, 0x30, 0x27, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x20,
- 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x20, 0x43, 0x65, 0x72,
- 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41,
- 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, 0x1e, 0x17, 0x0d,
- 0x30, 0x36, 0x30, 0x39, 0x31, 0x37, 0x32, 0x32, 0x34, 0x36, 0x33, 0x36,
- 0x5a, 0x17, 0x0d, 0x31, 0x39, 0x31, 0x32, 0x33, 0x31, 0x32, 0x33, 0x35,
- 0x39, 0x35, 0x39, 0x5a, 0x30, 0x55, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03,
- 0x55, 0x04, 0x06, 0x13, 0x02, 0x43, 0x4e, 0x31, 0x1a, 0x30, 0x18, 0x06,
- 0x03, 0x55, 0x04, 0x0a, 0x13, 0x11, 0x57, 0x6f, 0x53, 0x69, 0x67, 0x6e,
- 0x20, 0x43, 0x41, 0x20, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x31,
- 0x2a, 0x30, 0x28, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x21, 0x43, 0x65,
- 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20,
- 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x6f, 0x66,
- 0x20, 0x57, 0x6f, 0x53, 0x69, 0x67, 0x6e, 0x30, 0x82, 0x02, 0x22, 0x30,
- 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01,
- 0x05, 0x00, 0x03, 0x82, 0x02, 0x0f, 0x00, 0x30, 0x82, 0x02, 0x0a, 0x02,
- 0x82, 0x02, 0x01, 0x00, 0xbd, 0xca, 0x8d, 0xac, 0xb8, 0x91, 0x15, 0x56,
- 0x97, 0x7b, 0x6b, 0x5c, 0x7a, 0xc2, 0xde, 0x6b, 0xd9, 0xa1, 0xb0, 0xc3,
- 0x10, 0x23, 0xfa, 0xa7, 0xa1, 0xb2, 0xcc, 0x31, 0xfa, 0x3e, 0xd9, 0xa6,
- 0x29, 0x6f, 0x16, 0x3d, 0xe0, 0x6b, 0xf8, 0xb8, 0x40, 0x5f, 0xdb, 0x39,
- 0xa8, 0x00, 0x7a, 0x8b, 0xa0, 0x4d, 0x54, 0x7d, 0xc2, 0x22, 0x78, 0xfc,
- 0x8e, 0x09, 0xb8, 0xa8, 0x85, 0xd7, 0xcc, 0x95, 0x97, 0x4b, 0x74, 0xd8,
- 0x9e, 0x7e, 0xf0, 0x00, 0xe4, 0x0e, 0x89, 0xae, 0x49, 0x28, 0x44, 0x1a,
- 0x10, 0x99, 0x32, 0x0f, 0x25, 0x88, 0x53, 0xa4, 0x0d, 0xb3, 0x0f, 0x12,
- 0x08, 0x16, 0x0b, 0x03, 0x71, 0x27, 0x1c, 0x7f, 0xe1, 0xdb, 0xd2, 0xfd,
- 0x67, 0x68, 0xc4, 0x05, 0x5d, 0x0a, 0x0e, 0x5d, 0x70, 0xd7, 0xd8, 0x97,
- 0xa0, 0xbc, 0x53, 0x41, 0x9a, 0x91, 0x8d, 0xf4, 0x9e, 0x36, 0x66, 0x7a,
- 0x7e, 0x56, 0xc1, 0x90, 0x5f, 0xe6, 0xb1, 0x68, 0x20, 0x36, 0xa4, 0x8c,
- 0x24, 0x2c, 0x2c, 0x47, 0x0b, 0x59, 0x76, 0x66, 0x30, 0xb5, 0xbe, 0xde,
- 0xed, 0x8f, 0xf8, 0x9d, 0xd3, 0xbb, 0x01, 0x30, 0xe6, 0xf2, 0xf3, 0x0e,
- 0xe0, 0x2c, 0x92, 0x80, 0xf3, 0x85, 0xf9, 0x28, 0x8a, 0xb4, 0x54, 0x2e,
- 0x9a, 0xed, 0xf7, 0x76, 0xfc, 0x15, 0x68, 0x16, 0xeb, 0x4a, 0x6c, 0xeb,
- 0x2e, 0x12, 0x8f, 0xd4, 0xcf, 0xfe, 0x0c, 0xc7, 0x5c, 0x1d, 0x0b, 0x7e,
- 0x05, 0x32, 0xbe, 0x5e, 0xb0, 0x09, 0x2a, 0x42, 0xd5, 0xc9, 0x4e, 0x90,
- 0xb3, 0x59, 0x0d, 0xbb, 0x7a, 0x7e, 0xcd, 0xd5, 0x08, 0x5a, 0xb4, 0x7f,
- 0xd8, 0x1c, 0x69, 0x11, 0xf9, 0x27, 0x0f, 0x7b, 0x06, 0xaf, 0x54, 0x83,
- 0x18, 0x7b, 0xe1, 0xdd, 0x54, 0x7a, 0x51, 0x68, 0x6e, 0x77, 0xfc, 0xc6,
- 0xbf, 0x52, 0x4a, 0x66, 0x46, 0xa1, 0xb2, 0x67, 0x1a, 0xbb, 0xa3, 0x4f,
- 0x77, 0xa0, 0xbe, 0x5d, 0xff, 0xfc, 0x56, 0x0b, 0x43, 0x72, 0x77, 0x90,
- 0xca, 0x9e, 0xf9, 0xf2, 0x39, 0xf5, 0x0d, 0xa9, 0xf4, 0xea, 0xd7, 0xe7,
- 0xb3, 0x10, 0x2f, 0x30, 0x42, 0x37, 0x21, 0xcc, 0x30, 0x70, 0xc9, 0x86,
- 0x98, 0x0f, 0xcc, 0x58, 0x4d, 0x83, 0xbb, 0x7d, 0xe5, 0x1a, 0xa5, 0x37,
- 0x8d, 0xb6, 0xac, 0x32, 0x97, 0x00, 0x3a, 0x63, 0x71, 0x24, 0x1e, 0x9e,
- 0x37, 0xc4, 0xff, 0x74, 0xd4, 0x37, 0xc0, 0xe2, 0xfe, 0x88, 0x46, 0x60,
- 0x11, 0xdd, 0x08, 0x3f, 0x50, 0x36, 0xab, 0xb8, 0x7a, 0xa4, 0x95, 0x62,
- 0x6a, 0x6e, 0xb0, 0xca, 0x6a, 0x21, 0x5a, 0x69, 0xf3, 0xf3, 0xfb, 0x1d,
- 0x70, 0x39, 0x95, 0xf3, 0xa7, 0x6e, 0xa6, 0x81, 0x89, 0xa1, 0x88, 0xc5,
- 0x3b, 0x71, 0xca, 0xa3, 0x52, 0xee, 0x83, 0xbb, 0xfd, 0xa0, 0x77, 0xf4,
- 0xe4, 0x6f, 0xe7, 0x42, 0xdb, 0x6d, 0x4a, 0x99, 0x8a, 0x34, 0x48, 0xbc,
- 0x17, 0xdc, 0xe4, 0x80, 0x08, 0x22, 0xb6, 0xf2, 0x31, 0xc0, 0x3f, 0x04,
- 0x3e, 0xeb, 0x9f, 0x20, 0x79, 0xd6, 0xb8, 0x06, 0x64, 0x64, 0x02, 0x31,
- 0xd7, 0xa9, 0xcd, 0x52, 0xfb, 0x84, 0x45, 0x69, 0x09, 0x00, 0x2a, 0xdc,
- 0x55, 0x8b, 0xc4, 0x06, 0x46, 0x4b, 0xc0, 0x4a, 0x1d, 0x09, 0x5b, 0x39,
- 0x28, 0xfd, 0xa9, 0xab, 0xce, 0x00, 0xf9, 0x2e, 0x48, 0x4b, 0x26, 0xe6,
- 0x30, 0x4c, 0xa5, 0x58, 0xca, 0xb4, 0x44, 0x82, 0x4f, 0xe7, 0x91, 0x1e,
- 0x33, 0xc3, 0xb0, 0x93, 0xff, 0x11, 0xfc, 0x81, 0xd2, 0xca, 0x1f, 0x71,
- 0x29, 0xdd, 0x76, 0x4f, 0x92, 0x25, 0xaf, 0x1d, 0x81, 0xb7, 0x0f, 0x2f,
- 0x8c, 0xc3, 0x06, 0xcc, 0x2f, 0x27, 0xa3, 0x4a, 0xe4, 0x0e, 0x99, 0xba,
- 0x7c, 0x1e, 0x45, 0x1f, 0x7f, 0xaa, 0x19, 0x45, 0x96, 0xfd, 0xfc, 0x3d,
- 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x07, 0x30, 0x82, 0x01,
- 0x03, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04,
- 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x02, 0x30, 0x0e, 0x06,
- 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01,
- 0x06, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14,
- 0xe1, 0x66, 0xcf, 0x0e, 0xd1, 0xf1, 0xb3, 0x4b, 0xb7, 0x06, 0x20, 0x14,
- 0xfe, 0x87, 0x12, 0xd5, 0xf6, 0xfe, 0xfb, 0x3e, 0x30, 0x1f, 0x06, 0x03,
- 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x4e, 0x0b, 0xef,
- 0x1a, 0xa4, 0x40, 0x5b, 0xa5, 0x17, 0x69, 0x87, 0x30, 0xca, 0x34, 0x68,
- 0x43, 0xd0, 0x41, 0xae, 0xf2, 0x30, 0x69, 0x06, 0x08, 0x2b, 0x06, 0x01,
- 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x5d, 0x30, 0x5b, 0x30, 0x27, 0x06,
- 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x1b, 0x68,
- 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x73,
- 0x74, 0x61, 0x72, 0x74, 0x73, 0x73, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
- 0x63, 0x61, 0x30, 0x30, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07,
- 0x30, 0x02, 0x86, 0x24, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x61,
- 0x69, 0x61, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x73, 0x73, 0x6c, 0x2e,
- 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x63, 0x61,
- 0x2e, 0x63, 0x72, 0x74, 0x30, 0x32, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04,
- 0x2b, 0x30, 0x29, 0x30, 0x27, 0xa0, 0x25, 0xa0, 0x23, 0x86, 0x21, 0x68,
- 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x73, 0x74,
- 0x61, 0x72, 0x74, 0x73, 0x73, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73,
- 0x66, 0x73, 0x63, 0x61, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0d, 0x06, 0x09,
- 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03,
- 0x82, 0x02, 0x01, 0x00, 0xb6, 0x6d, 0xf8, 0x70, 0xfb, 0xe2, 0x0d, 0x4c,
- 0x98, 0xb3, 0x07, 0x49, 0x15, 0xf5, 0x04, 0xc4, 0x6c, 0xca, 0xca, 0xf5,
- 0x68, 0xa0, 0x08, 0xfe, 0x12, 0x6d, 0x9c, 0x04, 0x06, 0xc9, 0xad, 0x9a,
- 0x91, 0x52, 0x3e, 0x78, 0xc4, 0x5c, 0xee, 0x9f, 0x54, 0x1d, 0xee, 0xe3,
- 0xf1, 0x5e, 0x30, 0xc9, 0x49, 0xe1, 0x39, 0xe0, 0xa6, 0x9d, 0x36, 0x6c,
- 0x57, 0xfa, 0xe6, 0x34, 0x4f, 0x55, 0xe8, 0x87, 0xa8, 0x2c, 0xdd, 0x05,
- 0xf1, 0x58, 0x12, 0x91, 0xe8, 0xca, 0xce, 0x28, 0x78, 0x8f, 0xdf, 0x07,
- 0x85, 0x01, 0xa5, 0xdc, 0x45, 0x96, 0x05, 0xd4, 0x80, 0xb2, 0x2b, 0x05,
- 0x9a, 0xcb, 0x9a, 0xa5, 0x8b, 0xe0, 0x3a, 0x67, 0xe6, 0x73, 0x47, 0xbe,
- 0x4a, 0xfd, 0x27, 0xb1, 0x88, 0xef, 0xe6, 0xca, 0xcf, 0x8d, 0x0e, 0x26,
- 0x9f, 0xfa, 0x5f, 0x57, 0x78, 0xad, 0x6d, 0xfe, 0xae, 0x9b, 0x35, 0x08,
- 0xb1, 0xc3, 0xba, 0xc1, 0x00, 0x4a, 0x4b, 0x7d, 0x14, 0xbd, 0xf7, 0xf1,
- 0xd3, 0x55, 0x18, 0xac, 0xd0, 0x33, 0x70, 0x88, 0x6d, 0xc4, 0x09, 0x71,
- 0x14, 0xa6, 0x2b, 0x4f, 0x88, 0x81, 0xe7, 0x0b, 0x00, 0x37, 0xa9, 0x15,
- 0x7d, 0x7e, 0xd7, 0x01, 0x96, 0x3f, 0x2f, 0xaf, 0x7b, 0x62, 0xae, 0x0a,
- 0x4a, 0xbf, 0x4b, 0x39, 0x2e, 0x35, 0x10, 0x8b, 0xfe, 0x04, 0x39, 0xe4,
- 0x3c, 0x3a, 0x0c, 0x09, 0x56, 0x40, 0x3a, 0xb5, 0xf4, 0xc2, 0x68, 0x0c,
- 0xb5, 0xf9, 0x52, 0xcd, 0xee, 0x9d, 0xf8, 0x98, 0xfc, 0x78, 0xe7, 0x58,
- 0x47, 0x8f, 0x1c, 0x73, 0x58, 0x69, 0x33, 0xab, 0xff, 0xdd, 0xdf, 0x8e,
- 0x24, 0x01, 0x77, 0x98, 0x19, 0x3a, 0xb0, 0x66, 0x79, 0xbc, 0xe1, 0x08,
- 0xa3, 0x0e, 0x4f, 0xc1, 0x04, 0xb3, 0xf3, 0x01, 0xc8, 0xeb, 0xd3, 0x59,
- 0x1c, 0x35, 0xd2, 0x93, 0x1e, 0x70, 0x65, 0x82, 0x7f, 0xdb, 0xcf, 0xfb,
- 0xc8, 0x99, 0x12, 0x60, 0xc3, 0x44, 0x6f, 0x3a, 0x80, 0x4b, 0xd7, 0xbe,
- 0x21, 0xaa, 0x14, 0x7a, 0x64, 0xcb, 0xdd, 0x37, 0x43, 0x45, 0x5b, 0x32,
- 0x2e, 0x45, 0xf0, 0xd9, 0x59, 0x1f, 0x6b, 0x18, 0xf0, 0x7c, 0xe9, 0x55,
- 0x36, 0x19, 0x61, 0x5f, 0xb5, 0x7d, 0xf1, 0x8d, 0xbd, 0x88, 0xe4, 0x75,
- 0x4b, 0x98, 0xdd, 0x27, 0xb0, 0xe4, 0x84, 0x44, 0x2a, 0x61, 0x84, 0x57,
- 0x05, 0x82, 0x11, 0x1f, 0xaa, 0x35, 0x58, 0xf3, 0x20, 0x0e, 0xaf, 0x59,
- 0xef, 0xfa, 0x55, 0x72, 0x72, 0x0d, 0x26, 0xd0, 0x9b, 0x53, 0x49, 0xac,
- 0xce, 0x37, 0x2e, 0x65, 0x61, 0xff, 0xf6, 0xec, 0x1b, 0xea, 0xf6, 0xf1,
- 0xa6, 0xd3, 0xd1, 0xb5, 0x7b, 0xbe, 0x35, 0xf4, 0x22, 0xc1, 0xbc, 0x8d,
- 0x01, 0xbd, 0x68, 0x5e, 0x83, 0x0d, 0x2f, 0xec, 0xd6, 0xda, 0x63, 0x0c,
- 0x27, 0xd1, 0x54, 0x3e, 0xe4, 0xa8, 0xd3, 0xce, 0x4b, 0x32, 0xb8, 0x91,
- 0x94, 0xff, 0xfb, 0x5b, 0x49, 0x2d, 0x75, 0x18, 0xa8, 0xba, 0x71, 0x9a,
- 0x3b, 0xae, 0xd9, 0xc0, 0xa9, 0x4f, 0x87, 0x91, 0xed, 0x8b, 0x7b, 0x6b,
- 0x20, 0x98, 0x89, 0x39, 0x83, 0x4f, 0x80, 0xc4, 0x69, 0xcc, 0x17, 0xc9,
- 0xc8, 0x4e, 0xbe, 0xe4, 0xa9, 0xa5, 0x81, 0x76, 0x70, 0x06, 0x04, 0x32,
- 0xcd, 0x83, 0x65, 0xf4, 0xbc, 0x7d, 0x3e, 0x13, 0xbc, 0xd2, 0xe8, 0x6f,
- 0x63, 0xaa, 0xb5, 0x3b, 0xda, 0x8d, 0x86, 0x32, 0x82, 0x78, 0x9d, 0xd9,
- 0xcc, 0xff, 0xbf, 0x57, 0x64, 0x74, 0xed, 0x28, 0x3d, 0x44, 0x62, 0x15,
- 0x61, 0x4b, 0xf7, 0x94, 0xb0, 0x0d, 0x2a, 0x67, 0x1c, 0xf0, 0xcb, 0x9b,
- 0xa5, 0x92, 0xbf, 0xf8, 0x41, 0x5a, 0xc1, 0x3d, 0x60, 0xed, 0x9f, 0xbb,
- 0xb8, 0x6d, 0x9b, 0xce, 0xa9, 0x6a, 0x16, 0x3f, 0x7e, 0xea, 0x06, 0xf1,
-}
-
-var certSet2Cert53 = []byte{
- 0x30, 0x82, 0x06, 0xe6, 0x30, 0x82, 0x05, 0xce, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x03, 0x37, 0xb9, 0x28, 0x34, 0x7c, 0x60, 0xa6, 0xae,
- 0xc5, 0xad, 0xb1, 0x21, 0x7f, 0x38, 0x60, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x6c,
- 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55,
- 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c,
- 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63,
- 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77,
- 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e,
- 0x63, 0x6f, 0x6d, 0x31, 0x2b, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x03,
- 0x13, 0x22, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x48,
- 0x69, 0x67, 0x68, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6e, 0x63,
- 0x65, 0x20, 0x45, 0x56, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41,
- 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x37, 0x31, 0x31, 0x30, 0x39, 0x31, 0x32,
- 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x31, 0x31, 0x31, 0x31,
- 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x69, 0x31, 0x0b,
- 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31,
- 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, 0x44, 0x69,
- 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x31, 0x19,
- 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77, 0x77, 0x77,
- 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f,
- 0x6d, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1f,
- 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x48, 0x69, 0x67,
- 0x68, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x20,
- 0x45, 0x56, 0x20, 0x43, 0x41, 0x2d, 0x31, 0x30, 0x82, 0x01, 0x22, 0x30,
- 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01,
- 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02,
- 0x82, 0x01, 0x01, 0x00, 0xf3, 0x96, 0x62, 0xd8, 0x75, 0x6e, 0x19, 0xff,
- 0x3f, 0x34, 0x7c, 0x49, 0x4f, 0x31, 0x7e, 0x0d, 0x04, 0x4e, 0x99, 0x81,
- 0xe2, 0xb3, 0x85, 0x55, 0x91, 0x30, 0xb1, 0xc0, 0xaf, 0x70, 0xbb, 0x2c,
- 0xa8, 0xe7, 0x18, 0xaa, 0x3f, 0x78, 0xf7, 0x90, 0x68, 0x52, 0x86, 0x01,
- 0x88, 0x97, 0xe2, 0x3b, 0x06, 0x65, 0x90, 0xaa, 0xbd, 0x65, 0x76, 0xc2,
- 0xec, 0xbe, 0x10, 0x5b, 0x37, 0x78, 0x83, 0x60, 0x75, 0x45, 0xc6, 0xbd,
- 0x74, 0xaa, 0xb6, 0x9f, 0xa4, 0x3a, 0x01, 0x50, 0x17, 0xc4, 0x39, 0x69,
- 0xb9, 0xf1, 0x4f, 0xef, 0x82, 0xc1, 0xca, 0xf3, 0x4a, 0xdb, 0xcc, 0x9e,
- 0x50, 0x4f, 0x4d, 0x40, 0xa3, 0x3a, 0x90, 0xe7, 0x86, 0x66, 0xbc, 0xf0,
- 0x3e, 0x76, 0x28, 0x4c, 0xd1, 0x75, 0x80, 0x9e, 0x6a, 0x35, 0x14, 0x35,
- 0x03, 0x9e, 0xdb, 0x0c, 0x8c, 0xc2, 0x28, 0xad, 0x50, 0xb2, 0xce, 0xf6,
- 0x91, 0xa3, 0xc3, 0xa5, 0x0a, 0x58, 0x49, 0xf6, 0x75, 0x44, 0x6c, 0xba,
- 0xf9, 0xce, 0xe9, 0xab, 0x3a, 0x02, 0xe0, 0x4d, 0xf3, 0xac, 0xe2, 0x7a,
- 0xe0, 0x60, 0x22, 0x05, 0x3c, 0x82, 0xd3, 0x52, 0xe2, 0xf3, 0x9c, 0x47,
- 0xf8, 0x3b, 0xd8, 0xb2, 0x4b, 0x93, 0x56, 0x4a, 0xbf, 0x70, 0xab, 0x3e,
- 0xe9, 0x68, 0xc8, 0x1d, 0x8f, 0x58, 0x1d, 0x2a, 0x4d, 0x5e, 0x27, 0x3d,
- 0xad, 0x0a, 0x59, 0x2f, 0x5a, 0x11, 0x20, 0x40, 0xd9, 0x68, 0x04, 0x68,
- 0x2d, 0xf4, 0xc0, 0x84, 0x0b, 0x0a, 0x1b, 0x78, 0xdf, 0xed, 0x1a, 0x58,
- 0xdc, 0xfb, 0x41, 0x5a, 0x6d, 0x6b, 0xf2, 0xed, 0x1c, 0xee, 0x5c, 0x32,
- 0xb6, 0x5c, 0xec, 0xd7, 0xa6, 0x03, 0x32, 0xa6, 0xe8, 0xde, 0xb7, 0x28,
- 0x27, 0x59, 0x88, 0x80, 0xff, 0x7b, 0xad, 0x89, 0x58, 0xd5, 0x1e, 0x14,
- 0xa4, 0xf2, 0xb0, 0x70, 0xd4, 0xa0, 0x3e, 0xa7, 0x02, 0x03, 0x01, 0x00,
- 0x01, 0xa3, 0x82, 0x03, 0x85, 0x30, 0x82, 0x03, 0x81, 0x30, 0x0e, 0x06,
- 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01,
- 0x86, 0x30, 0x3b, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x04, 0x34, 0x30, 0x32,
- 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x01, 0x06, 0x08,
- 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x02, 0x06, 0x08, 0x2b, 0x06,
- 0x01, 0x05, 0x05, 0x07, 0x03, 0x03, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05,
- 0x05, 0x07, 0x03, 0x04, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07,
- 0x03, 0x08, 0x30, 0x82, 0x01, 0xc4, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04,
- 0x82, 0x01, 0xbb, 0x30, 0x82, 0x01, 0xb7, 0x30, 0x82, 0x01, 0xb3, 0x06,
- 0x09, 0x60, 0x86, 0x48, 0x01, 0x86, 0xfd, 0x6c, 0x02, 0x01, 0x30, 0x82,
- 0x01, 0xa4, 0x30, 0x3a, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07,
- 0x02, 0x01, 0x16, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77,
- 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e,
- 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x73, 0x6c, 0x2d, 0x63, 0x70, 0x73, 0x2d,
- 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x68,
- 0x74, 0x6d, 0x30, 0x82, 0x01, 0x64, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05,
- 0x05, 0x07, 0x02, 0x02, 0x30, 0x82, 0x01, 0x56, 0x1e, 0x82, 0x01, 0x52,
- 0x00, 0x41, 0x00, 0x6e, 0x00, 0x79, 0x00, 0x20, 0x00, 0x75, 0x00, 0x73,
- 0x00, 0x65, 0x00, 0x20, 0x00, 0x6f, 0x00, 0x66, 0x00, 0x20, 0x00, 0x74,
- 0x00, 0x68, 0x00, 0x69, 0x00, 0x73, 0x00, 0x20, 0x00, 0x43, 0x00, 0x65,
- 0x00, 0x72, 0x00, 0x74, 0x00, 0x69, 0x00, 0x66, 0x00, 0x69, 0x00, 0x63,
- 0x00, 0x61, 0x00, 0x74, 0x00, 0x65, 0x00, 0x20, 0x00, 0x63, 0x00, 0x6f,
- 0x00, 0x6e, 0x00, 0x73, 0x00, 0x74, 0x00, 0x69, 0x00, 0x74, 0x00, 0x75,
- 0x00, 0x74, 0x00, 0x65, 0x00, 0x73, 0x00, 0x20, 0x00, 0x61, 0x00, 0x63,
- 0x00, 0x63, 0x00, 0x65, 0x00, 0x70, 0x00, 0x74, 0x00, 0x61, 0x00, 0x6e,
- 0x00, 0x63, 0x00, 0x65, 0x00, 0x20, 0x00, 0x6f, 0x00, 0x66, 0x00, 0x20,
- 0x00, 0x74, 0x00, 0x68, 0x00, 0x65, 0x00, 0x20, 0x00, 0x44, 0x00, 0x69,
- 0x00, 0x67, 0x00, 0x69, 0x00, 0x43, 0x00, 0x65, 0x00, 0x72, 0x00, 0x74,
- 0x00, 0x20, 0x00, 0x45, 0x00, 0x56, 0x00, 0x20, 0x00, 0x43, 0x00, 0x50,
- 0x00, 0x53, 0x00, 0x20, 0x00, 0x61, 0x00, 0x6e, 0x00, 0x64, 0x00, 0x20,
- 0x00, 0x74, 0x00, 0x68, 0x00, 0x65, 0x00, 0x20, 0x00, 0x52, 0x00, 0x65,
- 0x00, 0x6c, 0x00, 0x79, 0x00, 0x69, 0x00, 0x6e, 0x00, 0x67, 0x00, 0x20,
- 0x00, 0x50, 0x00, 0x61, 0x00, 0x72, 0x00, 0x74, 0x00, 0x79, 0x00, 0x20,
- 0x00, 0x41, 0x00, 0x67, 0x00, 0x72, 0x00, 0x65, 0x00, 0x65, 0x00, 0x6d,
- 0x00, 0x65, 0x00, 0x6e, 0x00, 0x74, 0x00, 0x20, 0x00, 0x77, 0x00, 0x68,
- 0x00, 0x69, 0x00, 0x63, 0x00, 0x68, 0x00, 0x20, 0x00, 0x6c, 0x00, 0x69,
- 0x00, 0x6d, 0x00, 0x69, 0x00, 0x74, 0x00, 0x20, 0x00, 0x6c, 0x00, 0x69,
- 0x00, 0x61, 0x00, 0x62, 0x00, 0x69, 0x00, 0x6c, 0x00, 0x69, 0x00, 0x74,
- 0x00, 0x79, 0x00, 0x20, 0x00, 0x61, 0x00, 0x6e, 0x00, 0x64, 0x00, 0x20,
- 0x00, 0x61, 0x00, 0x72, 0x00, 0x65, 0x00, 0x20, 0x00, 0x69, 0x00, 0x6e,
- 0x00, 0x63, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x70, 0x00, 0x6f, 0x00, 0x72,
- 0x00, 0x61, 0x00, 0x74, 0x00, 0x65, 0x00, 0x64, 0x00, 0x20, 0x00, 0x68,
- 0x00, 0x65, 0x00, 0x72, 0x00, 0x65, 0x00, 0x69, 0x00, 0x6e, 0x00, 0x20,
- 0x00, 0x62, 0x00, 0x79, 0x00, 0x20, 0x00, 0x72, 0x00, 0x65, 0x00, 0x66,
- 0x00, 0x65, 0x00, 0x72, 0x00, 0x65, 0x00, 0x6e, 0x00, 0x63, 0x00, 0x65,
- 0x00, 0x2e, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff,
- 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x81,
- 0x83, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04,
- 0x77, 0x30, 0x75, 0x30, 0x24, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
- 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f,
- 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72,
- 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x4d, 0x06, 0x08, 0x2b, 0x06, 0x01,
- 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x41, 0x68, 0x74, 0x74, 0x70, 0x3a,
- 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65,
- 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x41, 0x43, 0x65, 0x72,
- 0x74, 0x73, 0x2f, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x48,
- 0x69, 0x67, 0x68, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6e, 0x63, 0x65,
- 0x45, 0x56, 0x52, 0x6f, 0x6f, 0x74, 0x43, 0x41, 0x2e, 0x63, 0x72, 0x74,
- 0x30, 0x81, 0x8f, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x81, 0x87, 0x30,
- 0x81, 0x84, 0x30, 0x40, 0xa0, 0x3e, 0xa0, 0x3c, 0x86, 0x3a, 0x68, 0x74,
- 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x33, 0x2e, 0x64, 0x69,
- 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44,
- 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x48, 0x69, 0x67, 0x68, 0x41,
- 0x73, 0x73, 0x75, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x45, 0x56, 0x52, 0x6f,
- 0x6f, 0x74, 0x43, 0x41, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x40, 0xa0, 0x3e,
- 0xa0, 0x3c, 0x86, 0x3a, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63,
- 0x72, 0x6c, 0x34, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74,
- 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72,
- 0x74, 0x48, 0x69, 0x67, 0x68, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6e,
- 0x63, 0x65, 0x45, 0x56, 0x52, 0x6f, 0x6f, 0x74, 0x43, 0x41, 0x2e, 0x63,
- 0x72, 0x6c, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04,
- 0x14, 0x4c, 0x58, 0xcb, 0x25, 0xf0, 0x41, 0x4f, 0x52, 0xf4, 0x28, 0xc8,
- 0x81, 0x43, 0x9b, 0xa6, 0xa8, 0xa0, 0xe6, 0x92, 0xe5, 0x30, 0x1f, 0x06,
- 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xb1, 0x3e,
- 0xc3, 0x69, 0x03, 0xf8, 0xbf, 0x47, 0x01, 0xd4, 0x98, 0x26, 0x1a, 0x08,
- 0x02, 0xef, 0x63, 0x64, 0x2b, 0xc3, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
- 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x01,
- 0x01, 0x00, 0x4c, 0x7a, 0x17, 0x87, 0x28, 0x5d, 0x17, 0xbc, 0xb2, 0x32,
- 0x73, 0xbf, 0xcd, 0x2e, 0xf5, 0x58, 0x31, 0x1d, 0xf0, 0xb1, 0x71, 0x54,
- 0x9c, 0xd6, 0x9b, 0x67, 0x93, 0xdb, 0x2f, 0x03, 0x3e, 0x16, 0x6f, 0x1e,
- 0x03, 0xc9, 0x53, 0x84, 0xa3, 0x56, 0x60, 0x1e, 0x78, 0x94, 0x1b, 0xa2,
- 0xa8, 0x6f, 0xa3, 0xa4, 0x8b, 0x52, 0x91, 0xd7, 0xdd, 0x5c, 0x95, 0xbb,
- 0xef, 0xb5, 0x16, 0x49, 0xe9, 0xa5, 0x42, 0x4f, 0x34, 0xf2, 0x47, 0xff,
- 0xae, 0x81, 0x7f, 0x13, 0x54, 0xb7, 0x20, 0xc4, 0x70, 0x15, 0xcb, 0x81,
- 0x0a, 0x81, 0xcb, 0x74, 0x57, 0xdc, 0x9c, 0xdf, 0x24, 0xa4, 0x29, 0x0c,
- 0x18, 0xf0, 0x1c, 0xe4, 0xae, 0x07, 0x33, 0xec, 0xf1, 0x49, 0x3e, 0x55,
- 0xcf, 0x6e, 0x4f, 0x0d, 0x54, 0x7b, 0xd3, 0xc9, 0xe8, 0x15, 0x48, 0xd4,
- 0xc5, 0xbb, 0xdc, 0x35, 0x1c, 0x77, 0x45, 0x07, 0x48, 0x45, 0x85, 0xbd,
- 0xd7, 0x7e, 0x53, 0xb8, 0xc0, 0x16, 0xd9, 0x95, 0xcd, 0x8b, 0x8d, 0x7d,
- 0xc9, 0x60, 0x4f, 0xd1, 0xa2, 0x9b, 0xe3, 0xd0, 0x30, 0xd6, 0xb4, 0x73,
- 0x36, 0xe6, 0xd2, 0xf9, 0x03, 0xb2, 0xe3, 0xa4, 0xf5, 0xe5, 0xb8, 0x3e,
- 0x04, 0x49, 0x00, 0xba, 0x2e, 0xa6, 0x4a, 0x72, 0x83, 0x72, 0x9d, 0xf7,
- 0x0b, 0x8c, 0xa9, 0x89, 0xe7, 0xb3, 0xd7, 0x64, 0x1f, 0xd6, 0xe3, 0x60,
- 0xcb, 0x03, 0xc4, 0xdc, 0x88, 0xe9, 0x9d, 0x25, 0x01, 0x00, 0x71, 0xcb,
- 0x03, 0xb4, 0x29, 0x60, 0x25, 0x8f, 0xf9, 0x46, 0xd1, 0x7b, 0x71, 0xae,
- 0xcd, 0x53, 0x12, 0x5b, 0x84, 0x8e, 0xc2, 0x0f, 0xc7, 0xed, 0x93, 0x19,
- 0xd9, 0xc9, 0xfa, 0x8f, 0x58, 0x34, 0x76, 0x32, 0x2f, 0xae, 0xe1, 0x50,
- 0x14, 0x61, 0xd4, 0xa8, 0x58, 0xa3, 0xc8, 0x30, 0x13, 0x23, 0xef, 0xc6,
- 0x25, 0x8c, 0x36, 0x8f, 0x1c, 0x80,
-}
diff --git a/vendor/github.com/lucas-clemente/quic-go-certificates/cert_set_3.go b/vendor/github.com/lucas-clemente/quic-go-certificates/cert_set_3.go
deleted file mode 100644
index e3dfed9..0000000
--- a/vendor/github.com/lucas-clemente/quic-go-certificates/cert_set_3.go
+++ /dev/null
@@ -1,5456 +0,0 @@
-package certsets
-
-var CertSet3 = [][]byte{
- certSet3Cert0,
- certSet3Cert1,
- certSet3Cert2,
- certSet3Cert3,
- certSet3Cert4,
- certSet3Cert5,
- certSet3Cert6,
- certSet3Cert7,
- certSet3Cert8,
- certSet3Cert9,
- certSet3Cert10,
- certSet3Cert11,
- certSet3Cert12,
- certSet3Cert13,
- certSet3Cert14,
- certSet3Cert15,
- certSet3Cert16,
- certSet3Cert17,
- certSet3Cert18,
- certSet3Cert19,
- certSet3Cert20,
- certSet3Cert21,
- certSet3Cert22,
- certSet3Cert23,
- certSet3Cert24,
- certSet3Cert25,
- certSet3Cert26,
- certSet3Cert27,
- certSet3Cert28,
- certSet3Cert29,
- certSet3Cert30,
- certSet3Cert31,
- certSet3Cert32,
- certSet3Cert33,
- certSet3Cert34,
- certSet3Cert35,
- certSet3Cert36,
- certSet3Cert37,
- certSet3Cert38,
- certSet3Cert39,
- certSet3Cert40,
- certSet3Cert41,
- certSet3Cert42,
- certSet3Cert43,
- certSet3Cert44,
- certSet3Cert45,
- certSet3Cert46,
- certSet3Cert47,
- certSet3Cert48,
- certSet3Cert49,
- certSet3Cert50,
- certSet3Cert51,
-}
-
-const CertSet3Hash uint64 = (0x918215a28680ed7e)
-
-var certSet3Cert0 = []byte{
- 0x30, 0x82, 0x03, 0x7d, 0x30, 0x82, 0x02, 0xe6, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x03, 0x12, 0xbb, 0xe6, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
- 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x4e, 0x31,
- 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53,
- 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x07, 0x45,
- 0x71, 0x75, 0x69, 0x66, 0x61, 0x78, 0x31, 0x2d, 0x30, 0x2b, 0x06, 0x03,
- 0x55, 0x04, 0x0b, 0x13, 0x24, 0x45, 0x71, 0x75, 0x69, 0x66, 0x61, 0x78,
- 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x43, 0x65, 0x72, 0x74,
- 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68,
- 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x32, 0x30,
- 0x35, 0x32, 0x31, 0x30, 0x34, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d,
- 0x31, 0x38, 0x30, 0x38, 0x32, 0x31, 0x30, 0x34, 0x30, 0x30, 0x30, 0x30,
- 0x5a, 0x30, 0x42, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,
- 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04,
- 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20,
- 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04,
- 0x03, 0x13, 0x12, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20,
- 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01,
- 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01,
- 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01,
- 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xda, 0xcc, 0x18, 0x63, 0x30, 0xfd,
- 0xf4, 0x17, 0x23, 0x1a, 0x56, 0x7e, 0x5b, 0xdf, 0x3c, 0x6c, 0x38, 0xe4,
- 0x71, 0xb7, 0x78, 0x91, 0xd4, 0xbc, 0xa1, 0xd8, 0x4c, 0xf8, 0xa8, 0x43,
- 0xb6, 0x03, 0xe9, 0x4d, 0x21, 0x07, 0x08, 0x88, 0xda, 0x58, 0x2f, 0x66,
- 0x39, 0x29, 0xbd, 0x05, 0x78, 0x8b, 0x9d, 0x38, 0xe8, 0x05, 0xb7, 0x6a,
- 0x7e, 0x71, 0xa4, 0xe6, 0xc4, 0x60, 0xa6, 0xb0, 0xef, 0x80, 0xe4, 0x89,
- 0x28, 0x0f, 0x9e, 0x25, 0xd6, 0xed, 0x83, 0xf3, 0xad, 0xa6, 0x91, 0xc7,
- 0x98, 0xc9, 0x42, 0x18, 0x35, 0x14, 0x9d, 0xad, 0x98, 0x46, 0x92, 0x2e,
- 0x4f, 0xca, 0xf1, 0x87, 0x43, 0xc1, 0x16, 0x95, 0x57, 0x2d, 0x50, 0xef,
- 0x89, 0x2d, 0x80, 0x7a, 0x57, 0xad, 0xf2, 0xee, 0x5f, 0x6b, 0xd2, 0x00,
- 0x8d, 0xb9, 0x14, 0xf8, 0x14, 0x15, 0x35, 0xd9, 0xc0, 0x46, 0xa3, 0x7b,
- 0x72, 0xc8, 0x91, 0xbf, 0xc9, 0x55, 0x2b, 0xcd, 0xd0, 0x97, 0x3e, 0x9c,
- 0x26, 0x64, 0xcc, 0xdf, 0xce, 0x83, 0x19, 0x71, 0xca, 0x4e, 0xe6, 0xd4,
- 0xd5, 0x7b, 0xa9, 0x19, 0xcd, 0x55, 0xde, 0xc8, 0xec, 0xd2, 0x5e, 0x38,
- 0x53, 0xe5, 0x5c, 0x4f, 0x8c, 0x2d, 0xfe, 0x50, 0x23, 0x36, 0xfc, 0x66,
- 0xe6, 0xcb, 0x8e, 0xa4, 0x39, 0x19, 0x00, 0xb7, 0x95, 0x02, 0x39, 0x91,
- 0x0b, 0x0e, 0xfe, 0x38, 0x2e, 0xd1, 0x1d, 0x05, 0x9a, 0xf6, 0x4d, 0x3e,
- 0x6f, 0x0f, 0x07, 0x1d, 0xaf, 0x2c, 0x1e, 0x8f, 0x60, 0x39, 0xe2, 0xfa,
- 0x36, 0x53, 0x13, 0x39, 0xd4, 0x5e, 0x26, 0x2b, 0xdb, 0x3d, 0xa8, 0x14,
- 0xbd, 0x32, 0xeb, 0x18, 0x03, 0x28, 0x52, 0x04, 0x71, 0xe5, 0xab, 0x33,
- 0x3d, 0xe1, 0x38, 0xbb, 0x07, 0x36, 0x84, 0x62, 0x9c, 0x79, 0xea, 0x16,
- 0x30, 0xf4, 0x5f, 0xc0, 0x2b, 0xe8, 0x71, 0x6b, 0xe4, 0xf9, 0x02, 0x03,
- 0x01, 0x00, 0x01, 0xa3, 0x81, 0xf0, 0x30, 0x81, 0xed, 0x30, 0x1f, 0x06,
- 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x48, 0xe6,
- 0x68, 0xf9, 0x2b, 0xd2, 0xb2, 0x95, 0xd7, 0x47, 0xd8, 0x23, 0x20, 0x10,
- 0x4f, 0x33, 0x98, 0x90, 0x9f, 0xd4, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d,
- 0x0e, 0x04, 0x16, 0x04, 0x14, 0xc0, 0x7a, 0x98, 0x68, 0x8d, 0x89, 0xfb,
- 0xab, 0x05, 0x64, 0x0c, 0x11, 0x7d, 0xaa, 0x7d, 0x65, 0xb8, 0xca, 0xcc,
- 0x4e, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04,
- 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d,
- 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x3a,
- 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x33, 0x30, 0x31, 0x30, 0x2f, 0xa0,
- 0x2d, 0xa0, 0x2b, 0x86, 0x29, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f,
- 0x63, 0x72, 0x6c, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74,
- 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x72, 0x6c, 0x73, 0x2f, 0x73, 0x65,
- 0x63, 0x75, 0x72, 0x65, 0x63, 0x61, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x4e,
- 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x47, 0x30, 0x45, 0x30, 0x43, 0x06,
- 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x3b, 0x30, 0x39, 0x06, 0x08, 0x2b,
- 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x2d, 0x68, 0x74, 0x74,
- 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f,
- 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65,
- 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x72, 0x65, 0x70, 0x6f,
- 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
- 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x81, 0x81,
- 0x00, 0x76, 0xe1, 0x12, 0x6e, 0x4e, 0x4b, 0x16, 0x12, 0x86, 0x30, 0x06,
- 0xb2, 0x81, 0x08, 0xcf, 0xf0, 0x08, 0xc7, 0xc7, 0x71, 0x7e, 0x66, 0xee,
- 0xc2, 0xed, 0xd4, 0x3b, 0x1f, 0xff, 0xf0, 0xf0, 0xc8, 0x4e, 0xd6, 0x43,
- 0x38, 0xb0, 0xb9, 0x30, 0x7d, 0x18, 0xd0, 0x55, 0x83, 0xa2, 0x6a, 0xcb,
- 0x36, 0x11, 0x9c, 0xe8, 0x48, 0x66, 0xa3, 0x6d, 0x7f, 0xb8, 0x13, 0xd4,
- 0x47, 0xfe, 0x8b, 0x5a, 0x5c, 0x73, 0xfc, 0xae, 0xd9, 0x1b, 0x32, 0x19,
- 0x38, 0xab, 0x97, 0x34, 0x14, 0xaa, 0x96, 0xd2, 0xeb, 0xa3, 0x1c, 0x14,
- 0x08, 0x49, 0xb6, 0xbb, 0xe5, 0x91, 0xef, 0x83, 0x36, 0xeb, 0x1d, 0x56,
- 0x6f, 0xca, 0xda, 0xbc, 0x73, 0x63, 0x90, 0xe4, 0x7f, 0x7b, 0x3e, 0x22,
- 0xcb, 0x3d, 0x07, 0xed, 0x5f, 0x38, 0x74, 0x9c, 0xe3, 0x03, 0x50, 0x4e,
- 0xa1, 0xaf, 0x98, 0xee, 0x61, 0xf2, 0x84, 0x3f, 0x12,
-}
-
-var certSet3Cert1 = []byte{
- 0x30, 0x82, 0x03, 0x8b, 0x30, 0x82, 0x02, 0xf4, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x03, 0x0d, 0x6e, 0x62, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
- 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x4e, 0x31,
- 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53,
- 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x07, 0x45,
- 0x71, 0x75, 0x69, 0x66, 0x61, 0x78, 0x31, 0x2d, 0x30, 0x2b, 0x06, 0x03,
- 0x55, 0x04, 0x0b, 0x13, 0x24, 0x45, 0x71, 0x75, 0x69, 0x66, 0x61, 0x78,
- 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x43, 0x65, 0x72, 0x74,
- 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68,
- 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x36, 0x31,
- 0x31, 0x32, 0x37, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d,
- 0x31, 0x38, 0x30, 0x38, 0x32, 0x31, 0x31, 0x36, 0x31, 0x35, 0x30, 0x30,
- 0x5a, 0x30, 0x58, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,
- 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04,
- 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20,
- 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x31, 0x30, 0x2f, 0x06, 0x03, 0x55, 0x04,
- 0x03, 0x13, 0x28, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20,
- 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74,
- 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75,
- 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, 0x82, 0x01, 0x22, 0x30,
- 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01,
- 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02,
- 0x82, 0x01, 0x01, 0x00, 0xbe, 0xb8, 0x15, 0x7b, 0xff, 0xd4, 0x7c, 0x7d,
- 0x67, 0xad, 0x83, 0x64, 0x7b, 0xc8, 0x42, 0x53, 0x2d, 0xdf, 0xf6, 0x84,
- 0x08, 0x20, 0x61, 0xd6, 0x01, 0x59, 0x6a, 0x9c, 0x44, 0x11, 0xaf, 0xef,
- 0x76, 0xfd, 0x95, 0x7e, 0xce, 0x61, 0x30, 0xbb, 0x7a, 0x83, 0x5f, 0x02,
- 0xbd, 0x01, 0x66, 0xca, 0xee, 0x15, 0x8d, 0x6f, 0xa1, 0x30, 0x9c, 0xbd,
- 0xa1, 0x85, 0x9e, 0x94, 0x3a, 0xf3, 0x56, 0x88, 0x00, 0x31, 0xcf, 0xd8,
- 0xee, 0x6a, 0x96, 0x02, 0xd9, 0xed, 0x03, 0x8c, 0xfb, 0x75, 0x6d, 0xe7,
- 0xea, 0xb8, 0x55, 0x16, 0x05, 0x16, 0x9a, 0xf4, 0xe0, 0x5e, 0xb1, 0x88,
- 0xc0, 0x64, 0x85, 0x5c, 0x15, 0x4d, 0x88, 0xc7, 0xb7, 0xba, 0xe0, 0x75,
- 0xe9, 0xad, 0x05, 0x3d, 0x9d, 0xc7, 0x89, 0x48, 0xe0, 0xbb, 0x28, 0xc8,
- 0x03, 0xe1, 0x30, 0x93, 0x64, 0x5e, 0x52, 0xc0, 0x59, 0x70, 0x22, 0x35,
- 0x57, 0x88, 0x8a, 0xf1, 0x95, 0x0a, 0x83, 0xd7, 0xbc, 0x31, 0x73, 0x01,
- 0x34, 0xed, 0xef, 0x46, 0x71, 0xe0, 0x6b, 0x02, 0xa8, 0x35, 0x72, 0x6b,
- 0x97, 0x9b, 0x66, 0xe0, 0xcb, 0x1c, 0x79, 0x5f, 0xd8, 0x1a, 0x04, 0x68,
- 0x1e, 0x47, 0x02, 0xe6, 0x9d, 0x60, 0xe2, 0x36, 0x97, 0x01, 0xdf, 0xce,
- 0x35, 0x92, 0xdf, 0xbe, 0x67, 0xc7, 0x6d, 0x77, 0x59, 0x3b, 0x8f, 0x9d,
- 0xd6, 0x90, 0x15, 0x94, 0xbc, 0x42, 0x34, 0x10, 0xc1, 0x39, 0xf9, 0xb1,
- 0x27, 0x3e, 0x7e, 0xd6, 0x8a, 0x75, 0xc5, 0xb2, 0xaf, 0x96, 0xd3, 0xa2,
- 0xde, 0x9b, 0xe4, 0x98, 0xbe, 0x7d, 0xe1, 0xe9, 0x81, 0xad, 0xb6, 0x6f,
- 0xfc, 0xd7, 0x0e, 0xda, 0xe0, 0x34, 0xb0, 0x0d, 0x1a, 0x77, 0xe7, 0xe3,
- 0x08, 0x98, 0xef, 0x58, 0xfa, 0x9c, 0x84, 0xb7, 0x36, 0xaf, 0xc2, 0xdf,
- 0xac, 0xd2, 0xf4, 0x10, 0x06, 0x70, 0x71, 0x35, 0x02, 0x03, 0x01, 0x00,
- 0x01, 0xa3, 0x81, 0xe8, 0x30, 0x81, 0xe5, 0x30, 0x0e, 0x06, 0x03, 0x55,
- 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30,
- 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x2c, 0xd5,
- 0x50, 0x41, 0x97, 0x15, 0x8b, 0xf0, 0x8f, 0x36, 0x61, 0x5b, 0x4a, 0xfb,
- 0x6b, 0xd9, 0x99, 0xc9, 0x33, 0x92, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d,
- 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x48, 0xe6, 0x68, 0xf9, 0x2b,
- 0xd2, 0xb2, 0x95, 0xd7, 0x47, 0xd8, 0x23, 0x20, 0x10, 0x4f, 0x33, 0x98,
- 0x90, 0x9f, 0xd4, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01,
- 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x3a, 0x06, 0x03,
- 0x55, 0x1d, 0x1f, 0x04, 0x33, 0x30, 0x31, 0x30, 0x2f, 0xa0, 0x2d, 0xa0,
- 0x2b, 0x86, 0x29, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72,
- 0x6c, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63,
- 0x6f, 0x6d, 0x2f, 0x63, 0x72, 0x6c, 0x73, 0x2f, 0x73, 0x65, 0x63, 0x75,
- 0x72, 0x65, 0x63, 0x61, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x46, 0x06, 0x03,
- 0x55, 0x1d, 0x20, 0x04, 0x3f, 0x30, 0x3d, 0x30, 0x3b, 0x06, 0x04, 0x55,
- 0x1d, 0x20, 0x00, 0x30, 0x33, 0x30, 0x31, 0x06, 0x08, 0x2b, 0x06, 0x01,
- 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x25, 0x68, 0x74, 0x74, 0x70, 0x3a,
- 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75,
- 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75,
- 0x72, 0x63, 0x65, 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x0d, 0x06, 0x09,
- 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03,
- 0x81, 0x81, 0x00, 0xaf, 0xf3, 0x0e, 0xd6, 0x72, 0xab, 0xc7, 0xa9, 0x97,
- 0xca, 0x2a, 0x6b, 0x84, 0x39, 0xde, 0x79, 0xa9, 0xf0, 0x81, 0xe5, 0x08,
- 0x67, 0xab, 0xd7, 0x2f, 0x20, 0x02, 0x01, 0x71, 0x0c, 0x04, 0x22, 0xc9,
- 0x1e, 0x88, 0x95, 0x03, 0xc9, 0x49, 0x3a, 0xaf, 0x67, 0x08, 0x49, 0xb0,
- 0xd5, 0x08, 0xf5, 0x20, 0x3d, 0x80, 0x91, 0xa0, 0xc5, 0x87, 0xa3, 0xfb,
- 0xc9, 0xa3, 0x17, 0x91, 0xf9, 0xa8, 0x2f, 0xae, 0xe9, 0x0f, 0xdf, 0x96,
- 0x72, 0x0f, 0x75, 0x17, 0x80, 0x5d, 0x78, 0x01, 0x4d, 0x9f, 0x1f, 0x6d,
- 0x7b, 0xd8, 0xf5, 0x42, 0x38, 0x23, 0x1a, 0x99, 0x93, 0xf4, 0x83, 0xbe,
- 0x3b, 0x35, 0x74, 0xe7, 0x37, 0x13, 0x35, 0x7a, 0xac, 0xb4, 0xb6, 0x90,
- 0x82, 0x6c, 0x27, 0xa4, 0xe0, 0xec, 0x9e, 0x35, 0xbd, 0xbf, 0xe5, 0x29,
- 0xa1, 0x47, 0x9f, 0x5b, 0x32, 0xfc, 0xe9, 0x99, 0x7d, 0x2b, 0x39,
-}
-
-var certSet3Cert2 = []byte{
- 0x30, 0x82, 0x03, 0xf0, 0x30, 0x82, 0x02, 0xd8, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x03, 0x02, 0x3a, 0x92, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
- 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x42, 0x31,
- 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53,
- 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47,
- 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e,
- 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x47,
- 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62,
- 0x61, 0x6c, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x35, 0x30,
- 0x34, 0x30, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d,
- 0x31, 0x37, 0x31, 0x32, 0x33, 0x31, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39,
- 0x5a, 0x30, 0x49, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,
- 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04,
- 0x0a, 0x13, 0x0a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x20, 0x49, 0x6e,
- 0x63, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1c,
- 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x74, 0x65, 0x72,
- 0x6e, 0x65, 0x74, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74,
- 0x79, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09,
- 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03,
- 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01,
- 0x00, 0x9c, 0x2a, 0x04, 0x77, 0x5c, 0xd8, 0x50, 0x91, 0x3a, 0x06, 0xa3,
- 0x82, 0xe0, 0xd8, 0x50, 0x48, 0xbc, 0x89, 0x3f, 0xf1, 0x19, 0x70, 0x1a,
- 0x88, 0x46, 0x7e, 0xe0, 0x8f, 0xc5, 0xf1, 0x89, 0xce, 0x21, 0xee, 0x5a,
- 0xfe, 0x61, 0x0d, 0xb7, 0x32, 0x44, 0x89, 0xa0, 0x74, 0x0b, 0x53, 0x4f,
- 0x55, 0xa4, 0xce, 0x82, 0x62, 0x95, 0xee, 0xeb, 0x59, 0x5f, 0xc6, 0xe1,
- 0x05, 0x80, 0x12, 0xc4, 0x5e, 0x94, 0x3f, 0xbc, 0x5b, 0x48, 0x38, 0xf4,
- 0x53, 0xf7, 0x24, 0xe6, 0xfb, 0x91, 0xe9, 0x15, 0xc4, 0xcf, 0xf4, 0x53,
- 0x0d, 0xf4, 0x4a, 0xfc, 0x9f, 0x54, 0xde, 0x7d, 0xbe, 0xa0, 0x6b, 0x6f,
- 0x87, 0xc0, 0xd0, 0x50, 0x1f, 0x28, 0x30, 0x03, 0x40, 0xda, 0x08, 0x73,
- 0x51, 0x6c, 0x7f, 0xff, 0x3a, 0x3c, 0xa7, 0x37, 0x06, 0x8e, 0xbd, 0x4b,
- 0x11, 0x04, 0xeb, 0x7d, 0x24, 0xde, 0xe6, 0xf9, 0xfc, 0x31, 0x71, 0xfb,
- 0x94, 0xd5, 0x60, 0xf3, 0x2e, 0x4a, 0xaf, 0x42, 0xd2, 0xcb, 0xea, 0xc4,
- 0x6a, 0x1a, 0xb2, 0xcc, 0x53, 0xdd, 0x15, 0x4b, 0x8b, 0x1f, 0xc8, 0x19,
- 0x61, 0x1f, 0xcd, 0x9d, 0xa8, 0x3e, 0x63, 0x2b, 0x84, 0x35, 0x69, 0x65,
- 0x84, 0xc8, 0x19, 0xc5, 0x46, 0x22, 0xf8, 0x53, 0x95, 0xbe, 0xe3, 0x80,
- 0x4a, 0x10, 0xc6, 0x2a, 0xec, 0xba, 0x97, 0x20, 0x11, 0xc7, 0x39, 0x99,
- 0x10, 0x04, 0xa0, 0xf0, 0x61, 0x7a, 0x95, 0x25, 0x8c, 0x4e, 0x52, 0x75,
- 0xe2, 0xb6, 0xed, 0x08, 0xca, 0x14, 0xfc, 0xce, 0x22, 0x6a, 0xb3, 0x4e,
- 0xcf, 0x46, 0x03, 0x97, 0x97, 0x03, 0x7e, 0xc0, 0xb1, 0xde, 0x7b, 0xaf,
- 0x45, 0x33, 0xcf, 0xba, 0x3e, 0x71, 0xb7, 0xde, 0xf4, 0x25, 0x25, 0xc2,
- 0x0d, 0x35, 0x89, 0x9d, 0x9d, 0xfb, 0x0e, 0x11, 0x79, 0x89, 0x1e, 0x37,
- 0xc5, 0xaf, 0x8e, 0x72, 0x69, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x81,
- 0xe7, 0x30, 0x81, 0xe4, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04,
- 0x18, 0x30, 0x16, 0x80, 0x14, 0xc0, 0x7a, 0x98, 0x68, 0x8d, 0x89, 0xfb,
- 0xab, 0x05, 0x64, 0x0c, 0x11, 0x7d, 0xaa, 0x7d, 0x65, 0xb8, 0xca, 0xcc,
- 0x4e, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14,
- 0x4a, 0xdd, 0x06, 0x16, 0x1b, 0xbc, 0xf6, 0x68, 0xb5, 0x76, 0xf5, 0x81,
- 0xb6, 0xbb, 0x62, 0x1a, 0xba, 0x5a, 0x81, 0x2f, 0x30, 0x0e, 0x06, 0x03,
- 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06,
- 0x30, 0x2e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01,
- 0x04, 0x22, 0x30, 0x20, 0x30, 0x1e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05,
- 0x05, 0x07, 0x30, 0x01, 0x86, 0x12, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
- 0x2f, 0x67, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x64, 0x2e, 0x63, 0x6f, 0x6d,
- 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08,
- 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x35, 0x06, 0x03,
- 0x55, 0x1d, 0x1f, 0x04, 0x2e, 0x30, 0x2c, 0x30, 0x2a, 0xa0, 0x28, 0xa0,
- 0x26, 0x86, 0x24, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x2e,
- 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x72,
- 0x6c, 0x73, 0x2f, 0x67, 0x74, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e,
- 0x63, 0x72, 0x6c, 0x30, 0x17, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x10,
- 0x30, 0x0e, 0x30, 0x0c, 0x06, 0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01, 0xd6,
- 0x79, 0x02, 0x05, 0x01, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
- 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00,
- 0x08, 0x4e, 0x04, 0xa7, 0x80, 0x7f, 0x10, 0x16, 0x43, 0x5e, 0x02, 0xad,
- 0xd7, 0x42, 0x80, 0xf4, 0xb0, 0x8e, 0xd2, 0xae, 0xb3, 0xeb, 0x11, 0x7d,
- 0x90, 0x84, 0x18, 0x7d, 0xe7, 0x90, 0x15, 0xfb, 0x49, 0x7f, 0xa8, 0x99,
- 0x05, 0x91, 0xbb, 0x7a, 0xc9, 0xd6, 0x3c, 0x37, 0x18, 0x09, 0x9a, 0xb6,
- 0xc7, 0x92, 0x20, 0x07, 0x35, 0x33, 0x09, 0xe4, 0x28, 0x63, 0x72, 0x0d,
- 0xb4, 0xe0, 0x32, 0x9c, 0x87, 0x98, 0xc4, 0x1b, 0x76, 0x89, 0x67, 0xc1,
- 0x50, 0x58, 0xb0, 0x13, 0xaa, 0x13, 0x1a, 0x1b, 0x32, 0xa5, 0xbe, 0xea,
- 0x11, 0x95, 0x4c, 0x48, 0x63, 0x49, 0xe9, 0x99, 0x5d, 0x20, 0x37, 0xcc,
- 0xfe, 0x2a, 0x69, 0x51, 0x16, 0x95, 0x4b, 0xa9, 0xde, 0x49, 0x82, 0xc0,
- 0x10, 0x70, 0xf4, 0x2c, 0xf3, 0xec, 0xbc, 0x24, 0x24, 0xd0, 0x4e, 0xac,
- 0xa5, 0xd9, 0x5e, 0x1e, 0x6d, 0x92, 0xc1, 0xa7, 0xac, 0x48, 0x35, 0x81,
- 0xf9, 0xe5, 0xe4, 0x9c, 0x65, 0x69, 0xcd, 0x87, 0xa4, 0x41, 0x50, 0x3f,
- 0x2e, 0x57, 0xa5, 0x91, 0x51, 0x12, 0x58, 0x0e, 0x8c, 0x09, 0xa1, 0xac,
- 0x7a, 0xa4, 0x12, 0xa5, 0x27, 0xf3, 0x9a, 0x10, 0x97, 0x7d, 0x55, 0x03,
- 0x06, 0xf7, 0x66, 0x58, 0x5f, 0x5f, 0x64, 0xe1, 0xab, 0x5d, 0x6d, 0xa5,
- 0x39, 0x48, 0x75, 0x98, 0x4c, 0x29, 0x5a, 0x3a, 0x8d, 0xd3, 0x2b, 0xca,
- 0x9c, 0x55, 0x04, 0xbf, 0xf4, 0xe6, 0x14, 0xd5, 0x80, 0xac, 0x26, 0xed,
- 0x17, 0x89, 0xa6, 0x93, 0x6c, 0x5c, 0xa4, 0xcc, 0xb8, 0xf0, 0x66, 0x8e,
- 0x64, 0xe3, 0x7d, 0x9a, 0xe2, 0x00, 0xb3, 0x49, 0xc7, 0xe4, 0x0a, 0xaa,
- 0xdd, 0x5b, 0x83, 0xc7, 0x70, 0x90, 0x46, 0x4e, 0xbe, 0xd0, 0xdb, 0x59,
- 0x96, 0x6c, 0x2e, 0xf5, 0x16, 0x36, 0xde, 0x71, 0xcc, 0x01, 0xc2, 0x12,
- 0xc1, 0x21, 0xc6, 0x16,
-}
-
-var certSet3Cert3 = []byte{
- 0x30, 0x82, 0x04, 0x15, 0x30, 0x82, 0x03, 0x7e, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x04, 0x07, 0x27, 0x8e, 0xed, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x75,
- 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55,
- 0x53, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0f,
- 0x47, 0x54, 0x45, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x31, 0x27, 0x30, 0x25, 0x06, 0x03, 0x55, 0x04, 0x0b,
- 0x13, 0x1e, 0x47, 0x54, 0x45, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54,
- 0x72, 0x75, 0x73, 0x74, 0x20, 0x53, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f,
- 0x6e, 0x73, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x23, 0x30, 0x21,
- 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1a, 0x47, 0x54, 0x45, 0x20, 0x43,
- 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c,
- 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x30, 0x1e, 0x17,
- 0x0d, 0x31, 0x32, 0x30, 0x34, 0x31, 0x38, 0x31, 0x36, 0x33, 0x36, 0x31,
- 0x38, 0x5a, 0x17, 0x0d, 0x31, 0x38, 0x30, 0x38, 0x31, 0x33, 0x31, 0x36,
- 0x33, 0x35, 0x31, 0x37, 0x5a, 0x30, 0x5a, 0x31, 0x0b, 0x30, 0x09, 0x06,
- 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x49, 0x45, 0x31, 0x12, 0x30, 0x10,
- 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x09, 0x42, 0x61, 0x6c, 0x74, 0x69,
- 0x6d, 0x6f, 0x72, 0x65, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04,
- 0x0b, 0x13, 0x0a, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73,
- 0x74, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x19,
- 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x43, 0x79,
- 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x52, 0x6f, 0x6f,
- 0x74, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48,
- 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f,
- 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xa3, 0x04,
- 0xbb, 0x22, 0xab, 0x98, 0x3d, 0x57, 0xe8, 0x26, 0x72, 0x9a, 0xb5, 0x79,
- 0xd4, 0x29, 0xe2, 0xe1, 0xe8, 0x95, 0x80, 0xb1, 0xb0, 0xe3, 0x5b, 0x8e,
- 0x2b, 0x29, 0x9a, 0x64, 0xdf, 0xa1, 0x5d, 0xed, 0xb0, 0x09, 0x05, 0x6d,
- 0xdb, 0x28, 0x2e, 0xce, 0x62, 0xa2, 0x62, 0xfe, 0xb4, 0x88, 0xda, 0x12,
- 0xeb, 0x38, 0xeb, 0x21, 0x9d, 0xc0, 0x41, 0x2b, 0x01, 0x52, 0x7b, 0x88,
- 0x77, 0xd3, 0x1c, 0x8f, 0xc7, 0xba, 0xb9, 0x88, 0xb5, 0x6a, 0x09, 0xe7,
- 0x73, 0xe8, 0x11, 0x40, 0xa7, 0xd1, 0xcc, 0xca, 0x62, 0x8d, 0x2d, 0xe5,
- 0x8f, 0x0b, 0xa6, 0x50, 0xd2, 0xa8, 0x50, 0xc3, 0x28, 0xea, 0xf5, 0xab,
- 0x25, 0x87, 0x8a, 0x9a, 0x96, 0x1c, 0xa9, 0x67, 0xb8, 0x3f, 0x0c, 0xd5,
- 0xf7, 0xf9, 0x52, 0x13, 0x2f, 0xc2, 0x1b, 0xd5, 0x70, 0x70, 0xf0, 0x8f,
- 0xc0, 0x12, 0xca, 0x06, 0xcb, 0x9a, 0xe1, 0xd9, 0xca, 0x33, 0x7a, 0x77,
- 0xd6, 0xf8, 0xec, 0xb9, 0xf1, 0x68, 0x44, 0x42, 0x48, 0x13, 0xd2, 0xc0,
- 0xc2, 0xa4, 0xae, 0x5e, 0x60, 0xfe, 0xb6, 0xa6, 0x05, 0xfc, 0xb4, 0xdd,
- 0x07, 0x59, 0x02, 0xd4, 0x59, 0x18, 0x98, 0x63, 0xf5, 0xa5, 0x63, 0xe0,
- 0x90, 0x0c, 0x7d, 0x5d, 0xb2, 0x06, 0x7a, 0xf3, 0x85, 0xea, 0xeb, 0xd4,
- 0x03, 0xae, 0x5e, 0x84, 0x3e, 0x5f, 0xff, 0x15, 0xed, 0x69, 0xbc, 0xf9,
- 0x39, 0x36, 0x72, 0x75, 0xcf, 0x77, 0x52, 0x4d, 0xf3, 0xc9, 0x90, 0x2c,
- 0xb9, 0x3d, 0xe5, 0xc9, 0x23, 0x53, 0x3f, 0x1f, 0x24, 0x98, 0x21, 0x5c,
- 0x07, 0x99, 0x29, 0xbd, 0xc6, 0x3a, 0xec, 0xe7, 0x6e, 0x86, 0x3a, 0x6b,
- 0x97, 0x74, 0x63, 0x33, 0xbd, 0x68, 0x18, 0x31, 0xf0, 0x78, 0x8d, 0x76,
- 0xbf, 0xfc, 0x9e, 0x8e, 0x5d, 0x2a, 0x86, 0xa7, 0x4d, 0x90, 0xdc, 0x27,
- 0x1a, 0x39, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x47, 0x30,
- 0x82, 0x01, 0x43, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01,
- 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x03, 0x30,
- 0x4a, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x43, 0x30, 0x41, 0x30, 0x3f,
- 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x37, 0x30, 0x35, 0x06, 0x08,
- 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x29, 0x68, 0x74,
- 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x79, 0x62, 0x65, 0x72, 0x74, 0x72,
- 0x75, 0x73, 0x74, 0x2e, 0x6f, 0x6d, 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74,
- 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74,
- 0x6f, 0x72, 0x79, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01,
- 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x81, 0x89, 0x06, 0x03,
- 0x55, 0x1d, 0x23, 0x04, 0x81, 0x81, 0x30, 0x7f, 0xa1, 0x79, 0xa4, 0x77,
- 0x30, 0x75, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13,
- 0x02, 0x55, 0x53, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x0a,
- 0x13, 0x0f, 0x47, 0x54, 0x45, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x27, 0x30, 0x25, 0x06, 0x03, 0x55,
- 0x04, 0x0b, 0x13, 0x1e, 0x47, 0x54, 0x45, 0x20, 0x43, 0x79, 0x62, 0x65,
- 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x53, 0x6f, 0x6c, 0x75, 0x74,
- 0x69, 0x6f, 0x6e, 0x73, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x23,
- 0x30, 0x21, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1a, 0x47, 0x54, 0x45,
- 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20,
- 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x82,
- 0x02, 0x01, 0xa5, 0x30, 0x45, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x3e,
- 0x30, 0x3c, 0x30, 0x3a, 0xa0, 0x38, 0xa0, 0x36, 0x86, 0x34, 0x68, 0x74,
- 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x70, 0x75, 0x62,
- 0x6c, 0x69, 0x63, 0x2d, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f,
- 0x6d, 0x2f, 0x63, 0x67, 0x69, 0x2d, 0x62, 0x69, 0x6e, 0x2f, 0x43, 0x52,
- 0x4c, 0x2f, 0x32, 0x30, 0x31, 0x38, 0x2f, 0x63, 0x64, 0x70, 0x2e, 0x63,
- 0x72, 0x6c, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
- 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x93, 0x1d, 0xfe,
- 0x8b, 0xae, 0x46, 0xec, 0xcb, 0xa9, 0x0f, 0xab, 0xe5, 0xef, 0xca, 0xb2,
- 0x68, 0x16, 0x68, 0xd8, 0x8f, 0xfa, 0x13, 0xa9, 0xaf, 0xb3, 0xcb, 0x2d,
- 0xe7, 0x4b, 0x6e, 0x8e, 0x69, 0x2a, 0xc2, 0x2b, 0x10, 0x0a, 0x8d, 0xf6,
- 0xae, 0x73, 0xb6, 0xb9, 0xfb, 0x14, 0xfd, 0x5f, 0x6d, 0xb8, 0x50, 0xb6,
- 0xc4, 0x8a, 0xd6, 0x40, 0x7e, 0xd7, 0xc3, 0xcb, 0x73, 0xdc, 0xc9, 0x5d,
- 0x5b, 0xaf, 0xb0, 0x41, 0xb5, 0x37, 0xeb, 0xea, 0xdc, 0x20, 0x91, 0xc4,
- 0x34, 0x6a, 0xf4, 0xa1, 0xf3, 0x96, 0x9d, 0x37, 0x86, 0x97, 0xe1, 0x71,
- 0xa4, 0xdd, 0x7d, 0xfa, 0x44, 0x84, 0x94, 0xae, 0xd7, 0x09, 0x04, 0x22,
- 0x76, 0x0f, 0x64, 0x51, 0x35, 0xa9, 0x24, 0x0f, 0xf9, 0x0b, 0xdb, 0x32,
- 0xda, 0xc2, 0xfe, 0xc1, 0xb9, 0x2a, 0x5c, 0x7a, 0x27, 0x13, 0xca, 0xb1,
- 0x48, 0x3a, 0x71, 0xd0, 0x43,
-}
-
-var certSet3Cert4 = []byte{
- 0x30, 0x82, 0x04, 0x25, 0x30, 0x82, 0x03, 0x0d, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x03, 0x02, 0x3a, 0x77, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
- 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x42, 0x31,
- 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53,
- 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47,
- 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e,
- 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x47,
- 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62,
- 0x61, 0x6c, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34, 0x30,
- 0x38, 0x32, 0x39, 0x32, 0x31, 0x33, 0x39, 0x33, 0x32, 0x5a, 0x17, 0x0d,
- 0x32, 0x32, 0x30, 0x35, 0x32, 0x30, 0x32, 0x31, 0x33, 0x39, 0x33, 0x32,
- 0x5a, 0x30, 0x47, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,
- 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04,
- 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20,
- 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x20, 0x30, 0x1e, 0x06, 0x03, 0x55, 0x04,
- 0x03, 0x13, 0x17, 0x52, 0x61, 0x70, 0x69, 0x64, 0x53, 0x53, 0x4c, 0x20,
- 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20,
- 0x47, 0x33, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
- 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01,
- 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xaf,
- 0x54, 0x9b, 0xd9, 0x58, 0x5d, 0x1e, 0x2c, 0x56, 0xc6, 0xd5, 0xe8, 0x7f,
- 0xf4, 0x7d, 0x16, 0x03, 0xff, 0xd0, 0x8b, 0x5a, 0xe4, 0x8e, 0xa7, 0xdd,
- 0x54, 0x2e, 0xd4, 0x04, 0xc0, 0x5d, 0x98, 0x9c, 0x8d, 0x90, 0x0f, 0xbc,
- 0x10, 0x65, 0x5f, 0xda, 0x9a, 0xd6, 0x44, 0x7c, 0xc0, 0x9f, 0xb5, 0xe9,
- 0x4a, 0x8c, 0x0b, 0x06, 0x43, 0x04, 0xbb, 0xf4, 0x96, 0xe2, 0x26, 0xf6,
- 0x61, 0x01, 0x91, 0x66, 0x31, 0x22, 0xc3, 0x34, 0x34, 0x5f, 0x3f, 0x3f,
- 0x91, 0x2f, 0x44, 0x5f, 0xdc, 0xc7, 0x14, 0xb6, 0x03, 0x9f, 0x86, 0x4b,
- 0x0e, 0xa3, 0xff, 0xa0, 0x80, 0x02, 0x83, 0xc3, 0xd3, 0x1f, 0x69, 0x52,
- 0xd6, 0x9d, 0x64, 0x0f, 0xc9, 0x83, 0xe7, 0x1b, 0xc4, 0x70, 0xac, 0x94,
- 0xe7, 0xc3, 0xa4, 0x6a, 0x2c, 0xbd, 0xb8, 0x9e, 0x69, 0xd8, 0xbe, 0x0a,
- 0x8f, 0x16, 0x63, 0x5a, 0x68, 0x71, 0x80, 0x7b, 0x30, 0xde, 0x15, 0x04,
- 0xbf, 0xcc, 0xd3, 0xbf, 0x3e, 0x48, 0x05, 0x55, 0x7a, 0xb3, 0xd7, 0x10,
- 0x0c, 0x03, 0xfc, 0x9b, 0xfd, 0x08, 0xa7, 0x8c, 0x8c, 0xdb, 0xa7, 0x8e,
- 0xf1, 0x1e, 0x63, 0xdc, 0xb3, 0x01, 0x2f, 0x7f, 0xaf, 0x57, 0xc3, 0x3c,
- 0x48, 0xa7, 0x83, 0x68, 0x21, 0xa7, 0x2f, 0xe7, 0xa7, 0x3f, 0xf0, 0xb5,
- 0x0c, 0xfc, 0xf5, 0x84, 0xd1, 0x53, 0xbc, 0x0e, 0x72, 0x4f, 0x60, 0x0c,
- 0x42, 0xb8, 0x98, 0xad, 0x19, 0x88, 0x57, 0xd7, 0x04, 0xec, 0x87, 0xbf,
- 0x7e, 0x87, 0x4e, 0xa3, 0x21, 0xf9, 0x53, 0xfd, 0x36, 0x98, 0x48, 0x8d,
- 0xd6, 0xf8, 0xbb, 0x48, 0xf2, 0x29, 0xc8, 0x64, 0xd1, 0xcc, 0x54, 0x48,
- 0x53, 0x8b, 0xaf, 0xb7, 0x65, 0x1e, 0xbf, 0x29, 0x33, 0x29, 0xd9, 0x29,
- 0x60, 0x48, 0xf8, 0xff, 0x91, 0xbc, 0x57, 0x58, 0xe5, 0x35, 0x2e, 0xbb,
- 0x69, 0xb6, 0x59, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x1d,
- 0x30, 0x82, 0x01, 0x19, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04,
- 0x18, 0x30, 0x16, 0x80, 0x14, 0xc0, 0x7a, 0x98, 0x68, 0x8d, 0x89, 0xfb,
- 0xab, 0x05, 0x64, 0x0c, 0x11, 0x7d, 0xaa, 0x7d, 0x65, 0xb8, 0xca, 0xcc,
- 0x4e, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14,
- 0xc3, 0x9c, 0xf3, 0xfc, 0xd3, 0x46, 0x08, 0x34, 0xbb, 0xce, 0x46, 0x7f,
- 0xa0, 0x7c, 0x5b, 0xf3, 0xe2, 0x08, 0xcb, 0x59, 0x30, 0x12, 0x06, 0x03,
- 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01,
- 0xff, 0x02, 0x01, 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01,
- 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x35, 0x06, 0x03,
- 0x55, 0x1d, 0x1f, 0x04, 0x2e, 0x30, 0x2c, 0x30, 0x2a, 0xa0, 0x28, 0xa0,
- 0x26, 0x86, 0x24, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x2e,
- 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x72,
- 0x6c, 0x73, 0x2f, 0x67, 0x74, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e,
- 0x63, 0x72, 0x6c, 0x30, 0x2e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
- 0x07, 0x01, 0x01, 0x04, 0x22, 0x30, 0x20, 0x30, 0x1e, 0x06, 0x08, 0x2b,
- 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x12, 0x68, 0x74, 0x74,
- 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x64, 0x2e,
- 0x63, 0x6f, 0x6d, 0x30, 0x4c, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x45,
- 0x30, 0x43, 0x30, 0x41, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8,
- 0x45, 0x01, 0x07, 0x36, 0x30, 0x33, 0x30, 0x31, 0x06, 0x08, 0x2b, 0x06,
- 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x25, 0x68, 0x74, 0x74, 0x70,
- 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72,
- 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f,
- 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x0d, 0x06,
- 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00,
- 0x03, 0x82, 0x01, 0x01, 0x00, 0xa3, 0x58, 0x1e, 0xc6, 0x43, 0x32, 0xac,
- 0xac, 0x2f, 0x93, 0x78, 0xb7, 0xea, 0xae, 0x54, 0x40, 0x47, 0x2d, 0x7e,
- 0x78, 0x8d, 0x50, 0xf6, 0xf8, 0x66, 0xac, 0xd6, 0x4f, 0x73, 0xd6, 0x44,
- 0xef, 0xaf, 0x0b, 0xcc, 0x5b, 0xc1, 0xf4, 0x4f, 0x9a, 0x8f, 0x49, 0x7e,
- 0x60, 0xaf, 0xc2, 0x27, 0xc7, 0x16, 0xf1, 0xfb, 0x93, 0x81, 0x90, 0xa9,
- 0x7c, 0xef, 0x6f, 0x7e, 0x6e, 0x45, 0x94, 0x16, 0x84, 0xbd, 0xec, 0x49,
- 0xf1, 0xc4, 0x0e, 0xf4, 0xaf, 0x04, 0x59, 0x83, 0x87, 0x0f, 0x2c, 0x3b,
- 0x97, 0xc3, 0x5a, 0x12, 0x9b, 0x7b, 0x04, 0x35, 0x7b, 0xa3, 0x95, 0x33,
- 0x08, 0x7b, 0x93, 0x71, 0x22, 0x42, 0xb3, 0xa9, 0xd9, 0x6f, 0x4f, 0x81,
- 0x92, 0xfc, 0x07, 0xb6, 0x79, 0xbc, 0x84, 0x4a, 0x9d, 0x77, 0x09, 0xf1,
- 0xc5, 0x89, 0xf2, 0xf0, 0xb4, 0x9c, 0x54, 0xaa, 0x12, 0x7b, 0x0d, 0xba,
- 0x4f, 0xef, 0x93, 0x19, 0xec, 0xef, 0x7d, 0x4e, 0x61, 0xa3, 0x8e, 0x76,
- 0x9c, 0x59, 0xcf, 0x8c, 0x94, 0xb1, 0x84, 0x97, 0xf7, 0x1a, 0xb9, 0x07,
- 0xb8, 0xb2, 0xc6, 0x4f, 0x13, 0x79, 0xdb, 0xbf, 0x4f, 0x51, 0x1b, 0x7f,
- 0x69, 0x0d, 0x51, 0x2a, 0xc1, 0xd6, 0x15, 0xff, 0x37, 0x51, 0x34, 0x65,
- 0x51, 0xf4, 0x1e, 0xbe, 0x38, 0x6a, 0xec, 0x0e, 0xab, 0xbf, 0x3d, 0x7b,
- 0x39, 0x05, 0x7b, 0xf4, 0xf3, 0xfb, 0x1a, 0xa1, 0xd0, 0xc8, 0x7e, 0x4e,
- 0x64, 0x8d, 0xcd, 0x8c, 0x61, 0x55, 0x90, 0xfe, 0x3a, 0xca, 0x5d, 0x25,
- 0x0f, 0xf8, 0x1d, 0xa3, 0x4a, 0x74, 0x56, 0x4f, 0x1a, 0x55, 0x40, 0x70,
- 0x75, 0x25, 0xa6, 0x33, 0x2e, 0xba, 0x4b, 0xa5, 0x5d, 0x53, 0x9a, 0x0d,
- 0x30, 0xe1, 0x8d, 0x5f, 0x61, 0x2c, 0xaf, 0xcc, 0xef, 0xb0, 0x99, 0xa1,
- 0x80, 0xff, 0x0b, 0xf2, 0x62, 0x4c, 0x70, 0x26, 0x98,
-}
-
-var certSet3Cert5 = []byte{
- 0x30, 0x82, 0x04, 0x44, 0x30, 0x82, 0x03, 0x2c, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x03, 0x02, 0x3a, 0x78, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
- 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x42, 0x31,
- 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53,
- 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47,
- 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e,
- 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x47,
- 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62,
- 0x61, 0x6c, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34, 0x30,
- 0x38, 0x32, 0x39, 0x32, 0x32, 0x32, 0x34, 0x35, 0x38, 0x5a, 0x17, 0x0d,
- 0x32, 0x32, 0x30, 0x35, 0x32, 0x30, 0x32, 0x32, 0x32, 0x34, 0x35, 0x38,
- 0x5a, 0x30, 0x66, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,
- 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04,
- 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20,
- 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x1d, 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04,
- 0x0b, 0x13, 0x14, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x56, 0x61,
- 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x20, 0x53, 0x53, 0x4c, 0x31,
- 0x20, 0x30, 0x1e, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x17, 0x47, 0x65,
- 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x44, 0x56, 0x20, 0x53, 0x53,
- 0x4c, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x34, 0x30, 0x82, 0x01,
- 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01,
- 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01,
- 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xdf, 0x41, 0x94, 0x7a, 0xda, 0xf7,
- 0xe4, 0x31, 0x43, 0xb6, 0xea, 0x01, 0x1b, 0x5c, 0xce, 0x63, 0xea, 0xfa,
- 0x6d, 0xa3, 0xd9, 0x6a, 0xee, 0x2d, 0x9a, 0x75, 0xf9, 0xd5, 0x9c, 0x5b,
- 0xbd, 0x34, 0xdf, 0xd8, 0x1c, 0xc9, 0x6d, 0xd8, 0x04, 0x88, 0xda, 0x6e,
- 0xb5, 0xb7, 0xb5, 0xf0, 0x30, 0xae, 0x40, 0xd6, 0x5d, 0xfa, 0xc4, 0x53,
- 0xc1, 0xd4, 0x22, 0x9d, 0x04, 0x4e, 0x11, 0xa6, 0x95, 0xd5, 0x45, 0x7c,
- 0x41, 0x05, 0x58, 0xe0, 0x4c, 0xdd, 0xf9, 0xee, 0x55, 0xbd, 0x5f, 0x46,
- 0xdc, 0xad, 0x13, 0x08, 0x9d, 0x2c, 0xe4, 0xf7, 0x82, 0xe6, 0x07, 0x2b,
- 0x9e, 0x0e, 0x8c, 0x34, 0xa1, 0xce, 0xc4, 0xa1, 0xe0, 0x81, 0x70, 0x86,
- 0x00, 0x06, 0x3f, 0x2d, 0xea, 0x7c, 0x9b, 0x28, 0xae, 0x1b, 0x28, 0x8b,
- 0x39, 0x09, 0xd3, 0xe7, 0xf0, 0x45, 0xa4, 0xb1, 0xba, 0x11, 0x67, 0x90,
- 0x55, 0x7b, 0x8f, 0xde, 0xed, 0x38, 0x5c, 0xa1, 0xe1, 0xe3, 0x83, 0xc4,
- 0xc3, 0x72, 0x91, 0x4f, 0x98, 0xee, 0x1c, 0xc2, 0x80, 0xaa, 0x64, 0xa5,
- 0x3e, 0x83, 0x62, 0x1c, 0xcc, 0xe0, 0x9e, 0xf8, 0x5a, 0xc0, 0x13, 0x12,
- 0x7d, 0xa2, 0xa7, 0x8b, 0xa3, 0xe7, 0x9f, 0x2a, 0xd7, 0x9b, 0xca, 0xcb,
- 0xed, 0x97, 0x01, 0x9c, 0x28, 0x84, 0x51, 0x04, 0x50, 0x41, 0xbc, 0xb4,
- 0xfc, 0x78, 0xe9, 0x1b, 0xcf, 0x14, 0xea, 0x1f, 0x0f, 0xfc, 0x2e, 0x01,
- 0x32, 0x8d, 0xb6, 0x35, 0xcb, 0x0a, 0x18, 0x3b, 0xec, 0x5a, 0x3e, 0x3c,
- 0x1b, 0xd3, 0x99, 0x43, 0x1e, 0x2f, 0xf7, 0xbd, 0xf3, 0x5b, 0x12, 0xb9,
- 0x07, 0x5e, 0xed, 0x3e, 0xd1, 0xa9, 0x87, 0xcc, 0x77, 0x72, 0x27, 0xd4,
- 0xd9, 0x75, 0xa2, 0x63, 0x4b, 0x93, 0x36, 0xbd, 0xe5, 0x5c, 0xd7, 0xbf,
- 0x5f, 0x79, 0x0d, 0xb3, 0x32, 0xa7, 0x0b, 0xb2, 0x63, 0x23, 0x02, 0x03,
- 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x1d, 0x30, 0x82, 0x01, 0x19, 0x30,
- 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14,
- 0xc0, 0x7a, 0x98, 0x68, 0x8d, 0x89, 0xfb, 0xab, 0x05, 0x64, 0x0c, 0x11,
- 0x7d, 0xaa, 0x7d, 0x65, 0xb8, 0xca, 0xcc, 0x4e, 0x30, 0x1d, 0x06, 0x03,
- 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x0b, 0x50, 0xec, 0x77, 0xef,
- 0x2a, 0x9b, 0xff, 0xec, 0x03, 0xa1, 0x0a, 0xff, 0xad, 0xc6, 0xe4, 0x2a,
- 0x18, 0xc7, 0x3e, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01,
- 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30,
- 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03,
- 0x02, 0x01, 0x06, 0x30, 0x35, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2e,
- 0x30, 0x2c, 0x30, 0x2a, 0xa0, 0x28, 0xa0, 0x26, 0x86, 0x24, 0x68, 0x74,
- 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62,
- 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x72, 0x6c, 0x73, 0x2f, 0x67, 0x74,
- 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x2e,
- 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x22,
- 0x30, 0x20, 0x30, 0x1e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07,
- 0x30, 0x01, 0x86, 0x12, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67,
- 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x64, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x4c,
- 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x45, 0x30, 0x43, 0x30, 0x41, 0x06,
- 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, 0x07, 0x36, 0x30,
- 0x33, 0x30, 0x31, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02,
- 0x01, 0x16, 0x25, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77,
- 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63,
- 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73,
- 0x2f, 0x63, 0x70, 0x73, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
- 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00,
- 0x33, 0x24, 0xd5, 0x90, 0xaa, 0x29, 0x0c, 0x35, 0xb9, 0x2f, 0xc3, 0xc7,
- 0x42, 0x93, 0xc0, 0xc6, 0x10, 0x4b, 0x03, 0x08, 0x76, 0x84, 0x10, 0xa2,
- 0xe0, 0xe7, 0x53, 0x12, 0x27, 0xf2, 0x0a, 0xda, 0x7f, 0x3a, 0xdc, 0xfd,
- 0x5c, 0x79, 0x5a, 0x8f, 0x17, 0x74, 0x43, 0x53, 0xb1, 0xd5, 0xd1, 0x5d,
- 0x59, 0xb9, 0xa6, 0x84, 0x64, 0xca, 0xf1, 0x3a, 0x0a, 0x59, 0x96, 0x10,
- 0xbf, 0xa9, 0x81, 0x57, 0x8b, 0x5c, 0x87, 0xdc, 0x7f, 0xe3, 0xe4, 0xbb,
- 0x05, 0x7a, 0xa0, 0x32, 0x09, 0x13, 0x4e, 0x10, 0x81, 0x28, 0x1f, 0x9c,
- 0x03, 0x62, 0xbc, 0xf4, 0x01, 0xb5, 0x29, 0x83, 0x46, 0x07, 0xb9, 0xe7,
- 0xb8, 0x5d, 0xc8, 0xe9, 0xd1, 0xdd, 0xad, 0x3b, 0xf8, 0x34, 0xdb, 0xc1,
- 0xd1, 0x95, 0xa9, 0x91, 0x18, 0xed, 0x3c, 0x2c, 0x37, 0x11, 0x4d, 0xcc,
- 0xfe, 0x53, 0x3e, 0x50, 0x43, 0xf9, 0xc3, 0x56, 0x41, 0xac, 0x53, 0x9b,
- 0x6c, 0x05, 0xb2, 0x9a, 0xe2, 0xe0, 0x59, 0x57, 0x30, 0x32, 0xb6, 0x26,
- 0x4e, 0x13, 0x25, 0xcd, 0xfa, 0x48, 0x70, 0x0f, 0x75, 0x55, 0x60, 0x11,
- 0xf5, 0x3b, 0xd5, 0x5e, 0x5a, 0x3c, 0x8b, 0x5b, 0x0f, 0x0f, 0x62, 0x42,
- 0x48, 0x61, 0x85, 0x8b, 0x10, 0xf4, 0xc1, 0x88, 0xbf, 0x7f, 0x5f, 0x8a,
- 0xc2, 0xd7, 0xcd, 0x2b, 0x94, 0x5c, 0x1f, 0x34, 0x4a, 0x08, 0xaf, 0xeb,
- 0xae, 0x89, 0xa8, 0x48, 0x75, 0x55, 0x95, 0x1d, 0xbb, 0xc0, 0x9a, 0x01,
- 0xb9, 0xf4, 0x03, 0x22, 0x3e, 0xd4, 0xe6, 0x52, 0x30, 0x0d, 0x67, 0xb9,
- 0xc0, 0x91, 0xfd, 0x2d, 0x4c, 0x30, 0x8e, 0xbd, 0x8c, 0xa5, 0x04, 0x91,
- 0xbb, 0xa4, 0xab, 0x7f, 0x0f, 0xd8, 0x6f, 0xf0, 0x66, 0x00, 0xc9, 0xa3,
- 0x5c, 0xf5, 0xb0, 0x8f, 0x83, 0xe6, 0x9c, 0x5a, 0xe6, 0xb6, 0xb9, 0xc5,
- 0xbc, 0xbe, 0xe4, 0x02,
-}
-
-var certSet3Cert6 = []byte{
- 0x30, 0x82, 0x04, 0x45, 0x30, 0x82, 0x03, 0xae, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x33, 0x65, 0x50, 0x08, 0x79, 0xad, 0x73, 0xe2, 0x30,
- 0xb9, 0xe0, 0x1d, 0x0d, 0x7f, 0xac, 0x91, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x81,
- 0xce, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
- 0x5a, 0x41, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13,
- 0x0c, 0x57, 0x65, 0x73, 0x74, 0x65, 0x72, 0x6e, 0x20, 0x43, 0x61, 0x70,
- 0x65, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x09,
- 0x43, 0x61, 0x70, 0x65, 0x20, 0x54, 0x6f, 0x77, 0x6e, 0x31, 0x1d, 0x30,
- 0x1b, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x14, 0x54, 0x68, 0x61, 0x77,
- 0x74, 0x65, 0x20, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x74, 0x69, 0x6e,
- 0x67, 0x20, 0x63, 0x63, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04,
- 0x0b, 0x13, 0x1f, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
- 0x73, 0x20, 0x44, 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x21,
- 0x30, 0x1f, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x18, 0x54, 0x68, 0x61,
- 0x77, 0x74, 0x65, 0x20, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x75, 0x6d, 0x20,
- 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x31, 0x28, 0x30,
- 0x26, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x01,
- 0x16, 0x19, 0x70, 0x72, 0x65, 0x6d, 0x69, 0x75, 0x6d, 0x2d, 0x73, 0x65,
- 0x72, 0x76, 0x65, 0x72, 0x40, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2e,
- 0x63, 0x6f, 0x6d, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x36, 0x31, 0x31, 0x31,
- 0x37, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x30,
- 0x31, 0x32, 0x33, 0x30, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30,
- 0x81, 0xa9, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13,
- 0x02, 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a,
- 0x13, 0x0c, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e,
- 0x63, 0x2e, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13,
- 0x1f, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20,
- 0x44, 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x38, 0x30, 0x36,
- 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x2f, 0x28, 0x63, 0x29, 0x20, 0x32,
- 0x30, 0x30, 0x36, 0x20, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20,
- 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61,
- 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73,
- 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03,
- 0x55, 0x04, 0x03, 0x13, 0x16, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20,
- 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74,
- 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82,
- 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00,
- 0xac, 0xa0, 0xf0, 0xfb, 0x80, 0x59, 0xd4, 0x9c, 0xc7, 0xa4, 0xcf, 0x9d,
- 0xa1, 0x59, 0x73, 0x09, 0x10, 0x45, 0x0c, 0x0d, 0x2c, 0x6e, 0x68, 0xf1,
- 0x6c, 0x5b, 0x48, 0x68, 0x49, 0x59, 0x37, 0xfc, 0x0b, 0x33, 0x19, 0xc2,
- 0x77, 0x7f, 0xcc, 0x10, 0x2d, 0x95, 0x34, 0x1c, 0xe6, 0xeb, 0x4d, 0x09,
- 0xa7, 0x1c, 0xd2, 0xb8, 0xc9, 0x97, 0x36, 0x02, 0xb7, 0x89, 0xd4, 0x24,
- 0x5f, 0x06, 0xc0, 0xcc, 0x44, 0x94, 0x94, 0x8d, 0x02, 0x62, 0x6f, 0xeb,
- 0x5a, 0xdd, 0x11, 0x8d, 0x28, 0x9a, 0x5c, 0x84, 0x90, 0x10, 0x7a, 0x0d,
- 0xbd, 0x74, 0x66, 0x2f, 0x6a, 0x38, 0xa0, 0xe2, 0xd5, 0x54, 0x44, 0xeb,
- 0x1d, 0x07, 0x9f, 0x07, 0xba, 0x6f, 0xee, 0xe9, 0xfd, 0x4e, 0x0b, 0x29,
- 0xf5, 0x3e, 0x84, 0xa0, 0x01, 0xf1, 0x9c, 0xab, 0xf8, 0x1c, 0x7e, 0x89,
- 0xa4, 0xe8, 0xa1, 0xd8, 0x71, 0x65, 0x0d, 0xa3, 0x51, 0x7b, 0xee, 0xbc,
- 0xd2, 0x22, 0x60, 0x0d, 0xb9, 0x5b, 0x9d, 0xdf, 0xba, 0xfc, 0x51, 0x5b,
- 0x0b, 0xaf, 0x98, 0xb2, 0xe9, 0x2e, 0xe9, 0x04, 0xe8, 0x62, 0x87, 0xde,
- 0x2b, 0xc8, 0xd7, 0x4e, 0xc1, 0x4c, 0x64, 0x1e, 0xdd, 0xcf, 0x87, 0x58,
- 0xba, 0x4a, 0x4f, 0xca, 0x68, 0x07, 0x1d, 0x1c, 0x9d, 0x4a, 0xc6, 0xd5,
- 0x2f, 0x91, 0xcc, 0x7c, 0x71, 0x72, 0x1c, 0xc5, 0xc0, 0x67, 0xeb, 0x32,
- 0xfd, 0xc9, 0x92, 0x5c, 0x94, 0xda, 0x85, 0xc0, 0x9b, 0xbf, 0x53, 0x7d,
- 0x2b, 0x09, 0xf4, 0x8c, 0x9d, 0x91, 0x1f, 0x97, 0x6a, 0x52, 0xcb, 0xde,
- 0x09, 0x36, 0xa4, 0x77, 0xd8, 0x7b, 0x87, 0x50, 0x44, 0xd5, 0x3e, 0x6e,
- 0x29, 0x69, 0xfb, 0x39, 0x49, 0x26, 0x1e, 0x09, 0xa5, 0x80, 0x7b, 0x40,
- 0x2d, 0xeb, 0xe8, 0x27, 0x85, 0xc9, 0xfe, 0x61, 0xfd, 0x7e, 0xe6, 0x7c,
- 0x97, 0x1d, 0xd5, 0x9d, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x81, 0xc2,
- 0x30, 0x81, 0xbf, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01,
- 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x3b, 0x06, 0x03,
- 0x55, 0x1d, 0x20, 0x04, 0x34, 0x30, 0x32, 0x30, 0x30, 0x06, 0x04, 0x55,
- 0x1d, 0x20, 0x00, 0x30, 0x28, 0x30, 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01,
- 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x73,
- 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74,
- 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x0e, 0x06,
- 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01,
- 0x06, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14,
- 0x7b, 0x5b, 0x45, 0xcf, 0xaf, 0xce, 0xcb, 0x7a, 0xfd, 0x31, 0x92, 0x1a,
- 0x6a, 0xb6, 0xf3, 0x46, 0xeb, 0x57, 0x48, 0x50, 0x30, 0x40, 0x06, 0x03,
- 0x55, 0x1d, 0x1f, 0x04, 0x39, 0x30, 0x37, 0x30, 0x35, 0xa0, 0x33, 0xa0,
- 0x31, 0x86, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72,
- 0x6c, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6d,
- 0x2f, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x50, 0x72, 0x65, 0x6d, 0x69,
- 0x75, 0x6d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x41, 0x2e, 0x63,
- 0x72, 0x6c, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
- 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x84, 0xa8, 0x4c,
- 0xc9, 0x3e, 0x2a, 0xbc, 0x9a, 0xe2, 0xcc, 0x8f, 0x0b, 0xb2, 0x25, 0x77,
- 0xc4, 0x61, 0x89, 0x89, 0x63, 0x5a, 0xd4, 0xa3, 0x15, 0x40, 0xd4, 0xfb,
- 0x5e, 0x3f, 0xb4, 0x43, 0xea, 0x63, 0x17, 0x2b, 0x6b, 0x99, 0x74, 0x9e,
- 0x09, 0xa8, 0xdd, 0xd4, 0x56, 0x15, 0x2e, 0x7a, 0x79, 0x31, 0x5f, 0x63,
- 0x96, 0x53, 0x1b, 0x34, 0xd9, 0x15, 0xea, 0x4f, 0x6d, 0x70, 0xca, 0xbe,
- 0xf6, 0x82, 0xa9, 0xed, 0xda, 0x85, 0x77, 0xcc, 0x76, 0x1c, 0x6a, 0x81,
- 0x0a, 0x21, 0xd8, 0x41, 0x99, 0x7f, 0x5e, 0x2e, 0x82, 0xc1, 0xe8, 0xaa,
- 0xf7, 0x93, 0x81, 0x05, 0xaa, 0x92, 0xb4, 0x1f, 0xb7, 0x9a, 0xc0, 0x07,
- 0x17, 0xf5, 0xcb, 0xc6, 0xb4, 0x4c, 0x0e, 0xd7, 0x56, 0xdc, 0x71, 0x20,
- 0x74, 0x38, 0xd6, 0x74, 0xc6, 0xd6, 0x8f, 0x6b, 0xaf, 0x8b, 0x8d, 0xa0,
- 0x6c, 0x29, 0x0b, 0x61, 0xe0,
-}
-
-var certSet3Cert7 = []byte{
- 0x30, 0x82, 0x04, 0x49, 0x30, 0x82, 0x03, 0x31, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x13, 0x06, 0x7f, 0x94, 0x57, 0x85, 0x87, 0xe8, 0xac, 0x77,
- 0xde, 0xb2, 0x53, 0x32, 0x5b, 0xbc, 0x99, 0x8b, 0x56, 0x0d, 0x30, 0x0d,
- 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05,
- 0x00, 0x30, 0x39, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,
- 0x13, 0x02, 0x55, 0x53, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x03, 0x55, 0x04,
- 0x0a, 0x13, 0x06, 0x41, 0x6d, 0x61, 0x7a, 0x6f, 0x6e, 0x31, 0x19, 0x30,
- 0x17, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x10, 0x41, 0x6d, 0x61, 0x7a,
- 0x6f, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x31,
- 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x35, 0x31, 0x30, 0x32, 0x32, 0x30, 0x30,
- 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x35, 0x31, 0x30, 0x31,
- 0x39, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x46, 0x31, 0x0b,
- 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31,
- 0x0f, 0x30, 0x0d, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x06, 0x41, 0x6d,
- 0x61, 0x7a, 0x6f, 0x6e, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04,
- 0x0b, 0x13, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x41,
- 0x20, 0x31, 0x42, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x03, 0x55, 0x04, 0x03,
- 0x13, 0x06, 0x41, 0x6d, 0x61, 0x7a, 0x6f, 0x6e, 0x30, 0x82, 0x01, 0x22,
- 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
- 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a,
- 0x02, 0x82, 0x01, 0x01, 0x00, 0xc2, 0x4e, 0x16, 0x67, 0xdd, 0xce, 0xbc,
- 0x6a, 0xc8, 0x37, 0x5a, 0xec, 0x3a, 0x30, 0xb0, 0x1d, 0xe6, 0xd1, 0x12,
- 0xe8, 0x12, 0x28, 0x48, 0xcc, 0xe8, 0x29, 0xc1, 0xb9, 0x6e, 0x53, 0xd5,
- 0xa3, 0xeb, 0x03, 0x39, 0x1a, 0xcc, 0x77, 0x87, 0xf6, 0x01, 0xb9, 0xd9,
- 0x70, 0xcc, 0xcf, 0x6b, 0x8d, 0xe3, 0xe3, 0x03, 0x71, 0x86, 0x99, 0x6d,
- 0xcb, 0xa6, 0x94, 0x2a, 0x4e, 0x13, 0xd6, 0xa7, 0xbd, 0x04, 0xec, 0x0a,
- 0x16, 0x3c, 0x0a, 0xeb, 0x39, 0xb1, 0xc4, 0xb5, 0x58, 0xa3, 0xb6, 0xc7,
- 0x56, 0x25, 0xec, 0x3e, 0x52, 0x7a, 0xa8, 0xe3, 0x29, 0x16, 0x07, 0xb9,
- 0x6e, 0x50, 0xcf, 0xfb, 0x5f, 0x31, 0xf8, 0x1d, 0xba, 0x03, 0x4a, 0x62,
- 0x89, 0x03, 0xae, 0x3e, 0x47, 0xf2, 0x0f, 0x27, 0x91, 0xe3, 0x14, 0x20,
- 0x85, 0xf8, 0xfa, 0xe9, 0x8a, 0x35, 0xf5, 0x5f, 0x9e, 0x99, 0x4d, 0xe7,
- 0x6b, 0x37, 0xef, 0xa4, 0x50, 0x3e, 0x44, 0xec, 0xfa, 0x5a, 0x85, 0x66,
- 0x07, 0x9c, 0x7e, 0x17, 0x6a, 0x55, 0xf3, 0x17, 0x8a, 0x35, 0x1e, 0xee,
- 0xe9, 0xac, 0xc3, 0x75, 0x4e, 0x58, 0x55, 0x7d, 0x53, 0x6b, 0x0a, 0x6b,
- 0x9b, 0x14, 0x42, 0xd7, 0xe5, 0xac, 0x01, 0x89, 0xb3, 0xea, 0xa3, 0xfe,
- 0xcf, 0xc0, 0x2b, 0x0c, 0x84, 0xc2, 0xd8, 0x53, 0x15, 0xcb, 0x67, 0xf0,
- 0xd0, 0x88, 0xca, 0x3a, 0xd1, 0x17, 0x73, 0xf5, 0x5f, 0x9a, 0xd4, 0xc5,
- 0x72, 0x1e, 0x7e, 0x01, 0xf1, 0x98, 0x30, 0x63, 0x2a, 0xaa, 0xf2, 0x7a,
- 0x2d, 0xc5, 0xe2, 0x02, 0x1a, 0x86, 0xe5, 0x32, 0x3e, 0x0e, 0xbd, 0x11,
- 0xb4, 0xcf, 0x3c, 0x93, 0xef, 0x17, 0x50, 0x10, 0x9e, 0x43, 0xc2, 0x06,
- 0x2a, 0xe0, 0x0d, 0x68, 0xbe, 0xd3, 0x88, 0x8b, 0x4a, 0x65, 0x8c, 0x4a,
- 0xd4, 0xc3, 0x2e, 0x4c, 0x9b, 0x55, 0xf4, 0x86, 0xe5, 0x02, 0x03, 0x01,
- 0x00, 0x01, 0xa3, 0x82, 0x01, 0x3b, 0x30, 0x82, 0x01, 0x37, 0x30, 0x12,
- 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06,
- 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d,
- 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 0x1d,
- 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x59, 0xa4, 0x66,
- 0x06, 0x52, 0xa0, 0x7b, 0x95, 0x92, 0x3c, 0xa3, 0x94, 0x07, 0x27, 0x96,
- 0x74, 0x5b, 0xf9, 0x3d, 0xd0, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23,
- 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x84, 0x18, 0xcc, 0x85, 0x34, 0xec,
- 0xbc, 0x0c, 0x94, 0x94, 0x2e, 0x08, 0x59, 0x9c, 0xc7, 0xb2, 0x10, 0x4e,
- 0x0a, 0x08, 0x30, 0x7b, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07,
- 0x01, 0x01, 0x04, 0x6f, 0x30, 0x6d, 0x30, 0x2f, 0x06, 0x08, 0x2b, 0x06,
- 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x23, 0x68, 0x74, 0x74, 0x70,
- 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x72, 0x6f, 0x6f, 0x74,
- 0x63, 0x61, 0x31, 0x2e, 0x61, 0x6d, 0x61, 0x7a, 0x6f, 0x6e, 0x74, 0x72,
- 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x3a, 0x06, 0x08, 0x2b,
- 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x2e, 0x68, 0x74, 0x74,
- 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x74, 0x2e, 0x72, 0x6f, 0x6f, 0x74,
- 0x63, 0x61, 0x31, 0x2e, 0x61, 0x6d, 0x61, 0x7a, 0x6f, 0x6e, 0x74, 0x72,
- 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x6f, 0x6f, 0x74,
- 0x63, 0x61, 0x31, 0x2e, 0x63, 0x65, 0x72, 0x30, 0x3f, 0x06, 0x03, 0x55,
- 0x1d, 0x1f, 0x04, 0x38, 0x30, 0x36, 0x30, 0x34, 0xa0, 0x32, 0xa0, 0x30,
- 0x86, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c,
- 0x2e, 0x72, 0x6f, 0x6f, 0x74, 0x63, 0x61, 0x31, 0x2e, 0x61, 0x6d, 0x61,
- 0x7a, 0x6f, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d,
- 0x2f, 0x72, 0x6f, 0x6f, 0x74, 0x63, 0x61, 0x31, 0x2e, 0x63, 0x72, 0x6c,
- 0x30, 0x13, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x0c, 0x30, 0x0a, 0x30,
- 0x08, 0x06, 0x06, 0x67, 0x81, 0x0c, 0x01, 0x02, 0x01, 0x30, 0x0d, 0x06,
- 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00,
- 0x03, 0x82, 0x01, 0x01, 0x00, 0x85, 0x92, 0xbe, 0x35, 0xbb, 0x79, 0xcf,
- 0xa3, 0x81, 0x42, 0x1c, 0xe4, 0xe3, 0x63, 0x73, 0x53, 0x39, 0x52, 0x35,
- 0xe7, 0xd1, 0xad, 0xfd, 0xae, 0x99, 0x8a, 0xac, 0x89, 0x12, 0x2f, 0xbb,
- 0xe7, 0x6f, 0x9a, 0xd5, 0x4e, 0x72, 0xea, 0x20, 0x30, 0x61, 0xf9, 0x97,
- 0xb2, 0xcd, 0xa5, 0x27, 0x02, 0x45, 0xa8, 0xca, 0x76, 0x3e, 0x98, 0x4a,
- 0x83, 0x9e, 0xb6, 0xe6, 0x45, 0xe0, 0xf2, 0x43, 0xf6, 0x08, 0xde, 0x6d,
- 0xe8, 0x6e, 0xdb, 0x31, 0x07, 0x13, 0xf0, 0x2f, 0x31, 0x0d, 0x93, 0x6d,
- 0x61, 0x37, 0x7b, 0x58, 0xf0, 0xfc, 0x51, 0x98, 0x91, 0x28, 0x02, 0x4f,
- 0x05, 0x76, 0xb7, 0xd3, 0xf0, 0x1b, 0xc2, 0xe6, 0x5e, 0xd0, 0x66, 0x85,
- 0x11, 0x0f, 0x2e, 0x81, 0xc6, 0x10, 0x81, 0x29, 0xfe, 0x20, 0x60, 0x48,
- 0xf3, 0xf2, 0xf0, 0x84, 0x13, 0x53, 0x65, 0x35, 0x15, 0x11, 0x6b, 0x82,
- 0x51, 0x40, 0x55, 0x57, 0x5f, 0x18, 0xb5, 0xb0, 0x22, 0x3e, 0xad, 0xf2,
- 0x5e, 0xa3, 0x01, 0xe3, 0xc3, 0xb3, 0xf9, 0xcb, 0x41, 0x5a, 0xe6, 0x52,
- 0x91, 0xbb, 0xe4, 0x36, 0x87, 0x4f, 0x2d, 0xa9, 0xa4, 0x07, 0x68, 0x35,
- 0xba, 0x94, 0x72, 0xcd, 0x0e, 0xea, 0x0e, 0x7d, 0x57, 0xf2, 0x79, 0xfc,
- 0x37, 0xc5, 0x7b, 0x60, 0x9e, 0xb2, 0xeb, 0xc0, 0x2d, 0x90, 0x77, 0x0d,
- 0x49, 0x10, 0x27, 0xa5, 0x38, 0xad, 0xc4, 0x12, 0xa3, 0xb4, 0xa3, 0xc8,
- 0x48, 0xb3, 0x15, 0x0b, 0x1e, 0xe2, 0xe2, 0x19, 0xdc, 0xc4, 0x76, 0x52,
- 0xc8, 0xbc, 0x8a, 0x41, 0x78, 0x70, 0xd9, 0x6d, 0x97, 0xb3, 0x4a, 0x8b,
- 0x78, 0x2d, 0x5e, 0xb4, 0x0f, 0xa3, 0x4c, 0x60, 0xca, 0xe1, 0x47, 0xcb,
- 0x78, 0x2d, 0x12, 0x17, 0xb1, 0x52, 0x8b, 0xca, 0x39, 0x2c, 0xbd, 0xb5,
- 0x2f, 0xc2, 0x33, 0x02, 0x96, 0xab, 0xda, 0x94, 0x7f,
-}
-
-var certSet3Cert8 = []byte{
- 0x30, 0x82, 0x04, 0x4d, 0x30, 0x82, 0x03, 0x35, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x03, 0x02, 0x3a, 0x71, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
- 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x42, 0x31,
- 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53,
- 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47,
- 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e,
- 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x47,
- 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62,
- 0x61, 0x6c, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31,
- 0x32, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x35, 0x31, 0x5a, 0x17, 0x0d,
- 0x32, 0x32, 0x30, 0x35, 0x32, 0x30, 0x32, 0x33, 0x34, 0x35, 0x35, 0x31,
- 0x5a, 0x30, 0x42, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,
- 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04,
- 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20,
- 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04,
- 0x03, 0x13, 0x12, 0x52, 0x61, 0x70, 0x69, 0x64, 0x53, 0x53, 0x4c, 0x20,
- 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01,
- 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01,
- 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01,
- 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xbb, 0x58, 0xc1, 0x12, 0x01, 0x2e,
- 0x97, 0xd8, 0x7d, 0x18, 0xaa, 0xc8, 0xc2, 0xe5, 0x85, 0xe2, 0x17, 0x6c,
- 0x60, 0x2e, 0xc9, 0x8d, 0x31, 0x05, 0x39, 0x1a, 0x06, 0x98, 0x56, 0xdd,
- 0x54, 0xd7, 0x11, 0x8c, 0x59, 0x5b, 0x3d, 0xb1, 0x54, 0xae, 0x4b, 0x21,
- 0x85, 0x32, 0x16, 0x5f, 0x54, 0x86, 0xe6, 0xd9, 0xb1, 0xd8, 0x60, 0x89,
- 0x6b, 0x58, 0xbe, 0x72, 0xda, 0xa0, 0x00, 0x42, 0x76, 0xb1, 0x27, 0x59,
- 0x4c, 0xcd, 0xe3, 0xba, 0xd4, 0x5c, 0xd9, 0xa6, 0x7f, 0xbb, 0x2b, 0x75,
- 0xd5, 0x46, 0x44, 0xbd, 0xec, 0x40, 0x5c, 0x59, 0xb7, 0xdd, 0x59, 0x9f,
- 0xf1, 0x6a, 0xf7, 0x06, 0xfc, 0xd6, 0x2f, 0x19, 0x8a, 0x95, 0x12, 0xba,
- 0x9a, 0xca, 0xd5, 0x30, 0xd2, 0x38, 0xfc, 0x19, 0x3b, 0x5b, 0x15, 0x3b,
- 0x36, 0xd0, 0x43, 0x4d, 0xd1, 0x65, 0xa1, 0xd4, 0x8b, 0xc1, 0x60, 0x41,
- 0xb3, 0xd6, 0x70, 0x17, 0xcc, 0x39, 0xc0, 0x9c, 0x0c, 0xa0, 0x3d, 0xb7,
- 0x11, 0x22, 0x4e, 0xce, 0xd9, 0xa9, 0x7a, 0xd2, 0x2a, 0x62, 0x9c, 0xa0,
- 0x0b, 0x4e, 0x2a, 0xd7, 0xc3, 0x61, 0x5a, 0x85, 0xdd, 0x5c, 0x10, 0xb9,
- 0x54, 0x3d, 0x2d, 0x03, 0xf8, 0x49, 0xf0, 0xbc, 0x92, 0xb7, 0xb7, 0x9c,
- 0x31, 0xc7, 0xe9, 0xb8, 0xaa, 0x82, 0x0b, 0x05, 0xb9, 0x31, 0xcd, 0x08,
- 0x5b, 0xbb, 0x22, 0x0b, 0xf6, 0x9c, 0x8e, 0x8a, 0x55, 0x1c, 0x76, 0x43,
- 0x76, 0xf0, 0xe2, 0x6e, 0xf0, 0xdf, 0xa8, 0x29, 0x75, 0xe7, 0xc8, 0xa4,
- 0x87, 0x8b, 0x6a, 0xf1, 0xbb, 0x08, 0xc9, 0x36, 0x18, 0x65, 0xee, 0x50,
- 0x43, 0xb8, 0x5d, 0x72, 0xd5, 0x28, 0x39, 0xe1, 0x53, 0x3e, 0x25, 0x2c,
- 0xda, 0x2b, 0x4f, 0xdd, 0x8a, 0x9e, 0x50, 0x50, 0xe0, 0x6f, 0x9a, 0xc4,
- 0xd5, 0x19, 0x26, 0x89, 0x01, 0x75, 0x73, 0x09, 0x9b, 0x3b, 0x02, 0x03,
- 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x4a, 0x30, 0x82, 0x01, 0x46, 0x30,
- 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14,
- 0xc0, 0x7a, 0x98, 0x68, 0x8d, 0x89, 0xfb, 0xab, 0x05, 0x64, 0x0c, 0x11,
- 0x7d, 0xaa, 0x7d, 0x65, 0xb8, 0xca, 0xcc, 0x4e, 0x30, 0x1d, 0x06, 0x03,
- 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x97, 0xc2, 0x27, 0x50, 0x9e,
- 0xc2, 0xc9, 0xec, 0x0c, 0x88, 0x32, 0xc8, 0x7c, 0xad, 0xe2, 0xa6, 0x01,
- 0x4f, 0xda, 0x6f, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01,
- 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30,
- 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03,
- 0x02, 0x01, 0x06, 0x30, 0x36, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2f,
- 0x30, 0x2d, 0x30, 0x2b, 0xa0, 0x29, 0xa0, 0x27, 0x86, 0x25, 0x68, 0x74,
- 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x31, 0x2e, 0x73, 0x79, 0x6d, 0x63,
- 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x72, 0x6c, 0x73, 0x2f, 0x67,
- 0x74, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x63, 0x72, 0x6c, 0x30,
- 0x2f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04,
- 0x23, 0x30, 0x21, 0x30, 0x1f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
- 0x07, 0x30, 0x01, 0x86, 0x13, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f,
- 0x67, 0x32, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
- 0x30, 0x4c, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x45, 0x30, 0x43, 0x30,
- 0x41, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, 0x07,
- 0x36, 0x30, 0x33, 0x30, 0x31, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
- 0x07, 0x02, 0x01, 0x16, 0x25, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f,
- 0x77, 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74,
- 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
- 0x65, 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x29, 0x06, 0x03, 0x55, 0x1d,
- 0x11, 0x04, 0x22, 0x30, 0x20, 0xa4, 0x1e, 0x30, 0x1c, 0x31, 0x1a, 0x30,
- 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x11, 0x53, 0x79, 0x6d, 0x61,
- 0x6e, 0x74, 0x65, 0x63, 0x50, 0x4b, 0x49, 0x2d, 0x31, 0x2d, 0x35, 0x36,
- 0x39, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01,
- 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x35, 0xeb, 0xe1,
- 0x8b, 0x20, 0x56, 0x94, 0xba, 0x7a, 0xbd, 0x79, 0xa9, 0xf6, 0xe3, 0xfe,
- 0x6e, 0x38, 0xb4, 0x32, 0xc1, 0xa3, 0xdb, 0x58, 0x56, 0x20, 0x3e, 0x7d,
- 0xc7, 0x3a, 0xb1, 0x67, 0x69, 0xd5, 0x79, 0x14, 0x1b, 0xf6, 0xfa, 0xec,
- 0x60, 0xf2, 0x79, 0xcd, 0x0a, 0x0c, 0x60, 0x8a, 0x74, 0x4c, 0xa3, 0x93,
- 0x2a, 0xa0, 0xf0, 0x51, 0x7f, 0xcd, 0xe9, 0xf9, 0x92, 0xfd, 0x96, 0xab,
- 0x45, 0xf5, 0x62, 0x3d, 0x3f, 0x60, 0x46, 0x50, 0x13, 0x3d, 0x20, 0x13,
- 0x18, 0x2e, 0x94, 0x46, 0xae, 0xd5, 0x21, 0xfe, 0x43, 0xa1, 0xc9, 0x23,
- 0xfe, 0x53, 0xc4, 0xbf, 0x1a, 0xd8, 0xac, 0x3a, 0xca, 0xde, 0x66, 0x97,
- 0x23, 0xae, 0xd3, 0xdf, 0x4a, 0x4d, 0x73, 0x1f, 0x6f, 0x31, 0xa2, 0x51,
- 0x04, 0x16, 0x6a, 0x00, 0xeb, 0xf9, 0x8d, 0x43, 0x81, 0xf0, 0x50, 0xa1,
- 0x1f, 0xa6, 0xca, 0x3a, 0xf3, 0x28, 0x3c, 0x5f, 0x51, 0xac, 0xd7, 0x0a,
- 0x45, 0x77, 0x4b, 0x0e, 0x52, 0x62, 0x1b, 0xd8, 0x38, 0x51, 0xa0, 0x92,
- 0x2d, 0x3f, 0x90, 0x6e, 0xc8, 0x7e, 0x40, 0x9f, 0x20, 0x46, 0x15, 0x5d,
- 0xe0, 0x50, 0x7c, 0xe1, 0x76, 0xaf, 0x5e, 0xed, 0x11, 0xd3, 0x2f, 0x13,
- 0xb9, 0xb8, 0x25, 0xa4, 0xaf, 0x58, 0x09, 0xaf, 0x35, 0xb4, 0x62, 0x54,
- 0x85, 0xe3, 0x48, 0xde, 0xbc, 0xd2, 0x90, 0x7a, 0x7a, 0xa4, 0x84, 0x0d,
- 0xa3, 0x42, 0xf2, 0x51, 0xc0, 0xd4, 0xad, 0x53, 0x65, 0x5d, 0x6c, 0xf8,
- 0x3f, 0x1f, 0x06, 0xf2, 0x4f, 0xcb, 0x97, 0xa0, 0x4a, 0x59, 0xc6, 0x78,
- 0xd1, 0xe8, 0x03, 0xb9, 0x85, 0x6d, 0x2c, 0xba, 0xe1, 0x5f, 0xb6, 0xad,
- 0x2b, 0x3e, 0x25, 0x79, 0xc5, 0x8b, 0x56, 0xd5, 0xe3, 0x09, 0x80, 0xea,
- 0xc1, 0x27, 0xc2, 0xd9, 0x0e, 0xec, 0x47, 0x0a, 0xe9, 0xd0, 0xca, 0xfc,
- 0xd8,
-}
-
-var certSet3Cert9 = []byte{
- 0x30, 0x82, 0x04, 0x4d, 0x30, 0x82, 0x03, 0x35, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x0b, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x44, 0x4e, 0xf0,
- 0x36, 0x31, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
- 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x57, 0x31, 0x0b, 0x30, 0x09, 0x06,
- 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x42, 0x45, 0x31, 0x19, 0x30, 0x17,
- 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x10, 0x47, 0x6c, 0x6f, 0x62, 0x61,
- 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x6e, 0x76, 0x2d, 0x73, 0x61, 0x31,
- 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x07, 0x52, 0x6f,
- 0x6f, 0x74, 0x20, 0x43, 0x41, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55,
- 0x04, 0x03, 0x13, 0x12, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69,
- 0x67, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x30, 0x1e,
- 0x17, 0x0d, 0x31, 0x34, 0x30, 0x32, 0x32, 0x30, 0x31, 0x30, 0x30, 0x30,
- 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x34, 0x30, 0x32, 0x32, 0x30, 0x31,
- 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x4c, 0x31, 0x0b, 0x30, 0x09,
- 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x42, 0x45, 0x31, 0x19, 0x30,
- 0x17, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x10, 0x47, 0x6c, 0x6f, 0x62,
- 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x6e, 0x76, 0x2d, 0x73, 0x61,
- 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x19, 0x41,
- 0x6c, 0x70, 0x68, 0x61, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, 0x20, 0x2d,
- 0x20, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x20, 0x2d, 0x20, 0x47, 0x32,
- 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
- 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00,
- 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xda, 0x01, 0xec,
- 0xe4, 0xec, 0x73, 0x60, 0xfb, 0x7e, 0x8f, 0x6a, 0xb7, 0xc6, 0x17, 0xe3,
- 0x92, 0x64, 0x32, 0xd4, 0xac, 0x00, 0xd9, 0xa2, 0x0f, 0xb9, 0xed, 0xee,
- 0x6b, 0x8a, 0x86, 0xca, 0x92, 0x67, 0xd9, 0x74, 0xd7, 0x5d, 0x47, 0x02,
- 0x3c, 0x8f, 0x40, 0xd6, 0x9e, 0x6d, 0x14, 0xcd, 0xc3, 0xda, 0x29, 0x39,
- 0xa7, 0x0f, 0x05, 0x0a, 0x68, 0xa2, 0x66, 0x1a, 0x1e, 0xc4, 0xb2, 0x8b,
- 0x76, 0x58, 0xe5, 0xab, 0x5d, 0x1d, 0x8f, 0x40, 0xb3, 0x39, 0x8b, 0xef,
- 0x1e, 0x83, 0x7d, 0x22, 0xd0, 0xe3, 0xa9, 0x00, 0x2e, 0xec, 0x53, 0xcf,
- 0x62, 0x19, 0x85, 0x44, 0x28, 0x4c, 0xc0, 0x27, 0xcb, 0x7b, 0x0e, 0xec,
- 0x10, 0x64, 0x00, 0x10, 0xa4, 0x05, 0xcc, 0xa0, 0x72, 0xbe, 0x41, 0x6c,
- 0x31, 0x5b, 0x48, 0xe4, 0xb1, 0xec, 0xb9, 0x23, 0xeb, 0x55, 0x4d, 0xd0,
- 0x7d, 0x62, 0x4a, 0xa5, 0xb4, 0xa5, 0xa4, 0x59, 0x85, 0xc5, 0x25, 0x91,
- 0xa6, 0xfe, 0xa6, 0x09, 0x9f, 0x06, 0x10, 0x6d, 0x8f, 0x81, 0x0c, 0x64,
- 0x40, 0x5e, 0x73, 0x00, 0x9a, 0xe0, 0x2e, 0x65, 0x98, 0x54, 0x10, 0x00,
- 0x70, 0x98, 0xc8, 0xe1, 0xed, 0x34, 0x5f, 0xd8, 0x9c, 0xc7, 0x0d, 0xc0,
- 0xd6, 0x23, 0x59, 0x45, 0xfc, 0xfe, 0x55, 0x7a, 0x86, 0xee, 0x94, 0x60,
- 0x22, 0xf1, 0xae, 0xd1, 0xe6, 0x55, 0x46, 0xf6, 0x99, 0xc5, 0x1b, 0x08,
- 0x74, 0x5f, 0xac, 0xb0, 0x64, 0x84, 0x8f, 0x89, 0x38, 0x1c, 0xa1, 0xa7,
- 0x90, 0x21, 0x4f, 0x02, 0x6e, 0xbd, 0xe0, 0x61, 0x67, 0xd4, 0xf8, 0x42,
- 0x87, 0x0f, 0x0a, 0xf7, 0xc9, 0x04, 0x6d, 0x2a, 0xa9, 0x2f, 0xef, 0x42,
- 0xa5, 0xdf, 0xdd, 0xa3, 0x53, 0xdb, 0x98, 0x1e, 0x81, 0xf9, 0x9a, 0x72,
- 0x7b, 0x5a, 0xde, 0x4f, 0x3e, 0x7f, 0xa2, 0x58, 0xa0, 0xe2, 0x17, 0xad,
- 0x67, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x23, 0x30, 0x82,
- 0x01, 0x1f, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff,
- 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d,
- 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02,
- 0x01, 0x00, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04,
- 0x14, 0xf5, 0xcd, 0xd5, 0x3c, 0x08, 0x50, 0xf9, 0x6a, 0x4f, 0x3a, 0xb7,
- 0x97, 0xda, 0x56, 0x83, 0xe6, 0x69, 0xd2, 0x68, 0xf7, 0x30, 0x45, 0x06,
- 0x03, 0x55, 0x1d, 0x20, 0x04, 0x3e, 0x30, 0x3c, 0x30, 0x3a, 0x06, 0x04,
- 0x55, 0x1d, 0x20, 0x00, 0x30, 0x32, 0x30, 0x30, 0x06, 0x08, 0x2b, 0x06,
- 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x24, 0x68, 0x74, 0x74, 0x70,
- 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x61, 0x6c, 0x70, 0x68,
- 0x61, 0x73, 0x73, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70,
- 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x30, 0x33, 0x06, 0x03,
- 0x55, 0x1d, 0x1f, 0x04, 0x2c, 0x30, 0x2a, 0x30, 0x28, 0xa0, 0x26, 0xa0,
- 0x24, 0x86, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72,
- 0x6c, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x73, 0x69, 0x67, 0x6e,
- 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x72,
- 0x6c, 0x30, 0x3d, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01,
- 0x01, 0x04, 0x31, 0x30, 0x2f, 0x30, 0x2d, 0x06, 0x08, 0x2b, 0x06, 0x01,
- 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x21, 0x68, 0x74, 0x74, 0x70, 0x3a,
- 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61,
- 0x6c, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x6f,
- 0x6f, 0x74, 0x72, 0x31, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04,
- 0x18, 0x30, 0x16, 0x80, 0x14, 0x60, 0x7b, 0x66, 0x1a, 0x45, 0x0d, 0x97,
- 0xca, 0x89, 0x50, 0x2f, 0x7d, 0x04, 0xcd, 0x34, 0xa8, 0xff, 0xfc, 0xfd,
- 0x4b, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01,
- 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x60, 0x40, 0x68,
- 0x16, 0x47, 0xe7, 0x16, 0x8d, 0xdb, 0x5c, 0xa1, 0x56, 0x2a, 0xcb, 0xf4,
- 0x5c, 0x9b, 0xb0, 0x1e, 0xa2, 0x4b, 0xf5, 0xcb, 0x02, 0x3f, 0xf8, 0x0b,
- 0xa1, 0xf2, 0xa7, 0x42, 0xd4, 0xb7, 0x4c, 0xeb, 0xe3, 0x66, 0x80, 0xf3,
- 0x25, 0x43, 0x78, 0x2e, 0x1b, 0x17, 0x56, 0x07, 0x52, 0x18, 0xcb, 0xd1,
- 0xa8, 0xec, 0xe6, 0xfb, 0x73, 0x3e, 0xa4, 0x62, 0x8c, 0x80, 0xb4, 0xd2,
- 0xc5, 0x12, 0x73, 0xa3, 0xd3, 0xfa, 0x02, 0x38, 0xbe, 0x63, 0x3d, 0x84,
- 0xb8, 0x99, 0xc1, 0xf1, 0xba, 0xf7, 0x9f, 0xc3, 0x40, 0xd1, 0x58, 0x18,
- 0x53, 0xc1, 0x62, 0xdd, 0xaf, 0x18, 0x42, 0x7f, 0x34, 0x4e, 0xc5, 0x43,
- 0xd5, 0x71, 0xb0, 0x30, 0x00, 0xc7, 0xe3, 0x90, 0xae, 0x3f, 0x57, 0x86,
- 0x97, 0xce, 0xea, 0x0c, 0x12, 0x8e, 0x22, 0x70, 0xe3, 0x66, 0xa7, 0x54,
- 0x7f, 0x2e, 0x28, 0xcb, 0xd4, 0x54, 0xd0, 0xb3, 0x1e, 0x62, 0x67, 0x08,
- 0xf9, 0x27, 0xe1, 0xcb, 0xe3, 0x66, 0xb8, 0x24, 0x1b, 0x89, 0x6a, 0x89,
- 0x44, 0x65, 0xf2, 0xd9, 0x4c, 0xd2, 0x58, 0x1c, 0x8c, 0x4e, 0xc0, 0x95,
- 0xa1, 0xd4, 0xef, 0x67, 0x2f, 0x38, 0x20, 0xe8, 0x2e, 0xff, 0x96, 0x51,
- 0xf0, 0xba, 0xd8, 0x3d, 0x92, 0x70, 0x47, 0x65, 0x1c, 0x9e, 0x73, 0x72,
- 0xb4, 0x60, 0x0c, 0x5c, 0xe2, 0xd1, 0x73, 0x76, 0xe0, 0xaf, 0x4e, 0xe2,
- 0xe5, 0x37, 0xa5, 0x45, 0x2f, 0x8a, 0x23, 0x3e, 0x87, 0xc7, 0x30, 0xe6,
- 0x31, 0x38, 0x7c, 0xf4, 0xdd, 0x52, 0xca, 0xf3, 0x53, 0x04, 0x25, 0x57,
- 0x56, 0x66, 0x94, 0xe8, 0x0b, 0xee, 0xe6, 0x03, 0x14, 0x4e, 0xee, 0xfd,
- 0x6d, 0x94, 0x64, 0x9e, 0x5e, 0xce, 0x79, 0xd4, 0xb2, 0xa6, 0xcf, 0x40,
- 0xb1, 0x44, 0xa8, 0x3e, 0x87, 0x19, 0x5e, 0xe9, 0xf8, 0x21, 0x16, 0x59,
- 0x53,
-}
-
-var certSet3Cert10 = []byte{
- 0x30, 0x82, 0x04, 0x4f, 0x30, 0x82, 0x03, 0x37, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x03, 0x02, 0x3a, 0x6f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
- 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x42, 0x31,
- 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53,
- 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47,
- 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e,
- 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x47,
- 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62,
- 0x61, 0x6c, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31,
- 0x31, 0x30, 0x35, 0x32, 0x31, 0x33, 0x36, 0x35, 0x30, 0x5a, 0x17, 0x0d,
- 0x32, 0x32, 0x30, 0x35, 0x32, 0x30, 0x32, 0x31, 0x33, 0x36, 0x35, 0x30,
- 0x5a, 0x30, 0x44, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,
- 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04,
- 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20,
- 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x1d, 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04,
- 0x03, 0x13, 0x14, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20,
- 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x30,
- 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7,
- 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30,
- 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xe3, 0xbe, 0x7e, 0x0a,
- 0x86, 0xa3, 0xcf, 0x6b, 0x6d, 0x3d, 0x2b, 0xa1, 0x97, 0xad, 0x49, 0x24,
- 0x4d, 0xd7, 0x77, 0xb9, 0x34, 0x79, 0x08, 0xa5, 0x9e, 0xa2, 0x9e, 0xde,
- 0x47, 0x12, 0x92, 0x3d, 0x7e, 0xea, 0x19, 0x86, 0xb1, 0xe8, 0x4f, 0x3d,
- 0x5f, 0xf7, 0xd0, 0xa7, 0x77, 0x9a, 0x5b, 0x1f, 0x0a, 0x03, 0xb5, 0x19,
- 0x53, 0xdb, 0xa5, 0x21, 0x94, 0x69, 0x63, 0x9d, 0x6a, 0x4c, 0x91, 0x0c,
- 0x10, 0x47, 0xbe, 0x11, 0xfa, 0x6c, 0x86, 0x25, 0xb7, 0xab, 0x04, 0x68,
- 0x42, 0x38, 0x09, 0x65, 0xf0, 0x14, 0xda, 0x19, 0x9e, 0xfa, 0x6b, 0x0b,
- 0xab, 0x62, 0xef, 0x8d, 0xa7, 0xef, 0x63, 0x70, 0x23, 0xa8, 0xaf, 0x81,
- 0xf3, 0xd1, 0x6e, 0x88, 0x67, 0x53, 0xec, 0x12, 0xa4, 0x29, 0x75, 0x8a,
- 0xa7, 0xf2, 0x57, 0x3d, 0xa2, 0x83, 0x98, 0x97, 0xf2, 0x0a, 0x7d, 0xd4,
- 0xe7, 0x43, 0x6e, 0x30, 0x78, 0x62, 0x22, 0x59, 0x59, 0xb8, 0x71, 0x27,
- 0x45, 0xaa, 0x0f, 0x66, 0xc6, 0x55, 0x3f, 0xfa, 0x32, 0x17, 0x2b, 0x31,
- 0x8f, 0x46, 0xa0, 0xfa, 0x69, 0x14, 0x7c, 0x9d, 0x9f, 0x5a, 0xe2, 0xeb,
- 0x33, 0x4e, 0x10, 0xa6, 0xb3, 0xed, 0x77, 0x63, 0xd8, 0xc3, 0x9e, 0xf4,
- 0xdd, 0xdf, 0x79, 0x9a, 0x7a, 0xd4, 0xee, 0xde, 0xdd, 0x9a, 0xcc, 0xc3,
- 0xb7, 0xa9, 0x5d, 0xcc, 0x11, 0x3a, 0x07, 0xbb, 0x6f, 0x97, 0xa4, 0x01,
- 0x23, 0x47, 0x95, 0x1f, 0xa3, 0x77, 0xfa, 0x58, 0x92, 0xc6, 0xc7, 0xd0,
- 0xbd, 0xcf, 0x93, 0x18, 0x42, 0xb7, 0x7e, 0xf7, 0x9e, 0x65, 0xea, 0xd5,
- 0x3b, 0xca, 0xed, 0xac, 0xc5, 0x70, 0xa1, 0xfe, 0xd4, 0x10, 0x9a, 0xf0,
- 0x12, 0x04, 0x44, 0xac, 0x1a, 0x5b, 0x78, 0x50, 0x45, 0x57, 0x4c, 0x6f,
- 0xbd, 0x80, 0xcb, 0x81, 0x5c, 0x2d, 0xb3, 0xbc, 0x76, 0xa1, 0x1e, 0x65,
- 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x4a, 0x30, 0x82, 0x01,
- 0x46, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16,
- 0x80, 0x14, 0xc0, 0x7a, 0x98, 0x68, 0x8d, 0x89, 0xfb, 0xab, 0x05, 0x64,
- 0x0c, 0x11, 0x7d, 0xaa, 0x7d, 0x65, 0xb8, 0xca, 0xcc, 0x4e, 0x30, 0x1d,
- 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xd2, 0x6f, 0xf7,
- 0x96, 0xf4, 0x85, 0x3f, 0x72, 0x3c, 0x30, 0x7d, 0x23, 0xda, 0x85, 0x78,
- 0x9b, 0xa3, 0x7c, 0x5a, 0x7c, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13,
- 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01,
- 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04,
- 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x36, 0x06, 0x03, 0x55, 0x1d, 0x1f,
- 0x04, 0x2f, 0x30, 0x2d, 0x30, 0x2b, 0xa0, 0x29, 0xa0, 0x27, 0x86, 0x25,
- 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x31, 0x2e, 0x73, 0x79,
- 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x72, 0x6c, 0x73,
- 0x2f, 0x67, 0x74, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x63, 0x72,
- 0x6c, 0x30, 0x2f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01,
- 0x01, 0x04, 0x23, 0x30, 0x21, 0x30, 0x1f, 0x06, 0x08, 0x2b, 0x06, 0x01,
- 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x13, 0x68, 0x74, 0x74, 0x70, 0x3a,
- 0x2f, 0x2f, 0x67, 0x32, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63,
- 0x6f, 0x6d, 0x30, 0x4c, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x45, 0x30,
- 0x43, 0x30, 0x41, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45,
- 0x01, 0x07, 0x36, 0x30, 0x33, 0x30, 0x31, 0x06, 0x08, 0x2b, 0x06, 0x01,
- 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x25, 0x68, 0x74, 0x74, 0x70, 0x3a,
- 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75,
- 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75,
- 0x72, 0x63, 0x65, 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x29, 0x06, 0x03,
- 0x55, 0x1d, 0x11, 0x04, 0x22, 0x30, 0x20, 0xa4, 0x1e, 0x30, 0x1c, 0x31,
- 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x11, 0x53, 0x79,
- 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x50, 0x4b, 0x49, 0x2d, 0x31, 0x2d,
- 0x35, 0x33, 0x39, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7,
- 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0xa0,
- 0xd4, 0xf7, 0x2c, 0xfb, 0x74, 0x0b, 0x7f, 0x64, 0xf1, 0xcd, 0x43, 0x6a,
- 0x9f, 0x62, 0x53, 0x1c, 0x02, 0x7c, 0x98, 0x90, 0xa2, 0xee, 0x4f, 0x68,
- 0xd4, 0x20, 0x1a, 0x73, 0x12, 0x3e, 0x77, 0xb3, 0x50, 0xeb, 0x72, 0xbc,
- 0xee, 0x88, 0xbe, 0x7f, 0x17, 0xea, 0x77, 0x8f, 0x83, 0x61, 0x95, 0x4f,
- 0x84, 0xa1, 0xcb, 0x32, 0x4f, 0x6c, 0x21, 0xbe, 0xd2, 0x69, 0x96, 0x7d,
- 0x63, 0xbd, 0xdc, 0x2b, 0xa8, 0x1f, 0xd0, 0x13, 0x84, 0x70, 0xfe, 0xf6,
- 0x35, 0x95, 0x89, 0xf9, 0xa6, 0x77, 0xb0, 0x46, 0xc8, 0xbb, 0xb7, 0x13,
- 0xf5, 0xc9, 0x60, 0x69, 0xd6, 0x4c, 0xfe, 0xd2, 0x8e, 0xef, 0xd3, 0x60,
- 0xc1, 0x80, 0x80, 0xe1, 0xe7, 0xfb, 0x8b, 0x6f, 0x21, 0x79, 0x4a, 0xe0,
- 0xdc, 0xa9, 0x1b, 0xc1, 0xb7, 0xfb, 0xc3, 0x49, 0x59, 0x5c, 0xb5, 0x77,
- 0x07, 0x44, 0xd4, 0x97, 0xfc, 0x49, 0x00, 0x89, 0x6f, 0x06, 0x4e, 0x01,
- 0x70, 0x19, 0xac, 0x2f, 0x11, 0xc0, 0xe2, 0xe6, 0x0f, 0x2f, 0x86, 0x4b,
- 0x8d, 0x7b, 0xc3, 0xb9, 0xa7, 0x2e, 0xf4, 0xf1, 0xac, 0x16, 0x3e, 0x39,
- 0x49, 0x51, 0x9e, 0x17, 0x4b, 0x4f, 0x10, 0x3a, 0x5b, 0xa5, 0xa8, 0x92,
- 0x6f, 0xfd, 0xfa, 0xd6, 0x0b, 0x03, 0x4d, 0x47, 0x56, 0x57, 0x19, 0xf3,
- 0xcb, 0x6b, 0xf5, 0xf3, 0xd6, 0xcf, 0xb0, 0xf5, 0xf5, 0xa3, 0x11, 0xd2,
- 0x20, 0x53, 0x13, 0x34, 0x37, 0x05, 0x2c, 0x43, 0x5a, 0x63, 0xdf, 0x8d,
- 0x40, 0xd6, 0x85, 0x1e, 0x51, 0xe9, 0x51, 0x17, 0x1e, 0x03, 0x56, 0xc9,
- 0xf1, 0x30, 0xad, 0xe7, 0x9b, 0x11, 0xa2, 0xb9, 0xd0, 0x31, 0x81, 0x9b,
- 0x68, 0xb1, 0xd9, 0xe8, 0xf3, 0xe6, 0x94, 0x7e, 0xc7, 0xae, 0x13, 0x2f,
- 0x87, 0xed, 0xd0, 0x25, 0xb0, 0x68, 0xf9, 0xde, 0x08, 0x5a, 0xf3, 0x29,
- 0xcc, 0xd4, 0x92,
-}
-
-var certSet3Cert11 = []byte{
- 0x30, 0x82, 0x04, 0x59, 0x30, 0x82, 0x03, 0x41, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x03, 0x02, 0x3a, 0x63, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
- 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x42, 0x31,
- 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53,
- 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47,
- 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e,
- 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x47,
- 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62,
- 0x61, 0x6c, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x32, 0x30,
- 0x38, 0x32, 0x37, 0x32, 0x30, 0x34, 0x30, 0x34, 0x30, 0x5a, 0x17, 0x0d,
- 0x32, 0x32, 0x30, 0x35, 0x32, 0x30, 0x32, 0x30, 0x34, 0x30, 0x34, 0x30,
- 0x5a, 0x30, 0x44, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,
- 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04,
- 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20,
- 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x1d, 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04,
- 0x03, 0x13, 0x14, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20,
- 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30,
- 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7,
- 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30,
- 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xb9, 0x27, 0xf9, 0x4f,
- 0xd8, 0xf6, 0xb7, 0x15, 0x3f, 0x8f, 0xcd, 0xce, 0xd6, 0x8d, 0x1c, 0x6b,
- 0xfd, 0x7f, 0xda, 0x54, 0x21, 0x4e, 0x03, 0xd8, 0xca, 0xd0, 0x72, 0x52,
- 0x15, 0xb8, 0xc9, 0x82, 0x5b, 0x58, 0x79, 0x84, 0xff, 0x24, 0x72, 0x6f,
- 0xf2, 0x69, 0x7f, 0xbc, 0x96, 0xd9, 0x9a, 0x7a, 0xc3, 0x3e, 0xa9, 0xcf,
- 0x50, 0x22, 0x13, 0x0e, 0x86, 0x19, 0xdb, 0xe8, 0x49, 0xef, 0x8b, 0xe6,
- 0xd6, 0x47, 0xf2, 0xfd, 0x73, 0x45, 0x08, 0xae, 0x8f, 0xac, 0x5e, 0xb6,
- 0xf8, 0x9e, 0x7c, 0xf7, 0x10, 0xff, 0x92, 0x43, 0x66, 0xef, 0x1c, 0xd4,
- 0xee, 0xa1, 0x46, 0x88, 0x11, 0x89, 0x49, 0x79, 0x7a, 0x25, 0xce, 0x4b,
- 0x6a, 0xf0, 0xd7, 0x1c, 0x76, 0x1a, 0x29, 0x3c, 0xc9, 0xe4, 0xfd, 0x1e,
- 0x85, 0xdc, 0xe0, 0x31, 0x65, 0x05, 0x47, 0x16, 0xac, 0x0a, 0x07, 0x4b,
- 0x2e, 0x70, 0x5e, 0x6b, 0x06, 0xa7, 0x6b, 0x3a, 0x6c, 0xaf, 0x05, 0x12,
- 0xc4, 0xb2, 0x11, 0x25, 0xd6, 0x3e, 0x97, 0x29, 0xf0, 0x83, 0x6c, 0x57,
- 0x1c, 0xd8, 0xa5, 0xef, 0xcc, 0xec, 0xfd, 0xd6, 0x12, 0xf1, 0x3f, 0xdb,
- 0x40, 0xb4, 0xae, 0x0f, 0x18, 0xd3, 0xc5, 0xaf, 0x40, 0x92, 0x5d, 0x07,
- 0x5e, 0x4e, 0xfe, 0x62, 0x17, 0x37, 0x89, 0xe9, 0x8b, 0x74, 0x26, 0xa2,
- 0xed, 0xb8, 0x0a, 0xe7, 0x6c, 0x15, 0x5b, 0x35, 0x90, 0x72, 0xdd, 0xd8,
- 0x4d, 0x21, 0xd4, 0x40, 0x23, 0x5c, 0x8f, 0xee, 0x80, 0x31, 0x16, 0xab,
- 0x68, 0x55, 0xf4, 0x0e, 0x3b, 0x54, 0xe9, 0x04, 0x4d, 0xf0, 0xcc, 0x4e,
- 0x81, 0x5e, 0xe9, 0x6f, 0x52, 0x69, 0x4e, 0xbe, 0xa6, 0x16, 0x6d, 0x42,
- 0xf5, 0x51, 0xff, 0xe0, 0x0b, 0x56, 0x3c, 0x98, 0x4f, 0x73, 0x8f, 0x0e,
- 0x6f, 0x1a, 0x23, 0xf1, 0xc9, 0xc8, 0xd9, 0xdf, 0xbc, 0xec, 0x52, 0xd7,
- 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x54, 0x30, 0x82, 0x01,
- 0x50, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16,
- 0x80, 0x14, 0xc0, 0x7a, 0x98, 0x68, 0x8d, 0x89, 0xfb, 0xab, 0x05, 0x64,
- 0x0c, 0x11, 0x7d, 0xaa, 0x7d, 0x65, 0xb8, 0xca, 0xcc, 0x4e, 0x30, 0x1d,
- 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x11, 0x4a, 0xd0,
- 0x73, 0x39, 0xd5, 0x5b, 0x69, 0x08, 0x5c, 0xba, 0x3d, 0xbf, 0x64, 0x9a,
- 0xa8, 0x8b, 0x1c, 0x55, 0xbc, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13,
- 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01,
- 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04,
- 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x3a, 0x06, 0x03, 0x55, 0x1d, 0x1f,
- 0x04, 0x33, 0x30, 0x31, 0x30, 0x2f, 0xa0, 0x2d, 0xa0, 0x2b, 0x86, 0x29,
- 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x67,
- 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
- 0x63, 0x72, 0x6c, 0x73, 0x2f, 0x67, 0x74, 0x67, 0x6c, 0x6f, 0x62, 0x61,
- 0x6c, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01,
- 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x28, 0x30, 0x26, 0x30, 0x24, 0x06,
- 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, 0x68,
- 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x67,
- 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x30,
- 0x4c, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x45, 0x30, 0x43, 0x30, 0x41,
- 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, 0x07, 0x36,
- 0x30, 0x33, 0x30, 0x31, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07,
- 0x02, 0x01, 0x16, 0x25, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77,
- 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e,
- 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
- 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x2a, 0x06, 0x03, 0x55, 0x1d, 0x11,
- 0x04, 0x23, 0x30, 0x21, 0xa4, 0x1f, 0x30, 0x1d, 0x31, 0x1b, 0x30, 0x19,
- 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x56, 0x65, 0x72, 0x69, 0x53,
- 0x69, 0x67, 0x6e, 0x4d, 0x50, 0x4b, 0x49, 0x2d, 0x32, 0x2d, 0x32, 0x35,
- 0x34, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01,
- 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x3c, 0xe5, 0x3d,
- 0x5a, 0x1b, 0xa2, 0x37, 0x2a, 0xe3, 0x46, 0xcf, 0x36, 0x96, 0x18, 0x3c,
- 0x7b, 0xf1, 0x84, 0xc5, 0x57, 0x86, 0x77, 0x40, 0x9d, 0x35, 0xf0, 0x12,
- 0xf0, 0x78, 0x18, 0xfb, 0x22, 0xa4, 0xde, 0x98, 0x4b, 0x78, 0x81, 0xe6,
- 0x4d, 0x86, 0xe3, 0x91, 0x0f, 0x42, 0xe3, 0xb9, 0xdc, 0xa0, 0xd6, 0xff,
- 0xa9, 0xf8, 0xb1, 0x79, 0x97, 0x99, 0xd1, 0xc3, 0x6c, 0x42, 0xa5, 0x92,
- 0x94, 0xe0, 0x5d, 0x0c, 0x33, 0x18, 0x25, 0xc9, 0x2b, 0x95, 0x53, 0xe0,
- 0xe5, 0xa9, 0x0c, 0x7d, 0x47, 0xfe, 0x7f, 0x51, 0x31, 0x44, 0x5e, 0xf7,
- 0x2a, 0x1e, 0x35, 0xa2, 0x94, 0x32, 0xf7, 0xc9, 0xee, 0xc0, 0xb6, 0xc6,
- 0x9a, 0xac, 0xde, 0x99, 0x21, 0x6a, 0x23, 0xa0, 0x38, 0x64, 0xee, 0xa3,
- 0xc4, 0x88, 0x73, 0x32, 0x3b, 0x50, 0xce, 0xbf, 0xad, 0xd3, 0x75, 0x1e,
- 0xa6, 0xf4, 0xe9, 0xf9, 0x42, 0x6b, 0x60, 0xb2, 0xdd, 0x45, 0xfd, 0x5d,
- 0x57, 0x08, 0xce, 0x2d, 0x50, 0xe6, 0x12, 0x32, 0x16, 0x13, 0x8a, 0xf2,
- 0x94, 0xa2, 0x9b, 0x47, 0xa8, 0x86, 0x7f, 0xd9, 0x98, 0xe5, 0xf7, 0xe5,
- 0x76, 0x74, 0x64, 0xd8, 0x91, 0xbc, 0x84, 0x16, 0x28, 0xd8, 0x25, 0x44,
- 0x30, 0x7e, 0x82, 0xd8, 0xac, 0xb1, 0xe4, 0xc0, 0xe4, 0x15, 0x6c, 0xdb,
- 0xb6, 0x24, 0x27, 0x02, 0x2a, 0x01, 0x12, 0x85, 0xba, 0x31, 0x88, 0x58,
- 0x47, 0x74, 0xe3, 0xb8, 0xd2, 0x64, 0xa6, 0xc3, 0x32, 0x59, 0x2e, 0x29,
- 0x4b, 0x45, 0xf1, 0x5b, 0x89, 0x49, 0x2e, 0x82, 0x9a, 0xc6, 0x18, 0x15,
- 0x44, 0xd0, 0x2e, 0x64, 0x01, 0x15, 0x68, 0x38, 0xf9, 0xf6, 0xf9, 0x66,
- 0x03, 0x0c, 0x55, 0x1b, 0x9d, 0xbf, 0x00, 0x40, 0xae, 0xf0, 0x48, 0x27,
- 0x4c, 0xe0, 0x80, 0x5e, 0x2d, 0xb9, 0x2a, 0x15, 0x7a, 0xbc, 0x66, 0xf8,
- 0x35,
-}
-
-var certSet3Cert12 = []byte{
- 0x30, 0x82, 0x04, 0x63, 0x30, 0x82, 0x03, 0x4b, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x0b, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x44, 0x4e, 0xf0,
- 0x3e, 0x20, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
- 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x57, 0x31, 0x0b, 0x30, 0x09, 0x06,
- 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x42, 0x45, 0x31, 0x19, 0x30, 0x17,
- 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x10, 0x47, 0x6c, 0x6f, 0x62, 0x61,
- 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x6e, 0x76, 0x2d, 0x73, 0x61, 0x31,
- 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x07, 0x52, 0x6f,
- 0x6f, 0x74, 0x20, 0x43, 0x41, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55,
- 0x04, 0x03, 0x13, 0x12, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69,
- 0x67, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x30, 0x1e,
- 0x17, 0x0d, 0x31, 0x34, 0x30, 0x32, 0x32, 0x30, 0x31, 0x30, 0x30, 0x30,
- 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x34, 0x30, 0x32, 0x32, 0x30, 0x31,
- 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x60, 0x31, 0x0b, 0x30, 0x09,
- 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x42, 0x45, 0x31, 0x19, 0x30,
- 0x17, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x10, 0x47, 0x6c, 0x6f, 0x62,
- 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x6e, 0x76, 0x2d, 0x73, 0x61,
- 0x31, 0x36, 0x30, 0x34, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2d, 0x47,
- 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x44, 0x6f,
- 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x53, 0x48, 0x41,
- 0x32, 0x35, 0x36, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22,
- 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
- 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a,
- 0x02, 0x82, 0x01, 0x01, 0x00, 0xa9, 0xdd, 0xcc, 0x0e, 0xb3, 0xe2, 0x32,
- 0x39, 0xdd, 0x49, 0x22, 0xa8, 0x13, 0x69, 0x93, 0x87, 0x88, 0xe1, 0x0c,
- 0xee, 0x71, 0x7d, 0xbd, 0x90, 0x87, 0x96, 0x5d, 0x59, 0xf2, 0xcc, 0xb3,
- 0xd2, 0x58, 0x57, 0x57, 0xf9, 0x46, 0xef, 0x6c, 0x26, 0xd8, 0x36, 0x42,
- 0x8e, 0x7e, 0x30, 0xb3, 0x2f, 0x9a, 0x3e, 0x53, 0x7b, 0x1f, 0x6e, 0xb6,
- 0xa2, 0x4c, 0x45, 0x1f, 0x3c, 0xd3, 0x15, 0x93, 0x1c, 0x89, 0xed, 0x3c,
- 0xf4, 0x57, 0xde, 0xca, 0xbd, 0xec, 0x06, 0x9a, 0x6a, 0x2a, 0xa0, 0x19,
- 0x52, 0x7f, 0x51, 0xd1, 0x74, 0x39, 0x08, 0x9f, 0xab, 0xeb, 0xd7, 0x86,
- 0x13, 0x15, 0x97, 0xae, 0x36, 0xc3, 0x54, 0x66, 0x0e, 0x5a, 0xf2, 0xa0,
- 0x73, 0x85, 0x31, 0xe3, 0xb2, 0x64, 0x14, 0x6a, 0xff, 0xa5, 0xa2, 0x8e,
- 0x24, 0xbb, 0xbd, 0x85, 0x52, 0x15, 0xa2, 0x79, 0xee, 0xf0, 0xb5, 0xee,
- 0x3d, 0xb8, 0xf4, 0x7d, 0x80, 0xbc, 0xd9, 0x90, 0x35, 0x65, 0xb8, 0x17,
- 0xa9, 0xad, 0xb3, 0x98, 0x9f, 0xa0, 0x7e, 0x7d, 0x6e, 0xfb, 0x3f, 0xad,
- 0x7c, 0xc2, 0x1b, 0x59, 0x36, 0x96, 0xda, 0x37, 0x32, 0x4b, 0x4b, 0x5d,
- 0x35, 0x02, 0x63, 0x8e, 0xdb, 0xa7, 0xcf, 0x62, 0xee, 0xcc, 0x2e, 0xd4,
- 0x8d, 0xc9, 0xbd, 0x3c, 0x6a, 0x91, 0x72, 0xa2, 0x22, 0xa7, 0x72, 0x2d,
- 0x20, 0xd1, 0xfa, 0xca, 0x37, 0xda, 0x18, 0x98, 0xe6, 0x16, 0x24, 0x71,
- 0x25, 0x4b, 0xc4, 0xe5, 0x7b, 0x89, 0x52, 0x09, 0x02, 0xfd, 0x59, 0x2b,
- 0x04, 0x6e, 0xca, 0x07, 0x81, 0xd4, 0xb3, 0xda, 0xda, 0xdb, 0xe3, 0xcc,
- 0x80, 0xa8, 0x56, 0x07, 0x06, 0x7c, 0x96, 0x08, 0x37, 0x9d, 0xdb, 0x38,
- 0xb6, 0x62, 0x34, 0x91, 0x62, 0x07, 0x74, 0x01, 0x38, 0xd8, 0x72, 0x30,
- 0xe2, 0xeb, 0x90, 0x71, 0x26, 0x62, 0xc0, 0x57, 0xf3, 0x02, 0x03, 0x01,
- 0x00, 0x01, 0xa3, 0x82, 0x01, 0x25, 0x30, 0x82, 0x01, 0x21, 0x30, 0x0e,
- 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02,
- 0x01, 0x06, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff,
- 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x1d,
- 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xea, 0x4e, 0x7c,
- 0xd4, 0x80, 0x2d, 0xe5, 0x15, 0x81, 0x86, 0x26, 0x8c, 0x82, 0x6d, 0xc0,
- 0x98, 0xa4, 0xcf, 0x97, 0x0f, 0x30, 0x47, 0x06, 0x03, 0x55, 0x1d, 0x20,
- 0x04, 0x40, 0x30, 0x3e, 0x30, 0x3c, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00,
- 0x30, 0x34, 0x30, 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07,
- 0x02, 0x01, 0x16, 0x26, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f,
- 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x73, 0x69,
- 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73,
- 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x30, 0x33, 0x06, 0x03, 0x55, 0x1d,
- 0x1f, 0x04, 0x2c, 0x30, 0x2a, 0x30, 0x28, 0xa0, 0x26, 0xa0, 0x24, 0x86,
- 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e,
- 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x6e,
- 0x65, 0x74, 0x2f, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x72, 0x6c, 0x30,
- 0x3d, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04,
- 0x31, 0x30, 0x2f, 0x30, 0x2d, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
- 0x07, 0x30, 0x01, 0x86, 0x21, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f,
- 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x73,
- 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x6f, 0x6f, 0x74,
- 0x72, 0x31, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30,
- 0x16, 0x80, 0x14, 0x60, 0x7b, 0x66, 0x1a, 0x45, 0x0d, 0x97, 0xca, 0x89,
- 0x50, 0x2f, 0x7d, 0x04, 0xcd, 0x34, 0xa8, 0xff, 0xfc, 0xfd, 0x4b, 0x30,
- 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b,
- 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0xd7, 0x45, 0x9e, 0xa0, 0xdc,
- 0xe0, 0xe3, 0x61, 0x5a, 0x0b, 0x7d, 0x77, 0x84, 0x17, 0x2d, 0x65, 0x5a,
- 0x82, 0x9a, 0x8d, 0xa3, 0x27, 0x2a, 0x85, 0xf7, 0xc9, 0xef, 0xe9, 0x86,
- 0xfd, 0xd4, 0x47, 0xcd, 0x01, 0x52, 0x96, 0xc5, 0x43, 0xbd, 0x37, 0xb1,
- 0xe1, 0xb8, 0xf2, 0xa9, 0xd2, 0x8a, 0x11, 0x84, 0x71, 0x91, 0x15, 0x89,
- 0xdc, 0x02, 0x9d, 0x0b, 0xcb, 0x6c, 0x33, 0x85, 0x34, 0x28, 0x9e, 0x20,
- 0xb2, 0xb1, 0x97, 0xdc, 0x6d, 0x0b, 0x10, 0xc1, 0x3c, 0xcd, 0x5f, 0xea,
- 0x5d, 0xd7, 0x98, 0x31, 0xc5, 0x34, 0x99, 0x5c, 0x00, 0x61, 0x55, 0xc4,
- 0x1b, 0x02, 0x5b, 0xc5, 0xe3, 0x89, 0xc8, 0xb4, 0xb8, 0x6f, 0x1e, 0x38,
- 0xf2, 0x56, 0x26, 0xe9, 0x41, 0xef, 0x3d, 0xcd, 0xac, 0x99, 0x4f, 0x59,
- 0x4a, 0x57, 0x2d, 0x4b, 0x7d, 0xae, 0xc7, 0x88, 0xfb, 0xd6, 0x98, 0x3b,
- 0xf5, 0xe5, 0xf0, 0xe8, 0x89, 0x89, 0xb9, 0x8b, 0x03, 0xcb, 0x5a, 0x23,
- 0x1f, 0xa4, 0xfd, 0xb8, 0xea, 0xfb, 0x2e, 0x9d, 0xae, 0x6a, 0x73, 0x09,
- 0xbc, 0xfc, 0xd5, 0xa0, 0xb5, 0x44, 0x82, 0xab, 0x44, 0x91, 0x2e, 0x50,
- 0x2e, 0x57, 0xc1, 0x43, 0xd8, 0x91, 0x04, 0x8b, 0xe9, 0x11, 0x2e, 0x5f,
- 0xb4, 0x3f, 0x79, 0xdf, 0x1e, 0xfb, 0x3f, 0x30, 0x00, 0x8b, 0x53, 0xe3,
- 0xb7, 0x2c, 0x1d, 0x3b, 0x4d, 0x8b, 0xdc, 0xe4, 0x64, 0x1d, 0x04, 0x58,
- 0x33, 0xaf, 0x1b, 0x55, 0xe7, 0xab, 0x0c, 0xbf, 0x30, 0x04, 0x74, 0xe4,
- 0xf3, 0x0e, 0x2f, 0x30, 0x39, 0x8d, 0x4b, 0x04, 0x8c, 0x1e, 0x75, 0x66,
- 0x66, 0x49, 0xe0, 0xbe, 0x40, 0x34, 0xc7, 0x5c, 0x5a, 0x51, 0x92, 0xba,
- 0x12, 0x3c, 0x52, 0xd5, 0x04, 0x82, 0x55, 0x2d, 0x67, 0xa5, 0xdf, 0xb7,
- 0x95, 0x7c, 0xee, 0x3f, 0xc3, 0x08, 0xba, 0x04, 0xbe, 0xc0, 0x46,
-}
-
-var certSet3Cert13 = []byte{
- 0x30, 0x82, 0x04, 0x69, 0x30, 0x82, 0x03, 0x51, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x0b, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x44, 0x4e, 0xf0,
- 0x42, 0x47, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
- 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x57, 0x31, 0x0b, 0x30, 0x09, 0x06,
- 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x42, 0x45, 0x31, 0x19, 0x30, 0x17,
- 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x10, 0x47, 0x6c, 0x6f, 0x62, 0x61,
- 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x6e, 0x76, 0x2d, 0x73, 0x61, 0x31,
- 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x07, 0x52, 0x6f,
- 0x6f, 0x74, 0x20, 0x43, 0x41, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55,
- 0x04, 0x03, 0x13, 0x12, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69,
- 0x67, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x30, 0x1e,
- 0x17, 0x0d, 0x31, 0x34, 0x30, 0x32, 0x32, 0x30, 0x31, 0x30, 0x30, 0x30,
- 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x34, 0x30, 0x32, 0x32, 0x30, 0x31,
- 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x66, 0x31, 0x0b, 0x30, 0x09,
- 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x42, 0x45, 0x31, 0x19, 0x30,
- 0x17, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x10, 0x47, 0x6c, 0x6f, 0x62,
- 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x6e, 0x76, 0x2d, 0x73, 0x61,
- 0x31, 0x3c, 0x30, 0x3a, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x33, 0x47,
- 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x4f, 0x72,
- 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x56,
- 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x43, 0x41,
- 0x20, 0x2d, 0x20, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x20, 0x2d, 0x20,
- 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
- 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01,
- 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xc7,
- 0x0e, 0x6c, 0x3f, 0x23, 0x93, 0x7f, 0xcc, 0x70, 0xa5, 0x9d, 0x20, 0xc3,
- 0x0e, 0x53, 0x3f, 0x7e, 0xc0, 0x4e, 0xc2, 0x98, 0x49, 0xca, 0x47, 0xd5,
- 0x23, 0xef, 0x03, 0x34, 0x85, 0x74, 0xc8, 0xa3, 0x02, 0x2e, 0x46, 0x5c,
- 0x0b, 0x7d, 0xc9, 0x88, 0x9d, 0x4f, 0x8b, 0xf0, 0xf8, 0x9c, 0x6c, 0x8c,
- 0x55, 0x35, 0xdb, 0xbf, 0xf2, 0xb3, 0xea, 0xfb, 0xe3, 0x56, 0xe7, 0x4a,
- 0x46, 0xd9, 0x13, 0x22, 0xca, 0x36, 0xd5, 0x9b, 0xc1, 0xa8, 0xe3, 0x96,
- 0x43, 0x93, 0xf2, 0x0c, 0xbc, 0xe6, 0xf9, 0xe6, 0xe8, 0x99, 0xc8, 0x63,
- 0x48, 0x78, 0x7f, 0x57, 0x36, 0x69, 0x1a, 0x19, 0x1d, 0x5a, 0xd1, 0xd4,
- 0x7d, 0xc2, 0x9c, 0xd4, 0x7f, 0xe1, 0x80, 0x12, 0xae, 0x7a, 0xea, 0x88,
- 0xea, 0x57, 0xd8, 0xca, 0x0a, 0x0a, 0x3a, 0x12, 0x49, 0xa2, 0x62, 0x19,
- 0x7a, 0x0d, 0x24, 0xf7, 0x37, 0xeb, 0xb4, 0x73, 0x92, 0x7b, 0x05, 0x23,
- 0x9b, 0x12, 0xb5, 0xce, 0xeb, 0x29, 0xdf, 0xa4, 0x14, 0x02, 0xb9, 0x01,
- 0xa5, 0xd4, 0xa6, 0x9c, 0x43, 0x64, 0x88, 0xde, 0xf8, 0x7e, 0xfe, 0xe3,
- 0xf5, 0x1e, 0xe5, 0xfe, 0xdc, 0xa3, 0xa8, 0xe4, 0x66, 0x31, 0xd9, 0x4c,
- 0x25, 0xe9, 0x18, 0xb9, 0x89, 0x59, 0x09, 0xae, 0xe9, 0x9d, 0x1c, 0x6d,
- 0x37, 0x0f, 0x4a, 0x1e, 0x35, 0x20, 0x28, 0xe2, 0xaf, 0xd4, 0x21, 0x8b,
- 0x01, 0xc4, 0x45, 0xad, 0x6e, 0x2b, 0x63, 0xab, 0x92, 0x6b, 0x61, 0x0a,
- 0x4d, 0x20, 0xed, 0x73, 0xba, 0x7c, 0xce, 0xfe, 0x16, 0xb5, 0xdb, 0x9f,
- 0x80, 0xf0, 0xd6, 0x8b, 0x6c, 0xd9, 0x08, 0x79, 0x4a, 0x4f, 0x78, 0x65,
- 0xda, 0x92, 0xbc, 0xbe, 0x35, 0xf9, 0xb3, 0xc4, 0xf9, 0x27, 0x80, 0x4e,
- 0xff, 0x96, 0x52, 0xe6, 0x02, 0x20, 0xe1, 0x07, 0x73, 0xe9, 0x5d, 0x2b,
- 0xbd, 0xb2, 0xf1, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x25,
- 0x30, 0x82, 0x01, 0x21, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01,
- 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x12, 0x06, 0x03,
- 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01,
- 0xff, 0x02, 0x01, 0x00, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04,
- 0x16, 0x04, 0x14, 0x96, 0xde, 0x61, 0xf1, 0xbd, 0x1c, 0x16, 0x29, 0x53,
- 0x1c, 0xc0, 0xcc, 0x7d, 0x3b, 0x83, 0x00, 0x40, 0xe6, 0x1a, 0x7c, 0x30,
- 0x47, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x40, 0x30, 0x3e, 0x30, 0x3c,
- 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x34, 0x30, 0x32, 0x06, 0x08,
- 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x26, 0x68, 0x74,
- 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6c,
- 0x6f, 0x62, 0x61, 0x6c, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d,
- 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f,
- 0x30, 0x33, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2c, 0x30, 0x2a, 0x30,
- 0x28, 0xa0, 0x26, 0xa0, 0x24, 0x86, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a,
- 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c,
- 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x72, 0x6f, 0x6f,
- 0x74, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x3d, 0x06, 0x08, 0x2b, 0x06, 0x01,
- 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x31, 0x30, 0x2f, 0x30, 0x2d, 0x06,
- 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x21, 0x68,
- 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x67,
- 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f,
- 0x6d, 0x2f, 0x72, 0x6f, 0x6f, 0x74, 0x72, 0x31, 0x30, 0x1f, 0x06, 0x03,
- 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x60, 0x7b, 0x66,
- 0x1a, 0x45, 0x0d, 0x97, 0xca, 0x89, 0x50, 0x2f, 0x7d, 0x04, 0xcd, 0x34,
- 0xa8, 0xff, 0xfc, 0xfd, 0x4b, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48,
- 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01,
- 0x00, 0x46, 0x2a, 0xee, 0x5e, 0xbd, 0xae, 0x01, 0x60, 0x37, 0x31, 0x11,
- 0x86, 0x71, 0x74, 0xb6, 0x46, 0x49, 0xc8, 0x10, 0x16, 0xfe, 0x2f, 0x62,
- 0x23, 0x17, 0xab, 0x1f, 0x87, 0xf8, 0x82, 0xed, 0xca, 0xdf, 0x0e, 0x2c,
- 0xdf, 0x64, 0x75, 0x8e, 0xe5, 0x18, 0x72, 0xa7, 0x8c, 0x3a, 0x8b, 0xc9,
- 0xac, 0xa5, 0x77, 0x50, 0xf7, 0xef, 0x9e, 0xa4, 0xe0, 0xa0, 0x8f, 0x14,
- 0x57, 0xa3, 0x2a, 0x5f, 0xec, 0x7e, 0x6d, 0x10, 0xe6, 0xba, 0x8d, 0xb0,
- 0x08, 0x87, 0x76, 0x0e, 0x4c, 0xb2, 0xd9, 0x51, 0xbb, 0x11, 0x02, 0xf2,
- 0x5c, 0xdd, 0x1c, 0xbd, 0xf3, 0x55, 0x96, 0x0f, 0xd4, 0x06, 0xc0, 0xfc,
- 0xe2, 0x23, 0x8a, 0x24, 0x70, 0xd3, 0xbb, 0xf0, 0x79, 0x1a, 0xa7, 0x61,
- 0x70, 0x83, 0x8a, 0xaf, 0x06, 0xc5, 0x20, 0xd8, 0xa1, 0x63, 0xd0, 0x6c,
- 0xae, 0x4f, 0x32, 0xd7, 0xae, 0x7c, 0x18, 0x45, 0x75, 0x05, 0x29, 0x77,
- 0xdf, 0x42, 0x40, 0x64, 0x64, 0x86, 0xbe, 0x2a, 0x76, 0x09, 0x31, 0x6f,
- 0x1d, 0x24, 0xf4, 0x99, 0xd0, 0x85, 0xfe, 0xf2, 0x21, 0x08, 0xf9, 0xc6,
- 0xf6, 0xf1, 0xd0, 0x59, 0xed, 0xd6, 0x56, 0x3c, 0x08, 0x28, 0x03, 0x67,
- 0xba, 0xf0, 0xf9, 0xf1, 0x90, 0x16, 0x47, 0xae, 0x67, 0xe6, 0xbc, 0x80,
- 0x48, 0xe9, 0x42, 0x76, 0x34, 0x97, 0x55, 0x69, 0x24, 0x0e, 0x83, 0xd6,
- 0xa0, 0x2d, 0xb4, 0xf5, 0xf3, 0x79, 0x8a, 0x49, 0x28, 0x74, 0x1a, 0x41,
- 0xa1, 0xc2, 0xd3, 0x24, 0x88, 0x35, 0x30, 0x60, 0x94, 0x17, 0xb4, 0xe1,
- 0x04, 0x22, 0x31, 0x3d, 0x3b, 0x2f, 0x17, 0x06, 0xb2, 0xb8, 0x9d, 0x86,
- 0x2b, 0x5a, 0x69, 0xef, 0x83, 0xf5, 0x4b, 0xc4, 0xaa, 0xb4, 0x2a, 0xf8,
- 0x7c, 0xa1, 0xb1, 0x85, 0x94, 0x8c, 0xf4, 0x0c, 0x87, 0x0c, 0xf4, 0xac,
- 0x40, 0xf8, 0x59, 0x49, 0x98,
-}
-
-var certSet3Cert14 = []byte{
- 0x30, 0x82, 0x04, 0x6c, 0x30, 0x82, 0x03, 0x54, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x4d, 0x5f, 0x2c, 0x34, 0x08, 0xb2, 0x4c, 0x20, 0xcd,
- 0x6d, 0x50, 0x7e, 0x24, 0x4d, 0xc9, 0xec, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x81,
- 0xa9, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
- 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13,
- 0x0c, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63,
- 0x2e, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f,
- 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x44,
- 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x38, 0x30, 0x36, 0x06,
- 0x03, 0x55, 0x04, 0x0b, 0x13, 0x2f, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30,
- 0x30, 0x36, 0x20, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49,
- 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75,
- 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65,
- 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55,
- 0x04, 0x03, 0x13, 0x16, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x50,
- 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20,
- 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x30, 0x32, 0x30, 0x38,
- 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x30, 0x30,
- 0x32, 0x30, 0x37, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x3c,
- 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55,
- 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c,
- 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e,
- 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x0d, 0x54,
- 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41,
- 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
- 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00,
- 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0x99, 0xe4, 0x85,
- 0x5b, 0x76, 0x49, 0x7d, 0x2f, 0x05, 0xd8, 0xc5, 0xac, 0xc8, 0xc8, 0xa9,
- 0xd3, 0xdc, 0x98, 0xe6, 0xd7, 0x34, 0xa6, 0x2f, 0x0c, 0xf2, 0x22, 0x26,
- 0xd8, 0xa3, 0xc9, 0x14, 0x4c, 0x8f, 0x05, 0xa4, 0x45, 0xe8, 0x14, 0x0c,
- 0x58, 0x90, 0x05, 0x1a, 0xb7, 0xc5, 0xc1, 0x06, 0xa5, 0x80, 0xaf, 0xbb,
- 0x1d, 0x49, 0x6b, 0x52, 0x34, 0x88, 0xc3, 0x59, 0xe7, 0xef, 0x6b, 0xc4,
- 0x27, 0x41, 0x8c, 0x2b, 0x66, 0x1d, 0xd0, 0xe0, 0xa3, 0x97, 0x98, 0x19,
- 0x34, 0x4b, 0x41, 0xd5, 0x98, 0xd5, 0xc7, 0x05, 0xad, 0xa2, 0xe4, 0xd7,
- 0xed, 0x0c, 0xad, 0x4f, 0xc1, 0xb5, 0xb0, 0x21, 0xfd, 0x3e, 0x50, 0x53,
- 0xb2, 0xc4, 0x90, 0xd0, 0xd4, 0x30, 0x67, 0x6c, 0x9a, 0xf1, 0x0e, 0x74,
- 0xc4, 0xc2, 0xdc, 0x8a, 0xe8, 0x97, 0xff, 0xc9, 0x92, 0xae, 0x01, 0x8a,
- 0x56, 0x0a, 0x98, 0x32, 0xb0, 0x00, 0x23, 0xec, 0x90, 0x1a, 0x60, 0xc3,
- 0xed, 0xbb, 0x3a, 0xcb, 0x0f, 0x63, 0x9f, 0x0d, 0x44, 0xc9, 0x52, 0xe1,
- 0x25, 0x96, 0xbf, 0xed, 0x50, 0x95, 0x89, 0x7f, 0x56, 0x14, 0xb1, 0xb7,
- 0x61, 0x1d, 0x1c, 0x07, 0x8c, 0x3a, 0x2c, 0xf7, 0xff, 0x80, 0xde, 0x39,
- 0x45, 0xd5, 0xaf, 0x1a, 0xd1, 0x78, 0xd8, 0xc7, 0x71, 0x6a, 0xa3, 0x19,
- 0xa7, 0x32, 0x50, 0x21, 0xe9, 0xf2, 0x0e, 0xa1, 0xc6, 0x13, 0x03, 0x44,
- 0x48, 0xd1, 0x66, 0xa8, 0x52, 0x57, 0xd7, 0x11, 0xb4, 0x93, 0x8b, 0xe5,
- 0x99, 0x9f, 0x5d, 0xe7, 0x78, 0x51, 0xe5, 0x4d, 0xf6, 0xb7, 0x59, 0xb4,
- 0x76, 0xb5, 0x09, 0x37, 0x4d, 0x06, 0x38, 0x13, 0x7a, 0x1c, 0x08, 0x98,
- 0x5c, 0xc4, 0x48, 0x4a, 0xcb, 0x52, 0xa0, 0xa9, 0xf8, 0xb1, 0x9d, 0x8e,
- 0x7b, 0x79, 0xb0, 0x20, 0x2f, 0x3c, 0x96, 0xa8, 0x11, 0x62, 0x47, 0xbb,
- 0x11, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x81, 0xfb, 0x30, 0x81, 0xf8,
- 0x30, 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01,
- 0x04, 0x26, 0x30, 0x24, 0x30, 0x22, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05,
- 0x05, 0x07, 0x30, 0x01, 0x86, 0x16, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
- 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65,
- 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01,
- 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00,
- 0x30, 0x34, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2d, 0x30, 0x2b, 0x30,
- 0x29, 0xa0, 0x27, 0xa0, 0x25, 0x86, 0x23, 0x68, 0x74, 0x74, 0x70, 0x3a,
- 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65,
- 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x50,
- 0x43, 0x41, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d,
- 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x28,
- 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, 0x21, 0x30, 0x1f, 0xa4, 0x1d, 0x30,
- 0x1b, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x10,
- 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x4d, 0x50, 0x4b, 0x49,
- 0x2d, 0x32, 0x2d, 0x39, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04,
- 0x16, 0x04, 0x14, 0xa7, 0xa2, 0x83, 0xbb, 0x34, 0x45, 0x40, 0x3d, 0xfc,
- 0xd5, 0x30, 0x4f, 0x12, 0xb9, 0x3e, 0xa1, 0x01, 0x9f, 0xf6, 0xdb, 0x30,
- 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14,
- 0x7b, 0x5b, 0x45, 0xcf, 0xaf, 0xce, 0xcb, 0x7a, 0xfd, 0x31, 0x92, 0x1a,
- 0x6a, 0xb6, 0xf3, 0x46, 0xeb, 0x57, 0x48, 0x50, 0x30, 0x0d, 0x06, 0x09,
- 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03,
- 0x82, 0x01, 0x01, 0x00, 0x80, 0x22, 0x80, 0xe0, 0x6c, 0xc8, 0x95, 0x16,
- 0xd7, 0x57, 0x26, 0x87, 0xf3, 0x72, 0x34, 0xdb, 0xc6, 0x72, 0x56, 0x27,
- 0x3e, 0xd3, 0x96, 0xf6, 0x2e, 0x25, 0x91, 0xa5, 0x3e, 0x33, 0x97, 0xa7,
- 0x4b, 0xe5, 0x2f, 0xfb, 0x25, 0x7d, 0x2f, 0x07, 0x61, 0xfa, 0x6f, 0x83,
- 0x74, 0x4c, 0x4c, 0x53, 0x72, 0x20, 0xa4, 0x7a, 0xcf, 0x51, 0x51, 0x56,
- 0x81, 0x88, 0xb0, 0x6d, 0x1f, 0x36, 0x2c, 0xc8, 0x2b, 0xb1, 0x88, 0x99,
- 0xc1, 0xfe, 0x44, 0xab, 0x48, 0x51, 0x7c, 0xd8, 0xf2, 0x44, 0x64, 0x2a,
- 0xd8, 0x71, 0xa7, 0xfb, 0x1a, 0x2f, 0xf9, 0x19, 0x8d, 0x34, 0xb2, 0x23,
- 0xbf, 0xc4, 0x4c, 0x55, 0x1d, 0x8e, 0x44, 0xe8, 0xaa, 0x5d, 0x9a, 0xdd,
- 0x9f, 0xfd, 0x03, 0xc7, 0xba, 0x24, 0x43, 0x8d, 0x2d, 0x47, 0x44, 0xdb,
- 0xf6, 0xd8, 0x98, 0xc8, 0xb2, 0xf9, 0xda, 0xef, 0xed, 0x29, 0x5c, 0x69,
- 0x12, 0xfa, 0xd1, 0x23, 0x96, 0x0f, 0xbf, 0x9c, 0x0d, 0xf2, 0x79, 0x45,
- 0x53, 0x37, 0x9a, 0x56, 0x2f, 0xe8, 0x57, 0x10, 0x70, 0xf6, 0xee, 0x89,
- 0x0c, 0x49, 0x89, 0x9a, 0xc1, 0x23, 0xf5, 0xc2, 0x2a, 0xcc, 0x41, 0xcf,
- 0x22, 0xab, 0x65, 0x6e, 0xb7, 0x94, 0x82, 0x6d, 0x2f, 0x40, 0x5f, 0x58,
- 0xde, 0xeb, 0x95, 0x2b, 0xa6, 0x72, 0x68, 0x52, 0x19, 0x91, 0x2a, 0xae,
- 0x75, 0x9d, 0x4e, 0x92, 0xe6, 0xca, 0xde, 0x54, 0xea, 0x18, 0xab, 0x25,
- 0x3c, 0xe6, 0x64, 0xa6, 0x79, 0x1f, 0x26, 0x7d, 0x61, 0xed, 0x7d, 0xd2,
- 0xe5, 0x71, 0x55, 0xd8, 0x93, 0x17, 0x7c, 0x14, 0x38, 0x30, 0x3c, 0xdf,
- 0x86, 0xe3, 0x4c, 0xad, 0x49, 0xe3, 0x97, 0x59, 0xce, 0x1b, 0x9b, 0x2b,
- 0xce, 0xdc, 0x65, 0xd4, 0x0b, 0x28, 0x6b, 0x4e, 0x84, 0x46, 0x51, 0x44,
- 0xf7, 0x33, 0x08, 0x2d, 0x58, 0x97, 0x21, 0xae,
-}
-
-var certSet3Cert15 = []byte{
- 0x30, 0x82, 0x04, 0x6e, 0x30, 0x82, 0x03, 0x56, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x6e, 0x8a, 0x90, 0xeb, 0xcf, 0xf0, 0x44, 0x8a, 0x72,
- 0x0d, 0x08, 0x05, 0xd0, 0x82, 0xa5, 0x44, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x58,
- 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55,
- 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d,
- 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63,
- 0x2e, 0x31, 0x31, 0x30, 0x2f, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x28,
- 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x50, 0x72, 0x69,
- 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69,
- 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f,
- 0x72, 0x69, 0x74, 0x79, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31, 0x30,
- 0x33, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32,
- 0x33, 0x31, 0x30, 0x33, 0x30, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a,
- 0x30, 0x47, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13,
- 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a,
- 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49,
- 0x6e, 0x63, 0x2e, 0x31, 0x20, 0x30, 0x1e, 0x06, 0x03, 0x55, 0x04, 0x03,
- 0x13, 0x17, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x45,
- 0x56, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47,
- 0x34, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48,
- 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f,
- 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xd9, 0xb4,
- 0x05, 0xf2, 0x38, 0x67, 0x0f, 0x09, 0xe7, 0x7c, 0xf5, 0x63, 0x2a, 0xe5,
- 0xb9, 0x5e, 0xa8, 0x11, 0xae, 0x75, 0x71, 0xd9, 0x4c, 0x84, 0x67, 0xad,
- 0x89, 0x5d, 0xfc, 0x28, 0x3d, 0x2a, 0xb0, 0xa5, 0xd5, 0xd4, 0xe6, 0x30,
- 0x0a, 0x84, 0xd4, 0xe4, 0x18, 0xcb, 0x85, 0x37, 0xc5, 0x46, 0x71, 0xeb,
- 0x1c, 0x7b, 0x69, 0xdb, 0x65, 0x69, 0x8c, 0x30, 0x05, 0x3e, 0x07, 0xe1,
- 0x6f, 0x3c, 0xc1, 0x0b, 0x61, 0xe6, 0x38, 0x44, 0xfc, 0xbc, 0x8c, 0x2f,
- 0x4e, 0x75, 0x57, 0xf5, 0x96, 0x99, 0x7c, 0x3e, 0x87, 0x1f, 0x0f, 0x90,
- 0x4b, 0x70, 0xc3, 0x3f, 0x39, 0x45, 0x3b, 0x3a, 0x6b, 0xcb, 0xbb, 0x7b,
- 0x40, 0x54, 0xd1, 0x8b, 0x4b, 0xa1, 0x72, 0xd2, 0x04, 0xe9, 0xe0, 0x72,
- 0x1a, 0x93, 0x11, 0x7a, 0x2f, 0xf1, 0xab, 0x9d, 0x9c, 0x98, 0x58, 0xae,
- 0x2c, 0xea, 0x77, 0x5f, 0x2f, 0x2e, 0x87, 0xaf, 0xb8, 0x6b, 0xe3, 0xe2,
- 0xe2, 0x3f, 0xd6, 0x3d, 0xe0, 0x96, 0x44, 0xdf, 0x11, 0x55, 0x63, 0x52,
- 0x2f, 0xf4, 0x26, 0x78, 0xc4, 0x0f, 0x20, 0x4d, 0x0a, 0xc0, 0x68, 0x70,
- 0x15, 0x86, 0x38, 0xee, 0xb7, 0x76, 0x88, 0xab, 0x18, 0x8f, 0x4f, 0x35,
- 0x1e, 0xd4, 0x8c, 0xc9, 0xdb, 0x7e, 0x3d, 0x44, 0xd4, 0x36, 0x8c, 0xc1,
- 0x37, 0xb5, 0x59, 0x5b, 0x87, 0xf9, 0xe9, 0xf1, 0xd4, 0xc5, 0x28, 0xbd,
- 0x1d, 0xdc, 0xcc, 0x96, 0x72, 0xd1, 0x7a, 0xa1, 0xa7, 0x20, 0xb5, 0xb8,
- 0xaf, 0xf8, 0x6e, 0xa5, 0x60, 0x7b, 0x2b, 0x8d, 0x1f, 0xee, 0xf4, 0x2b,
- 0xd6, 0x69, 0xcd, 0xaf, 0xca, 0x80, 0x58, 0x29, 0xe8, 0x4c, 0x00, 0x20,
- 0x8a, 0x49, 0x0a, 0x6e, 0x8e, 0x8c, 0xa8, 0xd1, 0x00, 0x12, 0x84, 0xb6,
- 0xc5, 0xe2, 0x95, 0xa2, 0xc0, 0x3b, 0xa4, 0x6b, 0xf0, 0x82, 0xd0, 0x96,
- 0x5d, 0x25, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x43, 0x30,
- 0x82, 0x01, 0x3f, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01,
- 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30,
- 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03,
- 0x02, 0x01, 0x06, 0x30, 0x2f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
- 0x07, 0x01, 0x01, 0x04, 0x23, 0x30, 0x21, 0x30, 0x1f, 0x06, 0x08, 0x2b,
- 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x13, 0x68, 0x74, 0x74,
- 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x32, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62,
- 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x47, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04,
- 0x40, 0x30, 0x3e, 0x30, 0x3c, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30,
- 0x34, 0x30, 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02,
- 0x01, 0x16, 0x26, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77,
- 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e,
- 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
- 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x34, 0x06, 0x03, 0x55, 0x1d, 0x1f,
- 0x04, 0x2d, 0x30, 0x2b, 0x30, 0x29, 0xa0, 0x27, 0xa0, 0x25, 0x86, 0x23,
- 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x31, 0x2e, 0x73, 0x79,
- 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x65, 0x6f, 0x54,
- 0x72, 0x75, 0x73, 0x74, 0x50, 0x43, 0x41, 0x2e, 0x63, 0x72, 0x6c, 0x30,
- 0x29, 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, 0x22, 0x30, 0x20, 0xa4, 0x1e,
- 0x30, 0x1c, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13,
- 0x11, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x50, 0x4b, 0x49,
- 0x2d, 0x31, 0x2d, 0x35, 0x33, 0x38, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d,
- 0x0e, 0x04, 0x16, 0x04, 0x14, 0xde, 0xcf, 0x5c, 0x50, 0xb7, 0xae, 0x02,
- 0x1f, 0x15, 0x17, 0xaa, 0x16, 0xe8, 0x0d, 0xb5, 0x28, 0x9d, 0x6a, 0x5a,
- 0xf3, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16,
- 0x80, 0x14, 0x2c, 0xd5, 0x50, 0x41, 0x97, 0x15, 0x8b, 0xf0, 0x8f, 0x36,
- 0x61, 0x5b, 0x4a, 0xfb, 0x6b, 0xd9, 0x99, 0xc9, 0x33, 0x92, 0x30, 0x0d,
- 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05,
- 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0xb4, 0x8e, 0xbd, 0x07, 0xb9, 0x9a,
- 0x85, 0xec, 0x3b, 0x67, 0xbd, 0x07, 0x60, 0x61, 0xe6, 0x84, 0xd1, 0xd4,
- 0xef, 0xeb, 0x1b, 0xba, 0x0b, 0x82, 0x4b, 0x95, 0x64, 0xb6, 0x66, 0x53,
- 0x23, 0xbd, 0xb7, 0x84, 0xdd, 0xe4, 0x7b, 0x8d, 0x09, 0xda, 0xcf, 0xb2,
- 0xf5, 0xf1, 0xc3, 0xbf, 0x87, 0x84, 0xbe, 0x4e, 0xa6, 0xa8, 0xc2, 0xe7,
- 0x12, 0x39, 0x28, 0x34, 0xe0, 0xa4, 0x56, 0x44, 0x40, 0x0c, 0x9f, 0x88,
- 0xa3, 0x15, 0xd3, 0xe8, 0xd3, 0x5e, 0xe3, 0x1c, 0x04, 0x60, 0xfb, 0x69,
- 0x36, 0x4f, 0x6a, 0x7e, 0x0c, 0x2a, 0x28, 0xc1, 0xf3, 0xaa, 0x58, 0x0e,
- 0x6c, 0xce, 0x1d, 0x07, 0xc3, 0x4a, 0xc0, 0x9c, 0x8d, 0xc3, 0x74, 0xb1,
- 0xae, 0x82, 0xf0, 0x1a, 0xe1, 0xf9, 0x4e, 0x29, 0xbd, 0x46, 0xde, 0xb7,
- 0x1d, 0xf9, 0x7d, 0xdb, 0xd9, 0x0f, 0x84, 0xcb, 0x92, 0x45, 0xcc, 0x1c,
- 0xb3, 0x18, 0xf6, 0xa0, 0xcf, 0x71, 0x6f, 0x0c, 0x2e, 0x9b, 0xd2, 0x2d,
- 0xb3, 0x99, 0x93, 0x83, 0x44, 0xac, 0x15, 0xaa, 0x9b, 0x2e, 0x67, 0xec,
- 0x4f, 0x88, 0x69, 0x05, 0x56, 0x7b, 0x8b, 0xb2, 0x43, 0xa9, 0x3a, 0x6c,
- 0x1c, 0x13, 0x33, 0x25, 0x1b, 0xfd, 0xa8, 0xc8, 0x57, 0x02, 0xfb, 0x1c,
- 0xe0, 0xd1, 0xbd, 0x3b, 0x56, 0x44, 0x65, 0xc3, 0x63, 0xf5, 0x1b, 0xef,
- 0xec, 0x30, 0xd9, 0xe3, 0x6e, 0x2e, 0x13, 0xe9, 0x39, 0x08, 0x2a, 0x0c,
- 0x72, 0xf3, 0x9a, 0xcc, 0xf6, 0x27, 0x29, 0x84, 0xd3, 0xef, 0x4c, 0xc7,
- 0x84, 0x11, 0x65, 0x1f, 0xc6, 0xe3, 0x81, 0x03, 0xdb, 0x87, 0xcc, 0x78,
- 0xf7, 0xb5, 0x9d, 0x96, 0x3e, 0x6a, 0x7f, 0xbc, 0x11, 0x85, 0x7a, 0x75,
- 0xe6, 0x41, 0x7d, 0x0d, 0xcf, 0xf9, 0xe5, 0x85, 0x69, 0x25, 0x8f, 0xc7,
- 0x8d, 0x07, 0x2d, 0xf8, 0x69, 0x0f, 0xcb, 0x41, 0x53, 0x00,
-}
-
-var certSet3Cert16 = []byte{
- 0x30, 0x82, 0x04, 0x6f, 0x30, 0x82, 0x03, 0x57, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x03, 0x02, 0x3a, 0x73, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
- 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x42, 0x31,
- 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53,
- 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47,
- 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e,
- 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x47,
- 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62,
- 0x61, 0x6c, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34, 0x30,
- 0x36, 0x31, 0x31, 0x32, 0x32, 0x30, 0x32, 0x35, 0x39, 0x5a, 0x17, 0x0d,
- 0x32, 0x32, 0x30, 0x35, 0x32, 0x30, 0x32, 0x32, 0x30, 0x32, 0x35, 0x39,
- 0x5a, 0x30, 0x66, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,
- 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04,
- 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20,
- 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x1d, 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04,
- 0x0b, 0x13, 0x14, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x56, 0x61,
- 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x20, 0x53, 0x53, 0x4c, 0x31,
- 0x20, 0x30, 0x1e, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x17, 0x47, 0x65,
- 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x44, 0x56, 0x20, 0x53, 0x53,
- 0x4c, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x30, 0x82, 0x01,
- 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01,
- 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01,
- 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xb3, 0x44, 0x3a, 0x6c, 0xb0, 0xae,
- 0xcb, 0x14, 0xf9, 0x8c, 0x19, 0x74, 0x34, 0x5c, 0xa9, 0x69, 0xe3, 0x88,
- 0x53, 0x77, 0xa5, 0xa7, 0xff, 0xbd, 0xd1, 0x3c, 0x0d, 0x27, 0xe4, 0xde,
- 0xad, 0x7f, 0xbc, 0xd1, 0x90, 0x58, 0x93, 0xd6, 0xa6, 0xda, 0x39, 0x9c,
- 0xad, 0xe1, 0x0e, 0x56, 0x46, 0xee, 0x95, 0x9e, 0x10, 0x68, 0x4c, 0x9c,
- 0x2b, 0xf6, 0x6a, 0x3a, 0x8b, 0x80, 0x81, 0x87, 0x06, 0x57, 0x25, 0x1a,
- 0x56, 0x52, 0x94, 0xdd, 0x90, 0xeb, 0x67, 0x3b, 0xde, 0xfa, 0xae, 0x36,
- 0x68, 0xd3, 0x62, 0x69, 0xf6, 0x6c, 0x82, 0x24, 0x44, 0x4f, 0x87, 0x5c,
- 0x98, 0x11, 0x95, 0x64, 0x6b, 0xe8, 0x0c, 0xd1, 0xdd, 0xe6, 0x27, 0x97,
- 0xae, 0xcc, 0xe2, 0x91, 0x6a, 0x41, 0x12, 0xb6, 0xab, 0xe5, 0xcc, 0x6e,
- 0xcc, 0x23, 0xb8, 0x63, 0x8a, 0x1f, 0x31, 0x93, 0x2d, 0x06, 0xc4, 0xf7,
- 0xe8, 0x3d, 0x58, 0xcd, 0x97, 0x08, 0x46, 0x6c, 0x7b, 0x74, 0xc0, 0xf8,
- 0xfc, 0x31, 0x3b, 0xa7, 0x7f, 0xd7, 0x8f, 0xb0, 0xc9, 0x15, 0x63, 0x50,
- 0x7a, 0x12, 0x4d, 0xf5, 0x12, 0x1e, 0xa3, 0x7e, 0x55, 0xe3, 0x75, 0xb7,
- 0xea, 0x1e, 0xea, 0x31, 0x2c, 0x08, 0x4e, 0xd8, 0xcb, 0x43, 0x74, 0x89,
- 0x24, 0xbc, 0xd2, 0x0e, 0x1e, 0xf0, 0xdb, 0x05, 0x24, 0xf6, 0x8a, 0xbf,
- 0x10, 0x27, 0x84, 0x41, 0x1a, 0xf6, 0x18, 0x53, 0xee, 0x91, 0xd0, 0x54,
- 0x17, 0xd3, 0x7d, 0x3e, 0x7e, 0xb2, 0x7d, 0xa8, 0xbf, 0xdb, 0xb9, 0x21,
- 0x2a, 0xf0, 0x89, 0xb9, 0x08, 0x6e, 0x5a, 0xb3, 0x5e, 0xea, 0x82, 0xb8,
- 0x7e, 0x27, 0x0b, 0xcc, 0x56, 0x73, 0x81, 0x05, 0x4f, 0xe3, 0x96, 0x2d,
- 0x71, 0xd5, 0x78, 0xa7, 0x60, 0xc3, 0xd7, 0xec, 0xaa, 0x39, 0x1a, 0x05,
- 0x39, 0x82, 0x81, 0xe0, 0x15, 0x2c, 0x35, 0xd1, 0xee, 0x25, 0x02, 0x03,
- 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x48, 0x30, 0x82, 0x01, 0x44, 0x30,
- 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14,
- 0xc0, 0x7a, 0x98, 0x68, 0x8d, 0x89, 0xfb, 0xab, 0x05, 0x64, 0x0c, 0x11,
- 0x7d, 0xaa, 0x7d, 0x65, 0xb8, 0xca, 0xcc, 0x4e, 0x30, 0x1d, 0x06, 0x03,
- 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xad, 0x65, 0x22, 0x85, 0x90,
- 0xd0, 0x3b, 0xe3, 0xa1, 0x49, 0x8b, 0x37, 0xf9, 0xf1, 0x0b, 0x1d, 0x5f,
- 0x17, 0xa0, 0x77, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01,
- 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30,
- 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03,
- 0x02, 0x01, 0x06, 0x30, 0x35, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2e,
- 0x30, 0x2c, 0x30, 0x2a, 0xa0, 0x28, 0xa0, 0x26, 0x86, 0x24, 0x68, 0x74,
- 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62,
- 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x72, 0x6c, 0x73, 0x2f, 0x67, 0x74,
- 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x2e,
- 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x22,
- 0x30, 0x20, 0x30, 0x1e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07,
- 0x30, 0x01, 0x86, 0x12, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67,
- 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x64, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x4c,
- 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x45, 0x30, 0x43, 0x30, 0x41, 0x06,
- 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, 0x07, 0x36, 0x30,
- 0x33, 0x30, 0x31, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02,
- 0x01, 0x16, 0x25, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77,
- 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63,
- 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73,
- 0x2f, 0x63, 0x70, 0x73, 0x30, 0x29, 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04,
- 0x22, 0x30, 0x20, 0xa4, 0x1e, 0x30, 0x1c, 0x31, 0x1a, 0x30, 0x18, 0x06,
- 0x03, 0x55, 0x04, 0x03, 0x13, 0x11, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74,
- 0x65, 0x63, 0x50, 0x4b, 0x49, 0x2d, 0x31, 0x2d, 0x36, 0x39, 0x39, 0x30,
- 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b,
- 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x4e, 0x27, 0xb8, 0x1a, 0xc7,
- 0x3b, 0xdc, 0x5d, 0xbb, 0x9e, 0x1a, 0x35, 0x23, 0x1e, 0x88, 0x55, 0x90,
- 0xd1, 0xec, 0x86, 0x9c, 0x88, 0xb7, 0xe0, 0x1f, 0x67, 0x87, 0xe2, 0x7c,
- 0xb5, 0x43, 0x03, 0x0e, 0xb6, 0x02, 0xe8, 0xe0, 0xff, 0x86, 0x84, 0x19,
- 0x71, 0xe9, 0xf2, 0x4b, 0xf5, 0x9e, 0x2e, 0x2e, 0x5e, 0xdb, 0xab, 0xd6,
- 0x1c, 0x4e, 0xc4, 0x3e, 0xb8, 0x2c, 0x78, 0x86, 0x71, 0x10, 0xae, 0x8d,
- 0xc5, 0x70, 0xbf, 0xa4, 0xf9, 0x89, 0xe6, 0xb4, 0xed, 0xe8, 0x4b, 0xed,
- 0x7c, 0x09, 0x2a, 0x09, 0x08, 0x06, 0x3e, 0xd4, 0xe1, 0xde, 0x82, 0x92,
- 0x0c, 0x34, 0x30, 0x35, 0x0a, 0xc1, 0x60, 0x75, 0xca, 0xb6, 0x55, 0x6b,
- 0xaa, 0x00, 0x42, 0xcb, 0x3f, 0xfb, 0x10, 0xe1, 0xfb, 0x85, 0xc1, 0x21,
- 0x90, 0x72, 0x2b, 0x6e, 0xc0, 0xe8, 0x9d, 0xd9, 0xb5, 0x5a, 0x50, 0x8e,
- 0x34, 0x1e, 0xbb, 0x38, 0xa7, 0x3c, 0x31, 0xbd, 0x7a, 0xf2, 0x43, 0x8b,
- 0xeb, 0x16, 0xca, 0xad, 0x9b, 0xde, 0x6b, 0x1e, 0xf8, 0x4f, 0xb6, 0x5e,
- 0x4a, 0x29, 0x1f, 0x7a, 0x14, 0xee, 0x91, 0xf4, 0x94, 0x4f, 0xa4, 0xbd,
- 0x9b, 0x76, 0x7a, 0xbc, 0xf1, 0x51, 0x7a, 0x96, 0xa8, 0x81, 0x0e, 0x83,
- 0x87, 0x3f, 0x8b, 0xae, 0x5e, 0x32, 0x9b, 0x34, 0x9e, 0xb2, 0xe7, 0xdb,
- 0x2f, 0xec, 0x02, 0xa0, 0xe1, 0xfd, 0x51, 0x52, 0xfe, 0x2c, 0xdb, 0x36,
- 0xba, 0xc1, 0xd6, 0x5e, 0x4b, 0x58, 0x6d, 0xde, 0xc6, 0xe1, 0xe1, 0xfa,
- 0x9a, 0x03, 0x2c, 0x5b, 0xa2, 0xe1, 0xb3, 0x9b, 0xf9, 0x36, 0xec, 0xc1,
- 0x73, 0xfa, 0x33, 0x12, 0x66, 0x95, 0xe3, 0x69, 0x10, 0xb6, 0xd7, 0xaa,
- 0x33, 0xfa, 0xf6, 0x9d, 0x41, 0x6d, 0x96, 0x2a, 0xba, 0xbe, 0x83, 0x31,
- 0x41, 0x7f, 0x0c, 0x0a, 0xd2, 0x69, 0xd6, 0xfc, 0x35, 0x4c, 0xc3,
-}
-
-var certSet3Cert17 = []byte{
- 0x30, 0x82, 0x04, 0x75, 0x30, 0x82, 0x03, 0x5d, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x09, 0x00, 0xa7, 0x0e, 0x4a, 0x4c, 0x34, 0x82, 0xb7, 0x7f,
- 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
- 0x0b, 0x05, 0x00, 0x30, 0x68, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55,
- 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03,
- 0x55, 0x04, 0x0a, 0x13, 0x1c, 0x53, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65,
- 0x6c, 0x64, 0x20, 0x54, 0x65, 0x63, 0x68, 0x6e, 0x6f, 0x6c, 0x6f, 0x67,
- 0x69, 0x65, 0x73, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x32, 0x30,
- 0x30, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x29, 0x53, 0x74, 0x61, 0x72,
- 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20,
- 0x32, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74,
- 0x79, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x39, 0x30, 0x39, 0x30, 0x32, 0x30,
- 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x33, 0x34, 0x30, 0x36,
- 0x32, 0x38, 0x31, 0x37, 0x33, 0x39, 0x31, 0x36, 0x5a, 0x30, 0x81, 0x98,
- 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55,
- 0x53, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x07,
- 0x41, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x61, 0x31, 0x13, 0x30, 0x11, 0x06,
- 0x03, 0x55, 0x04, 0x07, 0x13, 0x0a, 0x53, 0x63, 0x6f, 0x74, 0x74, 0x73,
- 0x64, 0x61, 0x6c, 0x65, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04,
- 0x0a, 0x13, 0x1c, 0x53, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64,
- 0x20, 0x54, 0x65, 0x63, 0x68, 0x6e, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x65,
- 0x73, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x3b, 0x30, 0x39, 0x06,
- 0x03, 0x55, 0x04, 0x03, 0x13, 0x32, 0x53, 0x74, 0x61, 0x72, 0x66, 0x69,
- 0x65, 0x6c, 0x64, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73,
- 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66,
- 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72,
- 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22,
- 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
- 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a,
- 0x02, 0x82, 0x01, 0x01, 0x00, 0xd5, 0x0c, 0x3a, 0xc4, 0x2a, 0xf9, 0x4e,
- 0xe2, 0xf5, 0xbe, 0x19, 0x97, 0x5f, 0x8e, 0x88, 0x53, 0xb1, 0x1f, 0x3f,
- 0xcb, 0xcf, 0x9f, 0x20, 0x13, 0x6d, 0x29, 0x3a, 0xc8, 0x0f, 0x7d, 0x3c,
- 0xf7, 0x6b, 0x76, 0x38, 0x63, 0xd9, 0x36, 0x60, 0xa8, 0x9b, 0x5e, 0x5c,
- 0x00, 0x80, 0xb2, 0x2f, 0x59, 0x7f, 0xf6, 0x87, 0xf9, 0x25, 0x43, 0x86,
- 0xe7, 0x69, 0x1b, 0x52, 0x9a, 0x90, 0xe1, 0x71, 0xe3, 0xd8, 0x2d, 0x0d,
- 0x4e, 0x6f, 0xf6, 0xc8, 0x49, 0xd9, 0xb6, 0xf3, 0x1a, 0x56, 0xae, 0x2b,
- 0xb6, 0x74, 0x14, 0xeb, 0xcf, 0xfb, 0x26, 0xe3, 0x1a, 0xba, 0x1d, 0x96,
- 0x2e, 0x6a, 0x3b, 0x58, 0x94, 0x89, 0x47, 0x56, 0xff, 0x25, 0xa0, 0x93,
- 0x70, 0x53, 0x83, 0xda, 0x84, 0x74, 0x14, 0xc3, 0x67, 0x9e, 0x04, 0x68,
- 0x3a, 0xdf, 0x8e, 0x40, 0x5a, 0x1d, 0x4a, 0x4e, 0xcf, 0x43, 0x91, 0x3b,
- 0xe7, 0x56, 0xd6, 0x00, 0x70, 0xcb, 0x52, 0xee, 0x7b, 0x7d, 0xae, 0x3a,
- 0xe7, 0xbc, 0x31, 0xf9, 0x45, 0xf6, 0xc2, 0x60, 0xcf, 0x13, 0x59, 0x02,
- 0x2b, 0x80, 0xcc, 0x34, 0x47, 0xdf, 0xb9, 0xde, 0x90, 0x65, 0x6d, 0x02,
- 0xcf, 0x2c, 0x91, 0xa6, 0xa6, 0xe7, 0xde, 0x85, 0x18, 0x49, 0x7c, 0x66,
- 0x4e, 0xa3, 0x3a, 0x6d, 0xa9, 0xb5, 0xee, 0x34, 0x2e, 0xba, 0x0d, 0x03,
- 0xb8, 0x33, 0xdf, 0x47, 0xeb, 0xb1, 0x6b, 0x8d, 0x25, 0xd9, 0x9b, 0xce,
- 0x81, 0xd1, 0x45, 0x46, 0x32, 0x96, 0x70, 0x87, 0xde, 0x02, 0x0e, 0x49,
- 0x43, 0x85, 0xb6, 0x6c, 0x73, 0xbb, 0x64, 0xea, 0x61, 0x41, 0xac, 0xc9,
- 0xd4, 0x54, 0xdf, 0x87, 0x2f, 0xc7, 0x22, 0xb2, 0x26, 0xcc, 0x9f, 0x59,
- 0x54, 0x68, 0x9f, 0xfc, 0xbe, 0x2a, 0x2f, 0xc4, 0x55, 0x1c, 0x75, 0x40,
- 0x60, 0x17, 0x85, 0x02, 0x55, 0x39, 0x8b, 0x7f, 0x05, 0x02, 0x03, 0x01,
- 0x00, 0x01, 0xa3, 0x81, 0xf0, 0x30, 0x81, 0xed, 0x30, 0x0f, 0x06, 0x03,
- 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01,
- 0xff, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04,
- 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e,
- 0x04, 0x16, 0x04, 0x14, 0x9c, 0x5f, 0x00, 0xdf, 0xaa, 0x01, 0xd7, 0x30,
- 0x2b, 0x38, 0x88, 0xa2, 0xb8, 0x6d, 0x4a, 0x9c, 0xf2, 0x11, 0x91, 0x83,
- 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80,
- 0x14, 0xbf, 0x5f, 0xb7, 0xd1, 0xce, 0xdd, 0x1f, 0x86, 0xf4, 0x5b, 0x55,
- 0xac, 0xdc, 0xd7, 0x10, 0xc2, 0x0e, 0xa9, 0x88, 0xe7, 0x30, 0x4f, 0x06,
- 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x43, 0x30,
- 0x41, 0x30, 0x1c, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30,
- 0x01, 0x86, 0x10, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x2e,
- 0x73, 0x73, 0x32, 0x2e, 0x75, 0x73, 0x2f, 0x30, 0x21, 0x06, 0x08, 0x2b,
- 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x15, 0x68, 0x74, 0x74,
- 0x70, 0x3a, 0x2f, 0x2f, 0x78, 0x2e, 0x73, 0x73, 0x32, 0x2e, 0x75, 0x73,
- 0x2f, 0x78, 0x2e, 0x63, 0x65, 0x72, 0x30, 0x26, 0x06, 0x03, 0x55, 0x1d,
- 0x1f, 0x04, 0x1f, 0x30, 0x1d, 0x30, 0x1b, 0xa0, 0x19, 0xa0, 0x17, 0x86,
- 0x15, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x73, 0x2e, 0x73, 0x73,
- 0x32, 0x2e, 0x75, 0x73, 0x2f, 0x72, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x11,
- 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x0a, 0x30, 0x08, 0x30, 0x06, 0x06,
- 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48,
- 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01,
- 0x00, 0x23, 0x1d, 0xe3, 0x8a, 0x57, 0xca, 0x7d, 0xe9, 0x17, 0x79, 0x4c,
- 0xf1, 0x1e, 0x55, 0xfd, 0xcc, 0x53, 0x6e, 0x3e, 0x47, 0x0f, 0xdf, 0xc6,
- 0x55, 0xf2, 0xb2, 0x04, 0x36, 0xed, 0x80, 0x1f, 0x53, 0xc4, 0x5d, 0x34,
- 0x28, 0x6b, 0xbe, 0xc7, 0x55, 0xfc, 0x67, 0xea, 0xcb, 0x3f, 0x7f, 0x90,
- 0xb2, 0x33, 0xcd, 0x1b, 0x58, 0x10, 0x82, 0x02, 0xf8, 0xf8, 0x2f, 0xf5,
- 0x13, 0x60, 0xd4, 0x05, 0xce, 0xf1, 0x81, 0x08, 0xc1, 0xdd, 0xa7, 0x75,
- 0x97, 0x4f, 0x18, 0xb9, 0x6d, 0xde, 0xf7, 0x93, 0x91, 0x08, 0xba, 0x7e,
- 0x40, 0x2c, 0xed, 0xc1, 0xea, 0xbb, 0x76, 0x9e, 0x33, 0x06, 0x77, 0x1d,
- 0x0d, 0x08, 0x7f, 0x53, 0xdd, 0x1b, 0x64, 0xab, 0x82, 0x27, 0xf1, 0x69,
- 0xd5, 0x4d, 0x5e, 0xae, 0xf4, 0xa1, 0xc3, 0x75, 0xa7, 0x58, 0x44, 0x2d,
- 0xf2, 0x3c, 0x70, 0x98, 0xac, 0xba, 0x69, 0xb6, 0x95, 0x77, 0x7f, 0x0f,
- 0x31, 0x5e, 0x2c, 0xfc, 0xa0, 0x87, 0x3a, 0x47, 0x69, 0xf0, 0x79, 0x5f,
- 0xf4, 0x14, 0x54, 0xa4, 0x95, 0x5e, 0x11, 0x78, 0x12, 0x60, 0x27, 0xce,
- 0x9f, 0xc2, 0x77, 0xff, 0x23, 0x53, 0x77, 0x5d, 0xba, 0xff, 0xea, 0x59,
- 0xe7, 0xdb, 0xcf, 0xaf, 0x92, 0x96, 0xef, 0x24, 0x9a, 0x35, 0x10, 0x7a,
- 0x9c, 0x91, 0xc6, 0x0e, 0x7d, 0x99, 0xf6, 0x3f, 0x19, 0xdf, 0xf5, 0x72,
- 0x54, 0xe1, 0x15, 0xa9, 0x07, 0x59, 0x7b, 0x83, 0xbf, 0x52, 0x2e, 0x46,
- 0x8c, 0xb2, 0x00, 0x64, 0x76, 0x1c, 0x48, 0xd3, 0xd8, 0x79, 0xe8, 0x6e,
- 0x56, 0xcc, 0xae, 0x2c, 0x03, 0x90, 0xd7, 0x19, 0x38, 0x99, 0xe4, 0xca,
- 0x09, 0x19, 0x5b, 0xff, 0x07, 0x96, 0xb0, 0xa8, 0x7f, 0x34, 0x49, 0xdf,
- 0x56, 0xa9, 0xf7, 0xb0, 0x5f, 0xed, 0x33, 0xed, 0x8c, 0x47, 0xb7, 0x30,
- 0x03, 0x5d, 0xf4, 0x03, 0x8c,
-}
-
-var certSet3Cert18 = []byte{
- 0x30, 0x82, 0x04, 0x79, 0x30, 0x82, 0x03, 0x61, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x04, 0x07, 0x27, 0xa2, 0x76, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x5a,
- 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x49,
- 0x45, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x09,
- 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x31, 0x13, 0x30,
- 0x11, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0a, 0x43, 0x79, 0x62, 0x65,
- 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03,
- 0x55, 0x04, 0x03, 0x13, 0x19, 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f,
- 0x72, 0x65, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73,
- 0x74, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34,
- 0x30, 0x32, 0x32, 0x37, 0x31, 0x38, 0x30, 0x39, 0x32, 0x37, 0x5a, 0x17,
- 0x0d, 0x32, 0x30, 0x30, 0x36, 0x30, 0x39, 0x31, 0x37, 0x30, 0x37, 0x32,
- 0x39, 0x5a, 0x30, 0x5a, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04,
- 0x06, 0x13, 0x02, 0x4a, 0x50, 0x31, 0x23, 0x30, 0x21, 0x06, 0x03, 0x55,
- 0x04, 0x0a, 0x13, 0x1a, 0x43, 0x79, 0x62, 0x65, 0x72, 0x74, 0x72, 0x75,
- 0x73, 0x74, 0x20, 0x4a, 0x61, 0x70, 0x61, 0x6e, 0x20, 0x43, 0x6f, 0x2e,
- 0x2c, 0x20, 0x4c, 0x74, 0x64, 0x2e, 0x31, 0x26, 0x30, 0x24, 0x06, 0x03,
- 0x55, 0x04, 0x03, 0x13, 0x1d, 0x43, 0x79, 0x62, 0x65, 0x72, 0x74, 0x72,
- 0x75, 0x73, 0x74, 0x20, 0x4a, 0x61, 0x70, 0x61, 0x6e, 0x20, 0x50, 0x75,
- 0x62, 0x6c, 0x69, 0x63, 0x20, 0x43, 0x41, 0x20, 0x47, 0x33, 0x30, 0x82,
- 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
- 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82,
- 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0x94, 0x56, 0xa3, 0x45, 0x44,
- 0x54, 0xaa, 0x60, 0x64, 0xbf, 0xb8, 0x57, 0x9f, 0x4e, 0xdb, 0xd4, 0x79,
- 0x68, 0x5f, 0x13, 0x05, 0xf4, 0x3f, 0xcd, 0x25, 0xdd, 0x3c, 0x5e, 0x58,
- 0x77, 0x1c, 0x9d, 0xe6, 0x9f, 0xe3, 0x32, 0x49, 0xef, 0x02, 0x3a, 0x34,
- 0x53, 0x8d, 0x52, 0xe5, 0xe3, 0x39, 0x66, 0x1f, 0xe7, 0x33, 0x61, 0xb6,
- 0x27, 0xc6, 0x24, 0x55, 0x50, 0x27, 0x02, 0x65, 0xf0, 0xb0, 0x8c, 0x41,
- 0x8d, 0x30, 0x5e, 0x47, 0x5b, 0x82, 0x6f, 0xc7, 0x9c, 0xa3, 0x28, 0x43,
- 0x6d, 0x58, 0x7b, 0xc8, 0x15, 0x98, 0x4e, 0x25, 0x6f, 0xcb, 0x76, 0x27,
- 0x5b, 0x0b, 0x2c, 0x2c, 0xb5, 0x98, 0x23, 0xe7, 0x8b, 0x7c, 0xfd, 0x77,
- 0x1a, 0xc4, 0x52, 0xba, 0x5d, 0x19, 0xee, 0x78, 0x21, 0x4d, 0x21, 0x9a,
- 0xd9, 0x12, 0x7c, 0x33, 0x15, 0x6b, 0x1a, 0xc9, 0x81, 0xea, 0xda, 0xda,
- 0x57, 0xb7, 0xd5, 0x2f, 0xce, 0x1f, 0x4b, 0xfc, 0xb4, 0x33, 0xe0, 0xa0,
- 0xc9, 0x94, 0x27, 0xbb, 0x27, 0x40, 0xb6, 0x90, 0xdb, 0xac, 0x9e, 0x75,
- 0xa6, 0x11, 0x2b, 0x49, 0x19, 0x2d, 0xc3, 0xc2, 0x43, 0x07, 0x09, 0xbb,
- 0x3d, 0x6e, 0x88, 0xa3, 0xe3, 0x8a, 0xc5, 0xd2, 0x86, 0xf6, 0x65, 0x5b,
- 0x34, 0xc3, 0x9f, 0x4c, 0x02, 0xe5, 0x09, 0xba, 0x2c, 0xc6, 0x76, 0x66,
- 0xeb, 0xd1, 0x76, 0x25, 0xf4, 0x30, 0x13, 0xfb, 0x58, 0x60, 0xa8, 0x58,
- 0xe3, 0x51, 0x6f, 0x4b, 0x08, 0x04, 0x61, 0x8d, 0xac, 0xa9, 0x30, 0x2f,
- 0x52, 0x41, 0xa3, 0x22, 0xc1, 0x33, 0x59, 0xab, 0x7b, 0x59, 0xf9, 0x93,
- 0x67, 0x4b, 0xc9, 0x89, 0x75, 0x52, 0xef, 0x29, 0x49, 0x34, 0x93, 0x1c,
- 0x9c, 0x93, 0x73, 0x9c, 0x19, 0xce, 0x5c, 0x18, 0xcd, 0x4c, 0x09, 0x27,
- 0xc1, 0x3f, 0xf5, 0x49, 0xec, 0xf4, 0xe2, 0xdf, 0x4b, 0xaf, 0x8f, 0x02,
- 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x45, 0x30, 0x82, 0x01, 0x41,
- 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08,
- 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x53, 0x06, 0x03,
- 0x55, 0x1d, 0x20, 0x04, 0x4c, 0x30, 0x4a, 0x30, 0x48, 0x06, 0x09, 0x2b,
- 0x06, 0x01, 0x04, 0x01, 0xb1, 0x3e, 0x01, 0x00, 0x30, 0x3b, 0x30, 0x39,
- 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x2d,
- 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x79, 0x62, 0x65, 0x72,
- 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6f, 0x6d, 0x6e, 0x69, 0x72, 0x6f,
- 0x6f, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73,
- 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x63, 0x66, 0x6d, 0x30, 0x42, 0x06,
- 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x36, 0x30,
- 0x34, 0x30, 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30,
- 0x01, 0x86, 0x26, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63,
- 0x73, 0x70, 0x2e, 0x6f, 0x6d, 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x2e,
- 0x63, 0x6f, 0x6d, 0x2f, 0x62, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72,
- 0x65, 0x72, 0x6f, 0x6f, 0x74, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f,
- 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x1f, 0x06,
- 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xe5, 0x9d,
- 0x59, 0x30, 0x82, 0x47, 0x58, 0xcc, 0xac, 0xfa, 0x08, 0x54, 0x36, 0x86,
- 0x7b, 0x3a, 0xb5, 0x04, 0x4d, 0xf0, 0x30, 0x42, 0x06, 0x03, 0x55, 0x1d,
- 0x1f, 0x04, 0x3b, 0x30, 0x39, 0x30, 0x37, 0xa0, 0x35, 0xa0, 0x33, 0x86,
- 0x31, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x64, 0x70, 0x31,
- 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2d, 0x74, 0x72, 0x75, 0x73,
- 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x52, 0x4c, 0x2f, 0x4f, 0x6d,
- 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x32, 0x30, 0x32, 0x35, 0x2e, 0x63,
- 0x72, 0x6c, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04,
- 0x14, 0x73, 0xa8, 0x08, 0x53, 0x29, 0xb8, 0x15, 0xfb, 0x99, 0x80, 0xe5,
- 0xc5, 0x37, 0xd8, 0xf8, 0x39, 0x7b, 0xa4, 0x13, 0x06, 0x30, 0x0d, 0x06,
- 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00,
- 0x03, 0x82, 0x01, 0x01, 0x00, 0x68, 0xdf, 0xfe, 0x72, 0x54, 0x4e, 0x1b,
- 0xfb, 0x5c, 0x6e, 0x5a, 0x45, 0x46, 0xcf, 0x42, 0xbe, 0xb2, 0x02, 0x9c,
- 0x9d, 0x90, 0x6a, 0x09, 0x2e, 0xb7, 0x36, 0x64, 0x24, 0xb6, 0xb1, 0xe2,
- 0x48, 0x67, 0xce, 0x17, 0x46, 0x9b, 0x23, 0x75, 0x78, 0x11, 0xf6, 0xc6,
- 0x09, 0x38, 0x42, 0x62, 0x96, 0x97, 0x30, 0x7b, 0x51, 0x77, 0xdf, 0x33,
- 0xb5, 0x00, 0x51, 0x29, 0xd5, 0x24, 0xfe, 0xb7, 0x98, 0xa2, 0xac, 0x6c,
- 0xa1, 0x13, 0x7f, 0xca, 0xf3, 0xb7, 0xa6, 0x52, 0xc2, 0x16, 0x0d, 0xec,
- 0x3a, 0xbf, 0xa3, 0x37, 0x77, 0x4f, 0xae, 0x7b, 0x55, 0x1d, 0x46, 0xe9,
- 0x10, 0xda, 0xc3, 0xb4, 0x05, 0x5c, 0x5b, 0xf6, 0x48, 0x21, 0x00, 0x89,
- 0xf4, 0xbb, 0x38, 0x8e, 0x1e, 0x33, 0xf3, 0x49, 0x97, 0x81, 0x31, 0x6c,
- 0x16, 0x74, 0x08, 0x91, 0x17, 0xc0, 0xd3, 0x25, 0xb3, 0xbc, 0xc1, 0x15,
- 0xb5, 0xa4, 0xcd, 0x84, 0x4d, 0xb9, 0xc8, 0xeb, 0xc5, 0x59, 0x42, 0x10,
- 0x14, 0x25, 0x79, 0xf8, 0xdb, 0xb6, 0xd0, 0xe6, 0xd3, 0xa0, 0x14, 0x7c,
- 0x17, 0x1c, 0x20, 0x1e, 0xed, 0x99, 0x90, 0x65, 0xc0, 0x41, 0x71, 0xc3,
- 0xab, 0x3f, 0x29, 0x41, 0x67, 0xf9, 0xe2, 0xd1, 0x98, 0xe3, 0xf8, 0xdf,
- 0x3a, 0xb8, 0xca, 0xa3, 0x6f, 0x68, 0x8b, 0x6c, 0x9f, 0x6e, 0x88, 0x7c,
- 0x9d, 0x41, 0x5c, 0xba, 0xcb, 0x19, 0x05, 0x83, 0x9c, 0x99, 0xf4, 0x1a,
- 0xd2, 0x24, 0x69, 0x57, 0x0a, 0x0f, 0x7a, 0xc3, 0x1b, 0x2c, 0x4b, 0x06,
- 0xd3, 0x2a, 0x97, 0x7e, 0x07, 0xb0, 0xf9, 0x20, 0x5a, 0xb5, 0x92, 0x4b,
- 0x5b, 0xa8, 0xeb, 0xeb, 0x36, 0x33, 0x47, 0x36, 0xda, 0x72, 0x9c, 0xbf,
- 0x68, 0x45, 0x81, 0x31, 0xbe, 0xd2, 0xfd, 0x3b, 0xe9, 0x72, 0xd5, 0x70,
- 0xdd, 0xa6, 0xde, 0x5f, 0x0d, 0xb6, 0x5e, 0x00, 0x49,
-}
-
-var certSet3Cert19 = []byte{
- 0x30, 0x82, 0x04, 0x7d, 0x30, 0x82, 0x03, 0x65, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x03, 0x1b, 0xe7, 0x15, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
- 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x63, 0x31,
- 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53,
- 0x31, 0x21, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x18, 0x54,
- 0x68, 0x65, 0x20, 0x47, 0x6f, 0x20, 0x44, 0x61, 0x64, 0x64, 0x79, 0x20,
- 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31,
- 0x31, 0x30, 0x2f, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x28, 0x47, 0x6f,
- 0x20, 0x44, 0x61, 0x64, 0x64, 0x79, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73,
- 0x20, 0x32, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69,
- 0x74, 0x79, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34, 0x30, 0x31, 0x30, 0x31,
- 0x30, 0x37, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x33, 0x31, 0x30,
- 0x35, 0x33, 0x30, 0x30, 0x37, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x81,
- 0x83, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
- 0x55, 0x53, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13,
- 0x07, 0x41, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x61, 0x31, 0x13, 0x30, 0x11,
- 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x0a, 0x53, 0x63, 0x6f, 0x74, 0x74,
- 0x73, 0x64, 0x61, 0x6c, 0x65, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55,
- 0x04, 0x0a, 0x13, 0x11, 0x47, 0x6f, 0x44, 0x61, 0x64, 0x64, 0x79, 0x2e,
- 0x63, 0x6f, 0x6d, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x31, 0x30,
- 0x2f, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x28, 0x47, 0x6f, 0x20, 0x44,
- 0x61, 0x64, 0x64, 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x65,
- 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75,
- 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32,
- 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
- 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00,
- 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xbf, 0x71, 0x62,
- 0x08, 0xf1, 0xfa, 0x59, 0x34, 0xf7, 0x1b, 0xc9, 0x18, 0xa3, 0xf7, 0x80,
- 0x49, 0x58, 0xe9, 0x22, 0x83, 0x13, 0xa6, 0xc5, 0x20, 0x43, 0x01, 0x3b,
- 0x84, 0xf1, 0xe6, 0x85, 0x49, 0x9f, 0x27, 0xea, 0xf6, 0x84, 0x1b, 0x4e,
- 0xa0, 0xb4, 0xdb, 0x70, 0x98, 0xc7, 0x32, 0x01, 0xb1, 0x05, 0x3e, 0x07,
- 0x4e, 0xee, 0xf4, 0xfa, 0x4f, 0x2f, 0x59, 0x30, 0x22, 0xe7, 0xab, 0x19,
- 0x56, 0x6b, 0xe2, 0x80, 0x07, 0xfc, 0xf3, 0x16, 0x75, 0x80, 0x39, 0x51,
- 0x7b, 0xe5, 0xf9, 0x35, 0xb6, 0x74, 0x4e, 0xa9, 0x8d, 0x82, 0x13, 0xe4,
- 0xb6, 0x3f, 0xa9, 0x03, 0x83, 0xfa, 0xa2, 0xbe, 0x8a, 0x15, 0x6a, 0x7f,
- 0xde, 0x0b, 0xc3, 0xb6, 0x19, 0x14, 0x05, 0xca, 0xea, 0xc3, 0xa8, 0x04,
- 0x94, 0x3b, 0x46, 0x7c, 0x32, 0x0d, 0xf3, 0x00, 0x66, 0x22, 0xc8, 0x8d,
- 0x69, 0x6d, 0x36, 0x8c, 0x11, 0x18, 0xb7, 0xd3, 0xb2, 0x1c, 0x60, 0xb4,
- 0x38, 0xfa, 0x02, 0x8c, 0xce, 0xd3, 0xdd, 0x46, 0x07, 0xde, 0x0a, 0x3e,
- 0xeb, 0x5d, 0x7c, 0xc8, 0x7c, 0xfb, 0xb0, 0x2b, 0x53, 0xa4, 0x92, 0x62,
- 0x69, 0x51, 0x25, 0x05, 0x61, 0x1a, 0x44, 0x81, 0x8c, 0x2c, 0xa9, 0x43,
- 0x96, 0x23, 0xdf, 0xac, 0x3a, 0x81, 0x9a, 0x0e, 0x29, 0xc5, 0x1c, 0xa9,
- 0xe9, 0x5d, 0x1e, 0xb6, 0x9e, 0x9e, 0x30, 0x0a, 0x39, 0xce, 0xf1, 0x88,
- 0x80, 0xfb, 0x4b, 0x5d, 0xcc, 0x32, 0xec, 0x85, 0x62, 0x43, 0x25, 0x34,
- 0x02, 0x56, 0x27, 0x01, 0x91, 0xb4, 0x3b, 0x70, 0x2a, 0x3f, 0x6e, 0xb1,
- 0xe8, 0x9c, 0x88, 0x01, 0x7d, 0x9f, 0xd4, 0xf9, 0xdb, 0x53, 0x6d, 0x60,
- 0x9d, 0xbf, 0x2c, 0xe7, 0x58, 0xab, 0xb8, 0x5f, 0x46, 0xfc, 0xce, 0xc4,
- 0x1b, 0x03, 0x3c, 0x09, 0xeb, 0x49, 0x31, 0x5c, 0x69, 0x46, 0xb3, 0xe0,
- 0x47, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x17, 0x30, 0x82,
- 0x01, 0x13, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff,
- 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0e, 0x06, 0x03, 0x55,
- 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30,
- 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x3a, 0x9a,
- 0x85, 0x07, 0x10, 0x67, 0x28, 0xb6, 0xef, 0xf6, 0xbd, 0x05, 0x41, 0x6e,
- 0x20, 0xc1, 0x94, 0xda, 0x0f, 0xde, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d,
- 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xd2, 0xc4, 0xb0, 0xd2, 0x91,
- 0xd4, 0x4c, 0x11, 0x71, 0xb3, 0x61, 0xcb, 0x3d, 0xa1, 0xfe, 0xdd, 0xa8,
- 0x6a, 0xd4, 0xe3, 0x30, 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
- 0x07, 0x01, 0x01, 0x04, 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, 0x2b,
- 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74,
- 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x67, 0x6f, 0x64,
- 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x30, 0x32, 0x06,
- 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2b, 0x30, 0x29, 0x30, 0x27, 0xa0, 0x25,
- 0xa0, 0x23, 0x86, 0x21, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63,
- 0x72, 0x6c, 0x2e, 0x67, 0x6f, 0x64, 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63,
- 0x6f, 0x6d, 0x2f, 0x67, 0x64, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x72,
- 0x6c, 0x30, 0x46, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x3f, 0x30, 0x3d,
- 0x30, 0x3b, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x33, 0x30, 0x31,
- 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x25,
- 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x63, 0x65, 0x72, 0x74,
- 0x73, 0x2e, 0x67, 0x6f, 0x64, 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, 0x6f,
- 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79,
- 0x2f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01,
- 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x59, 0x0b, 0x53,
- 0xbd, 0x92, 0x86, 0x11, 0xa7, 0x24, 0x7b, 0xed, 0x5b, 0x31, 0xcf, 0x1d,
- 0x1f, 0x6c, 0x70, 0xc5, 0xb8, 0x6e, 0xbe, 0x4e, 0xbb, 0xf6, 0xbe, 0x97,
- 0x50, 0xe1, 0x30, 0x7f, 0xba, 0x28, 0x5c, 0x62, 0x94, 0xc2, 0xe3, 0x7e,
- 0x33, 0xf7, 0xfb, 0x42, 0x76, 0x85, 0xdb, 0x95, 0x1c, 0x8c, 0x22, 0x58,
- 0x75, 0x09, 0x0c, 0x88, 0x65, 0x67, 0x39, 0x0a, 0x16, 0x09, 0xc5, 0xa0,
- 0x38, 0x97, 0xa4, 0xc5, 0x23, 0x93, 0x3f, 0xb4, 0x18, 0xa6, 0x01, 0x06,
- 0x44, 0x91, 0xe3, 0xa7, 0x69, 0x27, 0xb4, 0x5a, 0x25, 0x7f, 0x3a, 0xb7,
- 0x32, 0xcd, 0xdd, 0x84, 0xff, 0x2a, 0x38, 0x29, 0x33, 0xa4, 0xdd, 0x67,
- 0xb2, 0x85, 0xfe, 0xa1, 0x88, 0x20, 0x1c, 0x50, 0x89, 0xc8, 0xdc, 0x2a,
- 0xf6, 0x42, 0x03, 0x37, 0x4c, 0xe6, 0x88, 0xdf, 0xd5, 0xaf, 0x24, 0xf2,
- 0xb1, 0xc3, 0xdf, 0xcc, 0xb5, 0xec, 0xe0, 0x99, 0x5e, 0xb7, 0x49, 0x54,
- 0x20, 0x3c, 0x94, 0x18, 0x0c, 0xc7, 0x1c, 0x52, 0x18, 0x49, 0xa4, 0x6d,
- 0xe1, 0xb3, 0x58, 0x0b, 0xc9, 0xd8, 0xec, 0xd9, 0xae, 0x1c, 0x32, 0x8e,
- 0x28, 0x70, 0x0d, 0xe2, 0xfe, 0xa6, 0x17, 0x9e, 0x84, 0x0f, 0xbd, 0x57,
- 0x70, 0xb3, 0x5a, 0xe9, 0x1f, 0xa0, 0x86, 0x53, 0xbb, 0xef, 0x7c, 0xff,
- 0x69, 0x0b, 0xe0, 0x48, 0xc3, 0xb7, 0x93, 0x0b, 0xc8, 0x0a, 0x54, 0xc4,
- 0xac, 0x5d, 0x14, 0x67, 0x37, 0x6c, 0xca, 0xa5, 0x2f, 0x31, 0x08, 0x37,
- 0xaa, 0x6e, 0x6f, 0x8c, 0xbc, 0x9b, 0xe2, 0x57, 0x5d, 0x24, 0x81, 0xaf,
- 0x97, 0x97, 0x9c, 0x84, 0xad, 0x6c, 0xac, 0x37, 0x4c, 0x66, 0xf3, 0x61,
- 0x91, 0x11, 0x20, 0xe4, 0xbe, 0x30, 0x9f, 0x7a, 0xa4, 0x29, 0x09, 0xb0,
- 0xe1, 0x34, 0x5f, 0x64, 0x77, 0x18, 0x40, 0x51, 0xdf, 0x8c, 0x30, 0xa6,
- 0xaf,
-}
-
-var certSet3Cert20 = []byte{
- 0x30, 0x82, 0x04, 0x8b, 0x30, 0x82, 0x03, 0x73, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x0e, 0x46, 0xf0, 0x8c, 0xdb, 0xcf, 0x2c, 0x54, 0x66, 0xef,
- 0x33, 0x01, 0xdd, 0x5f, 0x34, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48,
- 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x57, 0x31, 0x0b,
- 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x42, 0x45, 0x31,
- 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x10, 0x47, 0x6c,
- 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x6e, 0x76, 0x2d,
- 0x73, 0x61, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13,
- 0x07, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x31, 0x1b, 0x30, 0x19,
- 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x47, 0x6c, 0x6f, 0x62, 0x61,
- 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43,
- 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x35, 0x30, 0x38, 0x31, 0x39, 0x30,
- 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x35, 0x30, 0x38,
- 0x31, 0x39, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x57, 0x31,
- 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x42, 0x45,
- 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x10, 0x47,
- 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x6e, 0x76,
- 0x2d, 0x73, 0x61, 0x31, 0x2d, 0x30, 0x2b, 0x06, 0x03, 0x55, 0x04, 0x03,
- 0x13, 0x24, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e,
- 0x20, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41,
- 0x20, 0x2d, 0x20, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x20, 0x2d, 0x20,
- 0x47, 0x33, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
- 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01,
- 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xa3,
- 0xc0, 0x75, 0xe1, 0x32, 0x98, 0xe5, 0xd9, 0xae, 0x84, 0x7c, 0x8d, 0xe8,
- 0x23, 0x5f, 0x46, 0x95, 0x5b, 0x4c, 0xa2, 0x25, 0x70, 0xd7, 0x90, 0x04,
- 0x85, 0x80, 0xc9, 0xb5, 0xf4, 0x8a, 0x65, 0x4d, 0x92, 0xcb, 0xa5, 0xc4,
- 0x42, 0xa0, 0xb6, 0x79, 0x25, 0x31, 0xed, 0xf1, 0x85, 0x20, 0xcd, 0x13,
- 0x51, 0x3d, 0x67, 0xac, 0x97, 0x4d, 0x68, 0x9b, 0x33, 0x86, 0x5c, 0xb3,
- 0x7b, 0x2d, 0xaa, 0xdf, 0x77, 0xa0, 0x61, 0xd1, 0xf5, 0x3c, 0xfb, 0x9a,
- 0xfc, 0xd3, 0xd5, 0x94, 0xca, 0xc9, 0x1e, 0x80, 0x1b, 0x90, 0x90, 0xc8,
- 0xac, 0x8d, 0xf6, 0x60, 0x17, 0x9c, 0x31, 0xb8, 0xc5, 0x61, 0xa2, 0xe2,
- 0x6e, 0x57, 0x25, 0x08, 0x6f, 0x24, 0x99, 0x99, 0xcf, 0x94, 0xbf, 0xc7,
- 0x8b, 0x6b, 0xb0, 0x1f, 0xca, 0x14, 0xfa, 0x18, 0x9b, 0x6c, 0x10, 0x7c,
- 0x99, 0x2b, 0xda, 0x4a, 0x63, 0xe5, 0xb2, 0x4e, 0xc2, 0xfd, 0x3e, 0x10,
- 0x0b, 0x48, 0xf4, 0x77, 0x0b, 0x2f, 0xf0, 0x96, 0x4b, 0x3a, 0xee, 0xbd,
- 0x35, 0xde, 0x85, 0x8d, 0xda, 0x13, 0x0e, 0xce, 0x01, 0xc4, 0x71, 0xd3,
- 0xd3, 0x77, 0xc5, 0x08, 0xa6, 0x60, 0x39, 0x25, 0xa7, 0x27, 0x69, 0x5c,
- 0x83, 0xd1, 0x6f, 0x76, 0x78, 0xee, 0xc5, 0x44, 0x5b, 0x45, 0xbd, 0x29,
- 0x3b, 0xe2, 0xc6, 0x09, 0x0f, 0xa2, 0xbe, 0x2b, 0xdc, 0xe3, 0x5c, 0xda,
- 0x5a, 0x6f, 0x8e, 0xe7, 0xc9, 0x07, 0x6b, 0x7e, 0xa1, 0xc0, 0x53, 0x95,
- 0x82, 0x89, 0xe0, 0x78, 0x5c, 0x72, 0xa8, 0x6c, 0xbe, 0x67, 0x6b, 0xab,
- 0xe7, 0x33, 0xd9, 0x87, 0xf2, 0xf8, 0x5c, 0x27, 0xf4, 0xf6, 0x2a, 0x3b,
- 0x87, 0xef, 0xda, 0xc2, 0x47, 0xda, 0xbf, 0xac, 0xeb, 0x27, 0x64, 0x7b,
- 0x4c, 0x53, 0xeb, 0x34, 0xe1, 0x2f, 0x9b, 0x20, 0x4d, 0x54, 0x12, 0x6b,
- 0x7d, 0x28, 0xbd, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x53,
- 0x30, 0x82, 0x01, 0x4f, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01,
- 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x1d, 0x06, 0x03,
- 0x55, 0x1d, 0x25, 0x04, 0x16, 0x30, 0x14, 0x06, 0x08, 0x2b, 0x06, 0x01,
- 0x05, 0x05, 0x07, 0x03, 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
- 0x07, 0x03, 0x02, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01,
- 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30,
- 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xa9, 0x2b,
- 0x87, 0xe1, 0xce, 0x24, 0x47, 0x3b, 0x1b, 0xbf, 0xcf, 0x85, 0x37, 0x02,
- 0x55, 0x9d, 0x0d, 0x94, 0x58, 0xe6, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d,
- 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x60, 0x7b, 0x66, 0x1a, 0x45,
- 0x0d, 0x97, 0xca, 0x89, 0x50, 0x2f, 0x7d, 0x04, 0xcd, 0x34, 0xa8, 0xff,
- 0xfc, 0xfd, 0x4b, 0x30, 0x3d, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
- 0x07, 0x01, 0x01, 0x04, 0x31, 0x30, 0x2f, 0x30, 0x2d, 0x06, 0x08, 0x2b,
- 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x21, 0x68, 0x74, 0x74,
- 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x67, 0x6c, 0x6f,
- 0x62, 0x61, 0x6c, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
- 0x72, 0x6f, 0x6f, 0x74, 0x72, 0x31, 0x30, 0x33, 0x06, 0x03, 0x55, 0x1d,
- 0x1f, 0x04, 0x2c, 0x30, 0x2a, 0x30, 0x28, 0xa0, 0x26, 0xa0, 0x24, 0x86,
- 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e,
- 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63,
- 0x6f, 0x6d, 0x2f, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x72, 0x6c, 0x30,
- 0x56, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x4f, 0x30, 0x4d, 0x30, 0x0b,
- 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0xa0, 0x32, 0x01, 0x14, 0x30,
- 0x3e, 0x06, 0x06, 0x67, 0x81, 0x0c, 0x01, 0x02, 0x02, 0x30, 0x34, 0x30,
- 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16,
- 0x26, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77,
- 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x73, 0x69, 0x67, 0x6e, 0x2e,
- 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f,
- 0x72, 0x79, 0x2f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7,
- 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0xa2,
- 0x1d, 0x69, 0x8a, 0x0a, 0x8e, 0xc4, 0x14, 0x83, 0x2a, 0x2a, 0x12, 0x4d,
- 0x39, 0x27, 0x90, 0x4e, 0xf0, 0x8d, 0xac, 0xd2, 0x96, 0x62, 0x47, 0x36,
- 0x5e, 0x92, 0xd1, 0xfa, 0xc5, 0x93, 0xb5, 0x37, 0x07, 0x65, 0x29, 0xd2,
- 0xf4, 0x53, 0x50, 0x6b, 0xc9, 0xf4, 0xfe, 0x34, 0xf5, 0xdd, 0xb8, 0x1d,
- 0xfa, 0xfc, 0xdc, 0x14, 0xac, 0x56, 0x94, 0x27, 0x9c, 0x42, 0xaa, 0x04,
- 0x4d, 0xb7, 0xed, 0x58, 0xd9, 0x99, 0xd2, 0x49, 0xe6, 0x20, 0x2f, 0xd3,
- 0xa7, 0x77, 0xb8, 0x2a, 0x89, 0x1a, 0xef, 0xa7, 0xcf, 0x86, 0x2d, 0xd6,
- 0x53, 0xe9, 0x0b, 0x93, 0x9c, 0x4e, 0xab, 0xd9, 0x45, 0xee, 0xa4, 0x84,
- 0x85, 0xff, 0x34, 0xe4, 0x0e, 0xc0, 0xbb, 0xa5, 0xce, 0x5f, 0x95, 0x89,
- 0x85, 0x70, 0xaa, 0xc1, 0x5d, 0xec, 0xcf, 0x2b, 0xd3, 0xd9, 0x83, 0xdf,
- 0x03, 0xca, 0x81, 0xa7, 0x02, 0x32, 0xb7, 0x77, 0x61, 0x10, 0x25, 0x4e,
- 0xd9, 0x74, 0xf3, 0xd9, 0x79, 0x82, 0xb5, 0x26, 0x70, 0xb4, 0x52, 0xbc,
- 0x8f, 0x33, 0xd7, 0x8a, 0xae, 0x19, 0xd0, 0xfc, 0x92, 0xad, 0x2f, 0xba,
- 0x3c, 0xa0, 0x48, 0x58, 0x47, 0x5e, 0xfd, 0x20, 0x56, 0x95, 0x20, 0xc1,
- 0x72, 0x1d, 0xab, 0x66, 0x99, 0xa4, 0xd5, 0x78, 0x37, 0x48, 0x1b, 0x9f,
- 0xb2, 0x4c, 0x37, 0x67, 0x7a, 0xfd, 0x42, 0xd2, 0xd3, 0x56, 0x9e, 0xd3,
- 0x1d, 0x8e, 0xc4, 0x0c, 0x68, 0x96, 0xb6, 0x47, 0x51, 0x10, 0xf7, 0x7b,
- 0xeb, 0x15, 0x09, 0x64, 0xf5, 0xf9, 0xf0, 0x63, 0x16, 0x2d, 0x3d, 0xdf,
- 0x23, 0x42, 0x3a, 0x93, 0x63, 0xcc, 0xab, 0xaf, 0x4f, 0x57, 0x06, 0xc7,
- 0xfe, 0x14, 0x55, 0x62, 0xce, 0x27, 0x11, 0x19, 0xe1, 0xf4, 0x42, 0xed,
- 0x22, 0x30, 0x6b, 0x35, 0x1a, 0x4a, 0x05, 0x80, 0xa4, 0x65, 0xdf, 0xcc,
- 0xcb, 0x6f, 0xd0,
-}
-
-var certSet3Cert21 = []byte{
- 0x30, 0x82, 0x04, 0x90, 0x30, 0x82, 0x03, 0xf9, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x1b, 0x09, 0x3b, 0x78, 0x60, 0x96, 0xda, 0x37, 0xbb,
- 0xa4, 0x51, 0x94, 0x46, 0xc8, 0x96, 0x78, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x5f,
- 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55,
- 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e,
- 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e,
- 0x63, 0x2e, 0x31, 0x37, 0x30, 0x35, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13,
- 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62,
- 0x6c, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20,
- 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30,
- 0x1e, 0x17, 0x0d, 0x30, 0x36, 0x31, 0x31, 0x30, 0x38, 0x30, 0x30, 0x30,
- 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x31, 0x31, 0x31, 0x30, 0x37,
- 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x81, 0xca, 0x31, 0x0b,
- 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31,
- 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e, 0x56, 0x65,
- 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e,
- 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x16, 0x56,
- 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, 0x72, 0x75, 0x73,
- 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x31, 0x3a, 0x30,
- 0x38, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x31, 0x28, 0x63, 0x29, 0x20,
- 0x32, 0x30, 0x30, 0x36, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67,
- 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f,
- 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64,
- 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x45, 0x30,
- 0x43, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x3c, 0x56, 0x65, 0x72, 0x69,
- 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x33,
- 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6d,
- 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72,
- 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x35, 0x30, 0x82, 0x01, 0x22,
- 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
- 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a,
- 0x02, 0x82, 0x01, 0x01, 0x00, 0xaf, 0x24, 0x08, 0x08, 0x29, 0x7a, 0x35,
- 0x9e, 0x60, 0x0c, 0xaa, 0xe7, 0x4b, 0x3b, 0x4e, 0xdc, 0x7c, 0xbc, 0x3c,
- 0x45, 0x1c, 0xbb, 0x2b, 0xe0, 0xfe, 0x29, 0x02, 0xf9, 0x57, 0x08, 0xa3,
- 0x64, 0x85, 0x15, 0x27, 0xf5, 0xf1, 0xad, 0xc8, 0x31, 0x89, 0x5d, 0x22,
- 0xe8, 0x2a, 0xaa, 0xa6, 0x42, 0xb3, 0x8f, 0xf8, 0xb9, 0x55, 0xb7, 0xb1,
- 0xb7, 0x4b, 0xb3, 0xfe, 0x8f, 0x7e, 0x07, 0x57, 0xec, 0xef, 0x43, 0xdb,
- 0x66, 0x62, 0x15, 0x61, 0xcf, 0x60, 0x0d, 0xa4, 0xd8, 0xde, 0xf8, 0xe0,
- 0xc3, 0x62, 0x08, 0x3d, 0x54, 0x13, 0xeb, 0x49, 0xca, 0x59, 0x54, 0x85,
- 0x26, 0xe5, 0x2b, 0x8f, 0x1b, 0x9f, 0xeb, 0xf5, 0xa1, 0x91, 0xc2, 0x33,
- 0x49, 0xd8, 0x43, 0x63, 0x6a, 0x52, 0x4b, 0xd2, 0x8f, 0xe8, 0x70, 0x51,
- 0x4d, 0xd1, 0x89, 0x69, 0x7b, 0xc7, 0x70, 0xf6, 0xb3, 0xdc, 0x12, 0x74,
- 0xdb, 0x7b, 0x5d, 0x4b, 0x56, 0xd3, 0x96, 0xbf, 0x15, 0x77, 0xa1, 0xb0,
- 0xf4, 0xa2, 0x25, 0xf2, 0xaf, 0x1c, 0x92, 0x67, 0x18, 0xe5, 0xf4, 0x06,
- 0x04, 0xef, 0x90, 0xb9, 0xe4, 0x00, 0xe4, 0xdd, 0x3a, 0xb5, 0x19, 0xff,
- 0x02, 0xba, 0xf4, 0x3c, 0xee, 0xe0, 0x8b, 0xeb, 0x37, 0x8b, 0xec, 0xf4,
- 0xd7, 0xac, 0xf2, 0xf6, 0xf0, 0x3d, 0xaf, 0xdd, 0x75, 0x91, 0x33, 0x19,
- 0x1d, 0x1c, 0x40, 0xcb, 0x74, 0x24, 0x19, 0x21, 0x93, 0xd9, 0x14, 0xfe,
- 0xac, 0x2a, 0x52, 0xc7, 0x8f, 0xd5, 0x04, 0x49, 0xe4, 0x8d, 0x63, 0x47,
- 0x88, 0x3c, 0x69, 0x83, 0xcb, 0xfe, 0x47, 0xbd, 0x2b, 0x7e, 0x4f, 0xc5,
- 0x95, 0xae, 0x0e, 0x9d, 0xd4, 0xd1, 0x43, 0xc0, 0x67, 0x73, 0xe3, 0x14,
- 0x08, 0x7e, 0xe5, 0x3f, 0x9f, 0x73, 0xb8, 0x33, 0x0a, 0xcf, 0x5d, 0x3f,
- 0x34, 0x87, 0x96, 0x8a, 0xee, 0x53, 0xe8, 0x25, 0x15, 0x02, 0x03, 0x01,
- 0x00, 0x01, 0xa3, 0x82, 0x01, 0x5b, 0x30, 0x82, 0x01, 0x57, 0x30, 0x0f,
- 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03,
- 0x01, 0x01, 0xff, 0x30, 0x31, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2a,
- 0x30, 0x28, 0x30, 0x26, 0xa0, 0x24, 0xa0, 0x22, 0x86, 0x20, 0x68, 0x74,
- 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x76, 0x65, 0x72,
- 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x63,
- 0x61, 0x33, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d,
- 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x3d,
- 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x36, 0x30, 0x34, 0x30, 0x32, 0x06,
- 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x2a, 0x30, 0x28, 0x06, 0x08, 0x2b,
- 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1c, 0x68, 0x74, 0x74,
- 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x76, 0x65, 0x72,
- 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70,
- 0x73, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14,
- 0x7f, 0xd3, 0x65, 0xa7, 0xc2, 0xdd, 0xec, 0xbb, 0xf0, 0x30, 0x09, 0xf3,
- 0x43, 0x39, 0xfa, 0x02, 0xaf, 0x33, 0x31, 0x33, 0x30, 0x6d, 0x06, 0x08,
- 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x0c, 0x04, 0x61, 0x30, 0x5f,
- 0xa1, 0x5d, 0xa0, 0x5b, 0x30, 0x59, 0x30, 0x57, 0x30, 0x55, 0x16, 0x09,
- 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0x30, 0x21, 0x30,
- 0x1f, 0x30, 0x07, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1a, 0x04, 0x14,
- 0x8f, 0xe5, 0xd3, 0x1a, 0x86, 0xac, 0x8d, 0x8e, 0x6b, 0xc3, 0xcf, 0x80,
- 0x6a, 0xd4, 0x48, 0x18, 0x2c, 0x7b, 0x19, 0x2e, 0x30, 0x25, 0x16, 0x23,
- 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e,
- 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d,
- 0x2f, 0x76, 0x73, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x67, 0x69, 0x66, 0x30,
- 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04,
- 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
- 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f,
- 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67,
- 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48,
- 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00,
- 0xa3, 0xcd, 0x7d, 0x1e, 0xf7, 0xc7, 0x75, 0x8d, 0x48, 0xe7, 0x56, 0x34,
- 0x4c, 0x00, 0x90, 0x75, 0xa9, 0x51, 0xa5, 0x56, 0xc1, 0x6d, 0xbc, 0xfe,
- 0xf5, 0x53, 0x22, 0xe9, 0x98, 0xa2, 0xac, 0x9a, 0x7e, 0x70, 0x1e, 0xb3,
- 0x8e, 0x3b, 0x45, 0xe3, 0x86, 0x95, 0x31, 0xda, 0x6d, 0x4c, 0xfb, 0x34,
- 0x50, 0x80, 0x96, 0xcd, 0x24, 0xf2, 0x40, 0xdf, 0x04, 0x3f, 0xe2, 0x65,
- 0xce, 0x34, 0x22, 0x61, 0x15, 0xea, 0x66, 0x70, 0x64, 0xd2, 0xf1, 0x6e,
- 0xf3, 0xca, 0x18, 0x59, 0x6a, 0x41, 0x46, 0x7e, 0x82, 0xde, 0x19, 0xb0,
- 0x70, 0x31, 0x56, 0x69, 0x0d, 0x0c, 0xe6, 0x1d, 0x9d, 0x71, 0x58, 0xdc,
- 0xcc, 0xde, 0x62, 0xf5, 0xe1, 0x7a, 0x10, 0x02, 0xd8, 0x7a, 0xdc, 0x3b,
- 0xfa, 0x57, 0xbd, 0xc9, 0xe9, 0x8f, 0x46, 0x21, 0x39, 0x9f, 0x51, 0x65,
- 0x4c, 0x8e, 0x3a, 0xbe, 0x28, 0x41, 0x70, 0x1d,
-}
-
-var certSet3Cert22 = []byte{
- 0x30, 0x82, 0x04, 0x92, 0x30, 0x82, 0x03, 0x7a, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x0a, 0x01, 0x41, 0x42, 0x00, 0x00, 0x01, 0x53, 0x85,
- 0x73, 0x6a, 0x0b, 0x85, 0xec, 0xa7, 0x08, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x3f,
- 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x1b, 0x44,
- 0x69, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x20, 0x53, 0x69, 0x67, 0x6e, 0x61,
- 0x74, 0x75, 0x72, 0x65, 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x43,
- 0x6f, 0x2e, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13,
- 0x0e, 0x44, 0x53, 0x54, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41,
- 0x20, 0x58, 0x33, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x36, 0x30, 0x33, 0x31,
- 0x37, 0x31, 0x36, 0x34, 0x30, 0x34, 0x36, 0x5a, 0x17, 0x0d, 0x32, 0x31,
- 0x30, 0x33, 0x31, 0x37, 0x31, 0x36, 0x34, 0x30, 0x34, 0x36, 0x5a, 0x30,
- 0x4a, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
- 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13,
- 0x0d, 0x4c, 0x65, 0x74, 0x27, 0x73, 0x20, 0x45, 0x6e, 0x63, 0x72, 0x79,
- 0x70, 0x74, 0x31, 0x23, 0x30, 0x21, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13,
- 0x1a, 0x4c, 0x65, 0x74, 0x27, 0x73, 0x20, 0x45, 0x6e, 0x63, 0x72, 0x79,
- 0x70, 0x74, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79,
- 0x20, 0x58, 0x33, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82,
- 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00,
- 0x9c, 0xd3, 0x0c, 0xf0, 0x5a, 0xe5, 0x2e, 0x47, 0xb7, 0x72, 0x5d, 0x37,
- 0x83, 0xb3, 0x68, 0x63, 0x30, 0xea, 0xd7, 0x35, 0x26, 0x19, 0x25, 0xe1,
- 0xbd, 0xbe, 0x35, 0xf1, 0x70, 0x92, 0x2f, 0xb7, 0xb8, 0x4b, 0x41, 0x05,
- 0xab, 0xa9, 0x9e, 0x35, 0x08, 0x58, 0xec, 0xb1, 0x2a, 0xc4, 0x68, 0x87,
- 0x0b, 0xa3, 0xe3, 0x75, 0xe4, 0xe6, 0xf3, 0xa7, 0x62, 0x71, 0xba, 0x79,
- 0x81, 0x60, 0x1f, 0xd7, 0x91, 0x9a, 0x9f, 0xf3, 0xd0, 0x78, 0x67, 0x71,
- 0xc8, 0x69, 0x0e, 0x95, 0x91, 0xcf, 0xfe, 0xe6, 0x99, 0xe9, 0x60, 0x3c,
- 0x48, 0xcc, 0x7e, 0xca, 0x4d, 0x77, 0x12, 0x24, 0x9d, 0x47, 0x1b, 0x5a,
- 0xeb, 0xb9, 0xec, 0x1e, 0x37, 0x00, 0x1c, 0x9c, 0xac, 0x7b, 0xa7, 0x05,
- 0xea, 0xce, 0x4a, 0xeb, 0xbd, 0x41, 0xe5, 0x36, 0x98, 0xb9, 0xcb, 0xfd,
- 0x6d, 0x3c, 0x96, 0x68, 0xdf, 0x23, 0x2a, 0x42, 0x90, 0x0c, 0x86, 0x74,
- 0x67, 0xc8, 0x7f, 0xa5, 0x9a, 0xb8, 0x52, 0x61, 0x14, 0x13, 0x3f, 0x65,
- 0xe9, 0x82, 0x87, 0xcb, 0xdb, 0xfa, 0x0e, 0x56, 0xf6, 0x86, 0x89, 0xf3,
- 0x85, 0x3f, 0x97, 0x86, 0xaf, 0xb0, 0xdc, 0x1a, 0xef, 0x6b, 0x0d, 0x95,
- 0x16, 0x7d, 0xc4, 0x2b, 0xa0, 0x65, 0xb2, 0x99, 0x04, 0x36, 0x75, 0x80,
- 0x6b, 0xac, 0x4a, 0xf3, 0x1b, 0x90, 0x49, 0x78, 0x2f, 0xa2, 0x96, 0x4f,
- 0x2a, 0x20, 0x25, 0x29, 0x04, 0xc6, 0x74, 0xc0, 0xd0, 0x31, 0xcd, 0x8f,
- 0x31, 0x38, 0x95, 0x16, 0xba, 0xa8, 0x33, 0xb8, 0x43, 0xf1, 0xb1, 0x1f,
- 0xc3, 0x30, 0x7f, 0xa2, 0x79, 0x31, 0x13, 0x3d, 0x2d, 0x36, 0xf8, 0xe3,
- 0xfc, 0xf2, 0x33, 0x6a, 0xb9, 0x39, 0x31, 0xc5, 0xaf, 0xc4, 0x8d, 0x0d,
- 0x1d, 0x64, 0x16, 0x33, 0xaa, 0xfa, 0x84, 0x29, 0xb6, 0xd4, 0x0b, 0xc0,
- 0xd8, 0x7d, 0xc3, 0x93, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01,
- 0x7d, 0x30, 0x82, 0x01, 0x79, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13,
- 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01,
- 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04,
- 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 0x7f, 0x06, 0x08, 0x2b, 0x06, 0x01,
- 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x73, 0x30, 0x71, 0x30, 0x32, 0x06,
- 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x26, 0x68,
- 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x69, 0x73, 0x72, 0x67, 0x2e, 0x74,
- 0x72, 0x75, 0x73, 0x74, 0x69, 0x64, 0x2e, 0x6f, 0x63, 0x73, 0x70, 0x2e,
- 0x69, 0x64, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f,
- 0x6d, 0x30, 0x3b, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30,
- 0x02, 0x86, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x61, 0x70,
- 0x70, 0x73, 0x2e, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74,
- 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x6f, 0x6f, 0x74, 0x73, 0x2f, 0x64,
- 0x73, 0x74, 0x72, 0x6f, 0x6f, 0x74, 0x63, 0x61, 0x78, 0x33, 0x2e, 0x70,
- 0x37, 0x63, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30,
- 0x16, 0x80, 0x14, 0xc4, 0xa7, 0xb1, 0xa4, 0x7b, 0x2c, 0x71, 0xfa, 0xdb,
- 0xe1, 0x4b, 0x90, 0x75, 0xff, 0xc4, 0x15, 0x60, 0x85, 0x89, 0x10, 0x30,
- 0x54, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x4d, 0x30, 0x4b, 0x30, 0x08,
- 0x06, 0x06, 0x67, 0x81, 0x0c, 0x01, 0x02, 0x01, 0x30, 0x3f, 0x06, 0x0b,
- 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0xdf, 0x13, 0x01, 0x01, 0x01, 0x30,
- 0x30, 0x30, 0x2e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02,
- 0x01, 0x16, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x70,
- 0x73, 0x2e, 0x72, 0x6f, 0x6f, 0x74, 0x2d, 0x78, 0x31, 0x2e, 0x6c, 0x65,
- 0x74, 0x73, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x2e, 0x6f, 0x72,
- 0x67, 0x30, 0x3c, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x35, 0x30, 0x33,
- 0x30, 0x31, 0xa0, 0x2f, 0xa0, 0x2d, 0x86, 0x2b, 0x68, 0x74, 0x74, 0x70,
- 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x69, 0x64, 0x65, 0x6e, 0x74,
- 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x53, 0x54,
- 0x52, 0x4f, 0x4f, 0x54, 0x43, 0x41, 0x58, 0x33, 0x43, 0x52, 0x4c, 0x2e,
- 0x63, 0x72, 0x6c, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16,
- 0x04, 0x14, 0xa8, 0x4a, 0x6a, 0x63, 0x04, 0x7d, 0xdd, 0xba, 0xe6, 0xd1,
- 0x39, 0xb7, 0xa6, 0x45, 0x65, 0xef, 0xf3, 0xa8, 0xec, 0xa1, 0x30, 0x0d,
- 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05,
- 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0xdd, 0x33, 0xd7, 0x11, 0xf3, 0x63,
- 0x58, 0x38, 0xdd, 0x18, 0x15, 0xfb, 0x09, 0x55, 0xbe, 0x76, 0x56, 0xb9,
- 0x70, 0x48, 0xa5, 0x69, 0x47, 0x27, 0x7b, 0xc2, 0x24, 0x08, 0x92, 0xf1,
- 0x5a, 0x1f, 0x4a, 0x12, 0x29, 0x37, 0x24, 0x74, 0x51, 0x1c, 0x62, 0x68,
- 0xb8, 0xcd, 0x95, 0x70, 0x67, 0xe5, 0xf7, 0xa4, 0xbc, 0x4e, 0x28, 0x51,
- 0xcd, 0x9b, 0xe8, 0xae, 0x87, 0x9d, 0xea, 0xd8, 0xba, 0x5a, 0xa1, 0x01,
- 0x9a, 0xdc, 0xf0, 0xdd, 0x6a, 0x1d, 0x6a, 0xd8, 0x3e, 0x57, 0x23, 0x9e,
- 0xa6, 0x1e, 0x04, 0x62, 0x9a, 0xff, 0xd7, 0x05, 0xca, 0xb7, 0x1f, 0x3f,
- 0xc0, 0x0a, 0x48, 0xbc, 0x94, 0xb0, 0xb6, 0x65, 0x62, 0xe0, 0xc1, 0x54,
- 0xe5, 0xa3, 0x2a, 0xad, 0x20, 0xc4, 0xe9, 0xe6, 0xbb, 0xdc, 0xc8, 0xf6,
- 0xb5, 0xc3, 0x32, 0xa3, 0x98, 0xcc, 0x77, 0xa8, 0xe6, 0x79, 0x65, 0x07,
- 0x2b, 0xcb, 0x28, 0xfe, 0x3a, 0x16, 0x52, 0x81, 0xce, 0x52, 0x0c, 0x2e,
- 0x5f, 0x83, 0xe8, 0xd5, 0x06, 0x33, 0xfb, 0x77, 0x6c, 0xce, 0x40, 0xea,
- 0x32, 0x9e, 0x1f, 0x92, 0x5c, 0x41, 0xc1, 0x74, 0x6c, 0x5b, 0x5d, 0x0a,
- 0x5f, 0x33, 0xcc, 0x4d, 0x9f, 0xac, 0x38, 0xf0, 0x2f, 0x7b, 0x2c, 0x62,
- 0x9d, 0xd9, 0xa3, 0x91, 0x6f, 0x25, 0x1b, 0x2f, 0x90, 0xb1, 0x19, 0x46,
- 0x3d, 0xf6, 0x7e, 0x1b, 0xa6, 0x7a, 0x87, 0xb9, 0xa3, 0x7a, 0x6d, 0x18,
- 0xfa, 0x25, 0xa5, 0x91, 0x87, 0x15, 0xe0, 0xf2, 0x16, 0x2f, 0x58, 0xb0,
- 0x06, 0x2f, 0x2c, 0x68, 0x26, 0xc6, 0x4b, 0x98, 0xcd, 0xda, 0x9f, 0x0c,
- 0xf9, 0x7f, 0x90, 0xed, 0x43, 0x4a, 0x12, 0x44, 0x4e, 0x6f, 0x73, 0x7a,
- 0x28, 0xea, 0xa4, 0xaa, 0x6e, 0x7b, 0x4c, 0x7d, 0x87, 0xdd, 0xe0, 0xc9,
- 0x02, 0x44, 0xa7, 0x87, 0xaf, 0xc3, 0x34, 0x5b, 0xb4, 0x42,
-}
-
-var certSet3Cert23 = []byte{
- 0x30, 0x82, 0x04, 0x92, 0x30, 0x82, 0x03, 0x7a, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x13, 0x06, 0x7f, 0x94, 0x4a, 0x2a, 0x27, 0xcd, 0xf3, 0xfa,
- 0xc2, 0xae, 0x2b, 0x01, 0xf9, 0x08, 0xee, 0xb9, 0xc4, 0xc6, 0x30, 0x0d,
- 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05,
- 0x00, 0x30, 0x81, 0x98, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04,
- 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55,
- 0x04, 0x08, 0x13, 0x07, 0x41, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x61, 0x31,
- 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x0a, 0x53, 0x63,
- 0x6f, 0x74, 0x74, 0x73, 0x64, 0x61, 0x6c, 0x65, 0x31, 0x25, 0x30, 0x23,
- 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x1c, 0x53, 0x74, 0x61, 0x72, 0x66,
- 0x69, 0x65, 0x6c, 0x64, 0x20, 0x54, 0x65, 0x63, 0x68, 0x6e, 0x6f, 0x6c,
- 0x6f, 0x67, 0x69, 0x65, 0x73, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31,
- 0x3b, 0x30, 0x39, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x32, 0x53, 0x74,
- 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x53, 0x65, 0x72, 0x76,
- 0x69, 0x63, 0x65, 0x73, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x65,
- 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75,
- 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32,
- 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x35, 0x30, 0x35, 0x32, 0x35, 0x31, 0x32,
- 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x33, 0x37, 0x31, 0x32, 0x33,
- 0x31, 0x30, 0x31, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x39, 0x31, 0x0b,
- 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31,
- 0x0f, 0x30, 0x0d, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x06, 0x41, 0x6d,
- 0x61, 0x7a, 0x6f, 0x6e, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04,
- 0x03, 0x13, 0x10, 0x41, 0x6d, 0x61, 0x7a, 0x6f, 0x6e, 0x20, 0x52, 0x6f,
- 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x31, 0x30, 0x82, 0x01, 0x22, 0x30,
- 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01,
- 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02,
- 0x82, 0x01, 0x01, 0x00, 0xb2, 0x78, 0x80, 0x71, 0xca, 0x78, 0xd5, 0xe3,
- 0x71, 0xaf, 0x47, 0x80, 0x50, 0x74, 0x7d, 0x6e, 0xd8, 0xd7, 0x88, 0x76,
- 0xf4, 0x99, 0x68, 0xf7, 0x58, 0x21, 0x60, 0xf9, 0x74, 0x84, 0x01, 0x2f,
- 0xac, 0x02, 0x2d, 0x86, 0xd3, 0xa0, 0x43, 0x7a, 0x4e, 0xb2, 0xa4, 0xd0,
- 0x36, 0xba, 0x01, 0xbe, 0x8d, 0xdb, 0x48, 0xc8, 0x07, 0x17, 0x36, 0x4c,
- 0xf4, 0xee, 0x88, 0x23, 0xc7, 0x3e, 0xeb, 0x37, 0xf5, 0xb5, 0x19, 0xf8,
- 0x49, 0x68, 0xb0, 0xde, 0xd7, 0xb9, 0x76, 0x38, 0x1d, 0x61, 0x9e, 0xa4,
- 0xfe, 0x82, 0x36, 0xa5, 0xe5, 0x4a, 0x56, 0xe4, 0x45, 0xe1, 0xf9, 0xfd,
- 0xb4, 0x16, 0xfa, 0x74, 0xda, 0x9c, 0x9b, 0x35, 0x39, 0x2f, 0xfa, 0xb0,
- 0x20, 0x50, 0x06, 0x6c, 0x7a, 0xd0, 0x80, 0xb2, 0xa6, 0xf9, 0xaf, 0xec,
- 0x47, 0x19, 0x8f, 0x50, 0x38, 0x07, 0xdc, 0xa2, 0x87, 0x39, 0x58, 0xf8,
- 0xba, 0xd5, 0xa9, 0xf9, 0x48, 0x67, 0x30, 0x96, 0xee, 0x94, 0x78, 0x5e,
- 0x6f, 0x89, 0xa3, 0x51, 0xc0, 0x30, 0x86, 0x66, 0xa1, 0x45, 0x66, 0xba,
- 0x54, 0xeb, 0xa3, 0xc3, 0x91, 0xf9, 0x48, 0xdc, 0xff, 0xd1, 0xe8, 0x30,
- 0x2d, 0x7d, 0x2d, 0x74, 0x70, 0x35, 0xd7, 0x88, 0x24, 0xf7, 0x9e, 0xc4,
- 0x59, 0x6e, 0xbb, 0x73, 0x87, 0x17, 0xf2, 0x32, 0x46, 0x28, 0xb8, 0x43,
- 0xfa, 0xb7, 0x1d, 0xaa, 0xca, 0xb4, 0xf2, 0x9f, 0x24, 0x0e, 0x2d, 0x4b,
- 0xf7, 0x71, 0x5c, 0x5e, 0x69, 0xff, 0xea, 0x95, 0x02, 0xcb, 0x38, 0x8a,
- 0xae, 0x50, 0x38, 0x6f, 0xdb, 0xfb, 0x2d, 0x62, 0x1b, 0xc5, 0xc7, 0x1e,
- 0x54, 0xe1, 0x77, 0xe0, 0x67, 0xc8, 0x0f, 0x9c, 0x87, 0x23, 0xd6, 0x3f,
- 0x40, 0x20, 0x7f, 0x20, 0x80, 0xc4, 0x80, 0x4c, 0x3e, 0x3b, 0x24, 0x26,
- 0x8e, 0x04, 0xae, 0x6c, 0x9a, 0xc8, 0xaa, 0x0d, 0x02, 0x03, 0x01, 0x00,
- 0x01, 0xa3, 0x82, 0x01, 0x31, 0x30, 0x82, 0x01, 0x2d, 0x30, 0x0f, 0x06,
- 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01,
- 0x01, 0xff, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff,
- 0x04, 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d,
- 0x0e, 0x04, 0x16, 0x04, 0x14, 0x84, 0x18, 0xcc, 0x85, 0x34, 0xec, 0xbc,
- 0x0c, 0x94, 0x94, 0x2e, 0x08, 0x59, 0x9c, 0xc7, 0xb2, 0x10, 0x4e, 0x0a,
- 0x08, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16,
- 0x80, 0x14, 0x9c, 0x5f, 0x00, 0xdf, 0xaa, 0x01, 0xd7, 0x30, 0x2b, 0x38,
- 0x88, 0xa2, 0xb8, 0x6d, 0x4a, 0x9c, 0xf2, 0x11, 0x91, 0x83, 0x30, 0x78,
- 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x6c,
- 0x30, 0x6a, 0x30, 0x2e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07,
- 0x30, 0x01, 0x86, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f,
- 0x63, 0x73, 0x70, 0x2e, 0x72, 0x6f, 0x6f, 0x74, 0x67, 0x32, 0x2e, 0x61,
- 0x6d, 0x61, 0x7a, 0x6f, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63,
- 0x6f, 0x6d, 0x30, 0x38, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07,
- 0x30, 0x02, 0x86, 0x2c, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63,
- 0x72, 0x74, 0x2e, 0x72, 0x6f, 0x6f, 0x74, 0x67, 0x32, 0x2e, 0x61, 0x6d,
- 0x61, 0x7a, 0x6f, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f,
- 0x6d, 0x2f, 0x72, 0x6f, 0x6f, 0x74, 0x67, 0x32, 0x2e, 0x63, 0x65, 0x72,
- 0x30, 0x3d, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x36, 0x30, 0x34, 0x30,
- 0x32, 0xa0, 0x30, 0xa0, 0x2e, 0x86, 0x2c, 0x68, 0x74, 0x74, 0x70, 0x3a,
- 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x72, 0x6f, 0x6f, 0x74, 0x67, 0x32,
- 0x2e, 0x61, 0x6d, 0x61, 0x7a, 0x6f, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74,
- 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x6f, 0x6f, 0x74, 0x67, 0x32, 0x2e,
- 0x63, 0x72, 0x6c, 0x30, 0x11, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x0a,
- 0x30, 0x08, 0x30, 0x06, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x0d,
- 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05,
- 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x62, 0x37, 0x42, 0x5c, 0xbc, 0x10,
- 0xb5, 0x3e, 0x8b, 0x2c, 0xe9, 0x0c, 0x9b, 0x6c, 0x45, 0xe2, 0x07, 0x00,
- 0x7a, 0xf9, 0xc5, 0x58, 0x0b, 0xb9, 0x08, 0x8c, 0x3e, 0xed, 0xb3, 0x25,
- 0x3c, 0xb5, 0x6f, 0x50, 0xe4, 0xcd, 0x35, 0x6a, 0xa7, 0x93, 0x34, 0x96,
- 0x32, 0x21, 0xa9, 0x48, 0x44, 0xab, 0x9c, 0xed, 0x3d, 0xb4, 0xaa, 0x73,
- 0x6d, 0xe4, 0x7f, 0x16, 0x80, 0x89, 0x6c, 0xcf, 0x28, 0x03, 0x18, 0x83,
- 0x47, 0x79, 0xa3, 0x10, 0x7e, 0x30, 0x5b, 0xac, 0x3b, 0xb0, 0x60, 0xe0,
- 0x77, 0xd4, 0x08, 0xa6, 0xe1, 0x1d, 0x7c, 0x5e, 0xc0, 0xbb, 0xf9, 0x9a,
- 0x7b, 0x22, 0x9d, 0xa7, 0x00, 0x09, 0x7e, 0xac, 0x46, 0x17, 0x83, 0xdc,
- 0x9c, 0x26, 0x57, 0x99, 0x30, 0x39, 0x62, 0x96, 0x8f, 0xed, 0xda, 0xde,
- 0xaa, 0xc5, 0xcc, 0x1b, 0x3e, 0xca, 0x43, 0x68, 0x6c, 0x57, 0x16, 0xbc,
- 0xd5, 0x0e, 0x20, 0x2e, 0xfe, 0xff, 0xc2, 0x6a, 0x5d, 0x2e, 0xa0, 0x4a,
- 0x6d, 0x14, 0x58, 0x87, 0x94, 0xe6, 0x39, 0x31, 0x5f, 0x7c, 0x73, 0xcb,
- 0x90, 0x88, 0x6a, 0x84, 0x11, 0x96, 0x27, 0xa6, 0xed, 0xd9, 0x81, 0x46,
- 0xa6, 0x7e, 0xa3, 0x72, 0x00, 0x0a, 0x52, 0x3e, 0x83, 0x88, 0x07, 0x63,
- 0x77, 0x89, 0x69, 0x17, 0x0f, 0x39, 0x85, 0xd2, 0xab, 0x08, 0x45, 0x4d,
- 0xd0, 0x51, 0x3a, 0xfd, 0x5d, 0x5d, 0x37, 0x64, 0x4c, 0x7e, 0x30, 0xb2,
- 0x55, 0x24, 0x42, 0x9d, 0x36, 0xb0, 0x5d, 0x9c, 0x17, 0x81, 0x61, 0xf1,
- 0xca, 0xf9, 0x10, 0x02, 0x24, 0xab, 0xeb, 0x0d, 0x74, 0x91, 0x8d, 0x7b,
- 0x45, 0x29, 0x50, 0x39, 0x88, 0xb2, 0xa6, 0x89, 0x35, 0x25, 0x1e, 0x14,
- 0x6a, 0x47, 0x23, 0x31, 0x2f, 0x5c, 0x9a, 0xfa, 0xad, 0x9a, 0x0e, 0x62,
- 0x51, 0xa4, 0x2a, 0xa9, 0xc4, 0xf9, 0x34, 0x9d, 0x21, 0x18,
-}
-
-var certSet3Cert24 = []byte{
- 0x30, 0x82, 0x04, 0x94, 0x30, 0x82, 0x03, 0x7c, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x01, 0xfd, 0xa3, 0xeb, 0x6e, 0xca, 0x75, 0xc8, 0x88,
- 0x43, 0x8b, 0x72, 0x4b, 0xcf, 0xbc, 0x91, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x61,
- 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55,
- 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c,
- 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63,
- 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77,
- 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e,
- 0x63, 0x6f, 0x6d, 0x31, 0x20, 0x30, 0x1e, 0x06, 0x03, 0x55, 0x04, 0x03,
- 0x13, 0x17, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x47,
- 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43,
- 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x30, 0x33, 0x30, 0x38, 0x31,
- 0x32, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x33, 0x30, 0x33,
- 0x30, 0x38, 0x31, 0x32, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x4d, 0x31,
- 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53,
- 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, 0x44,
- 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x31,
- 0x27, 0x30, 0x25, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1e, 0x44, 0x69,
- 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x53, 0x48, 0x41, 0x32, 0x20,
- 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65,
- 0x72, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09,
- 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03,
- 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01,
- 0x00, 0xdc, 0xae, 0x58, 0x90, 0x4d, 0xc1, 0xc4, 0x30, 0x15, 0x90, 0x35,
- 0x5b, 0x6e, 0x3c, 0x82, 0x15, 0xf5, 0x2c, 0x5c, 0xbd, 0xe3, 0xdb, 0xff,
- 0x71, 0x43, 0xfa, 0x64, 0x25, 0x80, 0xd4, 0xee, 0x18, 0xa2, 0x4d, 0xf0,
- 0x66, 0xd0, 0x0a, 0x73, 0x6e, 0x11, 0x98, 0x36, 0x17, 0x64, 0xaf, 0x37,
- 0x9d, 0xfd, 0xfa, 0x41, 0x84, 0xaf, 0xc7, 0xaf, 0x8c, 0xfe, 0x1a, 0x73,
- 0x4d, 0xcf, 0x33, 0x97, 0x90, 0xa2, 0x96, 0x87, 0x53, 0x83, 0x2b, 0xb9,
- 0xa6, 0x75, 0x48, 0x2d, 0x1d, 0x56, 0x37, 0x7b, 0xda, 0x31, 0x32, 0x1a,
- 0xd7, 0xac, 0xab, 0x06, 0xf4, 0xaa, 0x5d, 0x4b, 0xb7, 0x47, 0x46, 0xdd,
- 0x2a, 0x93, 0xc3, 0x90, 0x2e, 0x79, 0x80, 0x80, 0xef, 0x13, 0x04, 0x6a,
- 0x14, 0x3b, 0xb5, 0x9b, 0x92, 0xbe, 0xc2, 0x07, 0x65, 0x4e, 0xfc, 0xda,
- 0xfc, 0xff, 0x7a, 0xae, 0xdc, 0x5c, 0x7e, 0x55, 0x31, 0x0c, 0xe8, 0x39,
- 0x07, 0xa4, 0xd7, 0xbe, 0x2f, 0xd3, 0x0b, 0x6a, 0xd2, 0xb1, 0xdf, 0x5f,
- 0xfe, 0x57, 0x74, 0x53, 0x3b, 0x35, 0x80, 0xdd, 0xae, 0x8e, 0x44, 0x98,
- 0xb3, 0x9f, 0x0e, 0xd3, 0xda, 0xe0, 0xd7, 0xf4, 0x6b, 0x29, 0xab, 0x44,
- 0xa7, 0x4b, 0x58, 0x84, 0x6d, 0x92, 0x4b, 0x81, 0xc3, 0xda, 0x73, 0x8b,
- 0x12, 0x97, 0x48, 0x90, 0x04, 0x45, 0x75, 0x1a, 0xdd, 0x37, 0x31, 0x97,
- 0x92, 0xe8, 0xcd, 0x54, 0x0d, 0x3b, 0xe4, 0xc1, 0x3f, 0x39, 0x5e, 0x2e,
- 0xb8, 0xf3, 0x5c, 0x7e, 0x10, 0x8e, 0x86, 0x41, 0x00, 0x8d, 0x45, 0x66,
- 0x47, 0xb0, 0xa1, 0x65, 0xce, 0xa0, 0xaa, 0x29, 0x09, 0x4e, 0xf3, 0x97,
- 0xeb, 0xe8, 0x2e, 0xab, 0x0f, 0x72, 0xa7, 0x30, 0x0e, 0xfa, 0xc7, 0xf4,
- 0xfd, 0x14, 0x77, 0xc3, 0xa4, 0x5b, 0x28, 0x57, 0xc2, 0xb3, 0xf9, 0x82,
- 0xfd, 0xb7, 0x45, 0x58, 0x9b, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82,
- 0x01, 0x5a, 0x30, 0x82, 0x01, 0x56, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d,
- 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02,
- 0x01, 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff,
- 0x04, 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 0x34, 0x06, 0x08, 0x2b, 0x06,
- 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x28, 0x30, 0x26, 0x30, 0x24,
- 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18,
- 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e,
- 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d,
- 0x30, 0x7b, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x74, 0x30, 0x72, 0x30,
- 0x37, 0xa0, 0x35, 0xa0, 0x33, 0x86, 0x31, 0x68, 0x74, 0x74, 0x70, 0x3a,
- 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x33, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63,
- 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x69, 0x67, 0x69,
- 0x43, 0x65, 0x72, 0x74, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x52, 0x6f,
- 0x6f, 0x74, 0x43, 0x41, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x37, 0xa0, 0x35,
- 0xa0, 0x33, 0x86, 0x31, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63,
- 0x72, 0x6c, 0x34, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74,
- 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72,
- 0x74, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x52, 0x6f, 0x6f, 0x74, 0x43,
- 0x41, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x3d, 0x06, 0x03, 0x55, 0x1d, 0x20,
- 0x04, 0x36, 0x30, 0x34, 0x30, 0x32, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00,
- 0x30, 0x2a, 0x30, 0x28, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07,
- 0x02, 0x01, 0x16, 0x1c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f,
- 0x77, 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74,
- 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x50, 0x53, 0x30, 0x1d, 0x06, 0x03,
- 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x0f, 0x80, 0x61, 0x1c, 0x82,
- 0x31, 0x61, 0xd5, 0x2f, 0x28, 0xe7, 0x8d, 0x46, 0x38, 0xb4, 0x2c, 0xe1,
- 0xc6, 0xd9, 0xe2, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18,
- 0x30, 0x16, 0x80, 0x14, 0x03, 0xde, 0x50, 0x35, 0x56, 0xd1, 0x4c, 0xbb,
- 0x66, 0xf0, 0xa3, 0xe2, 0x1b, 0x1b, 0xc3, 0x97, 0xb2, 0x3d, 0xd1, 0x55,
- 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
- 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x23, 0x3e, 0xdf, 0x4b,
- 0xd2, 0x31, 0x42, 0xa5, 0xb6, 0x7e, 0x42, 0x5c, 0x1a, 0x44, 0xcc, 0x69,
- 0xd1, 0x68, 0xb4, 0x5d, 0x4b, 0xe0, 0x04, 0x21, 0x6c, 0x4b, 0xe2, 0x6d,
- 0xcc, 0xb1, 0xe0, 0x97, 0x8f, 0xa6, 0x53, 0x09, 0xcd, 0xaa, 0x2a, 0x65,
- 0xe5, 0x39, 0x4f, 0x1e, 0x83, 0xa5, 0x6e, 0x5c, 0x98, 0xa2, 0x24, 0x26,
- 0xe6, 0xfb, 0xa1, 0xed, 0x93, 0xc7, 0x2e, 0x02, 0xc6, 0x4d, 0x4a, 0xbf,
- 0xb0, 0x42, 0xdf, 0x78, 0xda, 0xb3, 0xa8, 0xf9, 0x6d, 0xff, 0x21, 0x85,
- 0x53, 0x36, 0x60, 0x4c, 0x76, 0xce, 0xec, 0x38, 0xdc, 0xd6, 0x51, 0x80,
- 0xf0, 0xc5, 0xd6, 0xe5, 0xd4, 0x4d, 0x27, 0x64, 0xab, 0x9b, 0xc7, 0x3e,
- 0x71, 0xfb, 0x48, 0x97, 0xb8, 0x33, 0x6d, 0xc9, 0x13, 0x07, 0xee, 0x96,
- 0xa2, 0x1b, 0x18, 0x15, 0xf6, 0x5c, 0x4c, 0x40, 0xed, 0xb3, 0xc2, 0xec,
- 0xff, 0x71, 0xc1, 0xe3, 0x47, 0xff, 0xd4, 0xb9, 0x00, 0xb4, 0x37, 0x42,
- 0xda, 0x20, 0xc9, 0xea, 0x6e, 0x8a, 0xee, 0x14, 0x06, 0xae, 0x7d, 0xa2,
- 0x59, 0x98, 0x88, 0xa8, 0x1b, 0x6f, 0x2d, 0xf4, 0xf2, 0xc9, 0x14, 0x5f,
- 0x26, 0xcf, 0x2c, 0x8d, 0x7e, 0xed, 0x37, 0xc0, 0xa9, 0xd5, 0x39, 0xb9,
- 0x82, 0xbf, 0x19, 0x0c, 0xea, 0x34, 0xaf, 0x00, 0x21, 0x68, 0xf8, 0xad,
- 0x73, 0xe2, 0xc9, 0x32, 0xda, 0x38, 0x25, 0x0b, 0x55, 0xd3, 0x9a, 0x1d,
- 0xf0, 0x68, 0x86, 0xed, 0x2e, 0x41, 0x34, 0xef, 0x7c, 0xa5, 0x50, 0x1d,
- 0xbf, 0x3a, 0xf9, 0xd3, 0xc1, 0x08, 0x0c, 0xe6, 0xed, 0x1e, 0x8a, 0x58,
- 0x25, 0xe4, 0xb8, 0x77, 0xad, 0x2d, 0x6e, 0xf5, 0x52, 0xdd, 0xb4, 0x74,
- 0x8f, 0xab, 0x49, 0x2e, 0x9d, 0x3b, 0x93, 0x34, 0x28, 0x1f, 0x78, 0xce,
- 0x94, 0xea, 0xc7, 0xbd, 0xd3, 0xc9, 0x6d, 0x1c, 0xde, 0x5c, 0x32, 0xf3,
-}
-
-var certSet3Cert25 = []byte{
- 0x30, 0x82, 0x04, 0xa0, 0x30, 0x82, 0x03, 0x88, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x03, 0x39, 0x14, 0x84, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
- 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x68, 0x31,
- 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53,
- 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x1c, 0x53,
- 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x54, 0x65, 0x63,
- 0x68, 0x6e, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x65, 0x73, 0x2c, 0x20, 0x49,
- 0x6e, 0x63, 0x2e, 0x31, 0x32, 0x30, 0x30, 0x06, 0x03, 0x55, 0x04, 0x0b,
- 0x13, 0x29, 0x53, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20,
- 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x32, 0x20, 0x43, 0x65, 0x72, 0x74,
- 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75,
- 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, 0x1e, 0x17, 0x0d, 0x31,
- 0x34, 0x30, 0x31, 0x30, 0x31, 0x30, 0x37, 0x30, 0x30, 0x30, 0x30, 0x5a,
- 0x17, 0x0d, 0x33, 0x31, 0x30, 0x35, 0x33, 0x30, 0x30, 0x37, 0x30, 0x30,
- 0x30, 0x30, 0x5a, 0x30, 0x81, 0x8f, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03,
- 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, 0x30, 0x0e, 0x06,
- 0x03, 0x55, 0x04, 0x08, 0x13, 0x07, 0x41, 0x72, 0x69, 0x7a, 0x6f, 0x6e,
- 0x61, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x0a,
- 0x53, 0x63, 0x6f, 0x74, 0x74, 0x73, 0x64, 0x61, 0x6c, 0x65, 0x31, 0x25,
- 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x1c, 0x53, 0x74, 0x61,
- 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x54, 0x65, 0x63, 0x68, 0x6e,
- 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x65, 0x73, 0x2c, 0x20, 0x49, 0x6e, 0x63,
- 0x2e, 0x31, 0x32, 0x30, 0x30, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x29,
- 0x53, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x52, 0x6f,
- 0x6f, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
- 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79,
- 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06,
- 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00,
- 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01,
- 0x01, 0x00, 0xbd, 0xed, 0xc1, 0x03, 0xfc, 0xf6, 0x8f, 0xfc, 0x02, 0xb1,
- 0x6f, 0x5b, 0x9f, 0x48, 0xd9, 0x9d, 0x79, 0xe2, 0xa2, 0xb7, 0x03, 0x61,
- 0x56, 0x18, 0xc3, 0x47, 0xb6, 0xd7, 0xca, 0x3d, 0x35, 0x2e, 0x89, 0x43,
- 0xf7, 0xa1, 0x69, 0x9b, 0xde, 0x8a, 0x1a, 0xfd, 0x13, 0x20, 0x9c, 0xb4,
- 0x49, 0x77, 0x32, 0x29, 0x56, 0xfd, 0xb9, 0xec, 0x8c, 0xdd, 0x22, 0xfa,
- 0x72, 0xdc, 0x27, 0x61, 0x97, 0xee, 0xf6, 0x5a, 0x84, 0xec, 0x6e, 0x19,
- 0xb9, 0x89, 0x2c, 0xdc, 0x84, 0x5b, 0xd5, 0x74, 0xfb, 0x6b, 0x5f, 0xc5,
- 0x89, 0xa5, 0x10, 0x52, 0x89, 0x46, 0x55, 0xf4, 0xb8, 0x75, 0x1c, 0xe6,
- 0x7f, 0xe4, 0x54, 0xae, 0x4b, 0xf8, 0x55, 0x72, 0x57, 0x02, 0x19, 0xf8,
- 0x17, 0x71, 0x59, 0xeb, 0x1e, 0x28, 0x07, 0x74, 0xc5, 0x9d, 0x48, 0xbe,
- 0x6c, 0xb4, 0xf4, 0xa4, 0xb0, 0xf3, 0x64, 0x37, 0x79, 0x92, 0xc0, 0xec,
- 0x46, 0x5e, 0x7f, 0xe1, 0x6d, 0x53, 0x4c, 0x62, 0xaf, 0xcd, 0x1f, 0x0b,
- 0x63, 0xbb, 0x3a, 0x9d, 0xfb, 0xfc, 0x79, 0x00, 0x98, 0x61, 0x74, 0xcf,
- 0x26, 0x82, 0x40, 0x63, 0xf3, 0xb2, 0x72, 0x6a, 0x19, 0x0d, 0x99, 0xca,
- 0xd4, 0x0e, 0x75, 0xcc, 0x37, 0xfb, 0x8b, 0x89, 0xc1, 0x59, 0xf1, 0x62,
- 0x7f, 0x5f, 0xb3, 0x5f, 0x65, 0x30, 0xf8, 0xa7, 0xb7, 0x4d, 0x76, 0x5a,
- 0x1e, 0x76, 0x5e, 0x34, 0xc0, 0xe8, 0x96, 0x56, 0x99, 0x8a, 0xb3, 0xf0,
- 0x7f, 0xa4, 0xcd, 0xbd, 0xdc, 0x32, 0x31, 0x7c, 0x91, 0xcf, 0xe0, 0x5f,
- 0x11, 0xf8, 0x6b, 0xaa, 0x49, 0x5c, 0xd1, 0x99, 0x94, 0xd1, 0xa2, 0xe3,
- 0x63, 0x5b, 0x09, 0x76, 0xb5, 0x56, 0x62, 0xe1, 0x4b, 0x74, 0x1d, 0x96,
- 0xd4, 0x26, 0xd4, 0x08, 0x04, 0x59, 0xd0, 0x98, 0x0e, 0x0e, 0xe6, 0xde,
- 0xfc, 0xc3, 0xec, 0x1f, 0x90, 0xf1, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3,
- 0x82, 0x01, 0x29, 0x30, 0x82, 0x01, 0x25, 0x30, 0x0f, 0x06, 0x03, 0x55,
- 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff,
- 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04,
- 0x03, 0x02, 0x01, 0x06, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04,
- 0x16, 0x04, 0x14, 0x7c, 0x0c, 0x32, 0x1f, 0xa7, 0xd9, 0x30, 0x7f, 0xc4,
- 0x7d, 0x68, 0xa3, 0x62, 0xa8, 0xa1, 0xce, 0xab, 0x07, 0x5b, 0x27, 0x30,
- 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14,
- 0xbf, 0x5f, 0xb7, 0xd1, 0xce, 0xdd, 0x1f, 0x86, 0xf4, 0x5b, 0x55, 0xac,
- 0xdc, 0xd7, 0x10, 0xc2, 0x0e, 0xa9, 0x88, 0xe7, 0x30, 0x3a, 0x06, 0x08,
- 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x2e, 0x30, 0x2c,
- 0x30, 0x2a, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01,
- 0x86, 0x1e, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73,
- 0x70, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x74,
- 0x65, 0x63, 0x68, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x30, 0x38, 0x06, 0x03,
- 0x55, 0x1d, 0x1f, 0x04, 0x31, 0x30, 0x2f, 0x30, 0x2d, 0xa0, 0x2b, 0xa0,
- 0x29, 0x86, 0x27, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72,
- 0x6c, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x74,
- 0x65, 0x63, 0x68, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x66, 0x72, 0x6f,
- 0x6f, 0x74, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x4c, 0x06, 0x03, 0x55, 0x1d,
- 0x20, 0x04, 0x45, 0x30, 0x43, 0x30, 0x41, 0x06, 0x04, 0x55, 0x1d, 0x20,
- 0x00, 0x30, 0x39, 0x30, 0x37, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
- 0x07, 0x02, 0x01, 0x16, 0x2b, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f,
- 0x2f, 0x63, 0x65, 0x72, 0x74, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x66,
- 0x69, 0x65, 0x6c, 0x64, 0x74, 0x65, 0x63, 0x68, 0x2e, 0x63, 0x6f, 0x6d,
- 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f,
- 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
- 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x85, 0x63, 0xc1, 0xd9,
- 0xdd, 0xb9, 0xff, 0xa9, 0xbd, 0xa6, 0x19, 0xdc, 0xbf, 0x13, 0x3a, 0x11,
- 0x38, 0x22, 0x54, 0xb1, 0xac, 0x05, 0x10, 0xfb, 0x7c, 0xb3, 0x96, 0x3f,
- 0x31, 0x8b, 0x66, 0xff, 0x88, 0xf3, 0xe1, 0xbf, 0xfb, 0xc7, 0x1f, 0x00,
- 0xff, 0x46, 0x6a, 0x8b, 0x61, 0x32, 0xc9, 0x01, 0x51, 0x76, 0xfb, 0x9a,
- 0xc6, 0xfa, 0x20, 0x51, 0xc8, 0x46, 0xc4, 0x98, 0xd7, 0x79, 0xa3, 0xe3,
- 0x04, 0x72, 0x3f, 0x8b, 0x4d, 0x34, 0x53, 0x67, 0xec, 0x33, 0x2c, 0x7b,
- 0xe8, 0x94, 0x01, 0x28, 0x7c, 0x3a, 0x34, 0x5b, 0x02, 0x77, 0x16, 0x8d,
- 0x40, 0x25, 0x33, 0xb0, 0xbc, 0x6c, 0x97, 0xd7, 0x05, 0x7a, 0xff, 0x8c,
- 0x85, 0xce, 0x6f, 0xa0, 0x53, 0x00, 0x17, 0x6e, 0x1e, 0x6c, 0xbd, 0x22,
- 0xd7, 0x0a, 0x88, 0x37, 0xf6, 0x7d, 0xeb, 0x99, 0x41, 0xef, 0x27, 0xcb,
- 0x8c, 0x60, 0x6b, 0x4c, 0x01, 0x7e, 0x65, 0x50, 0x0b, 0x4f, 0xb8, 0x95,
- 0x9a, 0x9a, 0x6e, 0x34, 0xfd, 0x73, 0x3a, 0x33, 0xf1, 0x91, 0xd5, 0xf3,
- 0x4e, 0x2d, 0x74, 0xe8, 0xef, 0xd3, 0x90, 0x35, 0xf1, 0x06, 0x68, 0x64,
- 0xd4, 0xd0, 0x13, 0xfd, 0x52, 0xd3, 0xc6, 0x6d, 0xc1, 0x3a, 0x8a, 0x31,
- 0xdd, 0x05, 0x26, 0x35, 0x4a, 0x8c, 0x65, 0xb8, 0x52, 0x6b, 0x81, 0xec,
- 0xd2, 0x9c, 0xb5, 0x34, 0x10, 0x97, 0x9c, 0x3e, 0xc6, 0x2f, 0xed, 0x8e,
- 0x42, 0x42, 0x24, 0x2e, 0xe9, 0x73, 0x9a, 0x25, 0xf9, 0x11, 0xf1, 0xf2,
- 0x23, 0x69, 0xcb, 0xe5, 0x94, 0x69, 0xa0, 0xd2, 0xdc, 0xb0, 0xfc, 0x44,
- 0x89, 0xac, 0x17, 0xa8, 0xcc, 0xd5, 0x37, 0x77, 0x16, 0xc5, 0x80, 0xb9,
- 0x0c, 0x8f, 0x57, 0x02, 0x55, 0x99, 0x85, 0x7b, 0x49, 0xf0, 0x2e, 0x5b,
- 0xa0, 0xc2, 0x57, 0x53, 0x5d, 0xa2, 0xe8, 0xa6, 0x37, 0xc3, 0x01, 0xfa,
-}
-
-var certSet3Cert26 = []byte{
- 0x30, 0x82, 0x04, 0xa6, 0x30, 0x82, 0x03, 0x8e, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x28, 0x1c, 0x89, 0x29, 0x66, 0x14, 0x43, 0x80, 0x42,
- 0x63, 0x55, 0x3a, 0x32, 0x40, 0xae, 0xb3, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81,
- 0x98, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
- 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13,
- 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e,
- 0x63, 0x2e, 0x31, 0x39, 0x30, 0x37, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13,
- 0x30, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x38, 0x20, 0x47, 0x65,
- 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20,
- 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72,
- 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c,
- 0x79, 0x31, 0x36, 0x30, 0x34, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2d,
- 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x50, 0x72, 0x69,
- 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69,
- 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f,
- 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x30, 0x1e, 0x17,
- 0x0d, 0x31, 0x35, 0x30, 0x36, 0x33, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
- 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x35, 0x30, 0x36, 0x32, 0x39, 0x32, 0x33,
- 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x47, 0x31, 0x0b, 0x30, 0x09, 0x06,
- 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14,
- 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72,
- 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x20, 0x30, 0x1e,
- 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x17, 0x52, 0x61, 0x70, 0x69, 0x64,
- 0x53, 0x53, 0x4c, 0x20, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x20, 0x43,
- 0x41, 0x20, 0x2d, 0x20, 0x47, 0x34, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d,
- 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05,
- 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82,
- 0x01, 0x01, 0x00, 0xc0, 0x9e, 0x3a, 0x0f, 0x9a, 0xb2, 0xba, 0xd3, 0xd2,
- 0xdc, 0x15, 0xec, 0xd0, 0x30, 0x54, 0x59, 0x30, 0x4d, 0x40, 0x51, 0xae,
- 0x42, 0x71, 0x71, 0xd2, 0x8d, 0x53, 0x73, 0x81, 0xfe, 0xb8, 0xe0, 0xc4,
- 0x96, 0xc5, 0x8e, 0x7e, 0xc2, 0xf1, 0xb7, 0x63, 0x4a, 0xcf, 0xa7, 0x1e,
- 0x3f, 0xa8, 0xe7, 0xce, 0x53, 0xa0, 0xfa, 0x2d, 0xf7, 0xd6, 0xe6, 0xce,
- 0x70, 0x11, 0xa6, 0xee, 0xe1, 0x03, 0x52, 0xd2, 0x68, 0xde, 0x3d, 0x08,
- 0x0d, 0x87, 0xfd, 0x1c, 0xd7, 0x0b, 0x97, 0x62, 0x6d, 0x82, 0x30, 0x76,
- 0x1b, 0x47, 0x3a, 0xc4, 0xf7, 0xce, 0xed, 0x1d, 0x7c, 0x8c, 0xb7, 0x17,
- 0x8e, 0x53, 0x80, 0x1e, 0x1d, 0x0f, 0x5d, 0x8c, 0xf9, 0x90, 0xe4, 0x04,
- 0x1e, 0x02, 0x7e, 0xcb, 0xb0, 0x49, 0xef, 0xda, 0x52, 0x25, 0xfb, 0xfb,
- 0x67, 0xed, 0xdd, 0x84, 0x74, 0x59, 0x84, 0x0e, 0xf3, 0xde, 0x70, 0x66,
- 0x8d, 0xe4, 0x52, 0x38, 0xf7, 0x53, 0x5a, 0x37, 0x13, 0x67, 0x0b, 0x3e,
- 0xbb, 0xa8, 0x58, 0xb7, 0x2e, 0xed, 0xff, 0xb7, 0x5e, 0x11, 0x73, 0xb9,
- 0x77, 0x45, 0x52, 0x67, 0x46, 0xae, 0xc4, 0xdc, 0x24, 0x81, 0x89, 0x76,
- 0x0a, 0xca, 0xa1, 0x6c, 0x66, 0x73, 0x04, 0x82, 0xaa, 0xf5, 0x70, 0x6c,
- 0x5f, 0x1b, 0x9a, 0x00, 0x79, 0x46, 0xd6, 0x7f, 0x7a, 0x26, 0x17, 0x30,
- 0xcf, 0x39, 0x4b, 0x2c, 0x74, 0xd9, 0x89, 0x44, 0x76, 0x10, 0xd0, 0xed,
- 0xf7, 0x8b, 0xbb, 0x89, 0x05, 0x75, 0x4d, 0x0b, 0x0d, 0xb3, 0xda, 0xe9,
- 0xbf, 0xf1, 0x6a, 0x7d, 0x2a, 0x11, 0xdb, 0x1e, 0x9f, 0x8c, 0xe3, 0xc4,
- 0x06, 0x69, 0xe1, 0x1d, 0x88, 0x45, 0x39, 0xd1, 0x6e, 0x55, 0xd8, 0xaa,
- 0xb7, 0x9b, 0x6f, 0xea, 0xf4, 0xde, 0xac, 0x17, 0x11, 0x92, 0x5d, 0x40,
- 0x9b, 0x83, 0x7b, 0x9a, 0xe2, 0xf7, 0xa9, 0x02, 0x03, 0x01, 0x00, 0x01,
- 0xa3, 0x82, 0x01, 0x3a, 0x30, 0x82, 0x01, 0x36, 0x30, 0x2e, 0x06, 0x08,
- 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x22, 0x30, 0x20,
- 0x30, 0x1e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01,
- 0x86, 0x12, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x2e, 0x73,
- 0x79, 0x6d, 0x63, 0x64, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x12, 0x06, 0x03,
- 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01,
- 0xff, 0x02, 0x01, 0x00, 0x30, 0x49, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04,
- 0x42, 0x30, 0x40, 0x30, 0x3e, 0x06, 0x06, 0x67, 0x81, 0x0c, 0x01, 0x02,
- 0x01, 0x30, 0x34, 0x30, 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
- 0x07, 0x02, 0x01, 0x16, 0x26, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f,
- 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73,
- 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
- 0x63, 0x65, 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x36, 0x06, 0x03, 0x55,
- 0x1d, 0x1f, 0x04, 0x2f, 0x30, 0x2d, 0x30, 0x2b, 0xa0, 0x29, 0xa0, 0x27,
- 0x86, 0x25, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x2e, 0x73,
- 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x65, 0x6f,
- 0x54, 0x72, 0x75, 0x73, 0x74, 0x50, 0x43, 0x41, 0x2d, 0x47, 0x33, 0x2e,
- 0x63, 0x72, 0x6c, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x04, 0x16,
- 0x30, 0x14, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x01,
- 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x02, 0x30, 0x0e,
- 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02,
- 0x01, 0x06, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04,
- 0x14, 0xf3, 0xb5, 0x56, 0x0c, 0xc4, 0x09, 0xb0, 0xb4, 0xcf, 0x1f, 0xaa,
- 0xf9, 0xdd, 0x23, 0x56, 0xf0, 0x77, 0xe8, 0xa1, 0xf9, 0x30, 0x1f, 0x06,
- 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xc4, 0x79,
- 0xca, 0x8e, 0xa1, 0x4e, 0x03, 0x1d, 0x1c, 0xdc, 0x6b, 0xdb, 0x31, 0x5b,
- 0x94, 0x3e, 0x3f, 0x30, 0x7f, 0x2d, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
- 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01,
- 0x01, 0x00, 0xc3, 0x7e, 0xd8, 0x83, 0x4b, 0x04, 0x4c, 0x55, 0x29, 0x2a,
- 0x4f, 0x14, 0x9d, 0x9a, 0x6e, 0xde, 0x90, 0x70, 0xc1, 0xa4, 0x26, 0x4c,
- 0x88, 0x8e, 0x78, 0x48, 0xef, 0xbd, 0x9c, 0xb0, 0xa0, 0xf5, 0xf0, 0x66,
- 0xfc, 0xfe, 0x59, 0x26, 0xe1, 0x79, 0xef, 0xc8, 0xb7, 0x60, 0x64, 0xa8,
- 0x8b, 0x47, 0xea, 0x2f, 0xe0, 0x83, 0x99, 0xda, 0x41, 0x19, 0xd7, 0xc5,
- 0xbe, 0x05, 0xfa, 0xf2, 0x90, 0x11, 0xf0, 0x0a, 0xff, 0x6c, 0xdc, 0x05,
- 0xb4, 0xd8, 0x06, 0x6f, 0xa4, 0x6f, 0x8d, 0xbe, 0x20, 0x2b, 0x54, 0xdb,
- 0xf9, 0xa2, 0x45, 0x83, 0x9a, 0x1e, 0xa5, 0x21, 0x89, 0x35, 0x1d, 0x7c,
- 0x20, 0x5c, 0x17, 0xfd, 0x04, 0x2e, 0x45, 0xd8, 0xb2, 0xc6, 0xf8, 0x42,
- 0x99, 0xfc, 0x54, 0x08, 0x4e, 0x4b, 0x80, 0x5f, 0x39, 0x37, 0xba, 0x95,
- 0x4e, 0xa6, 0x37, 0x0a, 0x9e, 0x93, 0x5e, 0x87, 0x5b, 0xe9, 0x90, 0xd6,
- 0xa8, 0xb6, 0x65, 0x08, 0x8d, 0x61, 0x49, 0xeb, 0x83, 0x20, 0xa9, 0x5d,
- 0x1b, 0x16, 0x60, 0x62, 0x6b, 0x2f, 0x54, 0xfb, 0x5a, 0x02, 0x0d, 0x7a,
- 0x27, 0xe2, 0x4b, 0xe1, 0x05, 0x14, 0xc2, 0xe4, 0xe9, 0xf9, 0x70, 0xc0,
- 0xd9, 0xf7, 0x34, 0x65, 0x0e, 0xa2, 0x91, 0x4b, 0xac, 0x28, 0xf2, 0xb7,
- 0x08, 0x0f, 0x98, 0xca, 0xd7, 0x3e, 0x70, 0xb6, 0xc8, 0x0b, 0xf1, 0x8b,
- 0x9c, 0x51, 0xf8, 0xc6, 0x10, 0x6c, 0xd2, 0x53, 0x4f, 0x62, 0x8c, 0x11,
- 0x00, 0x3e, 0x88, 0xdf, 0xbf, 0xe6, 0xd2, 0xcc, 0x70, 0xbd, 0xed, 0x25,
- 0x9c, 0xfb, 0xdd, 0x24, 0x0a, 0xbd, 0x59, 0x91, 0x4a, 0x42, 0x03, 0x38,
- 0x12, 0x71, 0x32, 0x88, 0x76, 0xa0, 0x8e, 0x7c, 0xbb, 0x32, 0xef, 0x88,
- 0x2a, 0x1b, 0xd4, 0x6a, 0x6f, 0x50, 0xb9, 0x52, 0x67, 0x8b, 0xab, 0x30,
- 0xfa, 0x1f, 0xfd, 0xe3, 0x24, 0x9a,
-}
-
-var certSet3Cert27 = []byte{
- 0x30, 0x82, 0x04, 0xa8, 0x30, 0x82, 0x03, 0x90, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x11, 0x00, 0xe4, 0x05, 0x47, 0x83, 0x0e, 0x0c, 0x64, 0x52,
- 0x97, 0x6f, 0x7a, 0x35, 0x49, 0xc0, 0xdd, 0x48, 0x30, 0x0d, 0x06, 0x09,
- 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30,
- 0x7e, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
- 0x50, 0x4c, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13,
- 0x19, 0x55, 0x6e, 0x69, 0x7a, 0x65, 0x74, 0x6f, 0x20, 0x54, 0x65, 0x63,
- 0x68, 0x6e, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x65, 0x73, 0x20, 0x53, 0x2e,
- 0x41, 0x2e, 0x31, 0x27, 0x30, 0x25, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13,
- 0x1e, 0x43, 0x65, 0x72, 0x74, 0x75, 0x6d, 0x20, 0x43, 0x65, 0x72, 0x74,
- 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75,
- 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31, 0x22, 0x30, 0x20, 0x06,
- 0x03, 0x55, 0x04, 0x03, 0x13, 0x19, 0x43, 0x65, 0x72, 0x74, 0x75, 0x6d,
- 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x20, 0x4e, 0x65, 0x74,
- 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31,
- 0x35, 0x30, 0x31, 0x32, 0x31, 0x31, 0x32, 0x30, 0x30, 0x30, 0x30, 0x5a,
- 0x17, 0x0d, 0x32, 0x35, 0x30, 0x31, 0x31, 0x38, 0x31, 0x32, 0x30, 0x30,
- 0x30, 0x30, 0x5a, 0x30, 0x5f, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55,
- 0x04, 0x06, 0x13, 0x02, 0x52, 0x55, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03,
- 0x55, 0x04, 0x0a, 0x13, 0x0a, 0x59, 0x61, 0x6e, 0x64, 0x65, 0x78, 0x20,
- 0x4c, 0x4c, 0x43, 0x31, 0x27, 0x30, 0x25, 0x06, 0x03, 0x55, 0x04, 0x0b,
- 0x13, 0x1e, 0x59, 0x61, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x43, 0x65, 0x72,
- 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41,
- 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31, 0x12, 0x30, 0x10,
- 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x09, 0x59, 0x61, 0x6e, 0x64, 0x65,
- 0x78, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09,
- 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03,
- 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01,
- 0x00, 0xa6, 0x05, 0x24, 0x76, 0x61, 0xb9, 0x9e, 0x42, 0x60, 0x22, 0x63,
- 0x85, 0x59, 0xe5, 0x9d, 0x88, 0x0d, 0xdf, 0xef, 0x21, 0x64, 0x5a, 0x26,
- 0x94, 0x71, 0x3a, 0xa4, 0x7f, 0x2b, 0x53, 0xc3, 0xac, 0x7b, 0xba, 0x95,
- 0x42, 0x6d, 0x6a, 0x5b, 0xd6, 0x7e, 0x78, 0x0c, 0x67, 0x40, 0x98, 0x2f,
- 0x6a, 0x2d, 0xd0, 0xb7, 0x18, 0x3a, 0x7e, 0x99, 0x60, 0x01, 0xe5, 0x27,
- 0xbf, 0xff, 0x49, 0xf5, 0xcd, 0xc4, 0x58, 0xc3, 0x4c, 0xe1, 0x70, 0xd5,
- 0xfd, 0x08, 0xa8, 0x79, 0x95, 0x76, 0x1c, 0x0e, 0x05, 0x41, 0xfa, 0xbd,
- 0x80, 0x38, 0x2a, 0x87, 0x4f, 0xc1, 0x67, 0x42, 0xaa, 0x17, 0xa6, 0xee,
- 0xa7, 0x8c, 0x8e, 0xef, 0x2d, 0x7f, 0x7a, 0x1d, 0x05, 0x17, 0x8f, 0x7e,
- 0x3b, 0x92, 0x35, 0xf5, 0x68, 0xed, 0x93, 0x03, 0x55, 0x23, 0x4f, 0x4b,
- 0xa2, 0x00, 0x86, 0x65, 0x91, 0x0f, 0xeb, 0xf6, 0x3c, 0xd5, 0xdb, 0x6d,
- 0x0e, 0xed, 0xe8, 0x7c, 0x3a, 0xc8, 0xba, 0xb7, 0x53, 0xc1, 0xa4, 0xd8,
- 0x40, 0x02, 0xe5, 0xb5, 0xa2, 0xca, 0xbf, 0xda, 0x9c, 0x94, 0x0d, 0xfc,
- 0xc5, 0x1c, 0x2a, 0x59, 0x88, 0x62, 0x57, 0x93, 0x2e, 0x11, 0xf0, 0x38,
- 0x2c, 0x7a, 0x81, 0x2a, 0xf2, 0x25, 0x15, 0x17, 0x35, 0x70, 0x2c, 0x4b,
- 0xf7, 0x23, 0x4c, 0x82, 0xef, 0x33, 0x9f, 0xc2, 0x9a, 0x0b, 0xa3, 0xe2,
- 0x5d, 0x6b, 0x38, 0x77, 0xf9, 0x60, 0x33, 0xcf, 0x2e, 0x7b, 0x56, 0xb7,
- 0x13, 0x93, 0x1f, 0x34, 0x97, 0x71, 0x99, 0x76, 0x02, 0x46, 0x35, 0x14,
- 0x7c, 0xdc, 0xca, 0x48, 0x8a, 0x0a, 0x72, 0x4b, 0x78, 0x6d, 0x82, 0x34,
- 0x96, 0x13, 0x45, 0xcf, 0x02, 0x2f, 0x50, 0x13, 0x39, 0x43, 0x89, 0xc0,
- 0xe1, 0x74, 0xd7, 0x28, 0x71, 0x21, 0xe5, 0xaa, 0x97, 0x0e, 0xee, 0x46,
- 0xec, 0x93, 0xf7, 0x23, 0x7d, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82,
- 0x01, 0x3e, 0x30, 0x82, 0x01, 0x3a, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d,
- 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30,
- 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x37, 0x5c,
- 0xe3, 0x19, 0xe0, 0xb2, 0x8e, 0xa1, 0xa8, 0x4e, 0xd2, 0xcf, 0xab, 0xd0,
- 0xdc, 0xe3, 0x0b, 0x5c, 0x35, 0x4d, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d,
- 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x08, 0x76, 0xcd, 0xcb, 0x07,
- 0xff, 0x24, 0xf6, 0xc5, 0xcd, 0xed, 0xbb, 0x90, 0xbc, 0xe2, 0x84, 0x37,
- 0x46, 0x75, 0xf7, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01,
- 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x2f, 0x06, 0x03, 0x55,
- 0x1d, 0x1f, 0x04, 0x28, 0x30, 0x26, 0x30, 0x24, 0xa0, 0x22, 0xa0, 0x20,
- 0x86, 0x1e, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c,
- 0x2e, 0x63, 0x65, 0x72, 0x74, 0x75, 0x6d, 0x2e, 0x70, 0x6c, 0x2f, 0x63,
- 0x74, 0x6e, 0x63, 0x61, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x6b, 0x06, 0x08,
- 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x5f, 0x30, 0x5d,
- 0x30, 0x28, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01,
- 0x86, 0x1c, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x73, 0x75, 0x62,
- 0x63, 0x61, 0x2e, 0x6f, 0x63, 0x73, 0x70, 0x2d, 0x63, 0x65, 0x72, 0x74,
- 0x75, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x31, 0x06, 0x08, 0x2b, 0x06,
- 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x25, 0x68, 0x74, 0x74, 0x70,
- 0x3a, 0x2f, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72,
- 0x79, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x75, 0x6d, 0x2e, 0x70, 0x6c, 0x2f,
- 0x63, 0x74, 0x6e, 0x63, 0x61, 0x2e, 0x63, 0x65, 0x72, 0x30, 0x39, 0x06,
- 0x03, 0x55, 0x1d, 0x20, 0x04, 0x32, 0x30, 0x30, 0x30, 0x2e, 0x06, 0x04,
- 0x55, 0x1d, 0x20, 0x00, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, 0x2b, 0x06,
- 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x18, 0x68, 0x74, 0x74, 0x70,
- 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x75,
- 0x6d, 0x2e, 0x70, 0x6c, 0x2f, 0x43, 0x50, 0x53, 0x30, 0x0d, 0x06, 0x09,
- 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03,
- 0x82, 0x01, 0x01, 0x00, 0x02, 0x5e, 0x8e, 0x7b, 0xe0, 0x66, 0xa1, 0xc6,
- 0xab, 0x8b, 0x18, 0x1f, 0x0e, 0xb9, 0xc4, 0xcd, 0x71, 0xdb, 0x44, 0x5c,
- 0x03, 0x7d, 0x65, 0xea, 0xb8, 0x47, 0xb5, 0x1e, 0xce, 0x24, 0x70, 0xa0,
- 0x7f, 0xd3, 0xdf, 0x66, 0x4b, 0x8c, 0x90, 0xe2, 0xa5, 0xed, 0x9b, 0x94,
- 0x36, 0xb4, 0xa8, 0xbe, 0xf0, 0x74, 0x8c, 0x26, 0x92, 0x75, 0x9d, 0x56,
- 0x50, 0x9e, 0xad, 0xd0, 0x1a, 0xa0, 0xdf, 0xa4, 0x14, 0x56, 0x10, 0x75,
- 0x93, 0x7a, 0xc1, 0xf4, 0x53, 0xa0, 0x76, 0x74, 0x2c, 0x72, 0xba, 0xb5,
- 0xd1, 0xc9, 0xe2, 0xdc, 0x46, 0x86, 0x3f, 0x1d, 0xf6, 0x33, 0x87, 0x59,
- 0xec, 0x9c, 0xdc, 0x2d, 0x1e, 0x4d, 0x43, 0x1a, 0xce, 0xba, 0xd9, 0x87,
- 0x7e, 0xe2, 0x47, 0x45, 0x72, 0x3d, 0x28, 0x03, 0xc9, 0x0a, 0x4d, 0xe0,
- 0x57, 0xa3, 0x5e, 0x6e, 0x7e, 0xcc, 0x5a, 0xc8, 0xc4, 0x78, 0x01, 0x57,
- 0x68, 0x7a, 0x38, 0x3b, 0x53, 0x36, 0xe7, 0x92, 0x6d, 0x8a, 0x2c, 0x2f,
- 0xd7, 0x8b, 0xb6, 0x34, 0xa8, 0xd1, 0xb6, 0xf8, 0x5e, 0x3b, 0xab, 0xed,
- 0xa5, 0x8f, 0x39, 0x6f, 0x45, 0xad, 0xcb, 0x63, 0xed, 0x6a, 0x64, 0xc9,
- 0x10, 0xa7, 0x03, 0x08, 0x12, 0x53, 0xb1, 0x1c, 0xaf, 0xca, 0xf7, 0x53,
- 0xfc, 0xd8, 0x29, 0x4b, 0x1b, 0xfb, 0x38, 0xcd, 0xc0, 0x63, 0xff, 0x5f,
- 0xe4, 0xb9, 0x8d, 0x5e, 0xaa, 0x2b, 0xd2, 0xc3, 0x22, 0x35, 0x31, 0xf6,
- 0x30, 0x0e, 0x53, 0x32, 0xf4, 0x93, 0xc5, 0x43, 0xcb, 0xc8, 0xf0, 0x15,
- 0x56, 0x8f, 0x00, 0x19, 0x87, 0xca, 0x78, 0x22, 0x8d, 0xa0, 0x2e, 0xdb,
- 0x2f, 0xa0, 0xc3, 0x7e, 0x29, 0x5d, 0x91, 0x25, 0x84, 0x1d, 0x1d, 0x39,
- 0xab, 0x1b, 0xc5, 0xd6, 0x91, 0xfe, 0x69, 0x0e, 0x46, 0x80, 0xbc, 0x45,
- 0x7b, 0x35, 0x53, 0x2a, 0xdf, 0x00, 0xb6, 0x77,
-}
-
-var certSet3Cert28 = []byte{
- 0x30, 0x82, 0x04, 0xaf, 0x30, 0x82, 0x03, 0x97, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x5d, 0x72, 0xfb, 0x33, 0x76, 0x20, 0xf6, 0x4c, 0x72,
- 0x80, 0xdb, 0xe9, 0x12, 0x81, 0xff, 0x6a, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81,
- 0xa9, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
- 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13,
- 0x0c, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63,
- 0x2e, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f,
- 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x44,
- 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x38, 0x30, 0x36, 0x06,
- 0x03, 0x55, 0x04, 0x0b, 0x13, 0x2f, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30,
- 0x30, 0x36, 0x20, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49,
- 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75,
- 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65,
- 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55,
- 0x04, 0x03, 0x13, 0x16, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x50,
- 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20,
- 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31, 0x30, 0x33, 0x31,
- 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x33, 0x31,
- 0x30, 0x33, 0x30, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x44,
- 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55,
- 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c,
- 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e,
- 0x31, 0x1e, 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x15, 0x74,
- 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x45, 0x56, 0x20, 0x53, 0x53, 0x4c,
- 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x30, 0x82, 0x01, 0x22,
- 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
- 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a,
- 0x02, 0x82, 0x01, 0x01, 0x00, 0xc4, 0xdd, 0xda, 0x94, 0x1e, 0x32, 0xb2,
- 0x2e, 0xa0, 0x83, 0xc0, 0xa6, 0x7d, 0x5f, 0x65, 0x2d, 0xfd, 0x27, 0xb8,
- 0x73, 0x0e, 0xf8, 0x0b, 0xa9, 0xd4, 0x56, 0x26, 0x69, 0x98, 0x67, 0x35,
- 0x39, 0x64, 0x58, 0xce, 0x82, 0x6f, 0x98, 0x94, 0xd1, 0x8f, 0xe0, 0x90,
- 0xd6, 0xed, 0x55, 0x4b, 0x98, 0x4b, 0xd7, 0x10, 0x59, 0x34, 0x02, 0x1b,
- 0xe7, 0x51, 0x31, 0x51, 0xc4, 0x38, 0xc2, 0xbc, 0xdb, 0x03, 0x5c, 0xca,
- 0xe1, 0x7c, 0xdc, 0x4f, 0x59, 0x97, 0xea, 0x07, 0x7f, 0x0f, 0x85, 0x3e,
- 0x92, 0xea, 0xaa, 0xa7, 0xd9, 0xbe, 0x01, 0x41, 0xe4, 0x62, 0x56, 0x47,
- 0x36, 0xbd, 0x57, 0x91, 0xe6, 0x21, 0xd3, 0xf8, 0x41, 0x0b, 0xd8, 0xba,
- 0xe8, 0xed, 0x81, 0xad, 0x70, 0xc0, 0x8b, 0x6e, 0xf3, 0x89, 0x6e, 0x27,
- 0x9e, 0xa6, 0xa6, 0x73, 0x59, 0xbb, 0x71, 0x00, 0xd4, 0x4f, 0x4b, 0x48,
- 0xe9, 0xd5, 0xc9, 0x27, 0x36, 0x9c, 0x7c, 0x1c, 0x02, 0xaa, 0xac, 0xbd,
- 0x3b, 0xd1, 0x53, 0x83, 0x6a, 0x1f, 0xe6, 0x08, 0x47, 0x33, 0xa7, 0xb1,
- 0x9f, 0x02, 0xbe, 0x9b, 0x47, 0xed, 0x33, 0x04, 0xdc, 0x1c, 0x80, 0x27,
- 0xd1, 0x4a, 0x33, 0xa0, 0x8c, 0xeb, 0x01, 0x47, 0xa1, 0x32, 0x90, 0x64,
- 0x7b, 0xc4, 0xe0, 0x84, 0xc9, 0x32, 0xe9, 0xdd, 0x34, 0x1f, 0x8a, 0x68,
- 0x67, 0xf3, 0xad, 0x10, 0x63, 0xeb, 0xee, 0x8a, 0x9a, 0xb1, 0x2a, 0x1b,
- 0x26, 0x74, 0xa1, 0x2a, 0xb0, 0x8f, 0xfe, 0x52, 0x98, 0x46, 0x97, 0xcf,
- 0xa3, 0x56, 0x1c, 0x6f, 0x6e, 0x99, 0x97, 0x8d, 0x26, 0x0e, 0xa9, 0xec,
- 0xc2, 0x53, 0x70, 0xfc, 0x7a, 0xa5, 0x19, 0x49, 0xbd, 0xb5, 0x17, 0x82,
- 0x55, 0xde, 0x97, 0xe0, 0x5d, 0x62, 0x84, 0x81, 0xf0, 0x70, 0xa8, 0x34,
- 0x53, 0x4f, 0x14, 0xfd, 0x3d, 0x5d, 0x3d, 0x6f, 0xb9, 0x02, 0x03, 0x01,
- 0x00, 0x01, 0xa3, 0x82, 0x01, 0x35, 0x30, 0x82, 0x01, 0x31, 0x30, 0x12,
- 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06,
- 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d,
- 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x2f,
- 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x23,
- 0x30, 0x21, 0x30, 0x1f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07,
- 0x30, 0x01, 0x86, 0x13, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x74,
- 0x32, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x30,
- 0x3b, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x34, 0x30, 0x32, 0x30, 0x30,
- 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x28, 0x30, 0x26, 0x06, 0x08,
- 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74,
- 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x74, 0x68,
- 0x61, 0x77, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, 0x73,
- 0x30, 0x32, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2b, 0x30, 0x29, 0x30,
- 0x27, 0xa0, 0x25, 0xa0, 0x23, 0x86, 0x21, 0x68, 0x74, 0x74, 0x70, 0x3a,
- 0x2f, 0x2f, 0x74, 0x31, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63,
- 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x50, 0x43, 0x41,
- 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x29, 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04,
- 0x22, 0x30, 0x20, 0xa4, 0x1e, 0x30, 0x1c, 0x31, 0x1a, 0x30, 0x18, 0x06,
- 0x03, 0x55, 0x04, 0x03, 0x13, 0x11, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74,
- 0x65, 0x63, 0x50, 0x4b, 0x49, 0x2d, 0x31, 0x2d, 0x35, 0x33, 0x36, 0x30,
- 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xf0, 0x70,
- 0x51, 0xda, 0xd3, 0x2a, 0x91, 0x4f, 0x52, 0x77, 0xd7, 0x86, 0x77, 0x74,
- 0x0f, 0xce, 0x71, 0x1a, 0x6c, 0x22, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d,
- 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x7b, 0x5b, 0x45, 0xcf, 0xaf,
- 0xce, 0xcb, 0x7a, 0xfd, 0x31, 0x92, 0x1a, 0x6a, 0xb6, 0xf3, 0x46, 0xeb,
- 0x57, 0x48, 0x50, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7,
- 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0xa1,
- 0x2e, 0x94, 0x3e, 0x9b, 0x16, 0xf4, 0x58, 0x1a, 0x6f, 0xc1, 0xfa, 0xc1,
- 0x7e, 0x43, 0x93, 0xb2, 0xc3, 0xf7, 0x89, 0xeb, 0x13, 0x62, 0x5d, 0xdd,
- 0xcc, 0x61, 0x13, 0x2b, 0x1d, 0x4e, 0x88, 0x79, 0x11, 0x62, 0x14, 0x37,
- 0x30, 0x46, 0xff, 0x89, 0x62, 0x10, 0x85, 0x2a, 0x87, 0x1e, 0xf8, 0xe2,
- 0xaf, 0xfe, 0x93, 0x02, 0x93, 0xca, 0xf2, 0xe9, 0x46, 0x03, 0x6b, 0xa1,
- 0x1a, 0xac, 0xd5, 0xf0, 0x80, 0x1b, 0x98, 0x6f, 0xb8, 0x3a, 0x50, 0xf8,
- 0x54, 0x71, 0x06, 0x03, 0xe7, 0x84, 0xcc, 0x8e, 0x61, 0xd2, 0x5f, 0x4d,
- 0x0c, 0x97, 0x02, 0x65, 0xb5, 0x8c, 0x26, 0xbc, 0x05, 0x98, 0xf4, 0xdc,
- 0xc6, 0xaf, 0xe4, 0x57, 0x7f, 0xe3, 0xdc, 0xa1, 0xd7, 0x27, 0x47, 0x2a,
- 0xe0, 0x2c, 0x3f, 0x09, 0x74, 0xdc, 0x5a, 0xe5, 0xb5, 0x7c, 0xfa, 0x82,
- 0x9a, 0x15, 0xfa, 0x74, 0x2b, 0x84, 0x2e, 0x6b, 0xac, 0xef, 0x35, 0xa6,
- 0x30, 0xfa, 0x47, 0x4a, 0xaa, 0x36, 0x44, 0xf6, 0x5a, 0x91, 0x07, 0xd3,
- 0xe4, 0x4e, 0x97, 0x3f, 0xa6, 0x53, 0xd8, 0x29, 0x33, 0x32, 0x6f, 0x8b,
- 0x3d, 0xb5, 0xa5, 0x0d, 0xe5, 0xe4, 0x8a, 0xe8, 0xf5, 0xc0, 0xfa, 0xaf,
- 0xd8, 0x37, 0x28, 0x27, 0xc3, 0xed, 0x34, 0x31, 0xd9, 0x7c, 0xa6, 0xaf,
- 0x4d, 0x12, 0x4f, 0xd0, 0x2b, 0x92, 0x9c, 0x69, 0x95, 0xf2, 0x28, 0xa6,
- 0xfe, 0xa8, 0xc6, 0xe0, 0x2c, 0x4d, 0x36, 0xeb, 0x11, 0x34, 0xd6, 0xe1,
- 0x81, 0x99, 0x9d, 0x41, 0xf2, 0xe7, 0xc5, 0x57, 0x05, 0x0e, 0x19, 0xca,
- 0xaf, 0x42, 0x39, 0x1f, 0xa7, 0x27, 0x5e, 0xe0, 0x0a, 0x17, 0xb8, 0xae,
- 0x47, 0xab, 0x92, 0xf1, 0x8a, 0x04, 0xdf, 0x30, 0xe0, 0xbb, 0x4f, 0x8a,
- 0xf9, 0x1b, 0x88, 0x4f, 0x03, 0xb4, 0x25, 0x7a, 0x78, 0xde, 0x2e, 0x7d,
- 0x29, 0xd1, 0x31,
-}
-
-var certSet3Cert29 = []byte{
- 0x30, 0x82, 0x04, 0xb1, 0x30, 0x82, 0x03, 0x99, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x04, 0xe1, 0xe7, 0xa4, 0xdc, 0x5c, 0xf2, 0xf3, 0x6d,
- 0xc0, 0x2b, 0x42, 0xb8, 0x5d, 0x15, 0x9f, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x6c,
- 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55,
- 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c,
- 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63,
- 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77,
- 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e,
- 0x63, 0x6f, 0x6d, 0x31, 0x2b, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x03,
- 0x13, 0x22, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x48,
- 0x69, 0x67, 0x68, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6e, 0x63,
- 0x65, 0x20, 0x45, 0x56, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41,
- 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31, 0x30, 0x32, 0x32, 0x31, 0x32,
- 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x38, 0x31, 0x30, 0x32,
- 0x32, 0x31, 0x32, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x70, 0x31, 0x0b,
- 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31,
- 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, 0x44, 0x69,
- 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x31, 0x19,
- 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77, 0x77, 0x77,
- 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f,
- 0x6d, 0x31, 0x2f, 0x30, 0x2d, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x26,
- 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x53, 0x48, 0x41,
- 0x32, 0x20, 0x48, 0x69, 0x67, 0x68, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72,
- 0x61, 0x6e, 0x63, 0x65, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20,
- 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
- 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01,
- 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xb6,
- 0xe0, 0x2f, 0xc2, 0x24, 0x06, 0xc8, 0x6d, 0x04, 0x5f, 0xd7, 0xef, 0x0a,
- 0x64, 0x06, 0xb2, 0x7d, 0x22, 0x26, 0x65, 0x16, 0xae, 0x42, 0x40, 0x9b,
- 0xce, 0xdc, 0x9f, 0x9f, 0x76, 0x07, 0x3e, 0xc3, 0x30, 0x55, 0x87, 0x19,
- 0xb9, 0x4f, 0x94, 0x0e, 0x5a, 0x94, 0x1f, 0x55, 0x56, 0xb4, 0xc2, 0x02,
- 0x2a, 0xaf, 0xd0, 0x98, 0xee, 0x0b, 0x40, 0xd7, 0xc4, 0xd0, 0x3b, 0x72,
- 0xc8, 0x14, 0x9e, 0xef, 0x90, 0xb1, 0x11, 0xa9, 0xae, 0xd2, 0xc8, 0xb8,
- 0x43, 0x3a, 0xd9, 0x0b, 0x0b, 0xd5, 0xd5, 0x95, 0xf5, 0x40, 0xaf, 0xc8,
- 0x1d, 0xed, 0x4d, 0x9c, 0x5f, 0x57, 0xb7, 0x86, 0x50, 0x68, 0x99, 0xf5,
- 0x8a, 0xda, 0xd2, 0xc7, 0x05, 0x1f, 0xa8, 0x97, 0xc9, 0xdc, 0xa4, 0xb1,
- 0x82, 0x84, 0x2d, 0xc6, 0xad, 0xa5, 0x9c, 0xc7, 0x19, 0x82, 0xa6, 0x85,
- 0x0f, 0x5e, 0x44, 0x58, 0x2a, 0x37, 0x8f, 0xfd, 0x35, 0xf1, 0x0b, 0x08,
- 0x27, 0x32, 0x5a, 0xf5, 0xbb, 0x8b, 0x9e, 0xa4, 0xbd, 0x51, 0xd0, 0x27,
- 0xe2, 0xdd, 0x3b, 0x42, 0x33, 0xa3, 0x05, 0x28, 0xc4, 0xbb, 0x28, 0xcc,
- 0x9a, 0xac, 0x2b, 0x23, 0x0d, 0x78, 0xc6, 0x7b, 0xe6, 0x5e, 0x71, 0xb7,
- 0x4a, 0x3e, 0x08, 0xfb, 0x81, 0xb7, 0x16, 0x16, 0xa1, 0x9d, 0x23, 0x12,
- 0x4d, 0xe5, 0xd7, 0x92, 0x08, 0xac, 0x75, 0xa4, 0x9c, 0xba, 0xcd, 0x17,
- 0xb2, 0x1e, 0x44, 0x35, 0x65, 0x7f, 0x53, 0x25, 0x39, 0xd1, 0x1c, 0x0a,
- 0x9a, 0x63, 0x1b, 0x19, 0x92, 0x74, 0x68, 0x0a, 0x37, 0xc2, 0xc2, 0x52,
- 0x48, 0xcb, 0x39, 0x5a, 0xa2, 0xb6, 0xe1, 0x5d, 0xc1, 0xdd, 0xa0, 0x20,
- 0xb8, 0x21, 0xa2, 0x93, 0x26, 0x6f, 0x14, 0x4a, 0x21, 0x41, 0xc7, 0xed,
- 0x6d, 0x9b, 0xf2, 0x48, 0x2f, 0xf3, 0x03, 0xf5, 0xa2, 0x68, 0x92, 0x53,
- 0x2f, 0x5e, 0xe3, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x49,
- 0x30, 0x82, 0x01, 0x45, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01,
- 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00,
- 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04,
- 0x03, 0x02, 0x01, 0x86, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x04,
- 0x16, 0x30, 0x14, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03,
- 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x02, 0x30,
- 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04,
- 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
- 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f,
- 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72,
- 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x4b, 0x06, 0x03, 0x55, 0x1d, 0x1f,
- 0x04, 0x44, 0x30, 0x42, 0x30, 0x40, 0xa0, 0x3e, 0xa0, 0x3c, 0x86, 0x3a,
- 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x34, 0x2e,
- 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d,
- 0x2f, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x48, 0x69, 0x67,
- 0x68, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x45, 0x56,
- 0x52, 0x6f, 0x6f, 0x74, 0x43, 0x41, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x3d,
- 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x36, 0x30, 0x34, 0x30, 0x32, 0x06,
- 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x2a, 0x30, 0x28, 0x06, 0x08, 0x2b,
- 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1c, 0x68, 0x74, 0x74,
- 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67,
- 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x50,
- 0x53, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14,
- 0x51, 0x68, 0xff, 0x90, 0xaf, 0x02, 0x07, 0x75, 0x3c, 0xcc, 0xd9, 0x65,
- 0x64, 0x62, 0xa2, 0x12, 0xb8, 0x59, 0x72, 0x3b, 0x30, 0x1f, 0x06, 0x03,
- 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xb1, 0x3e, 0xc3,
- 0x69, 0x03, 0xf8, 0xbf, 0x47, 0x01, 0xd4, 0x98, 0x26, 0x1a, 0x08, 0x02,
- 0xef, 0x63, 0x64, 0x2b, 0xc3, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48,
- 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01,
- 0x00, 0x18, 0x8a, 0x95, 0x89, 0x03, 0xe6, 0x6d, 0xdf, 0x5c, 0xfc, 0x1d,
- 0x68, 0xea, 0x4a, 0x8f, 0x83, 0xd6, 0x51, 0x2f, 0x8d, 0x6b, 0x44, 0x16,
- 0x9e, 0xac, 0x63, 0xf5, 0xd2, 0x6e, 0x6c, 0x84, 0x99, 0x8b, 0xaa, 0x81,
- 0x71, 0x84, 0x5b, 0xed, 0x34, 0x4e, 0xb0, 0xb7, 0x79, 0x92, 0x29, 0xcc,
- 0x2d, 0x80, 0x6a, 0xf0, 0x8e, 0x20, 0xe1, 0x79, 0xa4, 0xfe, 0x03, 0x47,
- 0x13, 0xea, 0xf5, 0x86, 0xca, 0x59, 0x71, 0x7d, 0xf4, 0x04, 0x96, 0x6b,
- 0xd3, 0x59, 0x58, 0x3d, 0xfe, 0xd3, 0x31, 0x25, 0x5c, 0x18, 0x38, 0x84,
- 0xa3, 0xe6, 0x9f, 0x82, 0xfd, 0x8c, 0x5b, 0x98, 0x31, 0x4e, 0xcd, 0x78,
- 0x9e, 0x1a, 0xfd, 0x85, 0xcb, 0x49, 0xaa, 0xf2, 0x27, 0x8b, 0x99, 0x72,
- 0xfc, 0x3e, 0xaa, 0xd5, 0x41, 0x0b, 0xda, 0xd5, 0x36, 0xa1, 0xbf, 0x1c,
- 0x6e, 0x47, 0x49, 0x7f, 0x5e, 0xd9, 0x48, 0x7c, 0x03, 0xd9, 0xfd, 0x8b,
- 0x49, 0xa0, 0x98, 0x26, 0x42, 0x40, 0xeb, 0xd6, 0x92, 0x11, 0xa4, 0x64,
- 0x0a, 0x57, 0x54, 0xc4, 0xf5, 0x1d, 0xd6, 0x02, 0x5e, 0x6b, 0xac, 0xee,
- 0xc4, 0x80, 0x9a, 0x12, 0x72, 0xfa, 0x56, 0x93, 0xd7, 0xff, 0xbf, 0x30,
- 0x85, 0x06, 0x30, 0xbf, 0x0b, 0x7f, 0x4e, 0xff, 0x57, 0x05, 0x9d, 0x24,
- 0xed, 0x85, 0xc3, 0x2b, 0xfb, 0xa6, 0x75, 0xa8, 0xac, 0x2d, 0x16, 0xef,
- 0x7d, 0x79, 0x27, 0xb2, 0xeb, 0xc2, 0x9d, 0x0b, 0x07, 0xea, 0xaa, 0x85,
- 0xd3, 0x01, 0xa3, 0x20, 0x28, 0x41, 0x59, 0x43, 0x28, 0xd2, 0x81, 0xe3,
- 0xaa, 0xf6, 0xec, 0x7b, 0x3b, 0x77, 0xb6, 0x40, 0x62, 0x80, 0x05, 0x41,
- 0x45, 0x01, 0xef, 0x17, 0x06, 0x3e, 0xde, 0xc0, 0x33, 0x9b, 0x67, 0xd3,
- 0x61, 0x2e, 0x72, 0x87, 0xe4, 0x69, 0xfc, 0x12, 0x00, 0x57, 0x40, 0x1e,
- 0x70, 0xf5, 0x1e, 0xc9, 0xb4,
-}
-
-var certSet3Cert30 = []byte{
- 0x30, 0x82, 0x04, 0xb2, 0x30, 0x82, 0x03, 0x9a, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x16, 0x87, 0xd6, 0x88, 0x6d, 0xe2, 0x30, 0x06, 0x85,
- 0x23, 0x3d, 0xbf, 0x11, 0xbf, 0x65, 0x97, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81,
- 0xa9, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
- 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13,
- 0x0c, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63,
- 0x2e, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f,
- 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x44,
- 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x38, 0x30, 0x36, 0x06,
- 0x03, 0x55, 0x04, 0x0b, 0x13, 0x2f, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30,
- 0x30, 0x36, 0x20, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49,
- 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75,
- 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65,
- 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55,
- 0x04, 0x03, 0x13, 0x16, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x50,
- 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20,
- 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31, 0x30, 0x33, 0x31,
- 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x33, 0x31,
- 0x30, 0x33, 0x30, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x41,
- 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55,
- 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c,
- 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e,
- 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x74,
- 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41,
- 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06,
- 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00,
- 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01,
- 0x01, 0x00, 0xb2, 0xfc, 0x06, 0xfb, 0x04, 0x93, 0xd2, 0xea, 0x59, 0x20,
- 0x3b, 0x44, 0x85, 0x97, 0x52, 0x39, 0xe7, 0x10, 0xf0, 0x7a, 0xe0, 0xb0,
- 0x94, 0x40, 0xda, 0x46, 0xf8, 0x0c, 0x28, 0xbb, 0xb9, 0xce, 0x60, 0x38,
- 0x3f, 0xd2, 0xd8, 0x11, 0x42, 0x1b, 0x91, 0xad, 0x49, 0xee, 0x8f, 0xc7,
- 0xde, 0x6c, 0xde, 0x37, 0x6f, 0xfd, 0x8b, 0x20, 0x3c, 0x6d, 0xe7, 0x74,
- 0xd3, 0xdc, 0xd5, 0x24, 0x88, 0x41, 0x80, 0x89, 0xee, 0x36, 0xbe, 0xc4,
- 0xd5, 0xbe, 0x8d, 0x53, 0x13, 0xaa, 0xe4, 0xa5, 0xb8, 0x93, 0x0a, 0xbe,
- 0xec, 0xda, 0xcd, 0x3c, 0xd4, 0x32, 0x56, 0xef, 0xd0, 0x4e, 0xa0, 0xb8,
- 0x97, 0xbb, 0x39, 0x50, 0x1e, 0x6e, 0x65, 0xc3, 0xfd, 0xb2, 0xce, 0xe0,
- 0x59, 0xa9, 0x48, 0x09, 0xc6, 0xfe, 0xbe, 0xae, 0xfc, 0x3e, 0x3b, 0x81,
- 0x20, 0x97, 0x8b, 0x8f, 0x46, 0xdf, 0x60, 0x64, 0x07, 0x75, 0xbb, 0x1b,
- 0x86, 0x38, 0x9f, 0x47, 0x7b, 0x34, 0xce, 0xa1, 0xd1, 0x97, 0xad, 0x76,
- 0xd8, 0x9f, 0xb7, 0x26, 0xdb, 0x79, 0x80, 0x36, 0x48, 0xf2, 0xc5, 0x37,
- 0xf8, 0xd9, 0x32, 0xae, 0x7c, 0xa4, 0x53, 0x81, 0xc7, 0x99, 0xa1, 0x54,
- 0x38, 0x2f, 0x4f, 0x75, 0xa0, 0xbb, 0x5a, 0xa5, 0xbb, 0xcd, 0xac, 0x02,
- 0x5b, 0x19, 0x02, 0xd5, 0x13, 0x18, 0xa7, 0xce, 0xac, 0x74, 0x55, 0x12,
- 0x05, 0x8b, 0x9b, 0xa2, 0x95, 0x46, 0x64, 0x72, 0x38, 0xcd, 0x5a, 0x1b,
- 0x3a, 0x16, 0xa7, 0xbe, 0x71, 0x99, 0x8c, 0x54, 0x03, 0xb8, 0x96, 0x6c,
- 0x01, 0xd3, 0x3e, 0x06, 0x98, 0x3f, 0x21, 0x81, 0x3b, 0x02, 0x7e, 0x00,
- 0x47, 0x53, 0x01, 0x1e, 0x0e, 0x46, 0x43, 0xfb, 0x4b, 0x2d, 0xdc, 0x0b,
- 0x1a, 0xe8, 0x2f, 0x98, 0xf8, 0x7e, 0xd1, 0x99, 0xab, 0x13, 0x6c, 0xa4,
- 0x17, 0xde, 0x6f, 0xf6, 0x15, 0xf5, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3,
- 0x82, 0x01, 0x3b, 0x30, 0x82, 0x01, 0x37, 0x30, 0x12, 0x06, 0x03, 0x55,
- 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff,
- 0x02, 0x01, 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01,
- 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x32, 0x06, 0x03, 0x55,
- 0x1d, 0x1f, 0x04, 0x2b, 0x30, 0x29, 0x30, 0x27, 0xa0, 0x25, 0xa0, 0x23,
- 0x86, 0x21, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x74, 0x31, 0x2e,
- 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68,
- 0x61, 0x77, 0x74, 0x65, 0x50, 0x43, 0x41, 0x2e, 0x63, 0x72, 0x6c, 0x30,
- 0x2f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04,
- 0x23, 0x30, 0x21, 0x30, 0x1f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
- 0x07, 0x30, 0x01, 0x86, 0x13, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f,
- 0x74, 0x32, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
- 0x30, 0x41, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x3a, 0x30, 0x38, 0x30,
- 0x36, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, 0x07,
- 0x36, 0x30, 0x28, 0x30, 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
- 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f,
- 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2e,
- 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x29, 0x06, 0x03, 0x55,
- 0x1d, 0x11, 0x04, 0x22, 0x30, 0x20, 0xa4, 0x1e, 0x30, 0x1c, 0x31, 0x1a,
- 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x11, 0x53, 0x79, 0x6d,
- 0x61, 0x6e, 0x74, 0x65, 0x63, 0x50, 0x4b, 0x49, 0x2d, 0x31, 0x2d, 0x35,
- 0x33, 0x37, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04,
- 0x14, 0xc2, 0x4f, 0x48, 0x57, 0xfc, 0xd1, 0x4f, 0x9a, 0xc0, 0x5d, 0x38,
- 0x7d, 0x0e, 0x05, 0xdb, 0xd9, 0x2e, 0xb5, 0x52, 0x60, 0x30, 0x1f, 0x06,
- 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x7b, 0x5b,
- 0x45, 0xcf, 0xaf, 0xce, 0xcb, 0x7a, 0xfd, 0x31, 0x92, 0x1a, 0x6a, 0xb6,
- 0xf3, 0x46, 0xeb, 0x57, 0x48, 0x50, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
- 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01,
- 0x01, 0x00, 0x8d, 0x06, 0xde, 0x43, 0xc9, 0x76, 0x02, 0xca, 0xd9, 0x23,
- 0x97, 0x5e, 0xf3, 0x63, 0xd7, 0x7d, 0x44, 0xc2, 0x0f, 0x6b, 0x0a, 0xf5,
- 0x07, 0xe5, 0x8b, 0xb8, 0xfa, 0xe0, 0xa3, 0xfa, 0x6b, 0x80, 0x92, 0xb5,
- 0x03, 0x2c, 0xc5, 0x37, 0xe0, 0xc2, 0xe5, 0x95, 0xb5, 0x92, 0x70, 0x18,
- 0x28, 0x42, 0x94, 0xee, 0x4b, 0x77, 0x6a, 0x01, 0x0f, 0x8b, 0x23, 0xec,
- 0x56, 0x4d, 0xf4, 0x00, 0x69, 0xe5, 0x84, 0xc8, 0xe2, 0xea, 0xde, 0x5b,
- 0x3e, 0xf6, 0x3c, 0x07, 0x3a, 0x94, 0xca, 0x6c, 0x27, 0xb1, 0xcc, 0x83,
- 0x1a, 0x60, 0x71, 0x27, 0xd2, 0xbf, 0x02, 0xf5, 0x1e, 0x44, 0xd3, 0x48,
- 0xd5, 0xa6, 0xd3, 0x76, 0x21, 0x00, 0x9c, 0xfa, 0x98, 0x64, 0xeb, 0x17,
- 0x36, 0x3f, 0xeb, 0x1b, 0x3c, 0x3e, 0xa6, 0xb1, 0xd9, 0x58, 0x06, 0x0e,
- 0x72, 0xd9, 0x68, 0xbe, 0xf1, 0xa7, 0x20, 0xd7, 0x52, 0xe4, 0xa4, 0x77,
- 0x1f, 0x71, 0x70, 0x9d, 0x55, 0x35, 0x85, 0x37, 0xe1, 0x1d, 0x4d, 0x94,
- 0xc2, 0x70, 0x7f, 0x95, 0x40, 0x6e, 0x4b, 0x7d, 0xb2, 0xb4, 0x29, 0x2a,
- 0x03, 0x79, 0xc8, 0xb9, 0x4c, 0x67, 0x61, 0x04, 0xa0, 0x8b, 0x27, 0xff,
- 0x59, 0x00, 0xeb, 0x55, 0x7f, 0xc6, 0xb7, 0x33, 0x35, 0x2d, 0x5e, 0x4e,
- 0xac, 0xb8, 0xea, 0x12, 0xc5, 0xe8, 0xf7, 0xb9, 0xab, 0xbe, 0x74, 0x92,
- 0x2c, 0xb7, 0xd9, 0x4d, 0xca, 0x84, 0x2f, 0x1c, 0xc2, 0xf0, 0x72, 0x7c,
- 0xb2, 0x31, 0x6e, 0xcf, 0x80, 0xe5, 0x88, 0x07, 0x36, 0x51, 0x7b, 0xba,
- 0x61, 0xaf, 0x6d, 0x8d, 0x23, 0x5b, 0x34, 0xa3, 0x95, 0xbc, 0xa2, 0x31,
- 0x7f, 0xf2, 0xf5, 0xe7, 0xb7, 0xe8, 0xef, 0xc4, 0xb5, 0x27, 0x32, 0xe9,
- 0xf7, 0x9e, 0x69, 0xc7, 0x2b, 0xe8, 0xbe, 0xbb, 0x0c, 0xaa, 0xe7, 0xea,
- 0x60, 0x12, 0xea, 0x26, 0x8a, 0x78,
-}
-
-var certSet3Cert31 = []byte{
- 0x30, 0x82, 0x04, 0xb4, 0x30, 0x82, 0x03, 0x9c, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x11, 0x00, 0x93, 0x92, 0x85, 0x40, 0x01, 0x65, 0x71, 0x5f,
- 0x94, 0x7f, 0x28, 0x8f, 0xef, 0xc9, 0x9b, 0x28, 0x30, 0x0d, 0x06, 0x09,
- 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30,
- 0x3e, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
- 0x50, 0x4c, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13,
- 0x12, 0x55, 0x6e, 0x69, 0x7a, 0x65, 0x74, 0x6f, 0x20, 0x53, 0x70, 0x2e,
- 0x20, 0x7a, 0x20, 0x6f, 0x2e, 0x6f, 0x2e, 0x31, 0x12, 0x30, 0x10, 0x06,
- 0x03, 0x55, 0x04, 0x03, 0x13, 0x09, 0x43, 0x65, 0x72, 0x74, 0x75, 0x6d,
- 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x38, 0x31, 0x30, 0x32,
- 0x32, 0x31, 0x32, 0x30, 0x37, 0x33, 0x37, 0x5a, 0x17, 0x0d, 0x32, 0x37,
- 0x30, 0x36, 0x31, 0x30, 0x31, 0x30, 0x34, 0x36, 0x33, 0x39, 0x5a, 0x30,
- 0x7e, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
- 0x50, 0x4c, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13,
- 0x19, 0x55, 0x6e, 0x69, 0x7a, 0x65, 0x74, 0x6f, 0x20, 0x54, 0x65, 0x63,
- 0x68, 0x6e, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x65, 0x73, 0x20, 0x53, 0x2e,
- 0x41, 0x2e, 0x31, 0x27, 0x30, 0x25, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13,
- 0x1e, 0x43, 0x65, 0x72, 0x74, 0x75, 0x6d, 0x20, 0x43, 0x65, 0x72, 0x74,
- 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75,
- 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31, 0x22, 0x30, 0x20, 0x06,
- 0x03, 0x55, 0x04, 0x03, 0x13, 0x19, 0x43, 0x65, 0x72, 0x74, 0x75, 0x6d,
- 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x20, 0x4e, 0x65, 0x74,
- 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30,
- 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01,
- 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02,
- 0x82, 0x01, 0x01, 0x00, 0xe3, 0xfb, 0x7d, 0xa3, 0x72, 0xba, 0xc2, 0xf0,
- 0xc9, 0x14, 0x87, 0xf5, 0x6b, 0x01, 0x4e, 0xe1, 0x6e, 0x40, 0x07, 0xba,
- 0x6d, 0x27, 0x5d, 0x7f, 0xf7, 0x5b, 0x2d, 0xb3, 0x5a, 0xc7, 0x51, 0x5f,
- 0xab, 0xa4, 0x32, 0xa6, 0x61, 0x87, 0xb6, 0x6e, 0x0f, 0x86, 0xd2, 0x30,
- 0x02, 0x97, 0xf8, 0xd7, 0x69, 0x57, 0xa1, 0x18, 0x39, 0x5d, 0x6a, 0x64,
- 0x79, 0xc6, 0x01, 0x59, 0xac, 0x3c, 0x31, 0x4a, 0x38, 0x7c, 0xd2, 0x04,
- 0xd2, 0x4b, 0x28, 0xe8, 0x20, 0x5f, 0x3b, 0x07, 0xa2, 0xcc, 0x4d, 0x73,
- 0xdb, 0xf3, 0xae, 0x4f, 0xc7, 0x56, 0xd5, 0x5a, 0xa7, 0x96, 0x89, 0xfa,
- 0xf3, 0xab, 0x68, 0xd4, 0x23, 0x86, 0x59, 0x27, 0xcf, 0x09, 0x27, 0xbc,
- 0xac, 0x6e, 0x72, 0x83, 0x1c, 0x30, 0x72, 0xdf, 0xe0, 0xa2, 0xe9, 0xd2,
- 0xe1, 0x74, 0x75, 0x19, 0xbd, 0x2a, 0x9e, 0x7b, 0x15, 0x54, 0x04, 0x1b,
- 0xd7, 0x43, 0x39, 0xad, 0x55, 0x28, 0xc5, 0xe2, 0x1a, 0xbb, 0xf4, 0xc0,
- 0xe4, 0xae, 0x38, 0x49, 0x33, 0xcc, 0x76, 0x85, 0x9f, 0x39, 0x45, 0xd2,
- 0xa4, 0x9e, 0xf2, 0x12, 0x8c, 0x51, 0xf8, 0x7c, 0xe4, 0x2d, 0x7f, 0xf5,
- 0xac, 0x5f, 0xeb, 0x16, 0x9f, 0xb1, 0x2d, 0xd1, 0xba, 0xcc, 0x91, 0x42,
- 0x77, 0x4c, 0x25, 0xc9, 0x90, 0x38, 0x6f, 0xdb, 0xf0, 0xcc, 0xfb, 0x8e,
- 0x1e, 0x97, 0x59, 0x3e, 0xd5, 0x60, 0x4e, 0xe6, 0x05, 0x28, 0xed, 0x49,
- 0x79, 0x13, 0x4b, 0xba, 0x48, 0xdb, 0x2f, 0xf9, 0x72, 0xd3, 0x39, 0xca,
- 0xfe, 0x1f, 0xd8, 0x34, 0x72, 0xf5, 0xb4, 0x40, 0xcf, 0x31, 0x01, 0xc3,
- 0xec, 0xde, 0x11, 0x2d, 0x17, 0x5d, 0x1f, 0xb8, 0x50, 0xd1, 0x5e, 0x19,
- 0xa7, 0x69, 0xde, 0x07, 0x33, 0x28, 0xca, 0x50, 0x95, 0xf9, 0xa7, 0x54,
- 0xcb, 0x54, 0x86, 0x50, 0x45, 0xa9, 0xf9, 0x49, 0x02, 0x03, 0x01, 0x00,
- 0x01, 0xa3, 0x82, 0x01, 0x6b, 0x30, 0x82, 0x01, 0x67, 0x30, 0x0f, 0x06,
- 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01,
- 0x01, 0xff, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04,
- 0x14, 0x08, 0x76, 0xcd, 0xcb, 0x07, 0xff, 0x24, 0xf6, 0xc5, 0xcd, 0xed,
- 0xbb, 0x90, 0xbc, 0xe2, 0x84, 0x37, 0x46, 0x75, 0xf7, 0x30, 0x52, 0x06,
- 0x03, 0x55, 0x1d, 0x23, 0x04, 0x4b, 0x30, 0x49, 0xa1, 0x42, 0xa4, 0x40,
- 0x30, 0x3e, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13,
- 0x02, 0x50, 0x4c, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x0a,
- 0x13, 0x12, 0x55, 0x6e, 0x69, 0x7a, 0x65, 0x74, 0x6f, 0x20, 0x53, 0x70,
- 0x2e, 0x20, 0x7a, 0x20, 0x6f, 0x2e, 0x6f, 0x2e, 0x31, 0x12, 0x30, 0x10,
- 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x09, 0x43, 0x65, 0x72, 0x74, 0x75,
- 0x6d, 0x20, 0x43, 0x41, 0x82, 0x03, 0x01, 0x00, 0x20, 0x30, 0x0e, 0x06,
- 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01,
- 0x06, 0x30, 0x2c, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x25, 0x30, 0x23,
- 0x30, 0x21, 0xa0, 0x1f, 0xa0, 0x1d, 0x86, 0x1b, 0x68, 0x74, 0x74, 0x70,
- 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x75,
- 0x6d, 0x2e, 0x70, 0x6c, 0x2f, 0x63, 0x61, 0x2e, 0x63, 0x72, 0x6c, 0x30,
- 0x68, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04,
- 0x5c, 0x30, 0x5a, 0x30, 0x28, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
- 0x07, 0x30, 0x01, 0x86, 0x1c, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f,
- 0x73, 0x75, 0x62, 0x63, 0x61, 0x2e, 0x6f, 0x63, 0x73, 0x70, 0x2d, 0x63,
- 0x65, 0x72, 0x74, 0x75, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x2e, 0x06,
- 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x22, 0x68,
- 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69,
- 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x75, 0x6d, 0x2e,
- 0x70, 0x6c, 0x2f, 0x63, 0x61, 0x2e, 0x63, 0x65, 0x72, 0x30, 0x39, 0x06,
- 0x03, 0x55, 0x1d, 0x20, 0x04, 0x32, 0x30, 0x30, 0x30, 0x2e, 0x06, 0x04,
- 0x55, 0x1d, 0x20, 0x00, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, 0x2b, 0x06,
- 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x18, 0x68, 0x74, 0x74, 0x70,
- 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x63, 0x65, 0x72, 0x74, 0x75,
- 0x6d, 0x2e, 0x70, 0x6c, 0x2f, 0x43, 0x50, 0x53, 0x30, 0x0d, 0x06, 0x09,
- 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03,
- 0x82, 0x01, 0x01, 0x00, 0x8d, 0xe6, 0xfd, 0x40, 0x66, 0xa3, 0x4c, 0x9c,
- 0xa7, 0xab, 0xa1, 0xda, 0x84, 0xdd, 0x1c, 0x30, 0x07, 0xe6, 0xdb, 0xc7,
- 0x2d, 0xec, 0x83, 0xa1, 0x56, 0xe4, 0x1d, 0x3c, 0x26, 0xa1, 0xa5, 0x09,
- 0x2b, 0xe8, 0x7d, 0x62, 0xbe, 0xb2, 0x75, 0x94, 0xdd, 0x08, 0xf2, 0x7f,
- 0x28, 0x41, 0xe4, 0x80, 0x67, 0x02, 0x4e, 0x8a, 0x8f, 0xc3, 0x35, 0xd0,
- 0xd5, 0xa9, 0x27, 0x28, 0xea, 0xd2, 0xf4, 0xab, 0x06, 0x86, 0x43, 0xae,
- 0x8c, 0xe3, 0xf9, 0x88, 0x7d, 0xe0, 0xdb, 0xbd, 0x42, 0x81, 0x80, 0x02,
- 0x12, 0x75, 0xb2, 0xe8, 0x17, 0x71, 0xab, 0x21, 0x95, 0x31, 0x46, 0x42,
- 0x0d, 0x88, 0x10, 0x39, 0xd3, 0x6f, 0xec, 0x2f, 0x42, 0xea, 0x40, 0x53,
- 0x62, 0xbf, 0xeb, 0xca, 0x78, 0x9e, 0xab, 0xa2, 0xd5, 0x2e, 0x05, 0xea,
- 0x33, 0xab, 0xe9, 0xd6, 0x97, 0x94, 0x42, 0x5e, 0x04, 0xed, 0x2c, 0xed,
- 0x6a, 0x9c, 0x7a, 0x95, 0x7d, 0x05, 0x2a, 0x05, 0x7f, 0x08, 0x5d, 0x66,
- 0xad, 0x61, 0xd4, 0x76, 0xac, 0x75, 0x96, 0x97, 0x73, 0x63, 0xbd, 0x1a,
- 0x41, 0x59, 0x29, 0xa5, 0x5e, 0x22, 0x83, 0xc3, 0x8b, 0x59, 0xfa, 0x9a,
- 0xa2, 0xf6, 0xbd, 0x30, 0xbf, 0x72, 0x1d, 0x1c, 0x99, 0x86, 0x9c, 0xf2,
- 0x85, 0x3c, 0x1d, 0xf7, 0x26, 0x96, 0x2f, 0x2e, 0xf9, 0x02, 0xb1, 0xb5,
- 0xa9, 0x50, 0xe8, 0x38, 0xfa, 0x9b, 0x0a, 0x5e, 0xb4, 0x04, 0xc0, 0xce,
- 0x4e, 0x39, 0x2c, 0xca, 0x0b, 0x5b, 0x62, 0xf0, 0x4d, 0x58, 0x50, 0x34,
- 0x99, 0xe6, 0x9a, 0x2c, 0xd2, 0x90, 0xd7, 0x09, 0x81, 0xd6, 0xc0, 0xaa,
- 0x5e, 0xce, 0xfe, 0xd2, 0xf7, 0xa1, 0xba, 0x4b, 0xd9, 0xd6, 0x86, 0x8e,
- 0x19, 0x1f, 0xa6, 0x06, 0x47, 0x42, 0x72, 0xe0, 0x56, 0x0a, 0x00, 0x1c,
- 0x78, 0xb9, 0x8d, 0xcc, 0x99, 0x04, 0x37, 0x49,
-}
-
-var certSet3Cert32 = []byte{
- 0x30, 0x82, 0x04, 0xb5, 0x30, 0x82, 0x03, 0x9d, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x48, 0xe9, 0x94, 0x40, 0xd4, 0x36, 0x49, 0x1c, 0xb8,
- 0xb8, 0x82, 0x3d, 0x09, 0x43, 0x94, 0xc7, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81,
- 0x98, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
- 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13,
- 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e,
- 0x63, 0x2e, 0x31, 0x39, 0x30, 0x37, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13,
- 0x30, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x38, 0x20, 0x47, 0x65,
- 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20,
- 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72,
- 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c,
- 0x79, 0x31, 0x36, 0x30, 0x34, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2d,
- 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x50, 0x72, 0x69,
- 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69,
- 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f,
- 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x30, 0x1e, 0x17,
- 0x0d, 0x31, 0x34, 0x30, 0x36, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
- 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x34, 0x30, 0x36, 0x30, 0x39, 0x32, 0x33,
- 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x47, 0x31, 0x0b, 0x30, 0x09, 0x06,
- 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14,
- 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72,
- 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x20, 0x30, 0x1e,
- 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x17, 0x52, 0x61, 0x70, 0x69, 0x64,
- 0x53, 0x53, 0x4c, 0x20, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x20, 0x43,
- 0x41, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d,
- 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05,
- 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82,
- 0x01, 0x01, 0x00, 0xc4, 0x95, 0x63, 0x28, 0xd0, 0x4e, 0x30, 0x45, 0xaf,
- 0x8b, 0x97, 0x34, 0x14, 0x45, 0xf8, 0x5c, 0x58, 0x4a, 0xfa, 0x33, 0x8e,
- 0x6e, 0x9c, 0x60, 0xab, 0xf3, 0x86, 0xff, 0x34, 0x74, 0xb2, 0x2b, 0xbe,
- 0xa1, 0x8c, 0xd5, 0xa2, 0xa3, 0x60, 0x7a, 0x40, 0xb9, 0xe1, 0xfc, 0x22,
- 0xca, 0x67, 0xba, 0x60, 0xaa, 0xc7, 0x9a, 0xf9, 0x06, 0x7f, 0xee, 0xf7,
- 0xba, 0x85, 0x05, 0xb0, 0x03, 0xff, 0x72, 0xae, 0x15, 0x41, 0x4a, 0x98,
- 0x64, 0xd7, 0x17, 0x4b, 0x54, 0xef, 0x05, 0xc6, 0x98, 0x07, 0x93, 0x27,
- 0x3e, 0x4f, 0xdc, 0x0f, 0xc6, 0x7b, 0x8b, 0xe7, 0xf3, 0x06, 0x5e, 0x8d,
- 0xe8, 0xb4, 0xae, 0x29, 0xb4, 0x1e, 0x1e, 0x2d, 0x16, 0x90, 0xd3, 0xea,
- 0xaa, 0xe7, 0x8c, 0x3b, 0x6d, 0xaf, 0x36, 0x59, 0xff, 0xc5, 0x0a, 0xfa,
- 0xc7, 0x4c, 0xbd, 0x36, 0x8b, 0x64, 0xc4, 0x4a, 0xf5, 0xce, 0x33, 0xf9,
- 0x07, 0xbe, 0x7f, 0x45, 0x90, 0xa8, 0x08, 0x14, 0xb0, 0xd0, 0xa5, 0x4f,
- 0xdf, 0x82, 0x80, 0xda, 0x1b, 0xee, 0xc3, 0x13, 0xb0, 0x98, 0xf5, 0x0f,
- 0xf9, 0x7e, 0x76, 0xb5, 0xe6, 0xb9, 0x5d, 0x68, 0xb9, 0x5c, 0x50, 0x90,
- 0x89, 0xa4, 0x36, 0xb1, 0x70, 0x16, 0xea, 0xb1, 0x10, 0xb5, 0x6a, 0x76,
- 0xdf, 0xe1, 0xbb, 0xfc, 0x78, 0xf2, 0x72, 0x99, 0xcf, 0xc9, 0xa2, 0xd4,
- 0x73, 0x54, 0x77, 0xbf, 0xc0, 0x39, 0x77, 0xe5, 0xae, 0x12, 0xc5, 0x78,
- 0x5a, 0x19, 0x45, 0xd4, 0x41, 0x19, 0xd3, 0x7c, 0xf5, 0x6f, 0x99, 0x6b,
- 0xd7, 0x8b, 0xbc, 0x2d, 0x09, 0x9d, 0x4b, 0x10, 0x61, 0xc0, 0xda, 0x52,
- 0xc3, 0xaf, 0x22, 0x43, 0xc6, 0xeb, 0x37, 0x7e, 0x63, 0x74, 0x30, 0x0d,
- 0x6a, 0x71, 0x8e, 0xde, 0x5d, 0x5b, 0x8a, 0xc8, 0xc5, 0xd7, 0x9b, 0x29,
- 0xe8, 0xae, 0xb6, 0x25, 0x61, 0x81, 0xeb, 0x02, 0x03, 0x01, 0x00, 0x01,
- 0xa3, 0x82, 0x01, 0x49, 0x30, 0x82, 0x01, 0x45, 0x30, 0x2e, 0x06, 0x08,
- 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x22, 0x30, 0x20,
- 0x30, 0x1e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01,
- 0x86, 0x12, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x2e, 0x73,
- 0x79, 0x6d, 0x63, 0x64, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x12, 0x06, 0x03,
- 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01,
- 0xff, 0x02, 0x01, 0x00, 0x30, 0x4c, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04,
- 0x45, 0x30, 0x43, 0x30, 0x41, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86,
- 0xf8, 0x45, 0x01, 0x07, 0x36, 0x30, 0x33, 0x30, 0x31, 0x06, 0x08, 0x2b,
- 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x25, 0x68, 0x74, 0x74,
- 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74,
- 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x36,
- 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2f, 0x30, 0x2d, 0x30, 0x2b, 0xa0,
- 0x29, 0xa0, 0x27, 0x86, 0x25, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f,
- 0x67, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
- 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x50, 0x43, 0x41, 0x2d,
- 0x47, 0x33, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d,
- 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x29,
- 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, 0x22, 0x30, 0x20, 0xa4, 0x1e, 0x30,
- 0x1c, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x11,
- 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x50, 0x4b, 0x49, 0x2d,
- 0x31, 0x2d, 0x36, 0x39, 0x37, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e,
- 0x04, 0x16, 0x04, 0x14, 0x4c, 0xf4, 0xbf, 0xe8, 0x3b, 0xbe, 0xc2, 0x24,
- 0xf3, 0x1b, 0x47, 0x3b, 0xb5, 0x6e, 0x48, 0x8e, 0x16, 0xab, 0xaf, 0x12,
- 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80,
- 0x14, 0xc4, 0x79, 0xca, 0x8e, 0xa1, 0x4e, 0x03, 0x1d, 0x1c, 0xdc, 0x6b,
- 0xdb, 0x31, 0x5b, 0x94, 0x3e, 0x3f, 0x30, 0x7f, 0x2d, 0x30, 0x0d, 0x06,
- 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00,
- 0x03, 0x82, 0x01, 0x01, 0x00, 0x7a, 0x53, 0xb5, 0xde, 0xb6, 0xef, 0x52,
- 0xa3, 0x5f, 0x8a, 0xf5, 0x89, 0xf1, 0x42, 0xcc, 0x5e, 0x46, 0x88, 0xae,
- 0xa5, 0x08, 0x87, 0x51, 0xde, 0x0f, 0x0f, 0x02, 0xeb, 0x0c, 0x82, 0x78,
- 0xe3, 0x73, 0x7d, 0x71, 0xbd, 0x43, 0xe9, 0xca, 0x8a, 0x3f, 0xe0, 0x25,
- 0x92, 0x9b, 0x33, 0x33, 0x74, 0x49, 0x5e, 0x00, 0xd9, 0x73, 0x14, 0x1c,
- 0x0b, 0x46, 0x76, 0x1c, 0x8a, 0x0d, 0x4d, 0x8c, 0x6c, 0x7e, 0x4b, 0xf7,
- 0x60, 0xd8, 0x81, 0x78, 0xa0, 0x78, 0xd0, 0x25, 0x62, 0xab, 0x10, 0xca,
- 0x22, 0xe8, 0x1c, 0x19, 0xdd, 0x52, 0x83, 0x64, 0x05, 0xe5, 0x87, 0x66,
- 0xae, 0xe7, 0x7a, 0xa4, 0x3b, 0x3e, 0xd8, 0x70, 0x7a, 0x76, 0xa2, 0x67,
- 0x39, 0xd4, 0xc9, 0xfa, 0xe5, 0xb7, 0x1e, 0x41, 0xe2, 0x09, 0x39, 0x88,
- 0x1c, 0x18, 0x55, 0x0a, 0xc4, 0x41, 0xaf, 0xb2, 0xf3, 0xf3, 0x0f, 0x42,
- 0x14, 0x61, 0x74, 0x81, 0xe3, 0xda, 0x87, 0x5a, 0x9a, 0x4d, 0x8b, 0xd3,
- 0xc9, 0x8f, 0x89, 0x66, 0x13, 0x29, 0x11, 0xe4, 0xff, 0xe2, 0xdf, 0x8e,
- 0x96, 0x0c, 0x5a, 0xa1, 0xaa, 0x6b, 0x9b, 0xfd, 0xfc, 0x03, 0x3b, 0x55,
- 0x0d, 0xa6, 0xa2, 0x25, 0x48, 0x17, 0x1f, 0x42, 0xa8, 0xda, 0x6c, 0x7e,
- 0x69, 0x6e, 0xa0, 0xdf, 0x67, 0xd2, 0x6d, 0xf4, 0x0e, 0x6a, 0x12, 0x79,
- 0xf5, 0x7c, 0xc8, 0xa5, 0x32, 0x1c, 0xc4, 0x31, 0xb2, 0xe6, 0xbb, 0xa8,
- 0x6b, 0x6a, 0xa2, 0x8a, 0x60, 0x69, 0xc0, 0x57, 0x7d, 0xb2, 0xf2, 0x31,
- 0x0c, 0x98, 0x65, 0x32, 0xec, 0x08, 0x5a, 0xce, 0xc6, 0x98, 0xe9, 0x21,
- 0x97, 0x3f, 0x2c, 0x79, 0x29, 0x03, 0xf5, 0xf6, 0x94, 0x2b, 0x53, 0x31,
- 0xf3, 0x93, 0x68, 0x57, 0xe1, 0xd7, 0x4f, 0x3a, 0xd1, 0x61, 0xa1, 0x60,
- 0xce, 0xb9, 0xab, 0x98, 0xae, 0x35, 0x54, 0x63, 0x8b,
-}
-
-var certSet3Cert33 = []byte{
- 0x30, 0x82, 0x04, 0xb6, 0x30, 0x82, 0x03, 0x9e, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x0c, 0x79, 0xa9, 0x44, 0xb0, 0x8c, 0x11, 0x95, 0x20,
- 0x92, 0x61, 0x5f, 0xe2, 0x6b, 0x1d, 0x83, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x6c,
- 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55,
- 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c,
- 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63,
- 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77,
- 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e,
- 0x63, 0x6f, 0x6d, 0x31, 0x2b, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x03,
- 0x13, 0x22, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x48,
- 0x69, 0x67, 0x68, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6e, 0x63,
- 0x65, 0x20, 0x45, 0x56, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41,
- 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31, 0x30, 0x32, 0x32, 0x31, 0x32,
- 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x38, 0x31, 0x30, 0x32,
- 0x32, 0x31, 0x32, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x75, 0x31, 0x0b,
- 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31,
- 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, 0x44, 0x69,
- 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x31, 0x19,
- 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77, 0x77, 0x77,
- 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f,
- 0x6d, 0x31, 0x34, 0x30, 0x32, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2b,
- 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x53, 0x48, 0x41,
- 0x32, 0x20, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x20, 0x56,
- 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x53, 0x65,
- 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30,
- 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01,
- 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02,
- 0x82, 0x01, 0x01, 0x00, 0xd7, 0x53, 0xa4, 0x04, 0x51, 0xf8, 0x99, 0xa6,
- 0x16, 0x48, 0x4b, 0x67, 0x27, 0xaa, 0x93, 0x49, 0xd0, 0x39, 0xed, 0x0c,
- 0xb0, 0xb0, 0x00, 0x87, 0xf1, 0x67, 0x28, 0x86, 0x85, 0x8c, 0x8e, 0x63,
- 0xda, 0xbc, 0xb1, 0x40, 0x38, 0xe2, 0xd3, 0xf5, 0xec, 0xa5, 0x05, 0x18,
- 0xb8, 0x3d, 0x3e, 0xc5, 0x99, 0x17, 0x32, 0xec, 0x18, 0x8c, 0xfa, 0xf1,
- 0x0c, 0xa6, 0x64, 0x21, 0x85, 0xcb, 0x07, 0x10, 0x34, 0xb0, 0x52, 0x88,
- 0x2b, 0x1f, 0x68, 0x9b, 0xd2, 0xb1, 0x8f, 0x12, 0xb0, 0xb3, 0xd2, 0xe7,
- 0x88, 0x1f, 0x1f, 0xef, 0x38, 0x77, 0x54, 0x53, 0x5f, 0x80, 0x79, 0x3f,
- 0x2e, 0x1a, 0xaa, 0xa8, 0x1e, 0x4b, 0x2b, 0x0d, 0xab, 0xb7, 0x63, 0xb9,
- 0x35, 0xb7, 0x7d, 0x14, 0xbc, 0x59, 0x4b, 0xdf, 0x51, 0x4a, 0xd2, 0xa1,
- 0xe2, 0x0c, 0xe2, 0x90, 0x82, 0x87, 0x6a, 0xae, 0xea, 0xd7, 0x64, 0xd6,
- 0x98, 0x55, 0xe8, 0xfd, 0xaf, 0x1a, 0x50, 0x6c, 0x54, 0xbc, 0x11, 0xf2,
- 0xfd, 0x4a, 0xf2, 0x9d, 0xbb, 0x7f, 0x0e, 0xf4, 0xd5, 0xbe, 0x8e, 0x16,
- 0x89, 0x12, 0x55, 0xd8, 0xc0, 0x71, 0x34, 0xee, 0xf6, 0xdc, 0x2d, 0xec,
- 0xc4, 0x87, 0x25, 0x86, 0x8d, 0xd8, 0x21, 0xe4, 0xb0, 0x4d, 0x0c, 0x89,
- 0xdc, 0x39, 0x26, 0x17, 0xdd, 0xf6, 0xd7, 0x94, 0x85, 0xd8, 0x04, 0x21,
- 0x70, 0x9d, 0x6f, 0x6f, 0xff, 0x5c, 0xba, 0x19, 0xe1, 0x45, 0xcb, 0x56,
- 0x57, 0x28, 0x7e, 0x1c, 0x0d, 0x41, 0x57, 0xaa, 0xb7, 0xb8, 0x27, 0xbb,
- 0xb1, 0xe4, 0xfa, 0x2a, 0xef, 0x21, 0x23, 0x75, 0x1a, 0xad, 0x2d, 0x9b,
- 0x86, 0x35, 0x8c, 0x9c, 0x77, 0xb5, 0x73, 0xad, 0xd8, 0x94, 0x2d, 0xe4,
- 0xf3, 0x0c, 0x9d, 0xee, 0xc1, 0x4e, 0x62, 0x7e, 0x17, 0xc0, 0x71, 0x9e,
- 0x2c, 0xde, 0xf1, 0xf9, 0x10, 0x28, 0x19, 0x33, 0x02, 0x03, 0x01, 0x00,
- 0x01, 0xa3, 0x82, 0x01, 0x49, 0x30, 0x82, 0x01, 0x45, 0x30, 0x12, 0x06,
- 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01,
- 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f,
- 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 0x1d, 0x06,
- 0x03, 0x55, 0x1d, 0x25, 0x04, 0x16, 0x30, 0x14, 0x06, 0x08, 0x2b, 0x06,
- 0x01, 0x05, 0x05, 0x07, 0x03, 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05,
- 0x05, 0x07, 0x03, 0x02, 0x30, 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05,
- 0x05, 0x07, 0x01, 0x01, 0x04, 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08,
- 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74,
- 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x64, 0x69,
- 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x4b,
- 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x44, 0x30, 0x42, 0x30, 0x40, 0xa0,
- 0x3e, 0xa0, 0x3c, 0x86, 0x3a, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f,
- 0x63, 0x72, 0x6c, 0x34, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72,
- 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65,
- 0x72, 0x74, 0x48, 0x69, 0x67, 0x68, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61,
- 0x6e, 0x63, 0x65, 0x45, 0x56, 0x52, 0x6f, 0x6f, 0x74, 0x43, 0x41, 0x2e,
- 0x63, 0x72, 0x6c, 0x30, 0x3d, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x36,
- 0x30, 0x34, 0x30, 0x32, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x2a,
- 0x30, 0x28, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01,
- 0x16, 0x1c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77,
- 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63,
- 0x6f, 0x6d, 0x2f, 0x43, 0x50, 0x53, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d,
- 0x0e, 0x04, 0x16, 0x04, 0x14, 0x3d, 0xd3, 0x50, 0xa5, 0xd6, 0xa0, 0xad,
- 0xee, 0xf3, 0x4a, 0x60, 0x0a, 0x65, 0xd3, 0x21, 0xd4, 0xf8, 0xf8, 0xd6,
- 0x0f, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16,
- 0x80, 0x14, 0xb1, 0x3e, 0xc3, 0x69, 0x03, 0xf8, 0xbf, 0x47, 0x01, 0xd4,
- 0x98, 0x26, 0x1a, 0x08, 0x02, 0xef, 0x63, 0x64, 0x2b, 0xc3, 0x30, 0x0d,
- 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05,
- 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x9d, 0xb6, 0xd0, 0x90, 0x86, 0xe1,
- 0x86, 0x02, 0xed, 0xc5, 0xa0, 0xf0, 0x34, 0x1c, 0x74, 0xc1, 0x8d, 0x76,
- 0xcc, 0x86, 0x0a, 0xa8, 0xf0, 0x4a, 0x8a, 0x42, 0xd6, 0x3f, 0xc8, 0xa9,
- 0x4d, 0xad, 0x7c, 0x08, 0xad, 0xe6, 0xb6, 0x50, 0xb8, 0xa2, 0x1a, 0x4d,
- 0x88, 0x07, 0xb1, 0x29, 0x21, 0xdc, 0xe7, 0xda, 0xc6, 0x3c, 0x21, 0xe0,
- 0xe3, 0x11, 0x49, 0x70, 0xac, 0x7a, 0x1d, 0x01, 0xa4, 0xca, 0x11, 0x3a,
- 0x57, 0xab, 0x7d, 0x57, 0x2a, 0x40, 0x74, 0xfd, 0xd3, 0x1d, 0x85, 0x18,
- 0x50, 0xdf, 0x57, 0x47, 0x75, 0xa1, 0x7d, 0x55, 0x20, 0x2e, 0x47, 0x37,
- 0x50, 0x72, 0x8c, 0x7f, 0x82, 0x1b, 0xd2, 0x62, 0x8f, 0x2d, 0x03, 0x5a,
- 0xda, 0xc3, 0xc8, 0xa1, 0xce, 0x2c, 0x52, 0xa2, 0x00, 0x63, 0xeb, 0x73,
- 0xba, 0x71, 0xc8, 0x49, 0x27, 0x23, 0x97, 0x64, 0x85, 0x9e, 0x38, 0x0e,
- 0xad, 0x63, 0x68, 0x3c, 0xba, 0x52, 0x81, 0x58, 0x79, 0xa3, 0x2c, 0x0c,
- 0xdf, 0xde, 0x6d, 0xeb, 0x31, 0xf2, 0xba, 0xa0, 0x7c, 0x6c, 0xf1, 0x2c,
- 0xd4, 0xe1, 0xbd, 0x77, 0x84, 0x37, 0x03, 0xce, 0x32, 0xb5, 0xc8, 0x9a,
- 0x81, 0x1a, 0x4a, 0x92, 0x4e, 0x3b, 0x46, 0x9a, 0x85, 0xfe, 0x83, 0xa2,
- 0xf9, 0x9e, 0x8c, 0xa3, 0xcc, 0x0d, 0x5e, 0xb3, 0x3d, 0xcf, 0x04, 0x78,
- 0x8f, 0x14, 0x14, 0x7b, 0x32, 0x9c, 0xc7, 0x00, 0xa6, 0x5c, 0xc4, 0xb5,
- 0xa1, 0x55, 0x8d, 0x5a, 0x56, 0x68, 0xa4, 0x22, 0x70, 0xaa, 0x3c, 0x81,
- 0x71, 0xd9, 0x9d, 0xa8, 0x45, 0x3b, 0xf4, 0xe5, 0xf6, 0xa2, 0x51, 0xdd,
- 0xc7, 0x7b, 0x62, 0xe8, 0x6f, 0x0c, 0x74, 0xeb, 0xb8, 0xda, 0xf8, 0xbf,
- 0x87, 0x0d, 0x79, 0x50, 0x91, 0x90, 0x9b, 0x18, 0x3b, 0x91, 0x59, 0x27,
- 0xf1, 0x35, 0x28, 0x13, 0xab, 0x26, 0x7e, 0xd5, 0xf7, 0x7a,
-}
-
-var certSet3Cert34 = []byte{
- 0x30, 0x82, 0x04, 0xc2, 0x30, 0x82, 0x03, 0xaa, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x36, 0x34, 0x9e, 0x18, 0xc9, 0x9c, 0x26, 0x69, 0xb6,
- 0x56, 0x2e, 0x6c, 0xe5, 0xad, 0x71, 0x32, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81,
- 0xae, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
- 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13,
- 0x0c, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63,
- 0x2e, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f,
- 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x44,
- 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x38, 0x30, 0x36, 0x06,
- 0x03, 0x55, 0x04, 0x0b, 0x13, 0x2f, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30,
- 0x30, 0x38, 0x20, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49,
- 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75,
- 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65,
- 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, 0x55,
- 0x04, 0x03, 0x13, 0x1b, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x50,
- 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20,
- 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x30, 0x1e, 0x17, 0x0d, 0x31,
- 0x33, 0x30, 0x35, 0x32, 0x33, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a,
- 0x17, 0x0d, 0x32, 0x33, 0x30, 0x35, 0x32, 0x32, 0x32, 0x33, 0x35, 0x39,
- 0x35, 0x39, 0x5a, 0x30, 0x43, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55,
- 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03,
- 0x55, 0x04, 0x0a, 0x13, 0x0c, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c,
- 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x1d, 0x30, 0x1b, 0x06, 0x03, 0x55,
- 0x04, 0x03, 0x13, 0x14, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x53,
- 0x48, 0x41, 0x32, 0x35, 0x36, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41,
- 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
- 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00,
- 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xa3, 0x63, 0x2b,
- 0xd4, 0xba, 0x5d, 0x38, 0xae, 0xb0, 0xcf, 0xb9, 0x4c, 0x38, 0xdf, 0x20,
- 0x7d, 0xf1, 0x2b, 0x47, 0x71, 0x1d, 0x8b, 0x68, 0xf3, 0x56, 0xf9, 0x9c,
- 0xda, 0xaa, 0xe5, 0x84, 0x26, 0xde, 0xa5, 0x71, 0x30, 0xbc, 0xf3, 0x31,
- 0x23, 0x9d, 0xe8, 0x3b, 0x80, 0xc8, 0x66, 0x57, 0x75, 0xb6, 0x57, 0x0e,
- 0xdb, 0x93, 0xf5, 0x26, 0x8e, 0x70, 0xba, 0x64, 0x52, 0x66, 0x8a, 0x2a,
- 0x88, 0x5c, 0x44, 0x18, 0x4d, 0xa8, 0xa2, 0x7c, 0xbd, 0x56, 0x61, 0x32,
- 0x90, 0x12, 0xf9, 0x35, 0x87, 0x48, 0x60, 0xb0, 0x6e, 0x90, 0x67, 0x44,
- 0x01, 0x8d, 0xe7, 0xc9, 0x0d, 0x63, 0x68, 0x72, 0x72, 0xab, 0x63, 0x3c,
- 0x86, 0xb8, 0x1f, 0x7d, 0xad, 0x88, 0x25, 0xa7, 0x6a, 0x88, 0x29, 0xfb,
- 0x59, 0xc6, 0x78, 0x71, 0x5f, 0x2c, 0xba, 0x89, 0xe6, 0xd3, 0x80, 0xfd,
- 0x57, 0xec, 0xb9, 0x51, 0x5f, 0x43, 0x33, 0x2e, 0x7e, 0x25, 0x3b, 0xa4,
- 0x04, 0xd1, 0x60, 0x8c, 0xb3, 0x44, 0x33, 0x93, 0x0c, 0xad, 0x2a, 0xb6,
- 0x44, 0xa2, 0x19, 0x3b, 0xaf, 0xc4, 0x90, 0x6f, 0x7b, 0x05, 0x87, 0x86,
- 0x9b, 0x2c, 0x6a, 0x9d, 0x2b, 0x6c, 0x77, 0xc9, 0x00, 0x9f, 0xc9, 0xcf,
- 0xac, 0xed, 0x3e, 0x1b, 0xf7, 0xc3, 0xf3, 0xd9, 0xf8, 0x6c, 0xd4, 0xa0,
- 0x57, 0xc4, 0xfb, 0x28, 0x32, 0xaa, 0x33, 0xf0, 0xe6, 0xba, 0x98, 0xdf,
- 0xe5, 0xc2, 0x4e, 0x9c, 0x74, 0xbf, 0x8a, 0x48, 0xc2, 0xf2, 0x1b, 0xf0,
- 0x77, 0x40, 0x41, 0x07, 0x04, 0xb2, 0x3a, 0xd5, 0x4c, 0xc4, 0x29, 0xa9,
- 0x11, 0x40, 0x3f, 0x02, 0x46, 0xf0, 0x91, 0xd5, 0xd2, 0x81, 0x83, 0x86,
- 0x13, 0xb3, 0x31, 0xed, 0x46, 0xab, 0xa8, 0x87, 0x76, 0xa9, 0x99, 0x7d,
- 0xbc, 0xcd, 0x31, 0x50, 0xf4, 0xa5, 0xb5, 0xdc, 0xa5, 0x32, 0xb3, 0x8b,
- 0x8b, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x44, 0x30, 0x82,
- 0x01, 0x40, 0x30, 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07,
- 0x01, 0x01, 0x04, 0x26, 0x30, 0x24, 0x30, 0x22, 0x06, 0x08, 0x2b, 0x06,
- 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x16, 0x68, 0x74, 0x74, 0x70,
- 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x74, 0x68, 0x61, 0x77,
- 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d,
- 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02,
- 0x01, 0x00, 0x30, 0x41, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x3a, 0x30,
- 0x38, 0x30, 0x36, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45,
- 0x01, 0x07, 0x36, 0x30, 0x28, 0x30, 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01,
- 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x73,
- 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74,
- 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x37, 0x06,
- 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x30, 0x30, 0x2e, 0x30, 0x2c, 0xa0, 0x2a,
- 0xa0, 0x28, 0x86, 0x26, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63,
- 0x72, 0x6c, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2e, 0x63, 0x6f,
- 0x6d, 0x2f, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x50, 0x43, 0x41, 0x2d,
- 0x47, 0x33, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d,
- 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x2a,
- 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, 0x23, 0x30, 0x21, 0xa4, 0x1f, 0x30,
- 0x1d, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12,
- 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x4d, 0x50, 0x4b, 0x49,
- 0x2d, 0x32, 0x2d, 0x34, 0x31, 0x35, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d,
- 0x0e, 0x04, 0x16, 0x04, 0x14, 0x2b, 0x9a, 0x35, 0xae, 0x01, 0x18, 0x38,
- 0x30, 0xe1, 0x70, 0x7a, 0x05, 0xe0, 0x11, 0x76, 0xa3, 0xce, 0xbd, 0x90,
- 0x14, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16,
- 0x80, 0x14, 0xad, 0x6c, 0xaa, 0x94, 0x60, 0x9c, 0xed, 0xe4, 0xff, 0xfa,
- 0x3e, 0x0a, 0x74, 0x2b, 0x63, 0x03, 0xf7, 0xb6, 0x59, 0xbf, 0x30, 0x0d,
- 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05,
- 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x74, 0xa6, 0x56, 0xe8, 0xaf, 0x93,
- 0x96, 0x19, 0xfb, 0x26, 0xf9, 0x0d, 0xb0, 0x44, 0xa5, 0xcd, 0xe9, 0x7a,
- 0x48, 0x03, 0x74, 0x01, 0x6c, 0x13, 0x71, 0xb7, 0xe0, 0x82, 0x90, 0x99,
- 0x62, 0x23, 0xe3, 0xd6, 0x99, 0xaf, 0xf0, 0xc7, 0x1e, 0x9e, 0xa8, 0x18,
- 0x21, 0xdb, 0xb4, 0x94, 0x3f, 0x34, 0x56, 0x1b, 0x99, 0x55, 0x2f, 0x8e,
- 0xf0, 0x45, 0x33, 0x32, 0xb7, 0x72, 0xc1, 0x13, 0x5b, 0x34, 0xd3, 0xf5,
- 0x60, 0xe5, 0x2e, 0x18, 0xd1, 0x5c, 0xc5, 0x6a, 0xc1, 0xaa, 0x87, 0x50,
- 0x0c, 0x1c, 0x9d, 0x64, 0x2b, 0xff, 0x1b, 0xdc, 0xd5, 0x2e, 0x61, 0x0b,
- 0xe7, 0xb9, 0xb6, 0x91, 0x53, 0x86, 0xd9, 0x03, 0x2a, 0xd1, 0x3d, 0x7b,
- 0x4a, 0xda, 0x2b, 0x07, 0xbe, 0x29, 0xf2, 0x60, 0x42, 0xa9, 0x91, 0x1a,
- 0x0e, 0x2e, 0x3c, 0xd1, 0x7d, 0xa5, 0x13, 0x14, 0x02, 0xfa, 0xee, 0x8b,
- 0x8d, 0xb6, 0xc8, 0xb8, 0x3e, 0x56, 0x81, 0x57, 0x21, 0x24, 0x3f, 0x65,
- 0xc3, 0xb4, 0xc9, 0xce, 0x5c, 0x8d, 0x46, 0xac, 0x53, 0xf3, 0xf9, 0x55,
- 0x74, 0xc8, 0x2b, 0xfd, 0xd2, 0x78, 0x70, 0xf5, 0xf8, 0x11, 0xe5, 0xf4,
- 0xa7, 0xad, 0x20, 0xf5, 0x9d, 0xf1, 0xec, 0x70, 0xf6, 0x13, 0xac, 0xe6,
- 0x8c, 0x8d, 0xdb, 0x3f, 0xc6, 0xf2, 0x79, 0x0e, 0xab, 0x52, 0xf2, 0xcc,
- 0x1b, 0x79, 0x27, 0xcf, 0x16, 0xb3, 0xd6, 0xf3, 0xc6, 0x36, 0x80, 0x43,
- 0xec, 0xc5, 0x94, 0xf0, 0xdd, 0x90, 0x8d, 0xf8, 0xc6, 0x52, 0x46, 0x56,
- 0xeb, 0x74, 0x47, 0xbe, 0xa6, 0xf3, 0x19, 0xae, 0x71, 0x4c, 0xc0, 0xe1,
- 0xe7, 0xd4, 0xcf, 0xed, 0xd4, 0x06, 0x28, 0x2a, 0x11, 0x3c, 0xba, 0xd9,
- 0x41, 0x6e, 0x00, 0xe7, 0x81, 0x37, 0x93, 0xe4, 0xda, 0x62, 0xc6, 0x1d,
- 0x67, 0x6f, 0x63, 0xb4, 0x14, 0x86, 0xd9, 0xa6, 0x62, 0xf0,
-}
-
-var certSet3Cert35 = []byte{
- 0x30, 0x82, 0x04, 0xc7, 0x30, 0x82, 0x03, 0xaf, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x41, 0x82, 0x12, 0x7d, 0x12, 0xd9, 0xc6, 0xb3, 0x21,
- 0x39, 0x43, 0x12, 0x56, 0x64, 0x00, 0xb8, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81,
- 0x98, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
- 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13,
- 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e,
- 0x63, 0x2e, 0x31, 0x39, 0x30, 0x37, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13,
- 0x30, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x38, 0x20, 0x47, 0x65,
- 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20,
- 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72,
- 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c,
- 0x79, 0x31, 0x36, 0x30, 0x34, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2d,
- 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x50, 0x72, 0x69,
- 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69,
- 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f,
- 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x30, 0x1e, 0x17,
- 0x0d, 0x31, 0x33, 0x30, 0x35, 0x32, 0x33, 0x30, 0x30, 0x30, 0x30, 0x30,
- 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x33, 0x30, 0x35, 0x32, 0x32, 0x32, 0x33,
- 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x46, 0x31, 0x0b, 0x30, 0x09, 0x06,
- 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14,
- 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x47, 0x65, 0x6f, 0x54, 0x72,
- 0x75, 0x73, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x1f, 0x30, 0x1d,
- 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x16, 0x47, 0x65, 0x6f, 0x54, 0x72,
- 0x75, 0x73, 0x74, 0x20, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x20, 0x53,
- 0x53, 0x4c, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06,
- 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00,
- 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01,
- 0x01, 0x00, 0xc6, 0xa9, 0x0b, 0x5d, 0x17, 0xa5, 0x7d, 0xc6, 0xcf, 0x2a,
- 0xef, 0xc6, 0x66, 0xd1, 0x42, 0x1e, 0x5f, 0x83, 0x78, 0x68, 0x91, 0xaf,
- 0xe6, 0xa7, 0x8b, 0xf0, 0x1d, 0x44, 0x01, 0x0a, 0x19, 0xca, 0x9c, 0xd4,
- 0x8b, 0x1d, 0xe1, 0xa1, 0x90, 0xa3, 0xc1, 0x5b, 0xb4, 0xd7, 0x5b, 0x6a,
- 0x8b, 0xfc, 0x0e, 0x49, 0x1e, 0xc2, 0x62, 0x29, 0xfe, 0x80, 0x15, 0x39,
- 0x8b, 0x81, 0x2a, 0x27, 0xb5, 0xfb, 0x12, 0xa8, 0x05, 0x22, 0x0b, 0xc5,
- 0x2c, 0xf5, 0xd9, 0x98, 0xdd, 0x16, 0x2f, 0x3b, 0x66, 0xe7, 0x62, 0xa2,
- 0x43, 0x32, 0xac, 0x8f, 0xb5, 0x85, 0xc8, 0x52, 0x06, 0x2c, 0x5c, 0xc0,
- 0x77, 0xfa, 0x67, 0xf7, 0x83, 0xe8, 0x5e, 0x05, 0x8d, 0xc8, 0xab, 0xa1,
- 0x16, 0x32, 0x8a, 0xd2, 0x40, 0xec, 0x86, 0x3a, 0x1c, 0x23, 0xa9, 0x8d,
- 0xb5, 0x00, 0xde, 0x72, 0xbd, 0x85, 0x55, 0xfe, 0x06, 0x01, 0x60, 0x5d,
- 0xad, 0xb3, 0xe0, 0x65, 0x73, 0xa5, 0x92, 0x14, 0x9e, 0x94, 0x56, 0x6f,
- 0x93, 0xee, 0xaf, 0xa9, 0x3a, 0x30, 0x25, 0x4a, 0x8e, 0x09, 0x84, 0xef,
- 0xb7, 0xd2, 0xd5, 0xd7, 0x9b, 0x49, 0xcd, 0xe9, 0xc0, 0x5e, 0x67, 0x71,
- 0x22, 0xac, 0x50, 0x90, 0x43, 0x20, 0x5d, 0xa1, 0xa3, 0x15, 0x83, 0xfd,
- 0xfc, 0xa7, 0x39, 0xbc, 0x6b, 0x65, 0x48, 0x12, 0x60, 0xff, 0xdd, 0x23,
- 0xb3, 0x3a, 0xaa, 0xf4, 0x9f, 0x9c, 0x37, 0x53, 0x41, 0xa2, 0x47, 0x93,
- 0x81, 0x33, 0x09, 0xe5, 0x22, 0xc6, 0xc8, 0x1c, 0x49, 0xa1, 0x6e, 0x8d,
- 0xcc, 0x83, 0xb3, 0x9a, 0xcd, 0xea, 0x43, 0xf2, 0x19, 0xd3, 0x24, 0xcb,
- 0xa8, 0x29, 0xae, 0x52, 0xcc, 0xf4, 0x08, 0x27, 0xb0, 0x84, 0xea, 0xce,
- 0x27, 0xb5, 0xe1, 0x34, 0x13, 0x73, 0x92, 0x5c, 0x87, 0x86, 0x2a, 0xc6,
- 0xb0, 0x68, 0x36, 0xad, 0xcb, 0x09, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3,
- 0x82, 0x01, 0x5c, 0x30, 0x82, 0x01, 0x58, 0x30, 0x3b, 0x06, 0x08, 0x2b,
- 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x2f, 0x30, 0x2d, 0x30,
- 0x2b, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86,
- 0x1f, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x70, 0x63, 0x61, 0x2d,
- 0x67, 0x33, 0x2d, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x67, 0x65, 0x6f, 0x74,
- 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x12, 0x06, 0x03,
- 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01,
- 0xff, 0x02, 0x01, 0x00, 0x30, 0x4c, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04,
- 0x45, 0x30, 0x43, 0x30, 0x41, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86,
- 0xf8, 0x45, 0x01, 0x07, 0x36, 0x30, 0x33, 0x30, 0x31, 0x06, 0x08, 0x2b,
- 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x25, 0x68, 0x74, 0x74,
- 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x65, 0x6f, 0x74,
- 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73,
- 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x3b,
- 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x34, 0x30, 0x32, 0x30, 0x30, 0xa0,
- 0x2e, 0xa0, 0x2c, 0x86, 0x2a, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f,
- 0x63, 0x72, 0x6c, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74,
- 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x65, 0x6f, 0x54, 0x72, 0x75, 0x73,
- 0x74, 0x50, 0x43, 0x41, 0x2d, 0x47, 0x33, 0x2e, 0x63, 0x72, 0x6c, 0x30,
- 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03,
- 0x02, 0x01, 0x06, 0x30, 0x2a, 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, 0x23,
- 0x30, 0x21, 0xa4, 0x1f, 0x30, 0x1d, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03,
- 0x55, 0x04, 0x03, 0x13, 0x12, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67,
- 0x6e, 0x4d, 0x50, 0x4b, 0x49, 0x2d, 0x32, 0x2d, 0x34, 0x31, 0x36, 0x30,
- 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x14, 0x67,
- 0x8e, 0xed, 0x83, 0x4f, 0xd6, 0x1e, 0x9d, 0x40, 0x04, 0x0c, 0x04, 0x46,
- 0xa1, 0x70, 0x34, 0xb2, 0x0f, 0x72, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d,
- 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xc4, 0x79, 0xca, 0x8e, 0xa1,
- 0x4e, 0x03, 0x1d, 0x1c, 0xdc, 0x6b, 0xdb, 0x31, 0x5b, 0x94, 0x3e, 0x3f,
- 0x30, 0x7f, 0x2d, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7,
- 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x10,
- 0x10, 0xea, 0xf2, 0x10, 0xd6, 0x08, 0x46, 0xe2, 0xc1, 0x8f, 0x3e, 0x36,
- 0x59, 0xc8, 0x2b, 0x0f, 0xfe, 0x4d, 0xec, 0xe3, 0xf8, 0xb6, 0x56, 0x31,
- 0x78, 0x25, 0xd4, 0x76, 0xf2, 0x08, 0xdd, 0xef, 0x3f, 0xcd, 0x8b, 0x1c,
- 0x7e, 0xaa, 0x7f, 0xfc, 0x0b, 0xa8, 0x23, 0x64, 0x51, 0xb3, 0x87, 0xd6,
- 0x09, 0xfa, 0x22, 0xfa, 0xc7, 0x0a, 0x51, 0xe8, 0xce, 0xb8, 0xf6, 0x03,
- 0x70, 0xe0, 0x1b, 0x5a, 0xb9, 0xb1, 0xb2, 0x93, 0x11, 0x10, 0xf9, 0x97,
- 0x05, 0x07, 0x29, 0x6c, 0x6d, 0x57, 0x25, 0x54, 0xe8, 0xf9, 0x66, 0x9b,
- 0x0e, 0xfb, 0xdb, 0x9f, 0xee, 0x96, 0x6f, 0x65, 0xcb, 0x1f, 0xd8, 0x55,
- 0xce, 0x31, 0xfa, 0xcf, 0x02, 0xf4, 0xd0, 0x7f, 0x50, 0x66, 0xff, 0x2f,
- 0x79, 0x9b, 0xa5, 0xc2, 0xdf, 0xd6, 0xcf, 0xc8, 0x15, 0x83, 0x96, 0x84,
- 0x98, 0xb2, 0x46, 0xd4, 0x5f, 0x13, 0xa8, 0x3e, 0xa7, 0x34, 0x9c, 0x05,
- 0x38, 0xda, 0xcf, 0xd6, 0x69, 0x95, 0xa9, 0x26, 0x87, 0x76, 0x01, 0xd7,
- 0xb2, 0x51, 0x0f, 0x81, 0x69, 0x46, 0x26, 0x1c, 0x99, 0xb6, 0x83, 0x58,
- 0xe3, 0x3b, 0x58, 0x8f, 0xdc, 0xb4, 0x71, 0xc0, 0xb9, 0xbf, 0x42, 0x9c,
- 0x1c, 0x03, 0x9e, 0xe4, 0x46, 0xa8, 0xea, 0xb9, 0xc1, 0xcd, 0xf6, 0x5b,
- 0xa9, 0x3c, 0x96, 0xfb, 0x79, 0xa4, 0x33, 0x73, 0xa7, 0x9e, 0x78, 0xb9,
- 0x70, 0xdc, 0x72, 0x74, 0xc4, 0x32, 0xc8, 0x00, 0x1b, 0xc9, 0xef, 0x48,
- 0xd3, 0xfb, 0x3a, 0x9b, 0xfa, 0xfe, 0x7a, 0x9a, 0x40, 0x69, 0x1c, 0xc8,
- 0xda, 0x28, 0x37, 0x0b, 0xd3, 0xa3, 0xb9, 0x7e, 0x96, 0xcc, 0x2b, 0x28,
- 0xc3, 0x56, 0x6c, 0x6f, 0xe9, 0xdb, 0x52, 0xb1, 0xfa, 0x9a, 0xfb, 0xe7,
- 0xaf, 0xb5, 0x97, 0xa6, 0x22, 0xc3, 0xc5, 0xa8, 0x93, 0xb1, 0x00, 0xc9,
- 0x07, 0xb2, 0x7d,
-}
-
-var certSet3Cert36 = []byte{
- 0x30, 0x82, 0x04, 0xd0, 0x30, 0x82, 0x03, 0xb8, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x01, 0x07, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
- 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, 0x83, 0x31, 0x0b,
- 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31,
- 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x07, 0x41, 0x72,
- 0x69, 0x7a, 0x6f, 0x6e, 0x61, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55,
- 0x04, 0x07, 0x13, 0x0a, 0x53, 0x63, 0x6f, 0x74, 0x74, 0x73, 0x64, 0x61,
- 0x6c, 0x65, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13,
- 0x11, 0x47, 0x6f, 0x44, 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, 0x6f, 0x6d,
- 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x31, 0x30, 0x2f, 0x06, 0x03,
- 0x55, 0x04, 0x03, 0x13, 0x28, 0x47, 0x6f, 0x20, 0x44, 0x61, 0x64, 0x64,
- 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69,
- 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f,
- 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x1e, 0x17,
- 0x0d, 0x31, 0x31, 0x30, 0x35, 0x30, 0x33, 0x30, 0x37, 0x30, 0x30, 0x30,
- 0x30, 0x5a, 0x17, 0x0d, 0x33, 0x31, 0x30, 0x35, 0x30, 0x33, 0x30, 0x37,
- 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x81, 0xb4, 0x31, 0x0b, 0x30, 0x09,
- 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, 0x30,
- 0x0e, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x07, 0x41, 0x72, 0x69, 0x7a,
- 0x6f, 0x6e, 0x61, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x07,
- 0x13, 0x0a, 0x53, 0x63, 0x6f, 0x74, 0x74, 0x73, 0x64, 0x61, 0x6c, 0x65,
- 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x11, 0x47,
- 0x6f, 0x44, 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x2c, 0x20,
- 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x2d, 0x30, 0x2b, 0x06, 0x03, 0x55, 0x04,
- 0x0b, 0x13, 0x24, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x65,
- 0x72, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x64, 0x61, 0x64, 0x64, 0x79, 0x2e,
- 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f,
- 0x72, 0x79, 0x2f, 0x31, 0x33, 0x30, 0x31, 0x06, 0x03, 0x55, 0x04, 0x03,
- 0x13, 0x2a, 0x47, 0x6f, 0x20, 0x44, 0x61, 0x64, 0x64, 0x79, 0x20, 0x53,
- 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66,
- 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72,
- 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22,
- 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
- 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a,
- 0x02, 0x82, 0x01, 0x01, 0x00, 0xb9, 0xe0, 0xcb, 0x10, 0xd4, 0xaf, 0x76,
- 0xbd, 0xd4, 0x93, 0x62, 0xeb, 0x30, 0x64, 0xb8, 0x81, 0x08, 0x6c, 0xc3,
- 0x04, 0xd9, 0x62, 0x17, 0x8e, 0x2f, 0xff, 0x3e, 0x65, 0xcf, 0x8f, 0xce,
- 0x62, 0xe6, 0x3c, 0x52, 0x1c, 0xda, 0x16, 0x45, 0x4b, 0x55, 0xab, 0x78,
- 0x6b, 0x63, 0x83, 0x62, 0x90, 0xce, 0x0f, 0x69, 0x6c, 0x99, 0xc8, 0x1a,
- 0x14, 0x8b, 0x4c, 0xcc, 0x45, 0x33, 0xea, 0x88, 0xdc, 0x9e, 0xa3, 0xaf,
- 0x2b, 0xfe, 0x80, 0x61, 0x9d, 0x79, 0x57, 0xc4, 0xcf, 0x2e, 0xf4, 0x3f,
- 0x30, 0x3c, 0x5d, 0x47, 0xfc, 0x9a, 0x16, 0xbc, 0xc3, 0x37, 0x96, 0x41,
- 0x51, 0x8e, 0x11, 0x4b, 0x54, 0xf8, 0x28, 0xbe, 0xd0, 0x8c, 0xbe, 0xf0,
- 0x30, 0x38, 0x1e, 0xf3, 0xb0, 0x26, 0xf8, 0x66, 0x47, 0x63, 0x6d, 0xde,
- 0x71, 0x26, 0x47, 0x8f, 0x38, 0x47, 0x53, 0xd1, 0x46, 0x1d, 0xb4, 0xe3,
- 0xdc, 0x00, 0xea, 0x45, 0xac, 0xbd, 0xbc, 0x71, 0xd9, 0xaa, 0x6f, 0x00,
- 0xdb, 0xdb, 0xcd, 0x30, 0x3a, 0x79, 0x4f, 0x5f, 0x4c, 0x47, 0xf8, 0x1d,
- 0xef, 0x5b, 0xc2, 0xc4, 0x9d, 0x60, 0x3b, 0xb1, 0xb2, 0x43, 0x91, 0xd8,
- 0xa4, 0x33, 0x4e, 0xea, 0xb3, 0xd6, 0x27, 0x4f, 0xad, 0x25, 0x8a, 0xa5,
- 0xc6, 0xf4, 0xd5, 0xd0, 0xa6, 0xae, 0x74, 0x05, 0x64, 0x57, 0x88, 0xb5,
- 0x44, 0x55, 0xd4, 0x2d, 0x2a, 0x3a, 0x3e, 0xf8, 0xb8, 0xbd, 0xe9, 0x32,
- 0x0a, 0x02, 0x94, 0x64, 0xc4, 0x16, 0x3a, 0x50, 0xf1, 0x4a, 0xae, 0xe7,
- 0x79, 0x33, 0xaf, 0x0c, 0x20, 0x07, 0x7f, 0xe8, 0xdf, 0x04, 0x39, 0xc2,
- 0x69, 0x02, 0x6c, 0x63, 0x52, 0xfa, 0x77, 0xc1, 0x1b, 0xc8, 0x74, 0x87,
- 0xc8, 0xb9, 0x93, 0x18, 0x50, 0x54, 0x35, 0x4b, 0x69, 0x4e, 0xbc, 0x3b,
- 0xd3, 0x49, 0x2e, 0x1f, 0xdc, 0xc1, 0xd2, 0x52, 0xfb, 0x02, 0x03, 0x01,
- 0x00, 0x01, 0xa3, 0x82, 0x01, 0x1a, 0x30, 0x82, 0x01, 0x16, 0x30, 0x0f,
- 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03,
- 0x01, 0x01, 0xff, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01,
- 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x1d, 0x06, 0x03, 0x55,
- 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x40, 0xc2, 0xbd, 0x27, 0x8e, 0xcc,
- 0x34, 0x83, 0x30, 0xa2, 0x33, 0xd7, 0xfb, 0x6c, 0xb3, 0xf0, 0xb4, 0x2c,
- 0x80, 0xce, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30,
- 0x16, 0x80, 0x14, 0x3a, 0x9a, 0x85, 0x07, 0x10, 0x67, 0x28, 0xb6, 0xef,
- 0xf6, 0xbd, 0x05, 0x41, 0x6e, 0x20, 0xc1, 0x94, 0xda, 0x0f, 0xde, 0x30,
- 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04,
- 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
- 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f,
- 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x67, 0x6f, 0x64, 0x61, 0x64, 0x64, 0x79,
- 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x30, 0x35, 0x06, 0x03, 0x55, 0x1d, 0x1f,
- 0x04, 0x2e, 0x30, 0x2c, 0x30, 0x2a, 0xa0, 0x28, 0xa0, 0x26, 0x86, 0x24,
- 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x67,
- 0x6f, 0x64, 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67,
- 0x64, 0x72, 0x6f, 0x6f, 0x74, 0x2d, 0x67, 0x32, 0x2e, 0x63, 0x72, 0x6c,
- 0x30, 0x46, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x3f, 0x30, 0x3d, 0x30,
- 0x3b, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x33, 0x30, 0x31, 0x06,
- 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x25, 0x68,
- 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x73,
- 0x2e, 0x67, 0x6f, 0x64, 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, 0x6f, 0x6d,
- 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f,
- 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
- 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x08, 0x7e, 0x6c, 0x93,
- 0x10, 0xc8, 0x38, 0xb8, 0x96, 0xa9, 0x90, 0x4b, 0xff, 0xa1, 0x5f, 0x4f,
- 0x04, 0xef, 0x6c, 0x3e, 0x9c, 0x88, 0x06, 0xc9, 0x50, 0x8f, 0xa6, 0x73,
- 0xf7, 0x57, 0x31, 0x1b, 0xbe, 0xbc, 0xe4, 0x2f, 0xdb, 0xf8, 0xba, 0xd3,
- 0x5b, 0xe0, 0xb4, 0xe7, 0xe6, 0x79, 0x62, 0x0e, 0x0c, 0xa2, 0xd7, 0x6a,
- 0x63, 0x73, 0x31, 0xb5, 0xf5, 0xa8, 0x48, 0xa4, 0x3b, 0x08, 0x2d, 0xa2,
- 0x5d, 0x90, 0xd7, 0xb4, 0x7c, 0x25, 0x4f, 0x11, 0x56, 0x30, 0xc4, 0xb6,
- 0x44, 0x9d, 0x7b, 0x2c, 0x9d, 0xe5, 0x5e, 0xe6, 0xef, 0x0c, 0x61, 0xaa,
- 0xbf, 0xe4, 0x2a, 0x1b, 0xee, 0x84, 0x9e, 0xb8, 0x83, 0x7d, 0xc1, 0x43,
- 0xce, 0x44, 0xa7, 0x13, 0x70, 0x0d, 0x91, 0x1f, 0xf4, 0xc8, 0x13, 0xad,
- 0x83, 0x60, 0xd9, 0xd8, 0x72, 0xa8, 0x73, 0x24, 0x1e, 0xb5, 0xac, 0x22,
- 0x0e, 0xca, 0x17, 0x89, 0x62, 0x58, 0x44, 0x1b, 0xab, 0x89, 0x25, 0x01,
- 0x00, 0x0f, 0xcd, 0xc4, 0x1b, 0x62, 0xdb, 0x51, 0xb4, 0xd3, 0x0f, 0x51,
- 0x2a, 0x9b, 0xf4, 0xbc, 0x73, 0xfc, 0x76, 0xce, 0x36, 0xa4, 0xcd, 0xd9,
- 0xd8, 0x2c, 0xea, 0xae, 0x9b, 0xf5, 0x2a, 0xb2, 0x90, 0xd1, 0x4d, 0x75,
- 0x18, 0x8a, 0x3f, 0x8a, 0x41, 0x90, 0x23, 0x7d, 0x5b, 0x4b, 0xfe, 0xa4,
- 0x03, 0x58, 0x9b, 0x46, 0xb2, 0xc3, 0x60, 0x60, 0x83, 0xf8, 0x7d, 0x50,
- 0x41, 0xce, 0xc2, 0xa1, 0x90, 0xc3, 0xbb, 0xef, 0x02, 0x2f, 0xd2, 0x15,
- 0x54, 0xee, 0x44, 0x15, 0xd9, 0x0a, 0xae, 0xa7, 0x8a, 0x33, 0xed, 0xb1,
- 0x2d, 0x76, 0x36, 0x26, 0xdc, 0x04, 0xeb, 0x9f, 0xf7, 0x61, 0x1f, 0x15,
- 0xdc, 0x87, 0x6f, 0xee, 0x46, 0x96, 0x28, 0xad, 0xa1, 0x26, 0x7d, 0x0a,
- 0x09, 0xa7, 0x2e, 0x04, 0xa3, 0x8d, 0xbc, 0xf8, 0xbc, 0x04, 0x30, 0x01,
-}
-
-var certSet3Cert37 = []byte{
- 0x30, 0x82, 0x04, 0xd0, 0x30, 0x82, 0x04, 0x39, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x25, 0x0c, 0xe8, 0xe0, 0x30, 0x61, 0x2e, 0x9f, 0x2b,
- 0x89, 0xf7, 0x05, 0x4d, 0x7c, 0xf8, 0xfd, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x5f,
- 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55,
- 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e,
- 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e,
- 0x63, 0x2e, 0x31, 0x37, 0x30, 0x35, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13,
- 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62,
- 0x6c, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20,
- 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30,
- 0x1e, 0x17, 0x0d, 0x30, 0x36, 0x31, 0x31, 0x30, 0x38, 0x30, 0x30, 0x30,
- 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x31, 0x31, 0x31, 0x30, 0x37,
- 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x81, 0xca, 0x31, 0x0b,
- 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31,
- 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e, 0x56, 0x65,
- 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e,
- 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x16, 0x56,
- 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, 0x72, 0x75, 0x73,
- 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x31, 0x3a, 0x30,
- 0x38, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x31, 0x28, 0x63, 0x29, 0x20,
- 0x32, 0x30, 0x30, 0x36, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67,
- 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f,
- 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64,
- 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x45, 0x30,
- 0x43, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x3c, 0x56, 0x65, 0x72, 0x69,
- 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x33,
- 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6d,
- 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72,
- 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x35, 0x30, 0x82, 0x01, 0x22,
- 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
- 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a,
- 0x02, 0x82, 0x01, 0x01, 0x00, 0xaf, 0x24, 0x08, 0x08, 0x29, 0x7a, 0x35,
- 0x9e, 0x60, 0x0c, 0xaa, 0xe7, 0x4b, 0x3b, 0x4e, 0xdc, 0x7c, 0xbc, 0x3c,
- 0x45, 0x1c, 0xbb, 0x2b, 0xe0, 0xfe, 0x29, 0x02, 0xf9, 0x57, 0x08, 0xa3,
- 0x64, 0x85, 0x15, 0x27, 0xf5, 0xf1, 0xad, 0xc8, 0x31, 0x89, 0x5d, 0x22,
- 0xe8, 0x2a, 0xaa, 0xa6, 0x42, 0xb3, 0x8f, 0xf8, 0xb9, 0x55, 0xb7, 0xb1,
- 0xb7, 0x4b, 0xb3, 0xfe, 0x8f, 0x7e, 0x07, 0x57, 0xec, 0xef, 0x43, 0xdb,
- 0x66, 0x62, 0x15, 0x61, 0xcf, 0x60, 0x0d, 0xa4, 0xd8, 0xde, 0xf8, 0xe0,
- 0xc3, 0x62, 0x08, 0x3d, 0x54, 0x13, 0xeb, 0x49, 0xca, 0x59, 0x54, 0x85,
- 0x26, 0xe5, 0x2b, 0x8f, 0x1b, 0x9f, 0xeb, 0xf5, 0xa1, 0x91, 0xc2, 0x33,
- 0x49, 0xd8, 0x43, 0x63, 0x6a, 0x52, 0x4b, 0xd2, 0x8f, 0xe8, 0x70, 0x51,
- 0x4d, 0xd1, 0x89, 0x69, 0x7b, 0xc7, 0x70, 0xf6, 0xb3, 0xdc, 0x12, 0x74,
- 0xdb, 0x7b, 0x5d, 0x4b, 0x56, 0xd3, 0x96, 0xbf, 0x15, 0x77, 0xa1, 0xb0,
- 0xf4, 0xa2, 0x25, 0xf2, 0xaf, 0x1c, 0x92, 0x67, 0x18, 0xe5, 0xf4, 0x06,
- 0x04, 0xef, 0x90, 0xb9, 0xe4, 0x00, 0xe4, 0xdd, 0x3a, 0xb5, 0x19, 0xff,
- 0x02, 0xba, 0xf4, 0x3c, 0xee, 0xe0, 0x8b, 0xeb, 0x37, 0x8b, 0xec, 0xf4,
- 0xd7, 0xac, 0xf2, 0xf6, 0xf0, 0x3d, 0xaf, 0xdd, 0x75, 0x91, 0x33, 0x19,
- 0x1d, 0x1c, 0x40, 0xcb, 0x74, 0x24, 0x19, 0x21, 0x93, 0xd9, 0x14, 0xfe,
- 0xac, 0x2a, 0x52, 0xc7, 0x8f, 0xd5, 0x04, 0x49, 0xe4, 0x8d, 0x63, 0x47,
- 0x88, 0x3c, 0x69, 0x83, 0xcb, 0xfe, 0x47, 0xbd, 0x2b, 0x7e, 0x4f, 0xc5,
- 0x95, 0xae, 0x0e, 0x9d, 0xd4, 0xd1, 0x43, 0xc0, 0x67, 0x73, 0xe3, 0x14,
- 0x08, 0x7e, 0xe5, 0x3f, 0x9f, 0x73, 0xb8, 0x33, 0x0a, 0xcf, 0x5d, 0x3f,
- 0x34, 0x87, 0x96, 0x8a, 0xee, 0x53, 0xe8, 0x25, 0x15, 0x02, 0x03, 0x01,
- 0x00, 0x01, 0xa3, 0x82, 0x01, 0x9b, 0x30, 0x82, 0x01, 0x97, 0x30, 0x0f,
- 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03,
- 0x01, 0x01, 0xff, 0x30, 0x31, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2a,
- 0x30, 0x28, 0x30, 0x26, 0xa0, 0x24, 0xa0, 0x22, 0x86, 0x20, 0x68, 0x74,
- 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x76, 0x65, 0x72,
- 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x63,
- 0x61, 0x33, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d,
- 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x3d,
- 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x36, 0x30, 0x34, 0x30, 0x32, 0x06,
- 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x2a, 0x30, 0x28, 0x06, 0x08, 0x2b,
- 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1c, 0x68, 0x74, 0x74,
- 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x76, 0x65, 0x72,
- 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70,
- 0x73, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14,
- 0x7f, 0xd3, 0x65, 0xa7, 0xc2, 0xdd, 0xec, 0xbb, 0xf0, 0x30, 0x09, 0xf3,
- 0x43, 0x39, 0xfa, 0x02, 0xaf, 0x33, 0x31, 0x33, 0x30, 0x6d, 0x06, 0x08,
- 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x0c, 0x04, 0x61, 0x30, 0x5f,
- 0xa1, 0x5d, 0xa0, 0x5b, 0x30, 0x59, 0x30, 0x57, 0x30, 0x55, 0x16, 0x09,
- 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0x30, 0x21, 0x30,
- 0x1f, 0x30, 0x07, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1a, 0x04, 0x14,
- 0x8f, 0xe5, 0xd3, 0x1a, 0x86, 0xac, 0x8d, 0x8e, 0x6b, 0xc3, 0xcf, 0x80,
- 0x6a, 0xd4, 0x48, 0x18, 0x2c, 0x7b, 0x19, 0x2e, 0x30, 0x25, 0x16, 0x23,
- 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e,
- 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d,
- 0x2f, 0x76, 0x73, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x67, 0x69, 0x66, 0x30,
- 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04,
- 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
- 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f,
- 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67,
- 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x3e, 0x06, 0x03, 0x55, 0x1d, 0x25,
- 0x04, 0x37, 0x30, 0x35, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07,
- 0x03, 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x02,
- 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x03, 0x06, 0x09,
- 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x42, 0x04, 0x01, 0x06, 0x0a, 0x60,
- 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, 0x08, 0x01, 0x30, 0x0d, 0x06,
- 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00,
- 0x03, 0x81, 0x81, 0x00, 0x13, 0x02, 0xdd, 0xf8, 0xe8, 0x86, 0x00, 0xf2,
- 0x5a, 0xf8, 0xf8, 0x20, 0x0c, 0x59, 0x88, 0x62, 0x07, 0xce, 0xce, 0xf7,
- 0x4e, 0xf9, 0xbb, 0x59, 0xa1, 0x98, 0xe5, 0xe1, 0x38, 0xdd, 0x4e, 0xbc,
- 0x66, 0x18, 0xd3, 0xad, 0xeb, 0x18, 0xf2, 0x0d, 0xc9, 0x6d, 0x3e, 0x4a,
- 0x94, 0x20, 0xc3, 0x3c, 0xba, 0xbd, 0x65, 0x54, 0xc6, 0xaf, 0x44, 0xb3,
- 0x10, 0xad, 0x2c, 0x6b, 0x3e, 0xab, 0xd7, 0x07, 0xb6, 0xb8, 0x81, 0x63,
- 0xc5, 0xf9, 0x5e, 0x2e, 0xe5, 0x2a, 0x67, 0xce, 0xcd, 0x33, 0x0c, 0x2a,
- 0xd7, 0x89, 0x56, 0x03, 0x23, 0x1f, 0xb3, 0xbe, 0xe8, 0x3a, 0x08, 0x59,
- 0xb4, 0xec, 0x45, 0x35, 0xf7, 0x8a, 0x5b, 0xff, 0x66, 0xcf, 0x50, 0xaf,
- 0xc6, 0x6d, 0x57, 0x8d, 0x19, 0x78, 0xb7, 0xb9, 0xa2, 0xd1, 0x57, 0xea,
- 0x1f, 0x9a, 0x4b, 0xaf, 0xba, 0xc9, 0x8e, 0x12, 0x7e, 0xc6, 0xbd, 0xff,
-}
-
-var certSet3Cert38 = []byte{
- 0x30, 0x82, 0x04, 0xd2, 0x30, 0x82, 0x03, 0xba, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x2c, 0x69, 0xe1, 0x2f, 0x6a, 0x67, 0x0b, 0xd9, 0x9d,
- 0xd2, 0x0f, 0x91, 0x9e, 0xf0, 0x9e, 0x51, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81,
- 0xa9, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
- 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13,
- 0x0c, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63,
- 0x2e, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f,
- 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x44,
- 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x38, 0x30, 0x36, 0x06,
- 0x03, 0x55, 0x04, 0x0b, 0x13, 0x2f, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30,
- 0x30, 0x36, 0x20, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49,
- 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75,
- 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65,
- 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55,
- 0x04, 0x03, 0x13, 0x16, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x50,
- 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20,
- 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34, 0x30, 0x36, 0x31, 0x30,
- 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x34, 0x30,
- 0x36, 0x30, 0x39, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x63,
- 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55,
- 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c,
- 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e,
- 0x31, 0x1d, 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x14, 0x44,
- 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61,
- 0x74, 0x65, 0x64, 0x20, 0x53, 0x53, 0x4c, 0x31, 0x1e, 0x30, 0x1c, 0x06,
- 0x03, 0x55, 0x04, 0x03, 0x13, 0x15, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65,
- 0x20, 0x44, 0x56, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, 0x20, 0x2d,
- 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82,
- 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00,
- 0xea, 0x94, 0x07, 0x85, 0xc8, 0x41, 0x2c, 0xf6, 0x83, 0x12, 0x6c, 0x92,
- 0x5f, 0xab, 0x1f, 0x00, 0xd4, 0x96, 0x6f, 0x74, 0xcd, 0x2e, 0x11, 0xe9,
- 0x6c, 0x0f, 0x39, 0x01, 0xb9, 0x48, 0x90, 0x40, 0x39, 0x4d, 0xc4, 0xa2,
- 0xc8, 0x79, 0x6a, 0xa5, 0x9a, 0xbd, 0x91, 0x44, 0x65, 0x77, 0x54, 0xad,
- 0xff, 0x25, 0x5f, 0xee, 0x42, 0xfb, 0xb3, 0x02, 0x0f, 0xea, 0x5d, 0x7a,
- 0xdd, 0x1a, 0x54, 0x9e, 0xd7, 0x73, 0x42, 0x9b, 0xcc, 0x79, 0x5f, 0xc5,
- 0x4d, 0xf4, 0xb7, 0x0b, 0x18, 0x39, 0x20, 0x7a, 0xdd, 0x50, 0x01, 0x5d,
- 0x34, 0x45, 0x5f, 0x4c, 0x11, 0x0e, 0xf5, 0x87, 0x26, 0x26, 0xb4, 0xb0,
- 0xf3, 0x7e, 0x71, 0xa0, 0x31, 0x71, 0x50, 0x89, 0x68, 0x5a, 0x63, 0x8a,
- 0x14, 0x62, 0xe5, 0x8c, 0x3a, 0x16, 0x55, 0x0d, 0x3e, 0xeb, 0xaa, 0x80,
- 0x1d, 0x71, 0x7a, 0xe3, 0x87, 0x07, 0xab, 0xbd, 0xa2, 0x74, 0xcd, 0xda,
- 0x08, 0x01, 0x9d, 0x1b, 0xcc, 0x27, 0x88, 0x8c, 0x47, 0xd4, 0x69, 0x25,
- 0x42, 0xd6, 0xbb, 0x50, 0x6d, 0x85, 0x50, 0xd0, 0x48, 0x82, 0x0d, 0x08,
- 0x9f, 0xe9, 0x23, 0xe3, 0x42, 0xc6, 0x3c, 0x98, 0xb8, 0xbb, 0x6e, 0xc5,
- 0x70, 0x13, 0xdf, 0x19, 0x1d, 0x01, 0xfd, 0xd2, 0xb5, 0x4e, 0xe6, 0x62,
- 0xf4, 0x07, 0xfa, 0x6b, 0x7d, 0x11, 0x77, 0xc4, 0x62, 0x4f, 0x40, 0x4e,
- 0xa5, 0x78, 0x97, 0xab, 0x2c, 0x4d, 0x0c, 0xa7, 0x7c, 0xc3, 0xc4, 0x50,
- 0x32, 0x9f, 0xd0, 0x70, 0x9b, 0x0f, 0xff, 0xff, 0x75, 0x59, 0x34, 0x85,
- 0xad, 0x49, 0xd5, 0x35, 0xee, 0x4f, 0x5b, 0xd4, 0xd4, 0x36, 0x95, 0xa0,
- 0x7e, 0xe8, 0xc5, 0xa1, 0x1c, 0xbd, 0x13, 0x4e, 0x7d, 0xee, 0x63, 0x6a,
- 0x96, 0x19, 0x99, 0xc8, 0xa7, 0x2a, 0x00, 0xe6, 0x51, 0x8d, 0x46, 0xeb,
- 0x30, 0x58, 0xe8, 0x2d, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01,
- 0x39, 0x30, 0x82, 0x01, 0x35, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13,
- 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01,
- 0x00, 0x30, 0x41, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x3a, 0x30, 0x38,
- 0x30, 0x36, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01,
- 0x07, 0x36, 0x30, 0x28, 0x30, 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05,
- 0x05, 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a,
- 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65,
- 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x0e, 0x06, 0x03,
- 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06,
- 0x30, 0x2e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01,
- 0x04, 0x22, 0x30, 0x20, 0x30, 0x1e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05,
- 0x05, 0x07, 0x30, 0x01, 0x86, 0x12, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
- 0x2f, 0x74, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x64, 0x2e, 0x63, 0x6f, 0x6d,
- 0x30, 0x31, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2a, 0x30, 0x28, 0x30,
- 0x26, 0xa0, 0x24, 0xa0, 0x22, 0x86, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a,
- 0x2f, 0x2f, 0x74, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f,
- 0x6d, 0x2f, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x50, 0x43, 0x41, 0x2e,
- 0x63, 0x72, 0x6c, 0x30, 0x29, 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, 0x22,
- 0x30, 0x20, 0xa4, 0x1e, 0x30, 0x1c, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03,
- 0x55, 0x04, 0x03, 0x13, 0x11, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65,
- 0x63, 0x50, 0x4b, 0x49, 0x2d, 0x31, 0x2d, 0x36, 0x39, 0x38, 0x30, 0x1d,
- 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x9f, 0xb8, 0xc1,
- 0xa9, 0x6c, 0xf2, 0xf5, 0xc0, 0x22, 0x2a, 0x94, 0xed, 0x5c, 0x99, 0xac,
- 0xd4, 0xec, 0xd7, 0xc6, 0x07, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23,
- 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x7b, 0x5b, 0x45, 0xcf, 0xaf, 0xce,
- 0xcb, 0x7a, 0xfd, 0x31, 0x92, 0x1a, 0x6a, 0xb6, 0xf3, 0x46, 0xeb, 0x57,
- 0x48, 0x50, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
- 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x53, 0x54,
- 0xf2, 0x47, 0xa8, 0x02, 0xd7, 0xef, 0xaa, 0x35, 0x78, 0xbe, 0x4a, 0x08,
- 0x0d, 0x90, 0x18, 0x4b, 0x6d, 0x9e, 0x2a, 0x53, 0x2b, 0xe9, 0x54, 0x17,
- 0x77, 0x74, 0x29, 0x7e, 0xd0, 0x37, 0x07, 0x05, 0xb8, 0xe4, 0xfa, 0xb8,
- 0xb4, 0x63, 0x98, 0x44, 0xdc, 0xc6, 0x4f, 0x81, 0x06, 0x8c, 0x3a, 0xbe,
- 0xc7, 0x30, 0x57, 0xc6, 0x70, 0xfc, 0xd6, 0x93, 0x19, 0x9f, 0xc3, 0x55,
- 0xd7, 0x3e, 0x1f, 0x72, 0x8a, 0x9d, 0x30, 0x5a, 0x35, 0x97, 0x32, 0xcb,
- 0x63, 0xe4, 0xc6, 0x72, 0xdf, 0xfb, 0x68, 0xca, 0x69, 0x2f, 0xdb, 0xcd,
- 0x50, 0x38, 0x3e, 0x2b, 0xbb, 0xab, 0x3b, 0x82, 0xc7, 0xfd, 0x4b, 0x9b,
- 0xbd, 0x7c, 0x41, 0x98, 0xef, 0x01, 0x53, 0xd8, 0x35, 0x8f, 0x25, 0xc9,
- 0x03, 0x06, 0xe6, 0x9c, 0x57, 0xc1, 0x51, 0x0f, 0x9e, 0xf6, 0x7d, 0x93,
- 0x4d, 0xf8, 0x76, 0xc8, 0x3a, 0x6b, 0xf4, 0xc4, 0x8f, 0x33, 0x32, 0x7f,
- 0x9d, 0x21, 0x84, 0x34, 0xd9, 0xa7, 0xf9, 0x92, 0xfa, 0x41, 0x91, 0x61,
- 0x84, 0x05, 0x9d, 0xa3, 0x79, 0x46, 0xce, 0x67, 0xe7, 0x81, 0xf2, 0x5e,
- 0xac, 0x4c, 0xbc, 0xa8, 0xab, 0x6a, 0x6d, 0x15, 0xe2, 0x9c, 0x4e, 0x5a,
- 0xd9, 0x63, 0x80, 0xbc, 0xf7, 0x42, 0xeb, 0x9a, 0x44, 0xc6, 0x8c, 0x6b,
- 0x06, 0x36, 0xb4, 0x8b, 0x32, 0x89, 0xde, 0xc2, 0xf1, 0xa8, 0x26, 0xaa,
- 0xa9, 0xac, 0xff, 0xea, 0x71, 0xa6, 0xe7, 0x8c, 0x41, 0xfa, 0x17, 0x35,
- 0xbb, 0xb3, 0x87, 0x31, 0xa9, 0x93, 0xc2, 0xc8, 0x58, 0xe1, 0x0a, 0x4e,
- 0x95, 0x83, 0x9c, 0xb9, 0xed, 0x3b, 0xa5, 0xef, 0x08, 0xe0, 0x74, 0xf9,
- 0xc3, 0x1b, 0xe6, 0x07, 0xa3, 0xee, 0x07, 0xd7, 0x42, 0x22, 0x79, 0x21,
- 0xa0, 0xa1, 0xd4, 0x1d, 0x26, 0xd3, 0xd0, 0xd6, 0xa6, 0x5d, 0x2b, 0x41,
- 0xc0, 0x79,
-}
-
-var certSet3Cert39 = []byte{
- 0x30, 0x82, 0x04, 0xff, 0x30, 0x82, 0x03, 0xe7, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x04, 0x51, 0xd3, 0x40, 0x44, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81,
- 0xb0, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
- 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13,
- 0x0d, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e,
- 0x63, 0x2e, 0x31, 0x39, 0x30, 0x37, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13,
- 0x30, 0x77, 0x77, 0x77, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74,
- 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x43, 0x50, 0x53, 0x20, 0x69, 0x73, 0x20,
- 0x69, 0x6e, 0x63, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x64,
- 0x20, 0x62, 0x79, 0x20, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63,
- 0x65, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x16,
- 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x36, 0x20, 0x45, 0x6e, 0x74,
- 0x72, 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x2d,
- 0x30, 0x2b, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x24, 0x45, 0x6e, 0x74,
- 0x72, 0x75, 0x73, 0x74, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x65,
- 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20,
- 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, 0x1e, 0x17,
- 0x0d, 0x31, 0x34, 0x30, 0x39, 0x32, 0x32, 0x31, 0x37, 0x31, 0x34, 0x35,
- 0x37, 0x5a, 0x17, 0x0d, 0x32, 0x34, 0x30, 0x39, 0x32, 0x33, 0x30, 0x31,
- 0x33, 0x31, 0x35, 0x33, 0x5a, 0x30, 0x81, 0xbe, 0x31, 0x0b, 0x30, 0x09,
- 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30,
- 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x45, 0x6e, 0x74, 0x72,
- 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x28, 0x30,
- 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f, 0x53, 0x65, 0x65, 0x20,
- 0x77, 0x77, 0x77, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e,
- 0x6e, 0x65, 0x74, 0x2f, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x2d, 0x74, 0x65,
- 0x72, 0x6d, 0x73, 0x31, 0x39, 0x30, 0x37, 0x06, 0x03, 0x55, 0x04, 0x0b,
- 0x13, 0x30, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x39, 0x20, 0x45,
- 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e,
- 0x20, 0x2d, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f,
- 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e,
- 0x6c, 0x79, 0x31, 0x32, 0x30, 0x30, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13,
- 0x29, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x20, 0x52, 0x6f, 0x6f,
- 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74,
- 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d,
- 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05,
- 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82,
- 0x01, 0x01, 0x00, 0xba, 0x84, 0xb6, 0x72, 0xdb, 0x9e, 0x0c, 0x6b, 0xe2,
- 0x99, 0xe9, 0x30, 0x01, 0xa7, 0x76, 0xea, 0x32, 0xb8, 0x95, 0x41, 0x1a,
- 0xc9, 0xda, 0x61, 0x4e, 0x58, 0x72, 0xcf, 0xfe, 0xf6, 0x82, 0x79, 0xbf,
- 0x73, 0x61, 0x06, 0x0a, 0xa5, 0x27, 0xd8, 0xb3, 0x5f, 0xd3, 0x45, 0x4e,
- 0x1c, 0x72, 0xd6, 0x4e, 0x32, 0xf2, 0x72, 0x8a, 0x0f, 0xf7, 0x83, 0x19,
- 0xd0, 0x6a, 0x80, 0x80, 0x00, 0x45, 0x1e, 0xb0, 0xc7, 0xe7, 0x9a, 0xbf,
- 0x12, 0x57, 0x27, 0x1c, 0xa3, 0x68, 0x2f, 0x0a, 0x87, 0xbd, 0x6a, 0x6b,
- 0x0e, 0x5e, 0x65, 0xf3, 0x1c, 0x77, 0xd5, 0xd4, 0x85, 0x8d, 0x70, 0x21,
- 0xb4, 0xb3, 0x32, 0xe7, 0x8b, 0xa2, 0xd5, 0x86, 0x39, 0x02, 0xb1, 0xb8,
- 0xd2, 0x47, 0xce, 0xe4, 0xc9, 0x49, 0xc4, 0x3b, 0xa7, 0xde, 0xfb, 0x54,
- 0x7d, 0x57, 0xbe, 0xf0, 0xe8, 0x6e, 0xc2, 0x79, 0xb2, 0x3a, 0x0b, 0x55,
- 0xe2, 0x50, 0x98, 0x16, 0x32, 0x13, 0x5c, 0x2f, 0x78, 0x56, 0xc1, 0xc2,
- 0x94, 0xb3, 0xf2, 0x5a, 0xe4, 0x27, 0x9a, 0x9f, 0x24, 0xd7, 0xc6, 0xec,
- 0xd0, 0x9b, 0x25, 0x82, 0xe3, 0xcc, 0xc2, 0xc4, 0x45, 0xc5, 0x8c, 0x97,
- 0x7a, 0x06, 0x6b, 0x2a, 0x11, 0x9f, 0xa9, 0x0a, 0x6e, 0x48, 0x3b, 0x6f,
- 0xdb, 0xd4, 0x11, 0x19, 0x42, 0xf7, 0x8f, 0x07, 0xbf, 0xf5, 0x53, 0x5f,
- 0x9c, 0x3e, 0xf4, 0x17, 0x2c, 0xe6, 0x69, 0xac, 0x4e, 0x32, 0x4c, 0x62,
- 0x77, 0xea, 0xb7, 0xe8, 0xe5, 0xbb, 0x34, 0xbc, 0x19, 0x8b, 0xae, 0x9c,
- 0x51, 0xe7, 0xb7, 0x7e, 0xb5, 0x53, 0xb1, 0x33, 0x22, 0xe5, 0x6d, 0xcf,
- 0x70, 0x3c, 0x1a, 0xfa, 0xe2, 0x9b, 0x67, 0xb6, 0x83, 0xf4, 0x8d, 0xa5,
- 0xaf, 0x62, 0x4c, 0x4d, 0xe0, 0x58, 0xac, 0x64, 0x34, 0x12, 0x03, 0xf8,
- 0xb6, 0x8d, 0x94, 0x63, 0x24, 0xa4, 0x71, 0x02, 0x03, 0x01, 0x00, 0x01,
- 0xa3, 0x82, 0x01, 0x0f, 0x30, 0x82, 0x01, 0x0b, 0x30, 0x0e, 0x06, 0x03,
- 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06,
- 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08,
- 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x01, 0x30, 0x33, 0x06, 0x08,
- 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x27, 0x30, 0x25,
- 0x30, 0x23, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01,
- 0x86, 0x17, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73,
- 0x70, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65,
- 0x74, 0x30, 0x33, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2c, 0x30, 0x2a,
- 0x30, 0x28, 0xa0, 0x26, 0xa0, 0x24, 0x86, 0x22, 0x68, 0x74, 0x74, 0x70,
- 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75,
- 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x72, 0x6f, 0x6f, 0x74, 0x63,
- 0x61, 0x31, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x3b, 0x06, 0x03, 0x55, 0x1d,
- 0x20, 0x04, 0x34, 0x30, 0x32, 0x30, 0x30, 0x06, 0x04, 0x55, 0x1d, 0x20,
- 0x00, 0x30, 0x28, 0x30, 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
- 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f,
- 0x77, 0x77, 0x77, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e,
- 0x6e, 0x65, 0x74, 0x2f, 0x43, 0x50, 0x53, 0x30, 0x1d, 0x06, 0x03, 0x55,
- 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x6a, 0x72, 0x26, 0x7a, 0xd0, 0x1e,
- 0xef, 0x7d, 0xe7, 0x3b, 0x69, 0x51, 0xd4, 0x6c, 0x8d, 0x9f, 0x90, 0x12,
- 0x66, 0xab, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30,
- 0x16, 0x80, 0x14, 0x68, 0x90, 0xe4, 0x67, 0xa4, 0xa6, 0x53, 0x80, 0xc7,
- 0x86, 0x66, 0xa4, 0xf1, 0xf7, 0x4b, 0x43, 0xfb, 0x84, 0xbd, 0x6d, 0x30,
- 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b,
- 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x69, 0x33, 0x83, 0xfc, 0x28,
- 0x7a, 0x6f, 0x7d, 0xef, 0x9d, 0x55, 0xeb, 0xc5, 0x3e, 0x7a, 0x9d, 0x75,
- 0xb3, 0xcc, 0xc3, 0x38, 0x36, 0xd9, 0x34, 0xa2, 0x28, 0x68, 0x18, 0xea,
- 0x1e, 0x69, 0xd3, 0xbd, 0xe7, 0xd0, 0x77, 0xda, 0xb8, 0x00, 0x83, 0x4e,
- 0x4a, 0xcf, 0x6f, 0xd1, 0xf1, 0xc1, 0x22, 0x3f, 0x74, 0xe4, 0xf7, 0x98,
- 0x49, 0x9e, 0x9b, 0xb6, 0x9e, 0xe1, 0xdb, 0x98, 0x77, 0x2d, 0x56, 0x34,
- 0xb1, 0xa8, 0x3c, 0xd9, 0xfd, 0xc0, 0xcd, 0xc7, 0xbf, 0x05, 0x03, 0xd4,
- 0x02, 0xc5, 0xf1, 0xe5, 0xc6, 0xda, 0x08, 0xa5, 0x13, 0xc7, 0x62, 0x23,
- 0x11, 0xd1, 0x61, 0x30, 0x1d, 0x60, 0x84, 0x45, 0xef, 0x79, 0xa8, 0xc6,
- 0x26, 0x93, 0xa4, 0xb7, 0xcd, 0x34, 0xb8, 0x69, 0xc5, 0x13, 0xf6, 0x91,
- 0xb3, 0xc9, 0x45, 0x73, 0x76, 0xb6, 0x92, 0xf6, 0x76, 0x0a, 0x5b, 0xe1,
- 0x03, 0x47, 0xb7, 0xe9, 0x29, 0x4c, 0x91, 0x32, 0x23, 0x37, 0x4a, 0x9c,
- 0x35, 0xd8, 0x78, 0xfd, 0x1d, 0x1f, 0xe4, 0x83, 0x89, 0x24, 0x80, 0xad,
- 0xb7, 0xf9, 0xcf, 0xe4, 0x5d, 0xa5, 0xd4, 0x71, 0xc4, 0x85, 0x5b, 0x70,
- 0x1f, 0xdb, 0x3f, 0x1c, 0x01, 0xeb, 0x1a, 0x45, 0x26, 0x31, 0x14, 0xcc,
- 0x65, 0xbf, 0x67, 0xde, 0xca, 0xcc, 0x33, 0x65, 0xe5, 0x41, 0x91, 0xd7,
- 0x37, 0xbe, 0x41, 0x1a, 0x96, 0x9d, 0xe6, 0x8a, 0x97, 0x9d, 0xa7, 0xce,
- 0xac, 0x4e, 0x9a, 0x3d, 0xbd, 0x01, 0xa0, 0x6a, 0xd9, 0x4f, 0x22, 0x00,
- 0x8b, 0x44, 0xd5, 0x69, 0x62, 0x7b, 0x2e, 0xeb, 0xcc, 0xba, 0xe7, 0x92,
- 0x7d, 0x69, 0x67, 0x3d, 0xfc, 0xb8, 0x7c, 0xde, 0x41, 0x87, 0xd0, 0x69,
- 0xea, 0xba, 0x0a, 0x18, 0x7a, 0x1a, 0x95, 0x43, 0xb3, 0x79, 0x71, 0x28,
- 0x76, 0x6d, 0xa1, 0xfb, 0x57, 0x4a, 0xec, 0x4d, 0xc8, 0x0e, 0x10,
-}
-
-var certSet3Cert40 = []byte{
- 0x30, 0x82, 0x05, 0x00, 0x30, 0x82, 0x03, 0xe8, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x01, 0x07, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
- 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, 0x8f, 0x31, 0x0b,
- 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31,
- 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x07, 0x41, 0x72,
- 0x69, 0x7a, 0x6f, 0x6e, 0x61, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55,
- 0x04, 0x07, 0x13, 0x0a, 0x53, 0x63, 0x6f, 0x74, 0x74, 0x73, 0x64, 0x61,
- 0x6c, 0x65, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13,
- 0x1c, 0x53, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x54,
- 0x65, 0x63, 0x68, 0x6e, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x65, 0x73, 0x2c,
- 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x32, 0x30, 0x30, 0x06, 0x03, 0x55,
- 0x04, 0x03, 0x13, 0x29, 0x53, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c,
- 0x64, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69,
- 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f,
- 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x1e, 0x17,
- 0x0d, 0x31, 0x31, 0x30, 0x35, 0x30, 0x33, 0x30, 0x37, 0x30, 0x30, 0x30,
- 0x30, 0x5a, 0x17, 0x0d, 0x33, 0x31, 0x30, 0x35, 0x30, 0x33, 0x30, 0x37,
- 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x81, 0xc6, 0x31, 0x0b, 0x30, 0x09,
- 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, 0x30,
- 0x0e, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x07, 0x41, 0x72, 0x69, 0x7a,
- 0x6f, 0x6e, 0x61, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x07,
- 0x13, 0x0a, 0x53, 0x63, 0x6f, 0x74, 0x74, 0x73, 0x64, 0x61, 0x6c, 0x65,
- 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x1c, 0x53,
- 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x54, 0x65, 0x63,
- 0x68, 0x6e, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x65, 0x73, 0x2c, 0x20, 0x49,
- 0x6e, 0x63, 0x2e, 0x31, 0x33, 0x30, 0x31, 0x06, 0x03, 0x55, 0x04, 0x0b,
- 0x13, 0x2a, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x65, 0x72,
- 0x74, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64,
- 0x74, 0x65, 0x63, 0x68, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70,
- 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x31, 0x34, 0x30, 0x32,
- 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2b, 0x53, 0x74, 0x61, 0x72, 0x66,
- 0x69, 0x65, 0x6c, 0x64, 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20,
- 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20,
- 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20,
- 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
- 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01,
- 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xe5,
- 0x90, 0x66, 0x4b, 0xec, 0xf9, 0x46, 0x71, 0xa9, 0x20, 0x83, 0xbe, 0xe9,
- 0x6c, 0xbf, 0x4a, 0xc9, 0x48, 0x69, 0x81, 0x75, 0x4e, 0x6d, 0x24, 0xf6,
- 0xcb, 0x17, 0x13, 0xf8, 0xb0, 0x71, 0x59, 0x84, 0x7a, 0x6b, 0x2b, 0x85,
- 0xa4, 0x34, 0xb5, 0x16, 0xe5, 0xcb, 0xcc, 0xe9, 0x41, 0x70, 0x2c, 0xa4,
- 0x2e, 0xd6, 0xfa, 0x32, 0x7d, 0xe1, 0xa8, 0xde, 0x94, 0x10, 0xac, 0x31,
- 0xc1, 0xc0, 0xd8, 0x6a, 0xff, 0x59, 0x27, 0xab, 0x76, 0xd6, 0xfc, 0x0b,
- 0x74, 0x6b, 0xb8, 0xa7, 0xae, 0x3f, 0xc4, 0x54, 0xf4, 0xb4, 0x31, 0x44,
- 0xdd, 0x93, 0x56, 0x8c, 0xa4, 0x4c, 0x5e, 0x9b, 0x89, 0xcb, 0x24, 0x83,
- 0x9b, 0xe2, 0x57, 0x7d, 0xb7, 0xd8, 0x12, 0x1f, 0xc9, 0x85, 0x6d, 0xf4,
- 0xd1, 0x80, 0xf1, 0x50, 0x9b, 0x87, 0xae, 0xd4, 0x0b, 0x10, 0x05, 0xfb,
- 0x27, 0xba, 0x28, 0x6d, 0x17, 0xe9, 0x0e, 0xd6, 0x4d, 0xb9, 0x39, 0x55,
- 0x06, 0xff, 0x0a, 0x24, 0x05, 0x7e, 0x2f, 0xc6, 0x1d, 0x72, 0x6c, 0xd4,
- 0x8b, 0x29, 0x8c, 0x57, 0x7d, 0xda, 0xd9, 0xeb, 0x66, 0x1a, 0xd3, 0x4f,
- 0xa7, 0xdf, 0x7f, 0x52, 0xc4, 0x30, 0xc5, 0xa5, 0xc9, 0x0e, 0x02, 0xc5,
- 0x53, 0xbf, 0x77, 0x38, 0x68, 0x06, 0x24, 0xc3, 0x66, 0xc8, 0x37, 0x7e,
- 0x30, 0x1e, 0x45, 0x71, 0x23, 0x35, 0xff, 0x90, 0xd8, 0x2a, 0x9d, 0x8d,
- 0xe7, 0xb0, 0x92, 0x4d, 0x3c, 0x7f, 0x2a, 0x0a, 0x93, 0xdc, 0xcd, 0x16,
- 0x46, 0x65, 0xf7, 0x60, 0x84, 0x8b, 0x76, 0x4b, 0x91, 0x27, 0x73, 0x14,
- 0x92, 0xe0, 0xea, 0xee, 0x8f, 0x16, 0xea, 0x8d, 0x0e, 0x3e, 0x76, 0x17,
- 0xbf, 0x7d, 0x89, 0x80, 0x80, 0x44, 0x43, 0xe7, 0x2d, 0xe0, 0x43, 0x09,
- 0x75, 0xda, 0x36, 0xe8, 0xad, 0xdb, 0x89, 0x3a, 0xf5, 0x5d, 0x12, 0x8e,
- 0x23, 0x04, 0x83, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x2c,
- 0x30, 0x82, 0x01, 0x28, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01,
- 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0e, 0x06,
- 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01,
- 0x06, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14,
- 0x25, 0x45, 0x81, 0x68, 0x50, 0x26, 0x38, 0x3d, 0x3b, 0x2d, 0x2c, 0xbe,
- 0xcd, 0x6a, 0xd9, 0xb6, 0x3d, 0xb3, 0x66, 0x63, 0x30, 0x1f, 0x06, 0x03,
- 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x7c, 0x0c, 0x32,
- 0x1f, 0xa7, 0xd9, 0x30, 0x7f, 0xc4, 0x7d, 0x68, 0xa3, 0x62, 0xa8, 0xa1,
- 0xce, 0xab, 0x07, 0x5b, 0x27, 0x30, 0x3a, 0x06, 0x08, 0x2b, 0x06, 0x01,
- 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x2e, 0x30, 0x2c, 0x30, 0x2a, 0x06,
- 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x1e, 0x68,
- 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x73,
- 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x74, 0x65, 0x63, 0x68,
- 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x30, 0x3b, 0x06, 0x03, 0x55, 0x1d, 0x1f,
- 0x04, 0x34, 0x30, 0x32, 0x30, 0x30, 0xa0, 0x2e, 0xa0, 0x2c, 0x86, 0x2a,
- 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x73,
- 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x74, 0x65, 0x63, 0x68,
- 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x66, 0x72, 0x6f, 0x6f, 0x74, 0x2d,
- 0x67, 0x32, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x4c, 0x06, 0x03, 0x55, 0x1d,
- 0x20, 0x04, 0x45, 0x30, 0x43, 0x30, 0x41, 0x06, 0x04, 0x55, 0x1d, 0x20,
- 0x00, 0x30, 0x39, 0x30, 0x37, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
- 0x07, 0x02, 0x01, 0x16, 0x2b, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f,
- 0x2f, 0x63, 0x65, 0x72, 0x74, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x66,
- 0x69, 0x65, 0x6c, 0x64, 0x74, 0x65, 0x63, 0x68, 0x2e, 0x63, 0x6f, 0x6d,
- 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f,
- 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
- 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x56, 0x65, 0xca, 0xfe,
- 0xf3, 0x3f, 0x0a, 0xa8, 0x93, 0x8b, 0x18, 0xc7, 0xde, 0x43, 0x69, 0x13,
- 0x34, 0x20, 0xbe, 0x4e, 0x5f, 0x78, 0xa8, 0x6b, 0x9c, 0xdb, 0x6a, 0x4d,
- 0x41, 0xdb, 0xc1, 0x13, 0xec, 0xdc, 0x31, 0x00, 0x22, 0x5e, 0xf7, 0x00,
- 0x9e, 0x0c, 0xe0, 0x34, 0x65, 0x34, 0xf9, 0xb1, 0x3a, 0x4e, 0x48, 0xc8,
- 0x12, 0x81, 0x88, 0x5c, 0x5b, 0x3e, 0x08, 0x53, 0x7a, 0xf7, 0x1a, 0x64,
- 0xdf, 0xb8, 0x50, 0x61, 0xcc, 0x53, 0x51, 0x40, 0x29, 0x4b, 0xc2, 0xf4,
- 0xae, 0x3a, 0x5f, 0xe4, 0xca, 0xad, 0x26, 0xcc, 0x4e, 0x61, 0x43, 0xe5,
- 0xfd, 0x57, 0xa6, 0x37, 0x70, 0xce, 0x43, 0x2b, 0xb0, 0x94, 0xc3, 0x92,
- 0xe9, 0xe1, 0x5f, 0xaa, 0x10, 0x49, 0xb7, 0x69, 0xe4, 0xe0, 0xd0, 0x1f,
- 0x64, 0xa4, 0x2b, 0xcd, 0x1f, 0x6f, 0xa0, 0xf8, 0x84, 0x24, 0x18, 0xce,
- 0x79, 0x3d, 0xa9, 0x91, 0xbf, 0x54, 0x18, 0x13, 0x89, 0x99, 0x54, 0x11,
- 0x0d, 0x55, 0xc5, 0x26, 0x0b, 0x79, 0x4f, 0x5a, 0x1c, 0x6e, 0xf9, 0x63,
- 0xdb, 0x14, 0x80, 0xa4, 0x07, 0xab, 0xfa, 0xb2, 0xa5, 0xb9, 0x88, 0xdd,
- 0x91, 0xfe, 0x65, 0x3b, 0xa4, 0xa3, 0x79, 0xbe, 0x89, 0x4d, 0xe1, 0xd0,
- 0xb0, 0xf4, 0xc8, 0x17, 0x0c, 0x0a, 0x96, 0x14, 0x7c, 0x09, 0xb7, 0x6c,
- 0xe1, 0xc2, 0xd8, 0x55, 0xd4, 0x18, 0xa0, 0xaa, 0x41, 0x69, 0x70, 0x24,
- 0xa3, 0xb9, 0xef, 0xe9, 0x5a, 0xdc, 0x3e, 0xeb, 0x94, 0x4a, 0xf0, 0xb7,
- 0xde, 0x5f, 0x0e, 0x76, 0xfa, 0xfb, 0xfb, 0x69, 0x03, 0x45, 0x40, 0x50,
- 0xee, 0x72, 0x0c, 0xa4, 0x12, 0x86, 0x81, 0xcd, 0x13, 0xd1, 0x4e, 0xc4,
- 0x3c, 0xca, 0x4e, 0x0d, 0xd2, 0x26, 0xf1, 0x00, 0xb7, 0xb4, 0xa6, 0xa2,
- 0xe1, 0x6e, 0x7a, 0x81, 0xfd, 0x30, 0xac, 0x7a, 0x1f, 0xc7, 0x59, 0x7b,
-}
-
-var certSet3Cert41 = []byte{
- 0x30, 0x82, 0x05, 0x03, 0x30, 0x82, 0x03, 0xeb, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x04, 0x51, 0xd3, 0x60, 0xee, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81,
- 0xbe, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
- 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13,
- 0x0d, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e,
- 0x63, 0x2e, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13,
- 0x1f, 0x53, 0x65, 0x65, 0x20, 0x77, 0x77, 0x77, 0x2e, 0x65, 0x6e, 0x74,
- 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x6c, 0x65, 0x67,
- 0x61, 0x6c, 0x2d, 0x74, 0x65, 0x72, 0x6d, 0x73, 0x31, 0x39, 0x30, 0x37,
- 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x30, 0x28, 0x63, 0x29, 0x20, 0x32,
- 0x30, 0x30, 0x39, 0x20, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2c,
- 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x66, 0x6f, 0x72, 0x20,
- 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75,
- 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x32, 0x30, 0x30, 0x06,
- 0x03, 0x55, 0x04, 0x03, 0x13, 0x29, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73,
- 0x74, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69,
- 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74,
- 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30,
- 0x1e, 0x17, 0x0d, 0x31, 0x34, 0x31, 0x30, 0x32, 0x32, 0x31, 0x37, 0x30,
- 0x35, 0x31, 0x34, 0x5a, 0x17, 0x0d, 0x32, 0x34, 0x31, 0x30, 0x32, 0x33,
- 0x30, 0x37, 0x33, 0x33, 0x32, 0x32, 0x5a, 0x30, 0x81, 0xba, 0x31, 0x0b,
- 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31,
- 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x45, 0x6e,
- 0x74, 0x72, 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31,
- 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f, 0x53, 0x65,
- 0x65, 0x20, 0x77, 0x77, 0x77, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73,
- 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x2d,
- 0x74, 0x65, 0x72, 0x6d, 0x73, 0x31, 0x39, 0x30, 0x37, 0x06, 0x03, 0x55,
- 0x04, 0x0b, 0x13, 0x30, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, 0x31, 0x32,
- 0x20, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e,
- 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74,
- 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20,
- 0x6f, 0x6e, 0x6c, 0x79, 0x31, 0x2e, 0x30, 0x2c, 0x06, 0x03, 0x55, 0x04,
- 0x03, 0x13, 0x25, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x20, 0x43,
- 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d,
- 0x20, 0x4c, 0x31, 0x4b, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09,
- 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03,
- 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01,
- 0x00, 0xda, 0x3f, 0x96, 0xd0, 0x4d, 0xb9, 0x2f, 0x44, 0xe7, 0xdb, 0x39,
- 0x5e, 0x9b, 0x50, 0xee, 0x5c, 0xa5, 0x61, 0xda, 0x41, 0x67, 0x53, 0x09,
- 0xaa, 0x00, 0x9a, 0x8e, 0x57, 0x7f, 0x29, 0x6b, 0xdb, 0xc7, 0xe1, 0x21,
- 0x24, 0xaa, 0x3a, 0xd0, 0x8d, 0x47, 0x23, 0xd2, 0xed, 0x72, 0x16, 0xf0,
- 0x91, 0x21, 0xd2, 0x5d, 0xb7, 0xb8, 0x4b, 0xa8, 0x83, 0x8f, 0xb7, 0x91,
- 0x32, 0x68, 0xcf, 0xce, 0x25, 0x93, 0x2c, 0xb2, 0x7d, 0x97, 0xc8, 0xfe,
- 0xc1, 0xb4, 0x17, 0xba, 0x09, 0x9e, 0x03, 0x90, 0x93, 0x7b, 0x7c, 0x49,
- 0x83, 0x22, 0x68, 0x8a, 0x9b, 0xde, 0x47, 0xc3, 0x31, 0x98, 0x7a, 0x2e,
- 0x7d, 0x40, 0x0b, 0xd2, 0xef, 0x3e, 0xd3, 0xb2, 0x8c, 0xaa, 0x8f, 0x48,
- 0xa9, 0xff, 0x00, 0xe8, 0x29, 0x58, 0x06, 0xf7, 0xb6, 0x93, 0x5a, 0x94,
- 0x73, 0x26, 0x26, 0xad, 0x58, 0x0e, 0xe5, 0x42, 0xb8, 0xd5, 0xea, 0x73,
- 0x79, 0x64, 0x68, 0x53, 0x25, 0xb8, 0x84, 0xcf, 0x94, 0x7a, 0xae, 0x06,
- 0x45, 0x0c, 0xa3, 0x6b, 0x4d, 0xd0, 0xc6, 0xbe, 0xea, 0x18, 0xa4, 0x36,
- 0xf0, 0x92, 0xb2, 0xba, 0x1c, 0x88, 0x8f, 0x3a, 0x52, 0x7f, 0xf7, 0x5e,
- 0x6d, 0x83, 0x1c, 0x9d, 0xf0, 0x1f, 0xe5, 0xc3, 0xd6, 0xdd, 0xa5, 0x78,
- 0x92, 0x3d, 0xb0, 0x6d, 0x2c, 0xea, 0xc9, 0xcf, 0x94, 0x41, 0x19, 0x71,
- 0x44, 0x68, 0xba, 0x47, 0x3c, 0x04, 0xe9, 0x5d, 0xba, 0x3e, 0xf0, 0x35,
- 0xf7, 0x15, 0xb6, 0x9e, 0xf2, 0x2e, 0x15, 0x1e, 0x3f, 0x47, 0xc8, 0xc8,
- 0x38, 0xa7, 0x73, 0x45, 0x5d, 0x4d, 0xb0, 0x3b, 0xb1, 0x8e, 0x17, 0x29,
- 0x37, 0xea, 0xdd, 0x05, 0x01, 0x22, 0xbb, 0x94, 0x36, 0x2a, 0x8d, 0x5b,
- 0x35, 0xfe, 0x53, 0x19, 0x2f, 0x08, 0x46, 0xc1, 0x2a, 0xb3, 0x1a, 0x62,
- 0x1d, 0x4e, 0x2b, 0xd9, 0x1b, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82,
- 0x01, 0x09, 0x30, 0x82, 0x01, 0x05, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d,
- 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x0f,
- 0x06, 0x03, 0x55, 0x1d, 0x13, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff,
- 0x02, 0x01, 0x00, 0x30, 0x33, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
- 0x07, 0x01, 0x01, 0x04, 0x27, 0x30, 0x25, 0x30, 0x23, 0x06, 0x08, 0x2b,
- 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x17, 0x68, 0x74, 0x74,
- 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x65, 0x6e, 0x74,
- 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x30, 0x30, 0x06, 0x03,
- 0x55, 0x1d, 0x1f, 0x04, 0x29, 0x30, 0x27, 0x30, 0x25, 0xa0, 0x23, 0xa0,
- 0x21, 0x86, 0x1f, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72,
- 0x6c, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65,
- 0x74, 0x2f, 0x67, 0x32, 0x63, 0x61, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x3b,
- 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x34, 0x30, 0x32, 0x30, 0x30, 0x06,
- 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x28, 0x30, 0x26, 0x06, 0x08, 0x2b,
- 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74,
- 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x65, 0x6e, 0x74, 0x72,
- 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x72, 0x70, 0x61, 0x30,
- 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x82, 0xa2,
- 0x70, 0x74, 0xdd, 0xbc, 0x53, 0x3f, 0xcf, 0x7b, 0xd4, 0xf7, 0xcd, 0x7f,
- 0xa7, 0x60, 0xc6, 0x0a, 0x4c, 0xbf, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d,
- 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x6a, 0x72, 0x26, 0x7a, 0xd0,
- 0x1e, 0xef, 0x7d, 0xe7, 0x3b, 0x69, 0x51, 0xd4, 0x6c, 0x8d, 0x9f, 0x90,
- 0x12, 0x66, 0xab, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7,
- 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x3f,
- 0x1c, 0x1a, 0x5b, 0xff, 0x40, 0x22, 0x1d, 0x8f, 0x35, 0x0c, 0x2d, 0xaa,
- 0x99, 0x27, 0xab, 0xc0, 0x11, 0x32, 0x70, 0xd7, 0x36, 0x28, 0x69, 0xa5,
- 0x8d, 0xb1, 0x27, 0x99, 0x42, 0xbe, 0xc4, 0x93, 0xeb, 0x48, 0x57, 0x43,
- 0x71, 0x23, 0xc4, 0xe5, 0x4e, 0xad, 0xae, 0x43, 0x6f, 0x92, 0x76, 0xc5,
- 0x19, 0xef, 0xca, 0xbc, 0x6f, 0x42, 0x4c, 0x16, 0x9a, 0x86, 0xa9, 0x04,
- 0x38, 0xc7, 0x65, 0xf0, 0xf5, 0x0c, 0xe0, 0x4a, 0xdf, 0xa2, 0xfa, 0xce,
- 0x1a, 0x11, 0xa8, 0x9c, 0x69, 0x2f, 0x1b, 0xdf, 0xea, 0xe2, 0x32, 0xf3,
- 0xce, 0x4c, 0xbc, 0x46, 0x0c, 0xc0, 0x89, 0x80, 0xd1, 0x87, 0x6b, 0xa2,
- 0xcf, 0x6b, 0xd4, 0x7f, 0xfd, 0xf5, 0x60, 0x52, 0x67, 0x57, 0xa0, 0x6d,
- 0xd1, 0x64, 0x41, 0x14, 0x6d, 0x34, 0x62, 0xed, 0x06, 0x6c, 0x24, 0xf2,
- 0x06, 0xbc, 0x28, 0x02, 0xaf, 0x03, 0x2d, 0xc2, 0x33, 0x05, 0xfb, 0xcb,
- 0xaa, 0x16, 0xe8, 0x65, 0x10, 0x43, 0xf5, 0x69, 0x5c, 0xe3, 0x81, 0x58,
- 0x99, 0xcd, 0x6b, 0xd3, 0xb8, 0xc7, 0x7b, 0x19, 0x55, 0xc9, 0x40, 0xce,
- 0x79, 0x55, 0xb8, 0x73, 0x89, 0xe9, 0x5c, 0x40, 0x66, 0x43, 0x12, 0x7f,
- 0x07, 0xb8, 0x65, 0x56, 0xd5, 0x8d, 0xc3, 0xa7, 0xf5, 0xb1, 0xb6, 0x65,
- 0x9e, 0xc0, 0x83, 0x36, 0x7f, 0x16, 0x45, 0x3c, 0x74, 0x4b, 0x93, 0x8a,
- 0x3c, 0xf1, 0x2b, 0xf5, 0x35, 0x70, 0x73, 0x7b, 0xe7, 0x82, 0x04, 0xb1,
- 0x18, 0x98, 0x0e, 0xd4, 0x9c, 0x6f, 0x1a, 0xfc, 0xfc, 0xa7, 0x33, 0xa5,
- 0xbb, 0xbb, 0x18, 0xf3, 0x6b, 0x7a, 0x5d, 0x32, 0x87, 0xf7, 0x6d, 0x25,
- 0xe4, 0xe2, 0x76, 0x86, 0x21, 0x1e, 0x11, 0x46, 0xcd, 0x76, 0x0e, 0x6f,
- 0x4f, 0xa4, 0x21, 0x71, 0x0a, 0x84, 0xa7, 0x2d, 0x36, 0xa9, 0x48, 0x22,
- 0x51, 0x7e, 0x82,
-}
-
-var certSet3Cert42 = []byte{
- 0x30, 0x82, 0x05, 0x0e, 0x30, 0x82, 0x03, 0xf6, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x0c, 0x0e, 0xe9, 0x4c, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x51,
- 0xd3, 0x77, 0x85, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7,
- 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, 0xbe, 0x31, 0x0b, 0x30,
- 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x16,
- 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x45, 0x6e, 0x74,
- 0x72, 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x28,
- 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f, 0x53, 0x65, 0x65,
- 0x20, 0x77, 0x77, 0x77, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74,
- 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x2d, 0x74,
- 0x65, 0x72, 0x6d, 0x73, 0x31, 0x39, 0x30, 0x37, 0x06, 0x03, 0x55, 0x04,
- 0x0b, 0x13, 0x30, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x39, 0x20,
- 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, 0x63,
- 0x2e, 0x20, 0x2d, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68,
- 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f,
- 0x6e, 0x6c, 0x79, 0x31, 0x32, 0x30, 0x30, 0x06, 0x03, 0x55, 0x04, 0x03,
- 0x13, 0x29, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x20, 0x52, 0x6f,
- 0x6f, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69,
- 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x1e, 0x17, 0x0d, 0x31,
- 0x35, 0x31, 0x30, 0x30, 0x35, 0x31, 0x39, 0x31, 0x33, 0x35, 0x36, 0x5a,
- 0x17, 0x0d, 0x33, 0x30, 0x31, 0x32, 0x30, 0x35, 0x31, 0x39, 0x34, 0x33,
- 0x35, 0x36, 0x5a, 0x30, 0x81, 0xba, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03,
- 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06,
- 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x73,
- 0x74, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x28, 0x30, 0x26, 0x06,
- 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1f, 0x53, 0x65, 0x65, 0x20, 0x77, 0x77,
- 0x77, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65,
- 0x74, 0x2f, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x2d, 0x74, 0x65, 0x72, 0x6d,
- 0x73, 0x31, 0x39, 0x30, 0x37, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x30,
- 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, 0x31, 0x32, 0x20, 0x45, 0x6e, 0x74,
- 0x72, 0x75, 0x73, 0x74, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d,
- 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69,
- 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79,
- 0x31, 0x2e, 0x30, 0x2c, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x25, 0x45,
- 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69,
- 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74,
- 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x4c, 0x31, 0x4b,
- 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
- 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00,
- 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xda, 0x3f, 0x96,
- 0xd0, 0x4d, 0xb9, 0x2f, 0x44, 0xe7, 0xdb, 0x39, 0x5e, 0x9b, 0x50, 0xee,
- 0x5c, 0xa5, 0x61, 0xda, 0x41, 0x67, 0x53, 0x09, 0xaa, 0x00, 0x9a, 0x8e,
- 0x57, 0x7f, 0x29, 0x6b, 0xdb, 0xc7, 0xe1, 0x21, 0x24, 0xaa, 0x3a, 0xd0,
- 0x8d, 0x47, 0x23, 0xd2, 0xed, 0x72, 0x16, 0xf0, 0x91, 0x21, 0xd2, 0x5d,
- 0xb7, 0xb8, 0x4b, 0xa8, 0x83, 0x8f, 0xb7, 0x91, 0x32, 0x68, 0xcf, 0xce,
- 0x25, 0x93, 0x2c, 0xb2, 0x7d, 0x97, 0xc8, 0xfe, 0xc1, 0xb4, 0x17, 0xba,
- 0x09, 0x9e, 0x03, 0x90, 0x93, 0x7b, 0x7c, 0x49, 0x83, 0x22, 0x68, 0x8a,
- 0x9b, 0xde, 0x47, 0xc3, 0x31, 0x98, 0x7a, 0x2e, 0x7d, 0x40, 0x0b, 0xd2,
- 0xef, 0x3e, 0xd3, 0xb2, 0x8c, 0xaa, 0x8f, 0x48, 0xa9, 0xff, 0x00, 0xe8,
- 0x29, 0x58, 0x06, 0xf7, 0xb6, 0x93, 0x5a, 0x94, 0x73, 0x26, 0x26, 0xad,
- 0x58, 0x0e, 0xe5, 0x42, 0xb8, 0xd5, 0xea, 0x73, 0x79, 0x64, 0x68, 0x53,
- 0x25, 0xb8, 0x84, 0xcf, 0x94, 0x7a, 0xae, 0x06, 0x45, 0x0c, 0xa3, 0x6b,
- 0x4d, 0xd0, 0xc6, 0xbe, 0xea, 0x18, 0xa4, 0x36, 0xf0, 0x92, 0xb2, 0xba,
- 0x1c, 0x88, 0x8f, 0x3a, 0x52, 0x7f, 0xf7, 0x5e, 0x6d, 0x83, 0x1c, 0x9d,
- 0xf0, 0x1f, 0xe5, 0xc3, 0xd6, 0xdd, 0xa5, 0x78, 0x92, 0x3d, 0xb0, 0x6d,
- 0x2c, 0xea, 0xc9, 0xcf, 0x94, 0x41, 0x19, 0x71, 0x44, 0x68, 0xba, 0x47,
- 0x3c, 0x04, 0xe9, 0x5d, 0xba, 0x3e, 0xf0, 0x35, 0xf7, 0x15, 0xb6, 0x9e,
- 0xf2, 0x2e, 0x15, 0x1e, 0x3f, 0x47, 0xc8, 0xc8, 0x38, 0xa7, 0x73, 0x45,
- 0x5d, 0x4d, 0xb0, 0x3b, 0xb1, 0x8e, 0x17, 0x29, 0x37, 0xea, 0xdd, 0x05,
- 0x01, 0x22, 0xbb, 0x94, 0x36, 0x2a, 0x8d, 0x5b, 0x35, 0xfe, 0x53, 0x19,
- 0x2f, 0x08, 0x46, 0xc1, 0x2a, 0xb3, 0x1a, 0x62, 0x1d, 0x4e, 0x2b, 0xd9,
- 0x1b, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x0c, 0x30, 0x82,
- 0x01, 0x08, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff,
- 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d,
- 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02,
- 0x01, 0x00, 0x30, 0x33, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07,
- 0x01, 0x01, 0x04, 0x27, 0x30, 0x25, 0x30, 0x23, 0x06, 0x08, 0x2b, 0x06,
- 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x17, 0x68, 0x74, 0x74, 0x70,
- 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x65, 0x6e, 0x74, 0x72,
- 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x30, 0x30, 0x06, 0x03, 0x55,
- 0x1d, 0x1f, 0x04, 0x29, 0x30, 0x27, 0x30, 0x25, 0xa0, 0x23, 0xa0, 0x21,
- 0x86, 0x1f, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c,
- 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74,
- 0x2f, 0x67, 0x32, 0x63, 0x61, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x3b, 0x06,
- 0x03, 0x55, 0x1d, 0x20, 0x04, 0x34, 0x30, 0x32, 0x30, 0x30, 0x06, 0x04,
- 0x55, 0x1d, 0x20, 0x00, 0x30, 0x28, 0x30, 0x26, 0x06, 0x08, 0x2b, 0x06,
- 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, 0x70,
- 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x75,
- 0x73, 0x74, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x72, 0x70, 0x61, 0x30, 0x1d,
- 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x82, 0xa2, 0x70,
- 0x74, 0xdd, 0xbc, 0x53, 0x3f, 0xcf, 0x7b, 0xd4, 0xf7, 0xcd, 0x7f, 0xa7,
- 0x60, 0xc6, 0x0a, 0x4c, 0xbf, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23,
- 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x6a, 0x72, 0x26, 0x7a, 0xd0, 0x1e,
- 0xef, 0x7d, 0xe7, 0x3b, 0x69, 0x51, 0xd4, 0x6c, 0x8d, 0x9f, 0x90, 0x12,
- 0x66, 0xab, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
- 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x39, 0xd5,
- 0x8e, 0x98, 0x83, 0x61, 0xc8, 0x2c, 0x63, 0xd3, 0x70, 0x1d, 0x19, 0x30,
- 0xcb, 0xf6, 0x09, 0xac, 0xcc, 0x69, 0xd5, 0xc9, 0xdc, 0x37, 0x41, 0xf2,
- 0x32, 0x0f, 0xef, 0x74, 0xc3, 0x58, 0xf6, 0x78, 0x27, 0x09, 0x34, 0x08,
- 0x95, 0x92, 0x2f, 0xd7, 0xdf, 0xb8, 0xa3, 0xfd, 0x0e, 0x81, 0xe9, 0xa4,
- 0x9c, 0xd3, 0x3f, 0x4d, 0x68, 0x2b, 0x15, 0x31, 0x0a, 0x15, 0xcc, 0x52,
- 0x04, 0x93, 0xe8, 0x93, 0x50, 0xc3, 0xd9, 0xb1, 0xe2, 0xe1, 0x68, 0xb7,
- 0x3a, 0x09, 0x74, 0xf1, 0x34, 0x58, 0x0a, 0x3f, 0x77, 0x98, 0x40, 0xb8,
- 0xe6, 0x68, 0xff, 0x5d, 0xe4, 0xc8, 0x46, 0xc5, 0xec, 0x81, 0xd7, 0xc9,
- 0x82, 0x18, 0x5c, 0x83, 0xce, 0x71, 0xd8, 0xbc, 0xbf, 0xac, 0x99, 0x02,
- 0x93, 0xdb, 0x94, 0x98, 0x84, 0xd2, 0x9c, 0xa6, 0xb5, 0xfe, 0x5c, 0xbb,
- 0xf0, 0x4a, 0xaf, 0x21, 0xac, 0xc2, 0x3f, 0x49, 0x24, 0x67, 0xd6, 0x2e,
- 0x8e, 0xcf, 0xac, 0xcc, 0x64, 0x15, 0x18, 0x72, 0xe5, 0x6c, 0x77, 0xd3,
- 0x52, 0xa8, 0xb9, 0xdd, 0x8d, 0xac, 0x00, 0x4a, 0x35, 0x19, 0xd4, 0x6f,
- 0x73, 0xa3, 0x75, 0xef, 0x6b, 0x64, 0xc3, 0xe0, 0x8d, 0x83, 0x12, 0xa1,
- 0x8a, 0xe7, 0x0e, 0x86, 0x4d, 0xd8, 0xb4, 0x20, 0x1b, 0xbe, 0x6a, 0xa5,
- 0x8c, 0x4b, 0x68, 0x66, 0xe3, 0x2b, 0xc7, 0x58, 0x0b, 0xfb, 0x56, 0x10,
- 0xd4, 0x91, 0xfb, 0x1d, 0xd3, 0x31, 0x58, 0x10, 0x8c, 0x44, 0xe3, 0x75,
- 0x7b, 0x10, 0x9d, 0xb5, 0x38, 0xb1, 0xf6, 0xaa, 0xca, 0x81, 0x64, 0x6c,
- 0xe8, 0xf2, 0xe2, 0x81, 0x55, 0x97, 0x51, 0x7f, 0xe1, 0xc2, 0x27, 0x50,
- 0xa2, 0xc9, 0x3c, 0x5b, 0x00, 0x43, 0xf6, 0x5b, 0xb9, 0xd5, 0xa5, 0xfc,
- 0xff, 0x07, 0x50, 0x40, 0x67, 0x07, 0xb0, 0x55, 0xf0, 0xb7, 0x7e, 0x6e,
- 0x2d, 0xcc,
-}
-
-var certSet3Cert43 = []byte{
- 0x30, 0x82, 0x05, 0x1f, 0x30, 0x82, 0x04, 0x07, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x04, 0x07, 0x27, 0xa4, 0x6b, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x5a,
- 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x49,
- 0x45, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x09,
- 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x31, 0x13, 0x30,
- 0x11, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0a, 0x43, 0x79, 0x62, 0x65,
- 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03,
- 0x55, 0x04, 0x03, 0x13, 0x19, 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f,
- 0x72, 0x65, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73,
- 0x74, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34,
- 0x30, 0x34, 0x30, 0x32, 0x31, 0x34, 0x33, 0x36, 0x31, 0x30, 0x5a, 0x17,
- 0x0d, 0x32, 0x31, 0x30, 0x34, 0x30, 0x32, 0x31, 0x34, 0x33, 0x35, 0x35,
- 0x32, 0x5a, 0x30, 0x81, 0x8d, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55,
- 0x04, 0x06, 0x13, 0x02, 0x4e, 0x4c, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03,
- 0x55, 0x04, 0x07, 0x13, 0x09, 0x41, 0x6d, 0x73, 0x74, 0x65, 0x72, 0x64,
- 0x61, 0x6d, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13,
- 0x1c, 0x56, 0x65, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x20, 0x45, 0x6e, 0x74,
- 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x20, 0x53, 0x6f, 0x6c, 0x75,
- 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55,
- 0x04, 0x0b, 0x13, 0x0a, 0x43, 0x79, 0x62, 0x65, 0x72, 0x74, 0x72, 0x75,
- 0x73, 0x74, 0x31, 0x2e, 0x30, 0x2c, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13,
- 0x25, 0x56, 0x65, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x20, 0x41, 0x6b, 0x61,
- 0x6d, 0x61, 0x69, 0x20, 0x53, 0x75, 0x72, 0x65, 0x53, 0x65, 0x72, 0x76,
- 0x65, 0x72, 0x20, 0x43, 0x41, 0x20, 0x47, 0x31, 0x34, 0x2d, 0x53, 0x48,
- 0x41, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
- 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01,
- 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xdd,
- 0x6e, 0x9e, 0x02, 0x69, 0x02, 0xb5, 0xa3, 0x99, 0x2e, 0x08, 0x64, 0x32,
- 0x6a, 0x59, 0xf3, 0xc6, 0x9e, 0xa6, 0x20, 0x07, 0xd2, 0x48, 0xd1, 0xa8,
- 0x93, 0xc7, 0xea, 0x47, 0x8f, 0x83, 0x39, 0x40, 0xd7, 0x20, 0x5d, 0x8d,
- 0x9a, 0xba, 0xab, 0xd8, 0x70, 0xec, 0x9d, 0x88, 0xd1, 0xbd, 0x62, 0xf6,
- 0xdb, 0xec, 0x9d, 0x5e, 0x35, 0x01, 0x76, 0x03, 0x23, 0xe5, 0x6f, 0xd2,
- 0xaf, 0x46, 0x35, 0x59, 0x5a, 0x5c, 0xd1, 0xa8, 0x23, 0xc1, 0xeb, 0xe9,
- 0x20, 0xd4, 0x49, 0xd6, 0x3f, 0x00, 0xd8, 0xa8, 0x22, 0xde, 0x43, 0x79,
- 0x81, 0xac, 0xe9, 0xa4, 0x92, 0xf5, 0x77, 0x70, 0x05, 0x1e, 0x5c, 0xb6,
- 0xa0, 0xf7, 0x90, 0xa4, 0xcd, 0xab, 0x28, 0x2c, 0x90, 0xc2, 0xe7, 0x0f,
- 0xc3, 0xaf, 0x1c, 0x47, 0x59, 0xd5, 0x84, 0x2e, 0xdf, 0x26, 0x07, 0x45,
- 0x23, 0x5a, 0xc6, 0xe8, 0x90, 0xc8, 0x85, 0x4b, 0x8c, 0x16, 0x1e, 0x60,
- 0xf9, 0x01, 0x13, 0xf1, 0x14, 0x1f, 0xe6, 0xe8, 0x14, 0xed, 0xc5, 0xd2,
- 0x6f, 0x63, 0x28, 0x6e, 0x72, 0x8c, 0x49, 0xae, 0x08, 0x72, 0xc7, 0x93,
- 0x95, 0xb4, 0x0b, 0x0c, 0xae, 0x8f, 0x9a, 0x67, 0x84, 0xf5, 0x57, 0x1b,
- 0xdb, 0x81, 0xd7, 0x17, 0x9d, 0x41, 0x11, 0x43, 0x19, 0xbd, 0x6d, 0x4a,
- 0x85, 0xed, 0x8f, 0x70, 0x25, 0xab, 0x66, 0xab, 0xf6, 0xfa, 0x6d, 0x1c,
- 0x3c, 0xab, 0xed, 0x17, 0xbd, 0x56, 0x84, 0xe1, 0xdb, 0x75, 0x33, 0xb2,
- 0x28, 0x4b, 0x99, 0x8e, 0xf9, 0x4b, 0x82, 0x33, 0x50, 0x9f, 0x92, 0x53,
- 0xed, 0xfa, 0xad, 0x0f, 0x95, 0x9c, 0xa3, 0xf2, 0xcb, 0x60, 0xf0, 0x77,
- 0x1d, 0xc9, 0x01, 0x8b, 0x5f, 0x2d, 0x86, 0xbe, 0xbf, 0x36, 0xb8, 0x24,
- 0x96, 0x13, 0x7c, 0xc1, 0x86, 0x5a, 0x6c, 0xc1, 0x48, 0x2a, 0x7f, 0x3e,
- 0x93, 0x60, 0xc5, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0xb7,
- 0x30, 0x82, 0x01, 0xb3, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01,
- 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x02,
- 0x30, 0x4c, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x45, 0x30, 0x43, 0x30,
- 0x41, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0xb1, 0x3e, 0x01, 0x32,
- 0x30, 0x34, 0x30, 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07,
- 0x02, 0x01, 0x16, 0x26, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f,
- 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x2e, 0x6f, 0x6d, 0x6e, 0x69, 0x72,
- 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f,
- 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x30, 0x81, 0xba, 0x06, 0x08, 0x2b,
- 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x81, 0xad, 0x30, 0x81,
- 0xaa, 0x30, 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30,
- 0x01, 0x86, 0x26, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63,
- 0x73, 0x70, 0x2e, 0x6f, 0x6d, 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x2e,
- 0x63, 0x6f, 0x6d, 0x2f, 0x62, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72,
- 0x65, 0x72, 0x6f, 0x6f, 0x74, 0x30, 0x39, 0x06, 0x08, 0x2b, 0x06, 0x01,
- 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x2d, 0x68, 0x74, 0x74, 0x70, 0x73,
- 0x3a, 0x2f, 0x2f, 0x63, 0x61, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x6f, 0x6d,
- 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x62,
- 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x72, 0x6f, 0x6f, 0x74,
- 0x2e, 0x63, 0x72, 0x74, 0x30, 0x39, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05,
- 0x05, 0x07, 0x30, 0x02, 0x86, 0x2d, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a,
- 0x2f, 0x2f, 0x63, 0x61, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x6f, 0x6d, 0x6e,
- 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x62, 0x61,
- 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x72, 0x6f, 0x6f, 0x74, 0x2e,
- 0x64, 0x65, 0x72, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01,
- 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0xc6, 0x30, 0x1f, 0x06, 0x03, 0x55,
- 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xe5, 0x9d, 0x59, 0x30,
- 0x82, 0x47, 0x58, 0xcc, 0xac, 0xfa, 0x08, 0x54, 0x36, 0x86, 0x7b, 0x3a,
- 0xb5, 0x04, 0x4d, 0xf0, 0x30, 0x42, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04,
- 0x3b, 0x30, 0x39, 0x30, 0x37, 0xa0, 0x35, 0xa0, 0x33, 0x86, 0x31, 0x68,
- 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x64, 0x70, 0x31, 0x2e, 0x70,
- 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2d, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e,
- 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x52, 0x4c, 0x2f, 0x4f, 0x6d, 0x6e, 0x69,
- 0x72, 0x6f, 0x6f, 0x74, 0x32, 0x30, 0x32, 0x35, 0x2e, 0x63, 0x72, 0x6c,
- 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xf8,
- 0xbd, 0xfa, 0xaf, 0x73, 0x77, 0xc6, 0xc7, 0x1b, 0xf9, 0x4b, 0x4d, 0x11,
- 0xa7, 0xd1, 0x33, 0xaf, 0xaf, 0x72, 0x11, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82,
- 0x01, 0x01, 0x00, 0x80, 0xd9, 0x7a, 0xed, 0x72, 0x05, 0x37, 0x8f, 0x61,
- 0xaa, 0x73, 0x7c, 0x9a, 0x6a, 0xfc, 0xfe, 0x01, 0xe2, 0x19, 0x81, 0x70,
- 0x07, 0x25, 0x32, 0xb0, 0xf0, 0x6f, 0x3b, 0xc7, 0x6a, 0x28, 0x3d, 0xe4,
- 0x51, 0x87, 0xe6, 0x7e, 0x82, 0xec, 0xae, 0x48, 0xa7, 0xb1, 0x77, 0x38,
- 0xc2, 0xd6, 0x56, 0xaf, 0x8f, 0xf2, 0x01, 0xfc, 0x65, 0x65, 0x10, 0x09,
- 0xf7, 0x74, 0x29, 0xb5, 0x0e, 0x92, 0xee, 0x90, 0x98, 0xd1, 0x88, 0xa2,
- 0x65, 0xb7, 0xcd, 0x9c, 0x0e, 0xa7, 0x86, 0x98, 0x28, 0xbc, 0xae, 0x15,
- 0x83, 0xb6, 0x1a, 0xd7, 0x1d, 0xec, 0x19, 0xda, 0x7a, 0x8e, 0x40, 0xf9,
- 0x99, 0x15, 0xd5, 0x7d, 0xa5, 0xba, 0xab, 0xfd, 0x26, 0x98, 0x6e, 0x9c,
- 0x41, 0x3b, 0xb6, 0x81, 0x18, 0xec, 0x70, 0x48, 0xd7, 0x6e, 0x7f, 0xa6,
- 0xe1, 0x77, 0x25, 0xd6, 0xdd, 0x62, 0xe8, 0x52, 0xf3, 0x8c, 0x16, 0x39,
- 0x67, 0xe2, 0x22, 0x0d, 0x77, 0x2e, 0xfb, 0x11, 0x6c, 0xe4, 0xdd, 0x38,
- 0xb4, 0x27, 0x5f, 0x03, 0xa8, 0x3d, 0x44, 0xe2, 0xf2, 0x84, 0x4b, 0x84,
- 0xfd, 0x56, 0xa6, 0x9e, 0x4d, 0x7b, 0xa2, 0x16, 0x4f, 0x07, 0xf5, 0x34,
- 0x24, 0x72, 0xa5, 0xa2, 0xfa, 0x16, 0x66, 0x2a, 0xa4, 0x4a, 0x0e, 0xc8,
- 0x0d, 0x27, 0x44, 0x9c, 0x77, 0xd4, 0x12, 0x10, 0x87, 0xd2, 0x00, 0x2c,
- 0x7a, 0xbb, 0x8e, 0x88, 0x22, 0x91, 0x15, 0xbe, 0xa2, 0x59, 0xca, 0x34,
- 0xe0, 0x1c, 0x61, 0x94, 0x86, 0x20, 0x33, 0xcd, 0xe7, 0x4c, 0x5d, 0x3b,
- 0x92, 0x3e, 0xcb, 0xd6, 0x2d, 0xea, 0x54, 0xfa, 0xfb, 0xaf, 0x54, 0xf5,
- 0xa8, 0xc5, 0x0b, 0xca, 0x8b, 0x87, 0x00, 0xe6, 0x9f, 0xe6, 0x95, 0xbf,
- 0xb7, 0xc4, 0xa3, 0x59, 0xf5, 0x16, 0x6c, 0x5f, 0x3e, 0x69, 0x55, 0x80,
- 0x39, 0xf6, 0x75, 0x50, 0x14, 0x3e, 0x32,
-}
-
-var certSet3Cert44 = []byte{
- 0x30, 0x82, 0x05, 0x2b, 0x30, 0x82, 0x04, 0x13, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x7e, 0xe1, 0x4a, 0x6f, 0x6f, 0xef, 0xf2, 0xd3, 0x7f,
- 0x3f, 0xad, 0x65, 0x4d, 0x3a, 0xda, 0xb4, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81,
- 0xca, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
- 0x55, 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13,
- 0x0e, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49,
- 0x6e, 0x63, 0x2e, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b,
- 0x13, 0x16, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54,
- 0x72, 0x75, 0x73, 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,
- 0x31, 0x3a, 0x30, 0x38, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x31, 0x28,
- 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x36, 0x20, 0x56, 0x65, 0x72, 0x69,
- 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d,
- 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69,
- 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79,
- 0x31, 0x45, 0x30, 0x43, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x3c, 0x56,
- 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73,
- 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x50,
- 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69,
- 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74,
- 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x35, 0x30,
- 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31, 0x30, 0x33, 0x31, 0x30, 0x30, 0x30,
- 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x33, 0x31, 0x30, 0x33, 0x30,
- 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x77, 0x31, 0x0b, 0x30,
- 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x1d,
- 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x14, 0x53, 0x79, 0x6d,
- 0x61, 0x6e, 0x74, 0x65, 0x63, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55,
- 0x04, 0x0b, 0x13, 0x16, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63,
- 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f,
- 0x72, 0x6b, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13,
- 0x1f, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x20, 0x43, 0x6c,
- 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x45, 0x56, 0x20, 0x53, 0x53, 0x4c,
- 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x30, 0x82, 0x01, 0x22,
- 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
- 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a,
- 0x02, 0x82, 0x01, 0x01, 0x00, 0xd8, 0xa1, 0x65, 0x74, 0x23, 0xe8, 0x2b,
- 0x64, 0xe2, 0x32, 0xd7, 0x33, 0x37, 0x3d, 0x8e, 0xf5, 0x34, 0x16, 0x48,
- 0xdd, 0x4f, 0x7f, 0x87, 0x1c, 0xf8, 0x44, 0x23, 0x13, 0x8e, 0xfb, 0x11,
- 0xd8, 0x44, 0x5a, 0x18, 0x71, 0x8e, 0x60, 0x16, 0x26, 0x92, 0x9b, 0xfd,
- 0x17, 0x0b, 0xe1, 0x71, 0x70, 0x42, 0xfe, 0xbf, 0xfa, 0x1c, 0xc0, 0xaa,
- 0xa3, 0xa7, 0xb5, 0x71, 0xe8, 0xff, 0x18, 0x83, 0xf6, 0xdf, 0x10, 0x0a,
- 0x13, 0x62, 0xc8, 0x3d, 0x9c, 0xa7, 0xde, 0x2e, 0x3f, 0x0c, 0xd9, 0x1d,
- 0xe7, 0x2e, 0xfb, 0x2a, 0xce, 0xc8, 0x9a, 0x7f, 0x87, 0xbf, 0xd8, 0x4c,
- 0x04, 0x15, 0x32, 0xc9, 0xd1, 0xcc, 0x95, 0x71, 0xa0, 0x4e, 0x28, 0x4f,
- 0x84, 0xd9, 0x35, 0xfb, 0xe3, 0x86, 0x6f, 0x94, 0x53, 0xe6, 0x72, 0x8a,
- 0x63, 0x67, 0x2e, 0xbe, 0x69, 0xf6, 0xf7, 0x6e, 0x8e, 0x9c, 0x60, 0x04,
- 0xeb, 0x29, 0xfa, 0xc4, 0x47, 0x42, 0xd2, 0x78, 0x98, 0xe3, 0xec, 0x0b,
- 0xa5, 0x92, 0xdc, 0xb7, 0x9a, 0xbd, 0x80, 0x64, 0x2b, 0x38, 0x7c, 0x38,
- 0x09, 0x5b, 0x66, 0xf6, 0x2d, 0x95, 0x7a, 0x86, 0xb2, 0x34, 0x2e, 0x85,
- 0x9e, 0x90, 0x0e, 0x5f, 0xb7, 0x5d, 0xa4, 0x51, 0x72, 0x46, 0x70, 0x13,
- 0xbf, 0x67, 0xf2, 0xb6, 0xa7, 0x4d, 0x14, 0x1e, 0x6c, 0xb9, 0x53, 0xee,
- 0x23, 0x1a, 0x4e, 0x8d, 0x48, 0x55, 0x43, 0x41, 0xb1, 0x89, 0x75, 0x6a,
- 0x40, 0x28, 0xc5, 0x7d, 0xdd, 0xd2, 0x6e, 0xd2, 0x02, 0x19, 0x2f, 0x7b,
- 0x24, 0x94, 0x4b, 0xeb, 0xf1, 0x1a, 0xa9, 0x9b, 0xe3, 0x23, 0x9a, 0xea,
- 0xfa, 0x33, 0xab, 0x0a, 0x2c, 0xb7, 0xf4, 0x60, 0x08, 0xdd, 0x9f, 0x1c,
- 0xcd, 0xdd, 0x2d, 0x01, 0x66, 0x80, 0xaf, 0xb3, 0x2f, 0x29, 0x1d, 0x23,
- 0xb8, 0x8a, 0xe1, 0xa1, 0x70, 0x07, 0x0c, 0x34, 0x0f, 0x02, 0x03, 0x01,
- 0x00, 0x01, 0xa3, 0x82, 0x01, 0x5d, 0x30, 0x82, 0x01, 0x59, 0x30, 0x2f,
- 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x23,
- 0x30, 0x21, 0x30, 0x1f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07,
- 0x30, 0x01, 0x86, 0x13, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x73,
- 0x32, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x30,
- 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30,
- 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x65, 0x06, 0x03, 0x55,
- 0x1d, 0x20, 0x04, 0x5e, 0x30, 0x5c, 0x30, 0x5a, 0x06, 0x04, 0x55, 0x1d,
- 0x20, 0x00, 0x30, 0x52, 0x30, 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05,
- 0x05, 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
- 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x79, 0x6d, 0x61, 0x75, 0x74, 0x68,
- 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x28, 0x06, 0x08,
- 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x02, 0x30, 0x1c, 0x1a, 0x1a,
- 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73,
- 0x79, 0x6d, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72,
- 0x70, 0x61, 0x30, 0x30, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x29, 0x30,
- 0x27, 0x30, 0x25, 0xa0, 0x23, 0xa0, 0x21, 0x86, 0x1f, 0x68, 0x74, 0x74,
- 0x70, 0x3a, 0x2f, 0x2f, 0x73, 0x31, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62,
- 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x63, 0x61, 0x33, 0x2d, 0x67, 0x35,
- 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01,
- 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x29, 0x06, 0x03,
- 0x55, 0x1d, 0x11, 0x04, 0x22, 0x30, 0x20, 0xa4, 0x1e, 0x30, 0x1c, 0x31,
- 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x11, 0x53, 0x79,
- 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x50, 0x4b, 0x49, 0x2d, 0x31, 0x2d,
- 0x35, 0x33, 0x33, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16,
- 0x04, 0x14, 0x01, 0x59, 0xab, 0xe7, 0xdd, 0x3a, 0x0b, 0x59, 0xa6, 0x64,
- 0x63, 0xd6, 0xcf, 0x20, 0x07, 0x57, 0xd5, 0x91, 0xe7, 0x6a, 0x30, 0x1f,
- 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x7f,
- 0xd3, 0x65, 0xa7, 0xc2, 0xdd, 0xec, 0xbb, 0xf0, 0x30, 0x09, 0xf3, 0x43,
- 0x39, 0xfa, 0x02, 0xaf, 0x33, 0x31, 0x33, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82,
- 0x01, 0x01, 0x00, 0x42, 0x01, 0x55, 0x7b, 0xd0, 0x16, 0x1a, 0x5d, 0x58,
- 0xe8, 0xbb, 0x9b, 0xa8, 0x4d, 0xd7, 0xf3, 0xd7, 0xeb, 0x13, 0x94, 0x86,
- 0xd6, 0x7f, 0x21, 0x0b, 0x47, 0xbc, 0x57, 0x9b, 0x92, 0x5d, 0x4f, 0x05,
- 0x9f, 0x38, 0xa4, 0x10, 0x7c, 0xcf, 0x83, 0xbe, 0x06, 0x43, 0x46, 0x8d,
- 0x08, 0xbc, 0x6a, 0xd7, 0x10, 0xa6, 0xfa, 0xab, 0xaf, 0x2f, 0x61, 0xa8,
- 0x63, 0xf2, 0x65, 0xdf, 0x7f, 0x4c, 0x88, 0x12, 0x88, 0x4f, 0xb3, 0x69,
- 0xd9, 0xff, 0x27, 0xc0, 0x0a, 0x97, 0x91, 0x8f, 0x56, 0xfb, 0x89, 0xc4,
- 0xa8, 0xbb, 0x92, 0x2d, 0x1b, 0x73, 0xb0, 0xc6, 0xab, 0x36, 0xf4, 0x96,
- 0x6c, 0x20, 0x08, 0xef, 0x0a, 0x1e, 0x66, 0x24, 0x45, 0x4f, 0x67, 0x00,
- 0x40, 0xc8, 0x07, 0x54, 0x74, 0x33, 0x3b, 0xa6, 0xad, 0xbb, 0x23, 0x9f,
- 0x66, 0xed, 0xa2, 0x44, 0x70, 0x34, 0xfb, 0x0e, 0xea, 0x01, 0xfd, 0xcf,
- 0x78, 0x74, 0xdf, 0xa7, 0xad, 0x55, 0xb7, 0x5f, 0x4d, 0xf6, 0xd6, 0x3f,
- 0xe0, 0x86, 0xce, 0x24, 0xc7, 0x42, 0xa9, 0x13, 0x14, 0x44, 0x35, 0x4b,
- 0xb6, 0xdf, 0xc9, 0x60, 0xac, 0x0c, 0x7f, 0xd9, 0x93, 0x21, 0x4b, 0xee,
- 0x9c, 0xe4, 0x49, 0x02, 0x98, 0xd3, 0x60, 0x7b, 0x5c, 0xbc, 0xd5, 0x30,
- 0x2f, 0x07, 0xce, 0x44, 0x42, 0xc4, 0x0b, 0x99, 0xfe, 0xe6, 0x9f, 0xfc,
- 0xb0, 0x78, 0x86, 0x51, 0x6d, 0xd1, 0x2c, 0x9d, 0xc6, 0x96, 0xfb, 0x85,
- 0x82, 0xbb, 0x04, 0x2f, 0xf7, 0x62, 0x80, 0xef, 0x62, 0xda, 0x7f, 0xf6,
- 0x0e, 0xac, 0x90, 0xb8, 0x56, 0xbd, 0x79, 0x3f, 0xf2, 0x80, 0x6e, 0xa3,
- 0xd9, 0xb9, 0x0f, 0x5d, 0x3a, 0x07, 0x1d, 0x91, 0x93, 0x86, 0x4b, 0x29,
- 0x4c, 0xe1, 0xdc, 0xb5, 0xe1, 0xe0, 0x33, 0x9d, 0xb3, 0xcb, 0x36, 0x91,
- 0x4b, 0xfe, 0xa1, 0xb4, 0xee, 0xf0, 0xf9,
-}
-
-var certSet3Cert45 = []byte{
- 0x30, 0x82, 0x05, 0x38, 0x30, 0x82, 0x04, 0x20, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x51, 0x3f, 0xb9, 0x74, 0x38, 0x70, 0xb7, 0x34, 0x40,
- 0x41, 0x8d, 0x30, 0x93, 0x06, 0x99, 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81,
- 0xca, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
- 0x55, 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13,
- 0x0e, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49,
- 0x6e, 0x63, 0x2e, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b,
- 0x13, 0x16, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54,
- 0x72, 0x75, 0x73, 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,
- 0x31, 0x3a, 0x30, 0x38, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x31, 0x28,
- 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x36, 0x20, 0x56, 0x65, 0x72, 0x69,
- 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d,
- 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69,
- 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79,
- 0x31, 0x45, 0x30, 0x43, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x3c, 0x56,
- 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73,
- 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x50,
- 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69,
- 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74,
- 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x35, 0x30,
- 0x1e, 0x17, 0x0d, 0x31, 0x33, 0x31, 0x30, 0x33, 0x31, 0x30, 0x30, 0x30,
- 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x33, 0x31, 0x30, 0x33, 0x30,
- 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x7e, 0x31, 0x0b, 0x30,
- 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x1d,
- 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x14, 0x53, 0x79, 0x6d,
- 0x61, 0x6e, 0x74, 0x65, 0x63, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55,
- 0x04, 0x0b, 0x13, 0x16, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63,
- 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f,
- 0x72, 0x6b, 0x31, 0x2f, 0x30, 0x2d, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13,
- 0x26, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x20, 0x43, 0x6c,
- 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65,
- 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x20, 0x2d,
- 0x20, 0x47, 0x34, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82,
- 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00,
- 0xb2, 0xd8, 0x05, 0xca, 0x1c, 0x74, 0x2d, 0xb5, 0x17, 0x56, 0x39, 0xc5,
- 0x4a, 0x52, 0x09, 0x96, 0xe8, 0x4b, 0xd8, 0x0c, 0xf1, 0x68, 0x9f, 0x9a,
- 0x42, 0x28, 0x62, 0xc3, 0xa5, 0x30, 0x53, 0x7e, 0x55, 0x11, 0x82, 0x5b,
- 0x03, 0x7a, 0x0d, 0x2f, 0xe1, 0x79, 0x04, 0xc9, 0xb4, 0x96, 0x77, 0x19,
- 0x81, 0x01, 0x94, 0x59, 0xf9, 0xbc, 0xf7, 0x7a, 0x99, 0x27, 0x82, 0x2d,
- 0xb7, 0x83, 0xdd, 0x5a, 0x27, 0x7f, 0xb2, 0x03, 0x7a, 0x9c, 0x53, 0x25,
- 0xe9, 0x48, 0x1f, 0x46, 0x4f, 0xc8, 0x9d, 0x29, 0xf8, 0xbe, 0x79, 0x56,
- 0xf6, 0xf7, 0xfd, 0xd9, 0x3a, 0x68, 0xda, 0x8b, 0x4b, 0x82, 0x33, 0x41,
- 0x12, 0xc3, 0xc8, 0x3c, 0xcc, 0xd6, 0x96, 0x7a, 0x84, 0x21, 0x1a, 0x22,
- 0x04, 0x03, 0x27, 0x17, 0x8b, 0x1c, 0x68, 0x61, 0x93, 0x0f, 0x0e, 0x51,
- 0x80, 0x33, 0x1d, 0xb4, 0xb5, 0xce, 0xeb, 0x7e, 0xd0, 0x62, 0xac, 0xee,
- 0xb3, 0x7b, 0x01, 0x74, 0xef, 0x69, 0x35, 0xeb, 0xca, 0xd5, 0x3d, 0xa9,
- 0xee, 0x97, 0x98, 0xca, 0x8d, 0xaa, 0x44, 0x0e, 0x25, 0x99, 0x4a, 0x15,
- 0x96, 0xa4, 0xce, 0x6d, 0x02, 0x54, 0x1f, 0x2a, 0x6a, 0x26, 0xe2, 0x06,
- 0x3a, 0x63, 0x48, 0xac, 0xb4, 0x4c, 0xd1, 0x75, 0x93, 0x50, 0xff, 0x13,
- 0x2f, 0xd6, 0xda, 0xe1, 0xc6, 0x18, 0xf5, 0x9f, 0xc9, 0x25, 0x5d, 0xf3,
- 0x00, 0x3a, 0xde, 0x26, 0x4d, 0xb4, 0x29, 0x09, 0xcd, 0x0f, 0x3d, 0x23,
- 0x6f, 0x16, 0x4a, 0x81, 0x16, 0xfb, 0xf2, 0x83, 0x10, 0xc3, 0xb8, 0xd6,
- 0xd8, 0x55, 0x32, 0x3d, 0xf1, 0xbd, 0x0f, 0xbd, 0x8c, 0x52, 0x95, 0x4a,
- 0x16, 0x97, 0x7a, 0x52, 0x21, 0x63, 0x75, 0x2f, 0x16, 0xf9, 0xc4, 0x66,
- 0xbe, 0xf5, 0xb5, 0x09, 0xd8, 0xff, 0x27, 0x00, 0xcd, 0x44, 0x7c, 0x6f,
- 0x4b, 0x3f, 0xb0, 0xf7, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01,
- 0x63, 0x30, 0x82, 0x01, 0x5f, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13,
- 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01,
- 0x00, 0x30, 0x30, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x29, 0x30, 0x27,
- 0x30, 0x25, 0xa0, 0x23, 0xa0, 0x21, 0x86, 0x1f, 0x68, 0x74, 0x74, 0x70,
- 0x3a, 0x2f, 0x2f, 0x73, 0x31, 0x2e, 0x73, 0x79, 0x6d, 0x63, 0x62, 0x2e,
- 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x63, 0x61, 0x33, 0x2d, 0x67, 0x35, 0x2e,
- 0x63, 0x72, 0x6c, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01,
- 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x2f, 0x06, 0x08, 0x2b,
- 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x23, 0x30, 0x21, 0x30,
- 0x1f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86,
- 0x13, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x73, 0x32, 0x2e, 0x73,
- 0x79, 0x6d, 0x63, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x6b, 0x06, 0x03,
- 0x55, 0x1d, 0x20, 0x04, 0x64, 0x30, 0x62, 0x30, 0x60, 0x06, 0x0a, 0x60,
- 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, 0x07, 0x36, 0x30, 0x52, 0x30,
- 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16,
- 0x1a, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e,
- 0x73, 0x79, 0x6d, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
- 0x63, 0x70, 0x73, 0x30, 0x28, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
- 0x07, 0x02, 0x02, 0x30, 0x1c, 0x1a, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x3a,
- 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x79, 0x6d, 0x61, 0x75, 0x74,
- 0x68, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x70, 0x61, 0x30, 0x29, 0x06,
- 0x03, 0x55, 0x1d, 0x11, 0x04, 0x22, 0x30, 0x20, 0xa4, 0x1e, 0x30, 0x1c,
- 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x11, 0x53,
- 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x50, 0x4b, 0x49, 0x2d, 0x31,
- 0x2d, 0x35, 0x33, 0x34, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04,
- 0x16, 0x04, 0x14, 0x5f, 0x60, 0xcf, 0x61, 0x90, 0x55, 0xdf, 0x84, 0x43,
- 0x14, 0x8a, 0x60, 0x2a, 0xb2, 0xf5, 0x7a, 0xf4, 0x43, 0x18, 0xef, 0x30,
- 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14,
- 0x7f, 0xd3, 0x65, 0xa7, 0xc2, 0xdd, 0xec, 0xbb, 0xf0, 0x30, 0x09, 0xf3,
- 0x43, 0x39, 0xfa, 0x02, 0xaf, 0x33, 0x31, 0x33, 0x30, 0x0d, 0x06, 0x09,
- 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03,
- 0x82, 0x01, 0x01, 0x00, 0x5e, 0x94, 0x56, 0x49, 0xdd, 0x8e, 0x2d, 0x65,
- 0xf5, 0xc1, 0x36, 0x51, 0xb6, 0x03, 0xe3, 0xda, 0x9e, 0x73, 0x19, 0xf2,
- 0x1f, 0x59, 0xab, 0x58, 0x7e, 0x6c, 0x26, 0x05, 0x2c, 0xfa, 0x81, 0xd7,
- 0x5c, 0x23, 0x17, 0x22, 0x2c, 0x37, 0x93, 0xf7, 0x86, 0xec, 0x85, 0xe6,
- 0xb0, 0xa3, 0xfd, 0x1f, 0xe2, 0x32, 0xa8, 0x45, 0x6f, 0xe1, 0xd9, 0xfb,
- 0xb9, 0xaf, 0xd2, 0x70, 0xa0, 0x32, 0x42, 0x65, 0xbf, 0x84, 0xfe, 0x16,
- 0x2a, 0x8f, 0x3f, 0xc5, 0xa6, 0xd6, 0xa3, 0x93, 0x7d, 0x43, 0xe9, 0x74,
- 0x21, 0x91, 0x35, 0x28, 0xf4, 0x63, 0xe9, 0x2e, 0xed, 0xf7, 0xf5, 0x5c,
- 0x7f, 0x4b, 0x9a, 0xb5, 0x20, 0xe9, 0x0a, 0xbd, 0xe0, 0x45, 0x10, 0x0c,
- 0x14, 0x94, 0x9a, 0x5d, 0xa5, 0xe3, 0x4b, 0x91, 0xe8, 0x24, 0x9b, 0x46,
- 0x40, 0x65, 0xf4, 0x22, 0x72, 0xcd, 0x99, 0xf8, 0x88, 0x11, 0xf5, 0xf3,
- 0x7f, 0xe6, 0x33, 0x82, 0xe6, 0xa8, 0xc5, 0x7e, 0xfe, 0xd0, 0x08, 0xe2,
- 0x25, 0x58, 0x08, 0x71, 0x68, 0xe6, 0xcd, 0xa2, 0xe6, 0x14, 0xde, 0x4e,
- 0x52, 0x24, 0x2d, 0xfd, 0xe5, 0x79, 0x13, 0x53, 0xe7, 0x5e, 0x2f, 0x2d,
- 0x4d, 0x1b, 0x6d, 0x40, 0x15, 0x52, 0x2b, 0xf7, 0x87, 0x89, 0x78, 0x12,
- 0x81, 0x6e, 0xd9, 0x4d, 0xaa, 0x2d, 0x78, 0xd4, 0xc2, 0x2c, 0x3d, 0x08,
- 0x5f, 0x87, 0x91, 0x9e, 0x1f, 0x0e, 0xb0, 0xde, 0x30, 0x52, 0x64, 0x86,
- 0x89, 0xaa, 0x9d, 0x66, 0x9c, 0x0e, 0x76, 0x0c, 0x80, 0xf2, 0x74, 0xd8,
- 0x2a, 0xf8, 0xb8, 0x3a, 0xce, 0xd7, 0xd6, 0x0f, 0x11, 0xbe, 0x6b, 0xab,
- 0x14, 0xf5, 0xbd, 0x41, 0xa0, 0x22, 0x63, 0x89, 0xf1, 0xba, 0x0f, 0x6f,
- 0x29, 0x63, 0x66, 0x2d, 0x3f, 0xac, 0x8c, 0x72, 0xc5, 0xfb, 0xc7, 0xe4,
- 0xd4, 0x0f, 0xf2, 0x3b, 0x4f, 0x8c, 0x29, 0xc7,
-}
-
-var certSet3Cert46 = []byte{
- 0x30, 0x82, 0x05, 0x49, 0x30, 0x82, 0x04, 0x31, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x69, 0x87, 0x94, 0x19, 0xd9, 0xe3, 0x62, 0x70, 0x74,
- 0x9d, 0xbb, 0xe5, 0x9d, 0xc6, 0x68, 0x5e, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81,
- 0xbd, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
- 0x55, 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13,
- 0x0e, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49,
- 0x6e, 0x63, 0x2e, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b,
- 0x13, 0x16, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54,
- 0x72, 0x75, 0x73, 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,
- 0x31, 0x3a, 0x30, 0x38, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x31, 0x28,
- 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x38, 0x20, 0x56, 0x65, 0x72, 0x69,
- 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d,
- 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69,
- 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79,
- 0x31, 0x38, 0x30, 0x36, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2f, 0x56,
- 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x55, 0x6e, 0x69, 0x76,
- 0x65, 0x72, 0x73, 0x61, 0x6c, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43,
- 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, 0x1e,
- 0x17, 0x0d, 0x31, 0x33, 0x30, 0x34, 0x30, 0x39, 0x30, 0x30, 0x30, 0x30,
- 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x32, 0x33, 0x30, 0x34, 0x30, 0x38, 0x32,
- 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x81, 0x84, 0x31, 0x0b, 0x30,
- 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x1d,
- 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x14, 0x53, 0x79, 0x6d,
- 0x61, 0x6e, 0x74, 0x65, 0x63, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55,
- 0x04, 0x0b, 0x13, 0x16, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63,
- 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f,
- 0x72, 0x6b, 0x31, 0x35, 0x30, 0x33, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13,
- 0x2c, 0x53, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x20, 0x43, 0x6c,
- 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65,
- 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x53, 0x48, 0x41, 0x32,
- 0x35, 0x36, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01,
- 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01,
- 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01,
- 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xbe, 0x38, 0x16, 0x51, 0x8b, 0x80,
- 0xdb, 0xea, 0x0e, 0x4d, 0xec, 0xe8, 0x3f, 0x5c, 0xc4, 0x7c, 0xa2, 0x5d,
- 0xed, 0x3b, 0xaf, 0xa5, 0xd6, 0x9e, 0x10, 0x35, 0x2c, 0xe3, 0xc5, 0xe5,
- 0xa8, 0xde, 0x8c, 0x86, 0x17, 0x26, 0xe6, 0xde, 0x0b, 0x51, 0x4a, 0x2c,
- 0xd0, 0xfb, 0xd1, 0x14, 0x5a, 0x72, 0xf7, 0xc9, 0xdd, 0xb8, 0x83, 0x1c,
- 0xc6, 0x46, 0x8c, 0x31, 0x25, 0x91, 0x0e, 0x59, 0x17, 0xa3, 0xd0, 0x13,
- 0x8c, 0x92, 0xc1, 0xaf, 0x81, 0x54, 0x4e, 0xbc, 0x62, 0x02, 0x9e, 0xaa,
- 0xa7, 0x1a, 0x57, 0xd8, 0xca, 0xa6, 0x99, 0x7a, 0x70, 0x56, 0x4f, 0x98,
- 0x07, 0x2e, 0x4b, 0x96, 0xd0, 0x4c, 0x39, 0x53, 0xb9, 0x61, 0x2f, 0x3b,
- 0x76, 0x7c, 0x8e, 0x05, 0x9e, 0x99, 0x44, 0xd1, 0x03, 0x54, 0x77, 0x29,
- 0x2b, 0x56, 0x2a, 0xaa, 0x61, 0xe4, 0x84, 0x2f, 0x12, 0x15, 0x3c, 0xbd,
- 0xd7, 0x8a, 0xe8, 0x09, 0x1e, 0x56, 0xf1, 0xb5, 0x14, 0xac, 0x8a, 0x84,
- 0xce, 0xae, 0x78, 0xa2, 0x60, 0x0a, 0x53, 0x7e, 0x13, 0x4c, 0x1a, 0x40,
- 0x70, 0x0e, 0x52, 0x59, 0xff, 0x5a, 0x68, 0x2e, 0x4c, 0x46, 0x13, 0x3b,
- 0x39, 0x09, 0x82, 0x78, 0x02, 0x35, 0x49, 0x20, 0x08, 0x82, 0xb3, 0xb1,
- 0x6c, 0x89, 0x0f, 0x6e, 0x1e, 0x35, 0x25, 0xb0, 0x2c, 0x24, 0x83, 0xe3,
- 0xc5, 0x50, 0x2c, 0xba, 0x46, 0x90, 0x45, 0x87, 0x0d, 0x72, 0xff, 0x5d,
- 0x11, 0x38, 0xc5, 0x91, 0x76, 0xc5, 0x2c, 0xfb, 0x05, 0x2a, 0x82, 0x95,
- 0xa1, 0x59, 0x63, 0xe3, 0xd0, 0x26, 0x58, 0xcd, 0x67, 0x56, 0x3a, 0xba,
- 0xdf, 0x7c, 0xd2, 0xd2, 0x3b, 0xd8, 0xde, 0x1a, 0x7a, 0x77, 0xe4, 0x0c,
- 0x8c, 0x0b, 0xeb, 0x2b, 0xc2, 0x22, 0xb0, 0xbd, 0x55, 0xba, 0xd9, 0xb9,
- 0x55, 0xd1, 0x22, 0x7a, 0xc6, 0x02, 0x4e, 0x3f, 0xc3, 0x35, 0x02, 0x03,
- 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x7a, 0x30, 0x82, 0x01, 0x76, 0x30,
- 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30,
- 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x3e, 0x06, 0x03, 0x55,
- 0x1d, 0x1f, 0x04, 0x37, 0x30, 0x35, 0x30, 0x33, 0xa0, 0x31, 0xa0, 0x2f,
- 0x86, 0x2d, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c,
- 0x2e, 0x77, 0x73, 0x2e, 0x73, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63,
- 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x75, 0x6e, 0x69, 0x76, 0x65, 0x72, 0x73,
- 0x61, 0x6c, 0x2d, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x72, 0x6c, 0x30,
- 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03,
- 0x02, 0x01, 0x06, 0x30, 0x37, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
- 0x07, 0x01, 0x01, 0x04, 0x2b, 0x30, 0x29, 0x30, 0x27, 0x06, 0x08, 0x2b,
- 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x1b, 0x68, 0x74, 0x74,
- 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x77, 0x73, 0x2e,
- 0x73, 0x79, 0x6d, 0x61, 0x6e, 0x74, 0x65, 0x63, 0x2e, 0x63, 0x6f, 0x6d,
- 0x30, 0x6b, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x64, 0x30, 0x62, 0x30,
- 0x60, 0x06, 0x0a, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, 0x07,
- 0x36, 0x30, 0x52, 0x30, 0x26, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
- 0x07, 0x02, 0x01, 0x16, 0x1a, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f,
- 0x77, 0x77, 0x77, 0x2e, 0x73, 0x79, 0x6d, 0x61, 0x75, 0x74, 0x68, 0x2e,
- 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x28, 0x06, 0x08, 0x2b,
- 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x02, 0x30, 0x1c, 0x1a, 0x1a, 0x68,
- 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x79,
- 0x6d, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x70,
- 0x61, 0x30, 0x2a, 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, 0x23, 0x30, 0x21,
- 0xa4, 0x1f, 0x30, 0x1d, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04,
- 0x03, 0x13, 0x12, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x4d,
- 0x50, 0x4b, 0x49, 0x2d, 0x32, 0x2d, 0x33, 0x37, 0x33, 0x30, 0x1d, 0x06,
- 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xdb, 0x62, 0x20, 0xfb,
- 0x7d, 0x02, 0x89, 0x7c, 0xd2, 0x3b, 0x6f, 0xc7, 0xe4, 0x32, 0x6c, 0x05,
- 0x52, 0x1d, 0xad, 0xb1, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04,
- 0x18, 0x30, 0x16, 0x80, 0x14, 0xb6, 0x77, 0xfa, 0x69, 0x48, 0x47, 0x9f,
- 0x53, 0x12, 0xd5, 0xc2, 0xea, 0x07, 0x32, 0x76, 0x07, 0xd1, 0x97, 0x07,
- 0x19, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01,
- 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x19, 0xcc, 0x95,
- 0xe2, 0x2f, 0x7b, 0x49, 0xd0, 0x48, 0x90, 0x53, 0xf4, 0x07, 0xb1, 0x20,
- 0x44, 0x35, 0x70, 0x14, 0xd5, 0x44, 0x37, 0x31, 0xef, 0xef, 0x70, 0xd1,
- 0x2d, 0x4c, 0xe9, 0x2d, 0xb0, 0x53, 0x91, 0x01, 0x4c, 0x54, 0xe7, 0x7d,
- 0x9b, 0xda, 0x3a, 0xff, 0xb7, 0xcb, 0x14, 0xad, 0x30, 0x0f, 0x69, 0x1a,
- 0x2a, 0xf0, 0xbc, 0xcd, 0x35, 0xeb, 0x48, 0xdc, 0xb9, 0x87, 0xfd, 0xcf,
- 0xb1, 0x5a, 0xf6, 0x05, 0xda, 0x3c, 0x64, 0xe6, 0x2b, 0xe6, 0xdc, 0x73,
- 0x5e, 0x9a, 0xd8, 0x0c, 0x9b, 0xd2, 0x97, 0xb3, 0xe8, 0xfa, 0x87, 0x95,
- 0x53, 0xe1, 0x99, 0xad, 0x88, 0xe8, 0xfa, 0xbc, 0x09, 0x4d, 0xa2, 0xc4,
- 0x6a, 0x1b, 0x28, 0x3b, 0x2d, 0xc3, 0x21, 0x15, 0xee, 0x14, 0xfa, 0x9d,
- 0x98, 0x10, 0xeb, 0x9f, 0x3e, 0xe6, 0x24, 0x24, 0x5f, 0x7a, 0x1c, 0x05,
- 0xbb, 0x9a, 0x31, 0x23, 0x58, 0x79, 0x4c, 0xec, 0x6d, 0x18, 0x19, 0x4d,
- 0x51, 0x1f, 0x08, 0x61, 0xbd, 0x91, 0x05, 0x0c, 0x5a, 0x9c, 0x26, 0xfc,
- 0x0b, 0xa5, 0x20, 0x25, 0xbf, 0x6a, 0x1b, 0x2b, 0xf7, 0x02, 0x09, 0x72,
- 0x69, 0x83, 0x32, 0x14, 0xc3, 0x60, 0x5b, 0x7e, 0xfd, 0x9a, 0x32, 0xfa,
- 0xb4, 0x95, 0x0e, 0x1a, 0xf9, 0x3b, 0x09, 0xa4, 0x54, 0x47, 0x9a, 0x0c,
- 0xce, 0x32, 0xaf, 0xd1, 0x21, 0xcc, 0x7f, 0xd2, 0x06, 0xef, 0x60, 0x0e,
- 0x62, 0x6f, 0x6f, 0x81, 0x1a, 0x17, 0x9d, 0xc8, 0xcb, 0x28, 0xcc, 0xe2,
- 0x5f, 0x6e, 0x2c, 0x7a, 0xb4, 0xcb, 0x47, 0x7c, 0x74, 0x68, 0x7b, 0x48,
- 0x71, 0x02, 0x9c, 0x23, 0x09, 0xf3, 0x5a, 0xae, 0x5f, 0x42, 0x2e, 0x5f,
- 0x2b, 0x59, 0x2d, 0x52, 0x88, 0xe5, 0x8d, 0x0b, 0xb3, 0xa8, 0x61, 0xf9,
- 0x4b, 0x9b, 0x55, 0xd6, 0xda, 0xb1, 0x92, 0x3b, 0xbf, 0xc3, 0x9b, 0xf9,
- 0x2c,
-}
-
-var certSet3Cert47 = []byte{
- 0x30, 0x82, 0x05, 0x86, 0x30, 0x82, 0x04, 0x6e, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x04, 0x07, 0x27, 0x9a, 0xa9, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x5a,
- 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x49,
- 0x45, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x09,
- 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x31, 0x13, 0x30,
- 0x11, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0a, 0x43, 0x79, 0x62, 0x65,
- 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03,
- 0x55, 0x04, 0x03, 0x13, 0x19, 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f,
- 0x72, 0x65, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73,
- 0x74, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x33,
- 0x31, 0x32, 0x31, 0x39, 0x32, 0x30, 0x30, 0x37, 0x33, 0x32, 0x5a, 0x17,
- 0x0d, 0x31, 0x37, 0x31, 0x32, 0x31, 0x39, 0x32, 0x30, 0x30, 0x36, 0x35,
- 0x35, 0x5a, 0x30, 0x81, 0x8b, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55,
- 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03,
- 0x55, 0x04, 0x08, 0x13, 0x0a, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67,
- 0x74, 0x6f, 0x6e, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x07,
- 0x13, 0x07, 0x52, 0x65, 0x64, 0x6d, 0x6f, 0x6e, 0x64, 0x31, 0x1e, 0x30,
- 0x1c, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x15, 0x4d, 0x69, 0x63, 0x72,
- 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55,
- 0x04, 0x0b, 0x13, 0x0c, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66,
- 0x74, 0x20, 0x49, 0x54, 0x31, 0x1e, 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04,
- 0x03, 0x13, 0x15, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74,
- 0x20, 0x49, 0x54, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x53, 0x48, 0x41, 0x32,
- 0x30, 0x82, 0x02, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
- 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x02, 0x0f, 0x00,
- 0x30, 0x82, 0x02, 0x0a, 0x02, 0x82, 0x02, 0x01, 0x00, 0xd1, 0xe8, 0x37,
- 0xa7, 0x76, 0x8a, 0x70, 0x4b, 0x19, 0xf0, 0x20, 0x37, 0x09, 0x24, 0x37,
- 0x7f, 0xea, 0xfb, 0x78, 0xe6, 0x05, 0xba, 0x6a, 0xad, 0x4e, 0x27, 0x0d,
- 0xfc, 0x72, 0x6a, 0xd9, 0x6c, 0x21, 0xc4, 0x64, 0x11, 0x95, 0x73, 0x10,
- 0x0a, 0x5c, 0x25, 0x7b, 0x88, 0x6c, 0x94, 0x04, 0xfd, 0xc7, 0xdb, 0xae,
- 0x7b, 0xdc, 0x4a, 0x08, 0xb3, 0x3e, 0x16, 0xf1, 0xd0, 0xad, 0xdb, 0x30,
- 0x6d, 0xd7, 0x1a, 0x1e, 0x52, 0xb5, 0x3d, 0xf0, 0x47, 0x19, 0x03, 0xe2,
- 0x7d, 0xa6, 0xbd, 0x57, 0x13, 0x3f, 0x54, 0xea, 0x3a, 0xa3, 0xb1, 0x77,
- 0xfc, 0x42, 0xf0, 0x63, 0x49, 0x6a, 0x91, 0x80, 0x2e, 0x30, 0x49, 0xc0,
- 0x8a, 0xeb, 0x2b, 0xaf, 0xfe, 0x3a, 0xeb, 0x07, 0x5d, 0x06, 0xf7, 0xe9,
- 0xfd, 0x84, 0x0e, 0x91, 0xbd, 0x09, 0x20, 0x29, 0xe8, 0x6e, 0x5d, 0x09,
- 0xce, 0x15, 0xd3, 0xe7, 0xef, 0xdb, 0x50, 0xeb, 0x44, 0xef, 0x18, 0x57,
- 0xab, 0x04, 0x1d, 0xbc, 0x31, 0xf9, 0xf7, 0x7b, 0x2a, 0x13, 0xcf, 0xd1,
- 0x3d, 0x51, 0xaf, 0x1b, 0xc5, 0xb5, 0x7b, 0xe7, 0xb0, 0xfc, 0x53, 0xbb,
- 0x9a, 0xe7, 0x63, 0xde, 0x41, 0x33, 0xb6, 0x47, 0x24, 0x69, 0x5d, 0xb8,
- 0x46, 0xa7, 0xff, 0xad, 0xab, 0xdf, 0x4f, 0x7a, 0x78, 0x25, 0x27, 0x21,
- 0x26, 0x34, 0xca, 0x02, 0x6e, 0x37, 0x51, 0xf0, 0xed, 0x58, 0x1a, 0x60,
- 0x94, 0xf6, 0xc4, 0x93, 0xd8, 0xdd, 0x30, 0x24, 0x25, 0xd7, 0x1c, 0xeb,
- 0x19, 0x94, 0x35, 0x5d, 0x93, 0xb2, 0xae, 0xaa, 0x29, 0x83, 0x73, 0xc4,
- 0x74, 0x59, 0x05, 0x52, 0x67, 0x9d, 0xda, 0x67, 0x51, 0x39, 0x05, 0x3a,
- 0x36, 0xea, 0xf2, 0x1e, 0x76, 0x2b, 0x14, 0xae, 0xec, 0x3d, 0xf9, 0x14,
- 0x99, 0x8b, 0x07, 0x6e, 0xbc, 0xe7, 0x0c, 0x56, 0xde, 0xac, 0xbe, 0xae,
- 0xdb, 0x75, 0x32, 0x90, 0x9e, 0x63, 0xbd, 0x74, 0xbf, 0xe0, 0x0a, 0xca,
- 0xf8, 0x34, 0x96, 0x67, 0x84, 0xcd, 0xd1, 0x42, 0x38, 0x78, 0xc7, 0x99,
- 0xb6, 0x0c, 0xce, 0xb6, 0x0f, 0xe9, 0x1b, 0xcb, 0xf4, 0x59, 0xbe, 0x11,
- 0x0e, 0xcb, 0x2c, 0x32, 0xc8, 0xfa, 0x83, 0x29, 0x64, 0x79, 0x3c, 0x8b,
- 0x4b, 0xf0, 0x32, 0x74, 0x6c, 0xf3, 0x93, 0xb8, 0x96, 0x6b, 0x5d, 0x57,
- 0x5a, 0x68, 0xc1, 0xcc, 0x0c, 0x79, 0x8a, 0x19, 0xde, 0xf5, 0x49, 0x02,
- 0x5e, 0x08, 0x80, 0x01, 0x89, 0x0c, 0x32, 0xcd, 0xd2, 0xd6, 0x96, 0xd5,
- 0x4b, 0xa0, 0xf3, 0xec, 0xbf, 0xab, 0xf4, 0x7d, 0xb3, 0xa1, 0xb9, 0x7c,
- 0xda, 0x4e, 0xd7, 0xe5, 0xb7, 0xac, 0xb9, 0xf2, 0x25, 0x5f, 0x01, 0xcb,
- 0x8c, 0x96, 0xa8, 0x28, 0xae, 0xc1, 0x33, 0x5a, 0xf6, 0x3f, 0x08, 0x90,
- 0xdc, 0xeb, 0xff, 0x39, 0xd8, 0x26, 0xc8, 0x12, 0x9d, 0x1c, 0x9a, 0xaa,
- 0xa9, 0xc0, 0x16, 0x8e, 0x86, 0xed, 0x67, 0x52, 0x96, 0x00, 0x7f, 0x0d,
- 0x92, 0x3d, 0x3d, 0xd9, 0x70, 0x36, 0xe5, 0xea, 0x42, 0x6f, 0x1f, 0xae,
- 0x95, 0xe5, 0x5b, 0x5d, 0xf8, 0xd0, 0x3a, 0xc7, 0xd4, 0xde, 0x77, 0x86,
- 0xd0, 0xfc, 0x9e, 0x4e, 0xe2, 0xe2, 0xb8, 0xa9, 0x68, 0x37, 0x09, 0xc4,
- 0x39, 0xe3, 0x85, 0xb8, 0x89, 0xf3, 0x1f, 0x6e, 0xb7, 0x6d, 0x1f, 0x4a,
- 0x2f, 0x18, 0x09, 0x6f, 0xde, 0x4a, 0x01, 0x8f, 0x14, 0xc9, 0xb7, 0xa6,
- 0xee, 0xa7, 0x63, 0x9f, 0x33, 0xa4, 0x54, 0x7c, 0x42, 0x83, 0x68, 0xb8,
- 0xa5, 0xdf, 0xbf, 0xec, 0xb9, 0x1a, 0x5d, 0x13, 0x3b, 0xd9, 0xad, 0x68,
- 0xfd, 0x20, 0x0a, 0x55, 0x91, 0x21, 0x64, 0xf9, 0xd7, 0x13, 0x01, 0xa0,
- 0x08, 0x5d, 0x59, 0x89, 0x1b, 0x44, 0xaf, 0xa4, 0xac, 0xc7, 0x05, 0x10,
- 0xfa, 0x41, 0x4a, 0xa8, 0xfb, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82,
- 0x01, 0x20, 0x30, 0x82, 0x01, 0x1c, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d,
- 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02,
- 0x01, 0x00, 0x30, 0x53, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x4c, 0x30,
- 0x4a, 0x30, 0x48, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0xb1, 0x3e,
- 0x01, 0x00, 0x30, 0x3b, 0x30, 0x39, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05,
- 0x05, 0x07, 0x02, 0x01, 0x16, 0x2d, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
- 0x2f, 0x63, 0x79, 0x62, 0x65, 0x72, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e,
- 0x6f, 0x6d, 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x6f, 0x6d,
- 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2e,
- 0x63, 0x66, 0x6d, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01,
- 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 0x1d, 0x06, 0x03, 0x55,
- 0x1d, 0x25, 0x04, 0x16, 0x30, 0x14, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05,
- 0x05, 0x07, 0x03, 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07,
- 0x03, 0x02, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30,
- 0x16, 0x80, 0x14, 0xe5, 0x9d, 0x59, 0x30, 0x82, 0x47, 0x58, 0xcc, 0xac,
- 0xfa, 0x08, 0x54, 0x36, 0x86, 0x7b, 0x3a, 0xb5, 0x04, 0x4d, 0xf0, 0x30,
- 0x42, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x3b, 0x30, 0x39, 0x30, 0x37,
- 0xa0, 0x35, 0xa0, 0x33, 0x86, 0x31, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
- 0x2f, 0x63, 0x64, 0x70, 0x31, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63,
- 0x2d, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43,
- 0x52, 0x4c, 0x2f, 0x4f, 0x6d, 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x32,
- 0x30, 0x32, 0x35, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x1d, 0x06, 0x03, 0x55,
- 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x51, 0xaf, 0x24, 0x26, 0x9c, 0xf4,
- 0x68, 0x22, 0x57, 0x80, 0x26, 0x2b, 0x3b, 0x46, 0x62, 0x15, 0x7b, 0x1e,
- 0xcc, 0xa5, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
- 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x76, 0x85,
- 0xc5, 0x23, 0x31, 0x1f, 0xb4, 0x73, 0xea, 0xa0, 0xbc, 0xa5, 0xed, 0xdf,
- 0x45, 0x43, 0x6a, 0x7f, 0x69, 0x20, 0x1b, 0x80, 0xb2, 0xfb, 0x1c, 0xdd,
- 0xaa, 0x7f, 0x88, 0xd3, 0x31, 0x41, 0x36, 0xf7, 0xfb, 0xfb, 0x6b, 0xad,
- 0x98, 0x8c, 0x78, 0x1f, 0x9d, 0x11, 0x67, 0x3a, 0xcd, 0x4b, 0xec, 0xa8,
- 0xbc, 0x9d, 0x15, 0x19, 0xc4, 0x3b, 0x0b, 0xa7, 0x93, 0xce, 0xe8, 0xfc,
- 0x9d, 0x5b, 0xe8, 0x1f, 0xcb, 0x56, 0xae, 0x76, 0x43, 0x2b, 0xc7, 0x13,
- 0x51, 0x77, 0x41, 0xa8, 0x66, 0x4c, 0x5f, 0xa7, 0xd1, 0xd7, 0xaa, 0x75,
- 0xc5, 0x1b, 0x29, 0x4c, 0xc9, 0xf4, 0x6d, 0xa1, 0x5e, 0xa1, 0x85, 0x93,
- 0x16, 0xc2, 0xcb, 0x3b, 0xab, 0x14, 0x7d, 0x44, 0xfd, 0xda, 0x25, 0x29,
- 0x86, 0x2a, 0xfe, 0x63, 0x20, 0xca, 0xd2, 0x0b, 0xc2, 0x34, 0x15, 0xbb,
- 0xaf, 0x5b, 0x7f, 0x8a, 0xe0, 0xaa, 0xed, 0x45, 0xa6, 0xea, 0x79, 0xdb,
- 0xd8, 0x35, 0x66, 0x54, 0x43, 0xde, 0x37, 0x33, 0xd1, 0xe4, 0xe0, 0xcd,
- 0x57, 0xca, 0x71, 0xb0, 0x7d, 0xe9, 0x16, 0x77, 0x64, 0xe8, 0x59, 0x97,
- 0xb9, 0xd5, 0x2e, 0xd1, 0xb4, 0x91, 0xda, 0x77, 0x71, 0xf3, 0x4a, 0x0f,
- 0x48, 0xd2, 0x34, 0x99, 0x60, 0x95, 0x37, 0xac, 0x1f, 0x01, 0xcd, 0x10,
- 0x9d, 0xe8, 0x2a, 0xa5, 0x20, 0xc7, 0x50, 0x9b, 0xb3, 0x6c, 0x49, 0x78,
- 0x2b, 0x58, 0x92, 0x64, 0x89, 0xb8, 0x95, 0x36, 0xa8, 0x34, 0xaa, 0xf0,
- 0x41, 0xd2, 0x95, 0x5a, 0x24, 0x54, 0x97, 0x4d, 0x6e, 0x05, 0xc4, 0x95,
- 0xad, 0xc4, 0x7a, 0xa3, 0x39, 0xfb, 0x79, 0x06, 0x8a, 0x9b, 0xa6, 0x4f,
- 0xd9, 0x22, 0xfa, 0x44, 0x4e, 0x36, 0xf3, 0xc9, 0x0f, 0xa6, 0x39, 0xe7,
- 0x80, 0xb2, 0x5e, 0xbf, 0xbd, 0x39, 0xd1, 0x46, 0xe5, 0x55, 0x47, 0xdb,
- 0xbc, 0x6e,
-}
-
-var certSet3Cert48 = []byte{
- 0x30, 0x82, 0x05, 0xa3, 0x30, 0x82, 0x03, 0x8b, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x75, 0x96, 0xc2, 0x3e, 0xfa, 0x89, 0x59, 0x45, 0x6e,
- 0x79, 0xf7, 0x17, 0xba, 0xcf, 0x64, 0xf3, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x55,
- 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x43,
- 0x4e, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x11,
- 0x57, 0x6f, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x41, 0x20, 0x4c, 0x69,
- 0x6d, 0x69, 0x74, 0x65, 0x64, 0x31, 0x2a, 0x30, 0x28, 0x06, 0x03, 0x55,
- 0x04, 0x03, 0x13, 0x21, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72,
- 0x69, 0x74, 0x79, 0x20, 0x6f, 0x66, 0x20, 0x57, 0x6f, 0x53, 0x69, 0x67,
- 0x6e, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34, 0x31, 0x31, 0x30, 0x38, 0x30,
- 0x30, 0x35, 0x38, 0x35, 0x38, 0x5a, 0x17, 0x0d, 0x32, 0x39, 0x31, 0x31,
- 0x30, 0x38, 0x30, 0x30, 0x35, 0x38, 0x35, 0x38, 0x5a, 0x30, 0x52, 0x31,
- 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x43, 0x4e,
- 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x11, 0x57,
- 0x6f, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x41, 0x20, 0x4c, 0x69, 0x6d,
- 0x69, 0x74, 0x65, 0x64, 0x31, 0x27, 0x30, 0x25, 0x06, 0x03, 0x55, 0x04,
- 0x03, 0x13, 0x1e, 0x57, 0x6f, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c,
- 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x4f, 0x56, 0x20, 0x53, 0x65, 0x72,
- 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01,
- 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01,
- 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01,
- 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xd6, 0x74, 0x87, 0xaf, 0x99, 0xc0,
- 0x57, 0x96, 0x99, 0xc2, 0x89, 0x74, 0x3c, 0x92, 0x55, 0x99, 0xbf, 0x1f,
- 0x07, 0x00, 0x35, 0x05, 0x26, 0x96, 0x16, 0x5b, 0x03, 0xc1, 0x42, 0x37,
- 0x33, 0xbe, 0x3f, 0x0d, 0x4f, 0xff, 0xbb, 0x94, 0x26, 0x91, 0xd7, 0x14,
- 0x16, 0x78, 0x1b, 0xf7, 0x13, 0xa2, 0x4b, 0x4c, 0xe5, 0x5c, 0xa7, 0x10,
- 0x40, 0x35, 0x59, 0x30, 0xd1, 0x77, 0x99, 0xe3, 0x9d, 0x29, 0xc2, 0xbe,
- 0x31, 0x95, 0xbd, 0x92, 0x61, 0x5b, 0xb0, 0x23, 0xfb, 0x67, 0x58, 0xd5,
- 0x52, 0xe4, 0x7b, 0x2f, 0xf0, 0x73, 0x1c, 0x73, 0x94, 0x55, 0xba, 0xc8,
- 0x68, 0x59, 0x02, 0x10, 0x10, 0xe4, 0xf7, 0x11, 0xf0, 0xc3, 0xb6, 0xd7,
- 0xae, 0x56, 0x80, 0x00, 0x9e, 0x65, 0x64, 0xa6, 0x83, 0x91, 0x41, 0xe6,
- 0xed, 0xa7, 0x7a, 0x65, 0xa5, 0x1f, 0x30, 0x2e, 0x13, 0x3c, 0xbf, 0xdf,
- 0x63, 0x97, 0xf3, 0x96, 0xf0, 0x52, 0x32, 0xb4, 0xf4, 0x7b, 0x98, 0x57,
- 0xed, 0x36, 0x4f, 0xf7, 0x21, 0x4a, 0x28, 0x9d, 0xdd, 0x1c, 0x92, 0xb3,
- 0x4d, 0x8d, 0x9c, 0x58, 0x8b, 0x17, 0x21, 0xd8, 0xdc, 0xa1, 0xb7, 0xae,
- 0x73, 0x78, 0x8a, 0xc4, 0xb6, 0xe9, 0x7f, 0x28, 0x8e, 0x9a, 0xd5, 0x2e,
- 0x9e, 0x39, 0xe9, 0xda, 0x59, 0x74, 0xe3, 0xc8, 0x97, 0x10, 0x32, 0x94,
- 0x19, 0x59, 0xd4, 0x0f, 0x89, 0x57, 0x44, 0xe6, 0xe5, 0x2b, 0x17, 0x30,
- 0x62, 0x52, 0x98, 0x7f, 0xab, 0x0d, 0xa5, 0x01, 0xea, 0x04, 0x41, 0xca,
- 0xfa, 0x13, 0x0e, 0x3b, 0x87, 0x06, 0xba, 0xbd, 0x47, 0x31, 0xd7, 0x63,
- 0x03, 0x01, 0xf4, 0xbe, 0xa1, 0x37, 0x11, 0x9f, 0x1e, 0x01, 0x95, 0x4e,
- 0x0f, 0x3f, 0x54, 0x1e, 0x92, 0xa6, 0x9f, 0x30, 0x8c, 0xfe, 0x98, 0xe8,
- 0x56, 0x96, 0x66, 0x04, 0xe1, 0x35, 0xfe, 0x59, 0xac, 0x57, 0x02, 0x03,
- 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x70, 0x30, 0x82, 0x01, 0x6c, 0x30,
- 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03,
- 0x02, 0x01, 0x06, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x04, 0x16,
- 0x30, 0x14, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x02,
- 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x01, 0x30, 0x12,
- 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06,
- 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x30, 0x06, 0x03, 0x55, 0x1d,
- 0x1f, 0x04, 0x29, 0x30, 0x27, 0x30, 0x25, 0xa0, 0x23, 0xa0, 0x21, 0x86,
- 0x1f, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x73,
- 0x31, 0x2e, 0x77, 0x6f, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d,
- 0x2f, 0x63, 0x61, 0x31, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x6d, 0x06, 0x08,
- 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x61, 0x30, 0x5f,
- 0x30, 0x27, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01,
- 0x86, 0x1b, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73,
- 0x70, 0x31, 0x2e, 0x77, 0x6f, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f,
- 0x6d, 0x2f, 0x63, 0x61, 0x31, 0x30, 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01,
- 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x28, 0x68, 0x74, 0x74, 0x70, 0x3a,
- 0x2f, 0x2f, 0x61, 0x69, 0x61, 0x31, 0x2e, 0x77, 0x6f, 0x73, 0x69, 0x67,
- 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x61, 0x31, 0x67, 0x32, 0x2d,
- 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x33, 0x2e, 0x63, 0x65, 0x72, 0x30,
- 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xf9, 0x8b,
- 0xec, 0x04, 0x38, 0x6a, 0x3f, 0xaa, 0x06, 0xc6, 0x94, 0xad, 0x73, 0x95,
- 0x2a, 0xb0, 0xc8, 0xe6, 0xb8, 0xfb, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d,
- 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xe1, 0x66, 0xcf, 0x0e, 0xd1,
- 0xf1, 0xb3, 0x4b, 0xb7, 0x06, 0x20, 0x14, 0xfe, 0x87, 0x12, 0xd5, 0xf6,
- 0xfe, 0xfb, 0x3e, 0x30, 0x46, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x3f,
- 0x30, 0x3d, 0x30, 0x3b, 0x06, 0x0c, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82,
- 0x9b, 0x51, 0x06, 0x03, 0x02, 0x01, 0x30, 0x2b, 0x30, 0x29, 0x06, 0x08,
- 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1d, 0x68, 0x74,
- 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x6f, 0x73,
- 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x6f, 0x6c, 0x69,
- 0x63, 0x79, 0x2f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7,
- 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x02, 0x01, 0x00, 0x5e,
- 0x67, 0xba, 0x78, 0x32, 0x05, 0xb6, 0xb7, 0xaf, 0xe7, 0xde, 0x6a, 0x7a,
- 0x82, 0x64, 0x0e, 0xa0, 0x0b, 0xf2, 0x9e, 0x9a, 0xba, 0xc6, 0x2b, 0x6f,
- 0x56, 0x3a, 0xb4, 0x62, 0x57, 0xab, 0x7c, 0xad, 0x60, 0x50, 0x96, 0x34,
- 0x9c, 0xa3, 0x88, 0xcf, 0xd9, 0x8f, 0x50, 0xaf, 0xf6, 0xf0, 0x00, 0x36,
- 0x1b, 0x1f, 0x1f, 0x87, 0x55, 0x3c, 0x60, 0x9a, 0xf0, 0xb0, 0x0d, 0x9a,
- 0x80, 0x2d, 0x8a, 0x3b, 0xbe, 0x05, 0xb3, 0xd7, 0xa0, 0x80, 0xb6, 0xb8,
- 0x19, 0xeb, 0x51, 0xdb, 0xec, 0x64, 0x54, 0xf1, 0x1a, 0x89, 0x4a, 0x48,
- 0xa1, 0x4d, 0x3f, 0x31, 0x7d, 0xc4, 0x79, 0x94, 0x4b, 0xf1, 0xde, 0xab,
- 0x83, 0xaf, 0x5f, 0x86, 0xbe, 0x96, 0x1c, 0xb3, 0x3e, 0x1c, 0xe7, 0xbc,
- 0x96, 0xb2, 0xe8, 0x5a, 0xac, 0xb5, 0x58, 0xcb, 0x3c, 0x56, 0x6f, 0x0a,
- 0xa7, 0xa5, 0xd0, 0x36, 0x89, 0x82, 0x26, 0x8c, 0xb9, 0x1f, 0xb6, 0xeb,
- 0x8f, 0x7e, 0x78, 0xfc, 0x5b, 0x8b, 0x79, 0x1c, 0xd6, 0xdf, 0x47, 0xa7,
- 0x56, 0xf4, 0x98, 0x4e, 0xc7, 0xa9, 0xd5, 0x0e, 0x75, 0x56, 0x06, 0x7f,
- 0xb4, 0x37, 0x46, 0x08, 0xc6, 0xe9, 0x4f, 0x8b, 0x5b, 0x43, 0x1c, 0xe0,
- 0x45, 0x3e, 0x95, 0x20, 0x71, 0xc0, 0x1c, 0x98, 0x16, 0xef, 0xf2, 0x78,
- 0xdf, 0xac, 0x4d, 0xbb, 0xbf, 0x56, 0x0e, 0xcf, 0x85, 0xaf, 0xcf, 0xbf,
- 0x04, 0xed, 0x72, 0x6b, 0xfd, 0x1f, 0x57, 0x0e, 0x58, 0x91, 0x44, 0x11,
- 0x58, 0x3b, 0x62, 0x3b, 0x09, 0x78, 0xb3, 0xa4, 0x75, 0x6a, 0xec, 0xb3,
- 0xc2, 0x2b, 0x32, 0xcc, 0xb3, 0x8d, 0xc3, 0xa3, 0x6e, 0xdc, 0x8a, 0xd5,
- 0xe8, 0x4a, 0xc4, 0x0b, 0x7b, 0xdb, 0x30, 0x5d, 0x95, 0x33, 0xc3, 0xd1,
- 0xa3, 0x69, 0x64, 0x5b, 0xa8, 0xaa, 0x96, 0x48, 0x73, 0x73, 0xe3, 0xc9,
- 0xb9, 0x24, 0xdf, 0x17, 0x75, 0xaa, 0xaf, 0x07, 0x3a, 0xcf, 0xbe, 0x9b,
- 0x8a, 0x80, 0xa7, 0xbf, 0x7c, 0xe2, 0xe9, 0x2a, 0xe6, 0xfd, 0xb0, 0x2c,
- 0xe7, 0xe6, 0xe6, 0x7e, 0xb3, 0x35, 0x15, 0x65, 0x00, 0xf4, 0xe1, 0x39,
- 0x73, 0x0e, 0x28, 0x4b, 0xf0, 0x0c, 0x98, 0x9e, 0x3a, 0xeb, 0xce, 0x7b,
- 0x7a, 0x9e, 0x40, 0xc1, 0x50, 0x65, 0x96, 0x9a, 0xe7, 0x4b, 0x77, 0xcd,
- 0xdd, 0xcb, 0x7d, 0x97, 0xb4, 0xea, 0x09, 0xb2, 0xe9, 0x49, 0x28, 0xc3,
- 0x30, 0xe0, 0x87, 0x15, 0xf0, 0x26, 0xea, 0xd8, 0x03, 0xfd, 0xec, 0xda,
- 0x08, 0x83, 0x65, 0xdc, 0x77, 0xc5, 0x6e, 0x3d, 0x34, 0xf7, 0x87, 0xc3,
- 0x1c, 0x1d, 0x26, 0x33, 0xec, 0x33, 0xac, 0xc6, 0x99, 0x53, 0xab, 0x60,
- 0xf4, 0xb0, 0xd9, 0xee, 0x64, 0x5a, 0x33, 0x07, 0x70, 0x13, 0x74, 0x88,
- 0x07, 0xf5, 0x86, 0xf9, 0x18, 0xd3, 0xb2, 0x47, 0xc8, 0xae, 0x03, 0x4a,
- 0x53, 0xde, 0x1c, 0x65, 0xd6, 0x0a, 0x2e, 0x3a, 0x51, 0x93, 0xee, 0xb7,
- 0xe3, 0x6f, 0x0a, 0xfb, 0xe9, 0xfe, 0x4e, 0xe8, 0xbb, 0x1d, 0xc2, 0x97,
- 0xab, 0x0a, 0xb9, 0xed, 0x36, 0x32, 0x1b, 0x4d, 0xa1, 0xcc, 0x03, 0xa6,
- 0x9d, 0xb3, 0xd9, 0x1c, 0xd5, 0x67, 0xe2, 0x8f, 0x74, 0x3c, 0x92, 0x2a,
- 0x74, 0xb1, 0x56, 0x50, 0xdf, 0x53, 0x15, 0xd7, 0x21, 0xd6, 0xeb, 0xf3,
- 0xfb, 0x63, 0xe3, 0x20, 0x2c, 0x0a, 0x74, 0x37, 0x0b, 0xc1, 0xa1, 0x35,
- 0x6a, 0x84, 0x70, 0xf4, 0x45, 0xf8, 0xb2, 0xb6, 0x81, 0x49, 0xaa, 0xfd,
- 0x54, 0x45, 0x90, 0x4d, 0xe7, 0x04, 0x07, 0x5f, 0x78, 0x14, 0xdd, 0x3a,
- 0xbb, 0x2b, 0xf9, 0x72, 0x50, 0xec, 0x68, 0xea, 0x3c, 0xa8, 0xd1, 0x80,
- 0xbb, 0xbe, 0x35, 0x43, 0x97, 0xc3, 0x32, 0xb2, 0xf5, 0xaa, 0xad, 0xc9,
- 0x7f, 0x83, 0x9f, 0x7d, 0x69, 0x1e, 0x15,
-}
-
-var certSet3Cert49 = []byte{
- 0x30, 0x82, 0x05, 0xe1, 0x30, 0x82, 0x04, 0xc9, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x04, 0x07, 0x27, 0xaa, 0x47, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x5a,
- 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x49,
- 0x45, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x09,
- 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x31, 0x13, 0x30,
- 0x11, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0a, 0x43, 0x79, 0x62, 0x65,
- 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03,
- 0x55, 0x04, 0x03, 0x13, 0x19, 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f,
- 0x72, 0x65, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73,
- 0x74, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34,
- 0x30, 0x35, 0x30, 0x37, 0x31, 0x37, 0x30, 0x34, 0x30, 0x39, 0x5a, 0x17,
- 0x0d, 0x31, 0x38, 0x30, 0x35, 0x30, 0x37, 0x31, 0x37, 0x30, 0x33, 0x33,
- 0x30, 0x5a, 0x30, 0x81, 0x8b, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55,
- 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03,
- 0x55, 0x04, 0x08, 0x13, 0x0a, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67,
- 0x74, 0x6f, 0x6e, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x07,
- 0x13, 0x07, 0x52, 0x65, 0x64, 0x6d, 0x6f, 0x6e, 0x64, 0x31, 0x1e, 0x30,
- 0x1c, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x15, 0x4d, 0x69, 0x63, 0x72,
- 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55,
- 0x04, 0x0b, 0x13, 0x0c, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66,
- 0x74, 0x20, 0x49, 0x54, 0x31, 0x1e, 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04,
- 0x03, 0x13, 0x15, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74,
- 0x20, 0x49, 0x54, 0x20, 0x53, 0x53, 0x4c, 0x20, 0x53, 0x48, 0x41, 0x32,
- 0x30, 0x82, 0x02, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
- 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x02, 0x0f, 0x00,
- 0x30, 0x82, 0x02, 0x0a, 0x02, 0x82, 0x02, 0x01, 0x00, 0xd1, 0xe8, 0x37,
- 0xa7, 0x76, 0x8a, 0x70, 0x4b, 0x19, 0xf0, 0x20, 0x37, 0x09, 0x24, 0x37,
- 0x7f, 0xea, 0xfb, 0x78, 0xe6, 0x05, 0xba, 0x6a, 0xad, 0x4e, 0x27, 0x0d,
- 0xfc, 0x72, 0x6a, 0xd9, 0x6c, 0x21, 0xc4, 0x64, 0x11, 0x95, 0x73, 0x10,
- 0x0a, 0x5c, 0x25, 0x7b, 0x88, 0x6c, 0x94, 0x04, 0xfd, 0xc7, 0xdb, 0xae,
- 0x7b, 0xdc, 0x4a, 0x08, 0xb3, 0x3e, 0x16, 0xf1, 0xd0, 0xad, 0xdb, 0x30,
- 0x6d, 0xd7, 0x1a, 0x1e, 0x52, 0xb5, 0x3d, 0xf0, 0x47, 0x19, 0x03, 0xe2,
- 0x7d, 0xa6, 0xbd, 0x57, 0x13, 0x3f, 0x54, 0xea, 0x3a, 0xa3, 0xb1, 0x77,
- 0xfc, 0x42, 0xf0, 0x63, 0x49, 0x6a, 0x91, 0x80, 0x2e, 0x30, 0x49, 0xc0,
- 0x8a, 0xeb, 0x2b, 0xaf, 0xfe, 0x3a, 0xeb, 0x07, 0x5d, 0x06, 0xf7, 0xe9,
- 0xfd, 0x84, 0x0e, 0x91, 0xbd, 0x09, 0x20, 0x29, 0xe8, 0x6e, 0x5d, 0x09,
- 0xce, 0x15, 0xd3, 0xe7, 0xef, 0xdb, 0x50, 0xeb, 0x44, 0xef, 0x18, 0x57,
- 0xab, 0x04, 0x1d, 0xbc, 0x31, 0xf9, 0xf7, 0x7b, 0x2a, 0x13, 0xcf, 0xd1,
- 0x3d, 0x51, 0xaf, 0x1b, 0xc5, 0xb5, 0x7b, 0xe7, 0xb0, 0xfc, 0x53, 0xbb,
- 0x9a, 0xe7, 0x63, 0xde, 0x41, 0x33, 0xb6, 0x47, 0x24, 0x69, 0x5d, 0xb8,
- 0x46, 0xa7, 0xff, 0xad, 0xab, 0xdf, 0x4f, 0x7a, 0x78, 0x25, 0x27, 0x21,
- 0x26, 0x34, 0xca, 0x02, 0x6e, 0x37, 0x51, 0xf0, 0xed, 0x58, 0x1a, 0x60,
- 0x94, 0xf6, 0xc4, 0x93, 0xd8, 0xdd, 0x30, 0x24, 0x25, 0xd7, 0x1c, 0xeb,
- 0x19, 0x94, 0x35, 0x5d, 0x93, 0xb2, 0xae, 0xaa, 0x29, 0x83, 0x73, 0xc4,
- 0x74, 0x59, 0x05, 0x52, 0x67, 0x9d, 0xda, 0x67, 0x51, 0x39, 0x05, 0x3a,
- 0x36, 0xea, 0xf2, 0x1e, 0x76, 0x2b, 0x14, 0xae, 0xec, 0x3d, 0xf9, 0x14,
- 0x99, 0x8b, 0x07, 0x6e, 0xbc, 0xe7, 0x0c, 0x56, 0xde, 0xac, 0xbe, 0xae,
- 0xdb, 0x75, 0x32, 0x90, 0x9e, 0x63, 0xbd, 0x74, 0xbf, 0xe0, 0x0a, 0xca,
- 0xf8, 0x34, 0x96, 0x67, 0x84, 0xcd, 0xd1, 0x42, 0x38, 0x78, 0xc7, 0x99,
- 0xb6, 0x0c, 0xce, 0xb6, 0x0f, 0xe9, 0x1b, 0xcb, 0xf4, 0x59, 0xbe, 0x11,
- 0x0e, 0xcb, 0x2c, 0x32, 0xc8, 0xfa, 0x83, 0x29, 0x64, 0x79, 0x3c, 0x8b,
- 0x4b, 0xf0, 0x32, 0x74, 0x6c, 0xf3, 0x93, 0xb8, 0x96, 0x6b, 0x5d, 0x57,
- 0x5a, 0x68, 0xc1, 0xcc, 0x0c, 0x79, 0x8a, 0x19, 0xde, 0xf5, 0x49, 0x02,
- 0x5e, 0x08, 0x80, 0x01, 0x89, 0x0c, 0x32, 0xcd, 0xd2, 0xd6, 0x96, 0xd5,
- 0x4b, 0xa0, 0xf3, 0xec, 0xbf, 0xab, 0xf4, 0x7d, 0xb3, 0xa1, 0xb9, 0x7c,
- 0xda, 0x4e, 0xd7, 0xe5, 0xb7, 0xac, 0xb9, 0xf2, 0x25, 0x5f, 0x01, 0xcb,
- 0x8c, 0x96, 0xa8, 0x28, 0xae, 0xc1, 0x33, 0x5a, 0xf6, 0x3f, 0x08, 0x90,
- 0xdc, 0xeb, 0xff, 0x39, 0xd8, 0x26, 0xc8, 0x12, 0x9d, 0x1c, 0x9a, 0xaa,
- 0xa9, 0xc0, 0x16, 0x8e, 0x86, 0xed, 0x67, 0x52, 0x96, 0x00, 0x7f, 0x0d,
- 0x92, 0x3d, 0x3d, 0xd9, 0x70, 0x36, 0xe5, 0xea, 0x42, 0x6f, 0x1f, 0xae,
- 0x95, 0xe5, 0x5b, 0x5d, 0xf8, 0xd0, 0x3a, 0xc7, 0xd4, 0xde, 0x77, 0x86,
- 0xd0, 0xfc, 0x9e, 0x4e, 0xe2, 0xe2, 0xb8, 0xa9, 0x68, 0x37, 0x09, 0xc4,
- 0x39, 0xe3, 0x85, 0xb8, 0x89, 0xf3, 0x1f, 0x6e, 0xb7, 0x6d, 0x1f, 0x4a,
- 0x2f, 0x18, 0x09, 0x6f, 0xde, 0x4a, 0x01, 0x8f, 0x14, 0xc9, 0xb7, 0xa6,
- 0xee, 0xa7, 0x63, 0x9f, 0x33, 0xa4, 0x54, 0x7c, 0x42, 0x83, 0x68, 0xb8,
- 0xa5, 0xdf, 0xbf, 0xec, 0xb9, 0x1a, 0x5d, 0x13, 0x3b, 0xd9, 0xad, 0x68,
- 0xfd, 0x20, 0x0a, 0x55, 0x91, 0x21, 0x64, 0xf9, 0xd7, 0x13, 0x01, 0xa0,
- 0x08, 0x5d, 0x59, 0x89, 0x1b, 0x44, 0xaf, 0xa4, 0xac, 0xc7, 0x05, 0x10,
- 0xfa, 0x41, 0x4a, 0xa8, 0xfb, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82,
- 0x01, 0x7b, 0x30, 0x82, 0x01, 0x77, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d,
- 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02,
- 0x01, 0x00, 0x30, 0x60, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x59, 0x30,
- 0x57, 0x30, 0x48, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0xb1, 0x3e,
- 0x01, 0x00, 0x30, 0x3b, 0x30, 0x39, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05,
- 0x05, 0x07, 0x02, 0x01, 0x16, 0x2d, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
- 0x2f, 0x63, 0x79, 0x62, 0x65, 0x72, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e,
- 0x6f, 0x6d, 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x6f, 0x6d,
- 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2e,
- 0x63, 0x66, 0x6d, 0x30, 0x0b, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01,
- 0x82, 0x37, 0x2a, 0x01, 0x30, 0x42, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05,
- 0x05, 0x07, 0x01, 0x01, 0x04, 0x36, 0x30, 0x34, 0x30, 0x32, 0x06, 0x08,
- 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x26, 0x68, 0x74,
- 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x6f, 0x6d,
- 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x62,
- 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x72, 0x6f, 0x6f, 0x74,
- 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04,
- 0x03, 0x02, 0x01, 0x86, 0x30, 0x27, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x04,
- 0x20, 0x30, 0x1e, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03,
- 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x02, 0x06,
- 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x09, 0x30, 0x1f, 0x06,
- 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xe5, 0x9d,
- 0x59, 0x30, 0x82, 0x47, 0x58, 0xcc, 0xac, 0xfa, 0x08, 0x54, 0x36, 0x86,
- 0x7b, 0x3a, 0xb5, 0x04, 0x4d, 0xf0, 0x30, 0x42, 0x06, 0x03, 0x55, 0x1d,
- 0x1f, 0x04, 0x3b, 0x30, 0x39, 0x30, 0x37, 0xa0, 0x35, 0xa0, 0x33, 0x86,
- 0x31, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x64, 0x70, 0x31,
- 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2d, 0x74, 0x72, 0x75, 0x73,
- 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x52, 0x4c, 0x2f, 0x4f, 0x6d,
- 0x6e, 0x69, 0x72, 0x6f, 0x6f, 0x74, 0x32, 0x30, 0x32, 0x35, 0x2e, 0x63,
- 0x72, 0x6c, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04,
- 0x14, 0x51, 0xaf, 0x24, 0x26, 0x9c, 0xf4, 0x68, 0x22, 0x57, 0x80, 0x26,
- 0x2b, 0x3b, 0x46, 0x62, 0x15, 0x7b, 0x1e, 0xcc, 0xa5, 0x30, 0x0d, 0x06,
- 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00,
- 0x03, 0x82, 0x01, 0x01, 0x00, 0x69, 0x62, 0xf6, 0x84, 0x91, 0x00, 0xc4,
- 0x6f, 0x82, 0x7b, 0x24, 0xe1, 0x42, 0xa2, 0xa5, 0x8b, 0x82, 0x5c, 0xa7,
- 0xc5, 0x44, 0xcb, 0xe7, 0x52, 0x76, 0x63, 0xd3, 0x76, 0x9e, 0x78, 0xe2,
- 0x69, 0x35, 0xb1, 0x38, 0xba, 0xb0, 0x96, 0xc6, 0x1f, 0xac, 0x7b, 0xc6,
- 0xb2, 0x65, 0x77, 0x8b, 0x7d, 0x8d, 0xae, 0x64, 0xb9, 0xa5, 0x8c, 0x17,
- 0xca, 0x58, 0x65, 0xc3, 0xad, 0x82, 0xf5, 0xc5, 0xa2, 0xf5, 0x01, 0x13,
- 0x93, 0xc6, 0x7e, 0x44, 0xe5, 0xc4, 0x61, 0xfa, 0x03, 0xb6, 0x56, 0xc1,
- 0x72, 0xe1, 0xc8, 0x28, 0xc5, 0x69, 0x21, 0x8f, 0xac, 0x6e, 0xfd, 0x7f,
- 0x43, 0x83, 0x36, 0xb8, 0xc0, 0xd6, 0xa0, 0x28, 0xfe, 0x1a, 0x45, 0xbe,
- 0xfd, 0x93, 0x8c, 0x8d, 0xa4, 0x64, 0x79, 0x1f, 0x14, 0xdb, 0xa1, 0x9f,
- 0x21, 0xdc, 0xc0, 0x4e, 0x7b, 0x17, 0x22, 0x17, 0xb1, 0xb6, 0x3c, 0xd3,
- 0x9b, 0xe2, 0x0a, 0xa3, 0x7e, 0x99, 0xb0, 0xc1, 0xac, 0xd8, 0xf4, 0x86,
- 0xdf, 0x3c, 0xda, 0x7d, 0x14, 0x9c, 0x40, 0xc1, 0x7c, 0xd2, 0x18, 0x6f,
- 0xf1, 0x4f, 0x26, 0x45, 0x09, 0x95, 0x94, 0x5c, 0xda, 0xd0, 0x98, 0xf8,
- 0xf4, 0x4c, 0x82, 0x96, 0x10, 0xde, 0xac, 0x30, 0xcb, 0x2b, 0xae, 0xf9,
- 0x92, 0xea, 0xbf, 0x79, 0x03, 0xfc, 0x1e, 0x3f, 0xac, 0x09, 0xa4, 0x3f,
- 0x65, 0xfd, 0x91, 0x4f, 0x96, 0x24, 0xa7, 0xce, 0xb4, 0x4e, 0x6a, 0x96,
- 0x29, 0x17, 0xae, 0xc0, 0xa8, 0xdf, 0x17, 0x22, 0xf4, 0x17, 0xe3, 0xdc,
- 0x1c, 0x39, 0x06, 0x56, 0x10, 0xea, 0xea, 0xb5, 0x74, 0x17, 0x3c, 0x4e,
- 0xdd, 0x7e, 0x91, 0x0a, 0xa8, 0x0b, 0x78, 0x07, 0xa7, 0x31, 0x44, 0x08,
- 0x31, 0xab, 0x18, 0x84, 0x0f, 0x12, 0x9c, 0xe7, 0xde, 0x84, 0x2c, 0xe9,
- 0x6d, 0x93, 0x45, 0xbf, 0xa8, 0xc1, 0x3f, 0x34, 0xdc,
-}
-
-var certSet3Cert50 = []byte{
- 0x30, 0x82, 0x05, 0xe5, 0x30, 0x82, 0x03, 0xcd, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x10, 0x13, 0x8b, 0xfe, 0xf3, 0x32, 0x94, 0xf9, 0xd8, 0x16,
- 0xf9, 0x45, 0xc2, 0x71, 0x95, 0x29, 0x98, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x7d,
- 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x49,
- 0x4c, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0d,
- 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x20, 0x4c, 0x74, 0x64,
- 0x2e, 0x31, 0x2b, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x22,
- 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x44, 0x69, 0x67, 0x69, 0x74,
- 0x61, 0x6c, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
- 0x74, 0x65, 0x20, 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x31, 0x29,
- 0x30, 0x27, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x20, 0x53, 0x74, 0x61,
- 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66,
- 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68,
- 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x35, 0x31,
- 0x32, 0x31, 0x36, 0x30, 0x31, 0x30, 0x30, 0x30, 0x35, 0x5a, 0x17, 0x0d,
- 0x33, 0x30, 0x31, 0x32, 0x31, 0x36, 0x30, 0x31, 0x30, 0x30, 0x30, 0x35,
- 0x5a, 0x30, 0x78, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,
- 0x13, 0x02, 0x49, 0x4c, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04,
- 0x0a, 0x13, 0x0d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x20,
- 0x4c, 0x74, 0x64, 0x2e, 0x31, 0x29, 0x30, 0x27, 0x06, 0x03, 0x55, 0x04,
- 0x0b, 0x13, 0x20, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x20,
- 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31,
- 0x26, 0x30, 0x24, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1d, 0x53, 0x74,
- 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73,
- 0x20, 0x33, 0x20, 0x4f, 0x56, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72,
- 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a,
- 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82,
- 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00,
- 0xaf, 0x67, 0x1c, 0x6f, 0xe5, 0x45, 0xe0, 0xd7, 0x46, 0x4b, 0x75, 0x2c,
- 0xb6, 0x80, 0xf2, 0x9a, 0x17, 0x4d, 0x2d, 0xff, 0xde, 0xae, 0xd2, 0xd4,
- 0x00, 0x8a, 0x3a, 0xb8, 0x31, 0xfe, 0x8e, 0x37, 0x9e, 0xfa, 0xaa, 0xd5,
- 0xa3, 0x5b, 0x16, 0x12, 0xc1, 0x19, 0x3e, 0x34, 0x85, 0x96, 0xc3, 0xbe,
- 0xd3, 0xb3, 0x43, 0xf4, 0x8d, 0x6f, 0x16, 0xbd, 0x30, 0xba, 0x07, 0xfc,
- 0xd8, 0x9a, 0xc1, 0x79, 0x89, 0x80, 0x6d, 0xa0, 0x8c, 0xbe, 0xdd, 0x37,
- 0xf7, 0xeb, 0x05, 0xd3, 0x53, 0x7f, 0x57, 0x58, 0x76, 0x55, 0xb6, 0xa8,
- 0xa8, 0x86, 0x44, 0xb8, 0xbb, 0xd0, 0x13, 0xda, 0xfd, 0x8f, 0xe1, 0xf2,
- 0xcd, 0xa0, 0x15, 0x38, 0x55, 0x56, 0xce, 0x26, 0xcf, 0x7c, 0x93, 0x75,
- 0x29, 0x7a, 0x0a, 0xab, 0xfb, 0xba, 0x09, 0x38, 0x20, 0x11, 0x57, 0x07,
- 0x5d, 0x7f, 0x49, 0x9f, 0x2a, 0x4a, 0x67, 0x1e, 0x9e, 0x58, 0xe9, 0xc7,
- 0x7f, 0xf9, 0xc3, 0xed, 0xfe, 0x5f, 0x4d, 0xaf, 0xb8, 0x4f, 0x9d, 0xdf,
- 0x69, 0x2d, 0x69, 0x1b, 0x3a, 0x58, 0x81, 0x69, 0x63, 0x30, 0xea, 0x87,
- 0x8d, 0x0f, 0x52, 0x9d, 0x5a, 0xda, 0x39, 0x44, 0xba, 0x9f, 0x89, 0x9f,
- 0x36, 0xb6, 0xc2, 0x19, 0x5c, 0xd9, 0x26, 0x78, 0xd9, 0xae, 0x5e, 0xfc,
- 0x95, 0x90, 0xbf, 0xe8, 0x11, 0xc0, 0x47, 0x0f, 0x77, 0x89, 0xdd, 0x6a,
- 0x28, 0x4f, 0x0a, 0xbc, 0x32, 0x64, 0x57, 0x43, 0x3d, 0x08, 0x65, 0x93,
- 0xe5, 0x45, 0xae, 0xdd, 0x28, 0x0c, 0x27, 0x2c, 0x8e, 0xa6, 0x2b, 0x09,
- 0x03, 0x5d, 0xa1, 0x78, 0xd2, 0x8c, 0xab, 0xb6, 0x6b, 0xb9, 0x46, 0xc9,
- 0x19, 0x00, 0x39, 0xb9, 0xbf, 0xc6, 0x13, 0x2b, 0x73, 0x72, 0x1f, 0xf2,
- 0x3e, 0x37, 0xb8, 0xe8, 0xb9, 0x14, 0x65, 0x88, 0x4d, 0xe2, 0xf1, 0x1b,
- 0xd8, 0xa5, 0x1d, 0x3b, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01,
- 0x64, 0x30, 0x82, 0x01, 0x60, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f,
- 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x1d, 0x06,
- 0x03, 0x55, 0x1d, 0x25, 0x04, 0x16, 0x30, 0x14, 0x06, 0x08, 0x2b, 0x06,
- 0x01, 0x05, 0x05, 0x07, 0x03, 0x02, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05,
- 0x05, 0x07, 0x03, 0x01, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01,
- 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00,
- 0x30, 0x32, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2b, 0x30, 0x29, 0x30,
- 0x27, 0xa0, 0x25, 0xa0, 0x23, 0x86, 0x21, 0x68, 0x74, 0x74, 0x70, 0x3a,
- 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x73,
- 0x73, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x66, 0x73, 0x63, 0x61,
- 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x66, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05,
- 0x05, 0x07, 0x01, 0x01, 0x04, 0x5a, 0x30, 0x58, 0x30, 0x24, 0x06, 0x08,
- 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74,
- 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x73, 0x74,
- 0x61, 0x72, 0x74, 0x73, 0x73, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x30,
- 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x24,
- 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x61, 0x69, 0x61, 0x2e, 0x73,
- 0x74, 0x61, 0x72, 0x74, 0x73, 0x73, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
- 0x63, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x63, 0x61, 0x2e, 0x63, 0x72, 0x74,
- 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xb1,
- 0x3f, 0x1c, 0x92, 0x7b, 0x92, 0xb0, 0x5a, 0x25, 0xb3, 0x38, 0xfb, 0x9c,
- 0x07, 0xa4, 0x26, 0x50, 0x32, 0xe3, 0x51, 0x30, 0x1f, 0x06, 0x03, 0x55,
- 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x4e, 0x0b, 0xef, 0x1a,
- 0xa4, 0x40, 0x5b, 0xa5, 0x17, 0x69, 0x87, 0x30, 0xca, 0x34, 0x68, 0x43,
- 0xd0, 0x41, 0xae, 0xf2, 0x30, 0x3f, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04,
- 0x38, 0x30, 0x36, 0x30, 0x34, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30,
- 0x2c, 0x30, 0x2a, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02,
- 0x01, 0x16, 0x1e, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77,
- 0x77, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x73, 0x73, 0x6c, 0x2e, 0x63,
- 0x6f, 0x6d, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x30, 0x0d, 0x06,
- 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00,
- 0x03, 0x82, 0x02, 0x01, 0x00, 0x85, 0xf2, 0xe8, 0x14, 0xd3, 0x1b, 0xc1,
- 0xa1, 0x16, 0x1d, 0xa4, 0xf4, 0x4d, 0xba, 0x51, 0x8b, 0x5c, 0x52, 0xb1,
- 0x54, 0x54, 0x12, 0x16, 0x17, 0x9c, 0x96, 0x78, 0x6f, 0xd3, 0xbf, 0xdf,
- 0x43, 0x36, 0xf5, 0x12, 0x89, 0x61, 0x72, 0x44, 0xdf, 0x1c, 0x9b, 0x09,
- 0x4f, 0x60, 0x26, 0x68, 0xc1, 0xe6, 0x66, 0x50, 0x70, 0xb3, 0x6a, 0xf1,
- 0xa8, 0x6a, 0x0c, 0x1e, 0x2e, 0x93, 0xf1, 0xee, 0x07, 0x3e, 0x09, 0xdd,
- 0x30, 0x45, 0xb2, 0x56, 0x8e, 0xdc, 0x2c, 0x5c, 0xab, 0x49, 0xfa, 0xb9,
- 0x04, 0x03, 0x40, 0x15, 0x7a, 0xb5, 0x30, 0xe0, 0x1d, 0x91, 0x8f, 0xa6,
- 0xd6, 0x6f, 0x1f, 0x99, 0xa0, 0x84, 0x95, 0x39, 0xbd, 0xac, 0x77, 0x7f,
- 0x72, 0x4b, 0xdd, 0x2d, 0xae, 0xff, 0xa8, 0x58, 0x1d, 0x46, 0x27, 0xd4,
- 0x83, 0xc7, 0x69, 0x64, 0x9f, 0x19, 0xbb, 0x10, 0xf8, 0x04, 0x42, 0x87,
- 0x59, 0x5d, 0x02, 0xb1, 0xd6, 0xe5, 0xc8, 0xda, 0x43, 0x30, 0xa3, 0xe8,
- 0x37, 0xa5, 0xd2, 0x48, 0x0b, 0xa2, 0x83, 0x4e, 0x9d, 0x4f, 0x83, 0x58,
- 0x9d, 0xd7, 0x47, 0x22, 0xb1, 0x89, 0xf0, 0x89, 0x3b, 0x3d, 0x28, 0x43,
- 0x2c, 0x9b, 0x17, 0x7c, 0x03, 0xee, 0x9d, 0x26, 0x25, 0xe0, 0x04, 0xb8,
- 0x1d, 0x04, 0x57, 0x42, 0x47, 0xda, 0x58, 0x69, 0xf0, 0xd3, 0x29, 0xab,
- 0x12, 0x02, 0x99, 0x2b, 0x2a, 0xd8, 0x9d, 0xa0, 0x1f, 0x54, 0x5e, 0x23,
- 0x9a, 0x0c, 0xd2, 0x99, 0x58, 0xc4, 0xa1, 0xe5, 0x49, 0xc2, 0x25, 0xa7,
- 0x64, 0x20, 0x52, 0x2e, 0xe7, 0x89, 0xf5, 0x19, 0xc0, 0x8b, 0xd0, 0x63,
- 0xb1, 0x78, 0x1e, 0xbe, 0x01, 0x47, 0xbe, 0x76, 0x81, 0x46, 0xf1, 0x99,
- 0x1f, 0x94, 0x9a, 0xbe, 0xfa, 0x82, 0x15, 0xb5, 0x84, 0x84, 0x79, 0x75,
- 0x93, 0xba, 0x9f, 0xb5, 0xe4, 0x9b, 0xc2, 0xcb, 0x69, 0x5c, 0xbd, 0x1f,
- 0x55, 0x0a, 0xa7, 0x26, 0x30, 0x05, 0x51, 0xbe, 0x65, 0xee, 0x57, 0xa9,
- 0x6a, 0xdf, 0xbd, 0xf9, 0x36, 0x2f, 0xad, 0x1e, 0x46, 0x41, 0x2b, 0xb1,
- 0x88, 0xd0, 0x88, 0x25, 0x85, 0x40, 0x17, 0x79, 0xbf, 0x3d, 0x8d, 0xe2,
- 0xf4, 0x2d, 0xea, 0x30, 0x31, 0xdf, 0xa1, 0x40, 0xcb, 0x35, 0xff, 0x82,
- 0x9f, 0xf5, 0x99, 0x3c, 0x4a, 0xfd, 0x9d, 0xa1, 0xd1, 0x55, 0xcc, 0x20,
- 0xa8, 0x1c, 0xd8, 0x20, 0x05, 0xab, 0xb3, 0x14, 0x65, 0x95, 0x53, 0xd8,
- 0xe8, 0x8e, 0x57, 0xc5, 0x77, 0x6b, 0x2d, 0x4d, 0x88, 0xe9, 0x5d, 0x62,
- 0xd5, 0xa2, 0xf8, 0x70, 0xe1, 0x70, 0xeb, 0x45, 0x23, 0x0e, 0xf0, 0x00,
- 0x46, 0xc2, 0x48, 0x31, 0xe8, 0xe7, 0x36, 0x80, 0x36, 0x2d, 0x22, 0xf2,
- 0x01, 0x27, 0x53, 0xeb, 0xce, 0xa7, 0x69, 0x49, 0x82, 0xbf, 0xe7, 0x0f,
- 0x9c, 0xf3, 0x20, 0x2e, 0xf5, 0xfa, 0x5d, 0xce, 0xea, 0x58, 0x3a, 0x8f,
- 0xd8, 0xaa, 0x7d, 0x30, 0xb7, 0x74, 0x96, 0x7c, 0x3d, 0x6e, 0xb4, 0xec,
- 0x4a, 0x3b, 0x59, 0xb6, 0xa9, 0x50, 0x0d, 0x0f, 0x05, 0x06, 0x70, 0x26,
- 0xb9, 0x95, 0x91, 0xd1, 0x5e, 0x24, 0x8c, 0x8f, 0xca, 0x74, 0x57, 0x97,
- 0x90, 0x8b, 0x5a, 0xb7, 0xfe, 0x8d, 0xad, 0xd8, 0xe8, 0xc2, 0x06, 0xbc,
- 0x08, 0x56, 0x21, 0x02, 0x12, 0x53, 0xc6, 0x9f, 0x86, 0x04, 0x58, 0xca,
- 0x2d, 0xf8, 0x03, 0x0d, 0x57, 0x0b, 0x1c, 0x37, 0xbd, 0xf0, 0x5a, 0x35,
- 0xf2, 0xfe, 0x3b, 0xd6, 0xa4, 0x37, 0x15, 0xe9, 0xf8, 0x08, 0x92, 0x96,
- 0x3d, 0x74, 0xc8, 0xb5, 0x5c, 0x6e, 0x65, 0x08, 0xe7, 0xdf, 0x69, 0x73,
- 0x9c, 0xec, 0xe3, 0x30, 0x5a, 0xa6, 0xdf, 0x5c, 0xbe, 0xda, 0x7f, 0x00,
- 0xee, 0xa5, 0xda, 0x2b, 0x5c, 0x1e, 0x2a, 0x6a, 0xc0, 0xa3, 0xae, 0x1e,
- 0xf1,
-}
-
-var certSet3Cert51 = []byte{
- 0x30, 0x82, 0x06, 0x5c, 0x30, 0x82, 0x04, 0x44, 0xa0, 0x03, 0x02, 0x01,
- 0x02, 0x02, 0x07, 0x19, 0xc2, 0x85, 0x30, 0xe9, 0x3b, 0x36, 0x30, 0x0d,
- 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05,
- 0x00, 0x30, 0x7d, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,
- 0x13, 0x02, 0x49, 0x4c, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04,
- 0x0a, 0x13, 0x0d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x20,
- 0x4c, 0x74, 0x64, 0x2e, 0x31, 0x2b, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04,
- 0x0b, 0x13, 0x22, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x44, 0x69,
- 0x67, 0x69, 0x74, 0x61, 0x6c, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66,
- 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e,
- 0x67, 0x31, 0x29, 0x30, 0x27, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x20,
- 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x20, 0x43, 0x65, 0x72,
- 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41,
- 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, 0x1e, 0x17, 0x0d,
- 0x30, 0x36, 0x30, 0x39, 0x31, 0x37, 0x32, 0x32, 0x34, 0x36, 0x33, 0x36,
- 0x5a, 0x17, 0x0d, 0x31, 0x39, 0x31, 0x32, 0x33, 0x31, 0x32, 0x33, 0x35,
- 0x39, 0x35, 0x39, 0x5a, 0x30, 0x55, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03,
- 0x55, 0x04, 0x06, 0x13, 0x02, 0x43, 0x4e, 0x31, 0x1a, 0x30, 0x18, 0x06,
- 0x03, 0x55, 0x04, 0x0a, 0x13, 0x11, 0x57, 0x6f, 0x53, 0x69, 0x67, 0x6e,
- 0x20, 0x43, 0x41, 0x20, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x31,
- 0x2a, 0x30, 0x28, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x21, 0x43, 0x65,
- 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20,
- 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x6f, 0x66,
- 0x20, 0x57, 0x6f, 0x53, 0x69, 0x67, 0x6e, 0x30, 0x82, 0x02, 0x22, 0x30,
- 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01,
- 0x05, 0x00, 0x03, 0x82, 0x02, 0x0f, 0x00, 0x30, 0x82, 0x02, 0x0a, 0x02,
- 0x82, 0x02, 0x01, 0x00, 0xbd, 0xca, 0x8d, 0xac, 0xb8, 0x91, 0x15, 0x56,
- 0x97, 0x7b, 0x6b, 0x5c, 0x7a, 0xc2, 0xde, 0x6b, 0xd9, 0xa1, 0xb0, 0xc3,
- 0x10, 0x23, 0xfa, 0xa7, 0xa1, 0xb2, 0xcc, 0x31, 0xfa, 0x3e, 0xd9, 0xa6,
- 0x29, 0x6f, 0x16, 0x3d, 0xe0, 0x6b, 0xf8, 0xb8, 0x40, 0x5f, 0xdb, 0x39,
- 0xa8, 0x00, 0x7a, 0x8b, 0xa0, 0x4d, 0x54, 0x7d, 0xc2, 0x22, 0x78, 0xfc,
- 0x8e, 0x09, 0xb8, 0xa8, 0x85, 0xd7, 0xcc, 0x95, 0x97, 0x4b, 0x74, 0xd8,
- 0x9e, 0x7e, 0xf0, 0x00, 0xe4, 0x0e, 0x89, 0xae, 0x49, 0x28, 0x44, 0x1a,
- 0x10, 0x99, 0x32, 0x0f, 0x25, 0x88, 0x53, 0xa4, 0x0d, 0xb3, 0x0f, 0x12,
- 0x08, 0x16, 0x0b, 0x03, 0x71, 0x27, 0x1c, 0x7f, 0xe1, 0xdb, 0xd2, 0xfd,
- 0x67, 0x68, 0xc4, 0x05, 0x5d, 0x0a, 0x0e, 0x5d, 0x70, 0xd7, 0xd8, 0x97,
- 0xa0, 0xbc, 0x53, 0x41, 0x9a, 0x91, 0x8d, 0xf4, 0x9e, 0x36, 0x66, 0x7a,
- 0x7e, 0x56, 0xc1, 0x90, 0x5f, 0xe6, 0xb1, 0x68, 0x20, 0x36, 0xa4, 0x8c,
- 0x24, 0x2c, 0x2c, 0x47, 0x0b, 0x59, 0x76, 0x66, 0x30, 0xb5, 0xbe, 0xde,
- 0xed, 0x8f, 0xf8, 0x9d, 0xd3, 0xbb, 0x01, 0x30, 0xe6, 0xf2, 0xf3, 0x0e,
- 0xe0, 0x2c, 0x92, 0x80, 0xf3, 0x85, 0xf9, 0x28, 0x8a, 0xb4, 0x54, 0x2e,
- 0x9a, 0xed, 0xf7, 0x76, 0xfc, 0x15, 0x68, 0x16, 0xeb, 0x4a, 0x6c, 0xeb,
- 0x2e, 0x12, 0x8f, 0xd4, 0xcf, 0xfe, 0x0c, 0xc7, 0x5c, 0x1d, 0x0b, 0x7e,
- 0x05, 0x32, 0xbe, 0x5e, 0xb0, 0x09, 0x2a, 0x42, 0xd5, 0xc9, 0x4e, 0x90,
- 0xb3, 0x59, 0x0d, 0xbb, 0x7a, 0x7e, 0xcd, 0xd5, 0x08, 0x5a, 0xb4, 0x7f,
- 0xd8, 0x1c, 0x69, 0x11, 0xf9, 0x27, 0x0f, 0x7b, 0x06, 0xaf, 0x54, 0x83,
- 0x18, 0x7b, 0xe1, 0xdd, 0x54, 0x7a, 0x51, 0x68, 0x6e, 0x77, 0xfc, 0xc6,
- 0xbf, 0x52, 0x4a, 0x66, 0x46, 0xa1, 0xb2, 0x67, 0x1a, 0xbb, 0xa3, 0x4f,
- 0x77, 0xa0, 0xbe, 0x5d, 0xff, 0xfc, 0x56, 0x0b, 0x43, 0x72, 0x77, 0x90,
- 0xca, 0x9e, 0xf9, 0xf2, 0x39, 0xf5, 0x0d, 0xa9, 0xf4, 0xea, 0xd7, 0xe7,
- 0xb3, 0x10, 0x2f, 0x30, 0x42, 0x37, 0x21, 0xcc, 0x30, 0x70, 0xc9, 0x86,
- 0x98, 0x0f, 0xcc, 0x58, 0x4d, 0x83, 0xbb, 0x7d, 0xe5, 0x1a, 0xa5, 0x37,
- 0x8d, 0xb6, 0xac, 0x32, 0x97, 0x00, 0x3a, 0x63, 0x71, 0x24, 0x1e, 0x9e,
- 0x37, 0xc4, 0xff, 0x74, 0xd4, 0x37, 0xc0, 0xe2, 0xfe, 0x88, 0x46, 0x60,
- 0x11, 0xdd, 0x08, 0x3f, 0x50, 0x36, 0xab, 0xb8, 0x7a, 0xa4, 0x95, 0x62,
- 0x6a, 0x6e, 0xb0, 0xca, 0x6a, 0x21, 0x5a, 0x69, 0xf3, 0xf3, 0xfb, 0x1d,
- 0x70, 0x39, 0x95, 0xf3, 0xa7, 0x6e, 0xa6, 0x81, 0x89, 0xa1, 0x88, 0xc5,
- 0x3b, 0x71, 0xca, 0xa3, 0x52, 0xee, 0x83, 0xbb, 0xfd, 0xa0, 0x77, 0xf4,
- 0xe4, 0x6f, 0xe7, 0x42, 0xdb, 0x6d, 0x4a, 0x99, 0x8a, 0x34, 0x48, 0xbc,
- 0x17, 0xdc, 0xe4, 0x80, 0x08, 0x22, 0xb6, 0xf2, 0x31, 0xc0, 0x3f, 0x04,
- 0x3e, 0xeb, 0x9f, 0x20, 0x79, 0xd6, 0xb8, 0x06, 0x64, 0x64, 0x02, 0x31,
- 0xd7, 0xa9, 0xcd, 0x52, 0xfb, 0x84, 0x45, 0x69, 0x09, 0x00, 0x2a, 0xdc,
- 0x55, 0x8b, 0xc4, 0x06, 0x46, 0x4b, 0xc0, 0x4a, 0x1d, 0x09, 0x5b, 0x39,
- 0x28, 0xfd, 0xa9, 0xab, 0xce, 0x00, 0xf9, 0x2e, 0x48, 0x4b, 0x26, 0xe6,
- 0x30, 0x4c, 0xa5, 0x58, 0xca, 0xb4, 0x44, 0x82, 0x4f, 0xe7, 0x91, 0x1e,
- 0x33, 0xc3, 0xb0, 0x93, 0xff, 0x11, 0xfc, 0x81, 0xd2, 0xca, 0x1f, 0x71,
- 0x29, 0xdd, 0x76, 0x4f, 0x92, 0x25, 0xaf, 0x1d, 0x81, 0xb7, 0x0f, 0x2f,
- 0x8c, 0xc3, 0x06, 0xcc, 0x2f, 0x27, 0xa3, 0x4a, 0xe4, 0x0e, 0x99, 0xba,
- 0x7c, 0x1e, 0x45, 0x1f, 0x7f, 0xaa, 0x19, 0x45, 0x96, 0xfd, 0xfc, 0x3d,
- 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x07, 0x30, 0x82, 0x01,
- 0x03, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04,
- 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x02, 0x30, 0x0e, 0x06,
- 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01,
- 0x06, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14,
- 0xe1, 0x66, 0xcf, 0x0e, 0xd1, 0xf1, 0xb3, 0x4b, 0xb7, 0x06, 0x20, 0x14,
- 0xfe, 0x87, 0x12, 0xd5, 0xf6, 0xfe, 0xfb, 0x3e, 0x30, 0x1f, 0x06, 0x03,
- 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x4e, 0x0b, 0xef,
- 0x1a, 0xa4, 0x40, 0x5b, 0xa5, 0x17, 0x69, 0x87, 0x30, 0xca, 0x34, 0x68,
- 0x43, 0xd0, 0x41, 0xae, 0xf2, 0x30, 0x69, 0x06, 0x08, 0x2b, 0x06, 0x01,
- 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x5d, 0x30, 0x5b, 0x30, 0x27, 0x06,
- 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x1b, 0x68,
- 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x73,
- 0x74, 0x61, 0x72, 0x74, 0x73, 0x73, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
- 0x63, 0x61, 0x30, 0x30, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07,
- 0x30, 0x02, 0x86, 0x24, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x61,
- 0x69, 0x61, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x73, 0x73, 0x6c, 0x2e,
- 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x63, 0x61,
- 0x2e, 0x63, 0x72, 0x74, 0x30, 0x32, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04,
- 0x2b, 0x30, 0x29, 0x30, 0x27, 0xa0, 0x25, 0xa0, 0x23, 0x86, 0x21, 0x68,
- 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x73, 0x74,
- 0x61, 0x72, 0x74, 0x73, 0x73, 0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73,
- 0x66, 0x73, 0x63, 0x61, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0d, 0x06, 0x09,
- 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03,
- 0x82, 0x02, 0x01, 0x00, 0xb6, 0x6d, 0xf8, 0x70, 0xfb, 0xe2, 0x0d, 0x4c,
- 0x98, 0xb3, 0x07, 0x49, 0x15, 0xf5, 0x04, 0xc4, 0x6c, 0xca, 0xca, 0xf5,
- 0x68, 0xa0, 0x08, 0xfe, 0x12, 0x6d, 0x9c, 0x04, 0x06, 0xc9, 0xad, 0x9a,
- 0x91, 0x52, 0x3e, 0x78, 0xc4, 0x5c, 0xee, 0x9f, 0x54, 0x1d, 0xee, 0xe3,
- 0xf1, 0x5e, 0x30, 0xc9, 0x49, 0xe1, 0x39, 0xe0, 0xa6, 0x9d, 0x36, 0x6c,
- 0x57, 0xfa, 0xe6, 0x34, 0x4f, 0x55, 0xe8, 0x87, 0xa8, 0x2c, 0xdd, 0x05,
- 0xf1, 0x58, 0x12, 0x91, 0xe8, 0xca, 0xce, 0x28, 0x78, 0x8f, 0xdf, 0x07,
- 0x85, 0x01, 0xa5, 0xdc, 0x45, 0x96, 0x05, 0xd4, 0x80, 0xb2, 0x2b, 0x05,
- 0x9a, 0xcb, 0x9a, 0xa5, 0x8b, 0xe0, 0x3a, 0x67, 0xe6, 0x73, 0x47, 0xbe,
- 0x4a, 0xfd, 0x27, 0xb1, 0x88, 0xef, 0xe6, 0xca, 0xcf, 0x8d, 0x0e, 0x26,
- 0x9f, 0xfa, 0x5f, 0x57, 0x78, 0xad, 0x6d, 0xfe, 0xae, 0x9b, 0x35, 0x08,
- 0xb1, 0xc3, 0xba, 0xc1, 0x00, 0x4a, 0x4b, 0x7d, 0x14, 0xbd, 0xf7, 0xf1,
- 0xd3, 0x55, 0x18, 0xac, 0xd0, 0x33, 0x70, 0x88, 0x6d, 0xc4, 0x09, 0x71,
- 0x14, 0xa6, 0x2b, 0x4f, 0x88, 0x81, 0xe7, 0x0b, 0x00, 0x37, 0xa9, 0x15,
- 0x7d, 0x7e, 0xd7, 0x01, 0x96, 0x3f, 0x2f, 0xaf, 0x7b, 0x62, 0xae, 0x0a,
- 0x4a, 0xbf, 0x4b, 0x39, 0x2e, 0x35, 0x10, 0x8b, 0xfe, 0x04, 0x39, 0xe4,
- 0x3c, 0x3a, 0x0c, 0x09, 0x56, 0x40, 0x3a, 0xb5, 0xf4, 0xc2, 0x68, 0x0c,
- 0xb5, 0xf9, 0x52, 0xcd, 0xee, 0x9d, 0xf8, 0x98, 0xfc, 0x78, 0xe7, 0x58,
- 0x47, 0x8f, 0x1c, 0x73, 0x58, 0x69, 0x33, 0xab, 0xff, 0xdd, 0xdf, 0x8e,
- 0x24, 0x01, 0x77, 0x98, 0x19, 0x3a, 0xb0, 0x66, 0x79, 0xbc, 0xe1, 0x08,
- 0xa3, 0x0e, 0x4f, 0xc1, 0x04, 0xb3, 0xf3, 0x01, 0xc8, 0xeb, 0xd3, 0x59,
- 0x1c, 0x35, 0xd2, 0x93, 0x1e, 0x70, 0x65, 0x82, 0x7f, 0xdb, 0xcf, 0xfb,
- 0xc8, 0x99, 0x12, 0x60, 0xc3, 0x44, 0x6f, 0x3a, 0x80, 0x4b, 0xd7, 0xbe,
- 0x21, 0xaa, 0x14, 0x7a, 0x64, 0xcb, 0xdd, 0x37, 0x43, 0x45, 0x5b, 0x32,
- 0x2e, 0x45, 0xf0, 0xd9, 0x59, 0x1f, 0x6b, 0x18, 0xf0, 0x7c, 0xe9, 0x55,
- 0x36, 0x19, 0x61, 0x5f, 0xb5, 0x7d, 0xf1, 0x8d, 0xbd, 0x88, 0xe4, 0x75,
- 0x4b, 0x98, 0xdd, 0x27, 0xb0, 0xe4, 0x84, 0x44, 0x2a, 0x61, 0x84, 0x57,
- 0x05, 0x82, 0x11, 0x1f, 0xaa, 0x35, 0x58, 0xf3, 0x20, 0x0e, 0xaf, 0x59,
- 0xef, 0xfa, 0x55, 0x72, 0x72, 0x0d, 0x26, 0xd0, 0x9b, 0x53, 0x49, 0xac,
- 0xce, 0x37, 0x2e, 0x65, 0x61, 0xff, 0xf6, 0xec, 0x1b, 0xea, 0xf6, 0xf1,
- 0xa6, 0xd3, 0xd1, 0xb5, 0x7b, 0xbe, 0x35, 0xf4, 0x22, 0xc1, 0xbc, 0x8d,
- 0x01, 0xbd, 0x68, 0x5e, 0x83, 0x0d, 0x2f, 0xec, 0xd6, 0xda, 0x63, 0x0c,
- 0x27, 0xd1, 0x54, 0x3e, 0xe4, 0xa8, 0xd3, 0xce, 0x4b, 0x32, 0xb8, 0x91,
- 0x94, 0xff, 0xfb, 0x5b, 0x49, 0x2d, 0x75, 0x18, 0xa8, 0xba, 0x71, 0x9a,
- 0x3b, 0xae, 0xd9, 0xc0, 0xa9, 0x4f, 0x87, 0x91, 0xed, 0x8b, 0x7b, 0x6b,
- 0x20, 0x98, 0x89, 0x39, 0x83, 0x4f, 0x80, 0xc4, 0x69, 0xcc, 0x17, 0xc9,
- 0xc8, 0x4e, 0xbe, 0xe4, 0xa9, 0xa5, 0x81, 0x76, 0x70, 0x06, 0x04, 0x32,
- 0xcd, 0x83, 0x65, 0xf4, 0xbc, 0x7d, 0x3e, 0x13, 0xbc, 0xd2, 0xe8, 0x6f,
- 0x63, 0xaa, 0xb5, 0x3b, 0xda, 0x8d, 0x86, 0x32, 0x82, 0x78, 0x9d, 0xd9,
- 0xcc, 0xff, 0xbf, 0x57, 0x64, 0x74, 0xed, 0x28, 0x3d, 0x44, 0x62, 0x15,
- 0x61, 0x4b, 0xf7, 0x94, 0xb0, 0x0d, 0x2a, 0x67, 0x1c, 0xf0, 0xcb, 0x9b,
- 0xa5, 0x92, 0xbf, 0xf8, 0x41, 0x5a, 0xc1, 0x3d, 0x60, 0xed, 0x9f, 0xbb,
- 0xb8, 0x6d, 0x9b, 0xce, 0xa9, 0x6a, 0x16, 0x3f, 0x7e, 0xea, 0x06, 0xf1,
-}
diff --git a/vendor/github.com/lucas-clemente/quic-go-certificates/createCertSets.rb b/vendor/github.com/lucas-clemente/quic-go-certificates/createCertSets.rb
deleted file mode 100644
index 6d28e83..0000000
--- a/vendor/github.com/lucas-clemente/quic-go-certificates/createCertSets.rb
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/usr/bin/env ruby
-#
-# Extract the common certificate sets from the chromium source to go
-#
-# Usage:
-# createCertSets.rb 1 ~/src/chromium/src/net/quic/crypto/common_cert_set_1*
-# createCertSets.rb 2 ~/src/chromium/src/net/quic/crypto/common_cert_set_2*
-
-n = ARGV.shift
-mainFile = ARGV.shift
-dataFiles = ARGV
-
-data = "package certsets\n"
-data += File.read(mainFile)
-data += (dataFiles.map{|p| File.read(p)}).join
-
-# Good enough
-data.gsub!(/\/\*(.*?)\*\//m, '')
-data.gsub!(/^#include.+/, '')
-data.gsub!(/^#if 0(.*?)\n#endif/m, '')
-
-data.gsub!(/^static const size_t kNumCerts.+/, '')
-data.gsub!(/static const size_t kLens[^}]+};/m, '')
-
-data.gsub!('static const unsigned char* const kCerts[] = {', "var CertSet#{n} = [][]byte{")
-data.gsub!('static const uint64_t kHash = UINT64_C', "const CertSet#{n}Hash uint64 = ")
-
-data.gsub!(/static const unsigned char kDERCert(\d+)\[\] = /, "var kDERCert\\1 = []byte")
-
-data.gsub!(/kDERCert(\d+)/, "certSet#{n}Cert\\1")
-
-File.write("cert_set_#{n}.go", data)
-
-system("gofmt -w -s cert_set_#{n}.go")
diff --git a/vendor/github.com/phuslu/quic-go/.editorconfig b/vendor/github.com/phuslu/quic-go/.editorconfig
deleted file mode 100644
index 538ba2b..0000000
--- a/vendor/github.com/phuslu/quic-go/.editorconfig
+++ /dev/null
@@ -1,5 +0,0 @@
-root = true
-
-[*]
-indent_style = tab
-indent_size = 2
diff --git a/vendor/github.com/phuslu/quic-go/.gitignore b/vendor/github.com/phuslu/quic-go/.gitignore
deleted file mode 100644
index 040b55a..0000000
--- a/vendor/github.com/phuslu/quic-go/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-debug
-debug.test
-main
diff --git a/vendor/github.com/phuslu/quic-go/.travis.yml b/vendor/github.com/phuslu/quic-go/.travis.yml
deleted file mode 100644
index dfb0d28..0000000
--- a/vendor/github.com/phuslu/quic-go/.travis.yml
+++ /dev/null
@@ -1,43 +0,0 @@
-dist: trusty
-group: travis_latest
-
-addons:
- hosts:
- - quic.clemente.io
-
-language: go
-
-go:
- - 1.9.2
- - 1.10beta1
-
-# first part of the GOARCH workaround
-# setting the GOARCH directly doesn't work, since the value will be overwritten later
-# so set it to a temporary environment variable first
-env:
- global:
- - TIMESCALE_FACTOR=20
- matrix:
- - TRAVIS_GOARCH=amd64 TESTMODE=unit
- - TRAVIS_GOARCH=amd64 TESTMODE=integration
- - TRAVIS_GOARCH=386 TESTMODE=unit
- - TRAVIS_GOARCH=386 TESTMODE=integration
-
-# second part of the GOARCH workaround
-# now actually set the GOARCH env variable to the value of the temporary variable set earlier
-before_install:
- - go get golang.org/x/tools/cmd/cover
- - go get github.com/onsi/ginkgo/ginkgo
- - go get github.com/onsi/gomega
- - export GOARCH=$TRAVIS_GOARCH
- - go env # for debugging
- - google-chrome --version
- - "printf \"quic.clemente.io certificate valid until: \" && openssl x509 -in example/fullchain.pem -enddate -noout | cut -d = -f 2"
- - "export DISPLAY=:99.0"
- - "Xvfb $DISPLAY &> /dev/null &"
-
-script:
- - .travis/script.sh
-
-after_success:
- - .travis/after_success.sh
diff --git a/vendor/github.com/phuslu/quic-go/Changelog.md b/vendor/github.com/phuslu/quic-go/Changelog.md
deleted file mode 100644
index 04f9843..0000000
--- a/vendor/github.com/phuslu/quic-go/Changelog.md
+++ /dev/null
@@ -1,25 +0,0 @@
-# Changelog
-
-## v0.7 (unreleased)
-
-- The lower boundary for packets included in ACKs is now derived, and the value sent in STOP_WAITING frames is ignored.
-- Remove `DialNonFWSecure` and `DialAddrNonFWSecure`.
-
-## v0.6.0 (2017-12-12)
-
-- Add support for QUIC 39, drop support for QUIC 35 - 37
-- Added `quic.Config` options for maximal flow control windows
-- Add a `quic.Config` option for QUIC versions
-- Add a `quic.Config` option to request omission of the connection ID from a server
-- Add a `quic.Config` option to configure the source address validation
-- Add a `quic.Config` option to configure the handshake timeout
-- Add a `quic.Config` option to configure the idle timeout
-- Add a `quic.Config` option to configure keep-alive
-- Rename the STK to Cookie
-- Implement `net.Conn`-style deadlines for streams
-- Remove the `tls.Config` from the `quic.Config`. The `tls.Config` must now be passed to the `Dial` and `Listen` functions as a separate parameter. See the [Godoc](https://godoc.org/github.com/lucas-clemente/quic-go) for details.
-- Changed the log level environment variable to only accept strings ("DEBUG", "INFO", "ERROR"), see [the wiki](https://github.com/lucas-clemente/quic-go/wiki/Logging) for more details.
-- Rename the `h2quic.QuicRoundTripper` to `h2quic.RoundTripper`
-- Changed `h2quic.Server.Serve()` to accept a `net.PacketConn`
-- Drop support for Go 1.7 and 1.8.
-- Various bugfixes
diff --git a/vendor/github.com/phuslu/quic-go/LICENSE b/vendor/github.com/phuslu/quic-go/LICENSE
deleted file mode 100644
index 51378be..0000000
--- a/vendor/github.com/phuslu/quic-go/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2016 the quic-go authors & Google, Inc.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/vendor/github.com/phuslu/quic-go/README.md b/vendor/github.com/phuslu/quic-go/README.md
deleted file mode 100644
index 1a6b1c2..0000000
--- a/vendor/github.com/phuslu/quic-go/README.md
+++ /dev/null
@@ -1,72 +0,0 @@
-# A QUIC implementation in pure Go
-
-
-
-[![Godoc Reference](https://img.shields.io/badge/godoc-reference-blue.svg?style=flat-square)](https://godoc.org/github.com/lucas-clemente/quic-go)
-[![Linux Build Status](https://img.shields.io/travis/lucas-clemente/quic-go/master.svg?style=flat-square&label=linux+build)](https://travis-ci.org/lucas-clemente/quic-go)
-[![Windows Build Status](https://img.shields.io/appveyor/ci/lucas-clemente/quic-go/master.svg?style=flat-square&label=windows+build)](https://ci.appveyor.com/project/lucas-clemente/quic-go/branch/master)
-[![Code Coverage](https://img.shields.io/codecov/c/github/lucas-clemente/quic-go/master.svg?style=flat-square)](https://codecov.io/gh/lucas-clemente/quic-go/)
-
-quic-go is an implementation of the [QUIC](https://en.wikipedia.org/wiki/QUIC) protocol in Go.
-
-## Roadmap
-
-quic-go is compatible with the current version(s) of Google Chrome and QUIC as deployed on Google's servers. We're actively tracking the development of the Chrome code to ensure compatibility as the protocol evolves. In that process, we're dropping support for old QUIC versions.
-As Google's QUIC versions are expected to converge towards the [IETF QUIC draft](https://github.com/quicwg/base-drafts), quic-go will eventually implement that draft.
-
-## Guides
-
-We currently support Go 1.9+.
-
-Installing and updating dependencies:
-
- go get -t -u ./...
-
-Running tests:
-
- go test ./...
-
-### Running the example server
-
- go run example/main.go -www /var/www/
-
-Using the `quic_client` from chromium:
-
- quic_client --host=127.0.0.1 --port=6121 --v=1 https://quic.clemente.io
-
-Using Chrome:
-
- /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --user-data-dir=/tmp/chrome --no-proxy-server --enable-quic --origin-to-force-quic-on=quic.clemente.io:443 --host-resolver-rules='MAP quic.clemente.io:443 127.0.0.1:6121' https://quic.clemente.io
-
-### QUIC without HTTP/2
-
-Take a look at [this echo example](example/echo/echo.go).
-
-### Using the example client
-
- go run example/client/main.go https://clemente.io
-
-## Usage
-
-### As a server
-
-See the [example server](example/main.go) or try out [Caddy](https://github.com/mholt/caddy) (from version 0.9, [instructions here](https://github.com/mholt/caddy/wiki/QUIC)). Starting a QUIC server is very similar to the standard lib http in go:
-
-```go
-http.Handle("/", http.FileServer(http.Dir(wwwDir)))
-h2quic.ListenAndServeQUIC("localhost:4242", "/path/to/cert/chain.pem", "/path/to/privkey.pem", nil)
-```
-
-### As a client
-
-See the [example client](example/client/main.go). Use a `h2quic.RoundTripper` as a `Transport` in a `http.Client`.
-
-```go
-http.Client{
- Transport: &h2quic.RoundTripper{},
-}
-```
-
-## Contributing
-
-We are always happy to welcome new contributors! We have a number of self-contained issues that are suitable for first-time contributors, they are tagged with [help wanted](https://github.com/lucas-clemente/quic-go/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22). If you have any questions, please feel free to reach out by opening an issue or leaving a comment.
diff --git a/vendor/github.com/phuslu/quic-go/ackhandler/_gen.go b/vendor/github.com/phuslu/quic-go/ackhandler/_gen.go
deleted file mode 100644
index 154515b..0000000
--- a/vendor/github.com/phuslu/quic-go/ackhandler/_gen.go
+++ /dev/null
@@ -1,7 +0,0 @@
-package main
-
-import (
- _ "github.com/clipperhouse/linkedlist"
- _ "github.com/clipperhouse/slice"
- _ "github.com/clipperhouse/stringer"
-)
diff --git a/vendor/github.com/phuslu/quic-go/ackhandler/interfaces.go b/vendor/github.com/phuslu/quic-go/ackhandler/interfaces.go
deleted file mode 100644
index 0ea9b83..0000000
--- a/vendor/github.com/phuslu/quic-go/ackhandler/interfaces.go
+++ /dev/null
@@ -1,35 +0,0 @@
-package ackhandler
-
-import (
- "time"
-
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/wire"
-)
-
-// SentPacketHandler handles ACKs received for outgoing packets
-type SentPacketHandler interface {
- // SentPacket may modify the packet
- SentPacket(packet *Packet) error
- ReceivedAck(ackFrame *wire.AckFrame, withPacketNumber protocol.PacketNumber, encLevel protocol.EncryptionLevel, recvTime time.Time) error
- SetHandshakeComplete()
-
- SendingAllowed() bool
- GetStopWaitingFrame(force bool) *wire.StopWaitingFrame
- GetLowestPacketNotConfirmedAcked() protocol.PacketNumber
- ShouldSendRetransmittablePacket() bool
- DequeuePacketForRetransmission() (packet *Packet)
- GetLeastUnacked() protocol.PacketNumber
-
- GetAlarmTimeout() time.Time
- OnAlarm()
-}
-
-// ReceivedPacketHandler handles ACKs needed to send for incoming packets
-type ReceivedPacketHandler interface {
- ReceivedPacket(packetNumber protocol.PacketNumber, shouldInstigateAck bool) error
- IgnoreBelow(protocol.PacketNumber)
-
- GetAlarmTimeout() time.Time
- GetAckFrame() *wire.AckFrame
-}
diff --git a/vendor/github.com/phuslu/quic-go/ackhandler/packet.go b/vendor/github.com/phuslu/quic-go/ackhandler/packet.go
deleted file mode 100644
index c8f304d..0000000
--- a/vendor/github.com/phuslu/quic-go/ackhandler/packet.go
+++ /dev/null
@@ -1,35 +0,0 @@
-package ackhandler
-
-import (
- "time"
-
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/wire"
-)
-
-// A Packet is a packet
-// +gen linkedlist
-type Packet struct {
- PacketNumber protocol.PacketNumber
- Frames []wire.Frame
- Length protocol.ByteCount
- EncryptionLevel protocol.EncryptionLevel
-
- largestAcked protocol.PacketNumber // if the packet contains an ACK, the LargestAcked value of that ACK
- sendTime time.Time
-}
-
-// GetFramesForRetransmission gets all the frames for retransmission
-func (p *Packet) GetFramesForRetransmission() []wire.Frame {
- var fs []wire.Frame
- for _, frame := range p.Frames {
- switch frame.(type) {
- case *wire.AckFrame:
- continue
- case *wire.StopWaitingFrame:
- continue
- }
- fs = append(fs, frame)
- }
- return fs
-}
diff --git a/vendor/github.com/phuslu/quic-go/ackhandler/packet_linkedlist.go b/vendor/github.com/phuslu/quic-go/ackhandler/packet_linkedlist.go
deleted file mode 100644
index a827b21..0000000
--- a/vendor/github.com/phuslu/quic-go/ackhandler/packet_linkedlist.go
+++ /dev/null
@@ -1,214 +0,0 @@
-// Generated by: main
-// TypeWriter: linkedlist
-// Directive: +gen on Packet
-
-package ackhandler
-
-// List is a modification of http://golang.org/pkg/container/list/
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// PacketElement is an element of a linked list.
-type PacketElement struct {
- // Next and previous pointers in the doubly-linked list of elements.
- // To simplify the implementation, internally a list l is implemented
- // as a ring, such that &l.root is both the next element of the last
- // list element (l.Back()) and the previous element of the first list
- // element (l.Front()).
- next, prev *PacketElement
-
- // The list to which this element belongs.
- list *PacketList
-
- // The value stored with this element.
- Value Packet
-}
-
-// Next returns the next list element or nil.
-func (e *PacketElement) Next() *PacketElement {
- if p := e.next; e.list != nil && p != &e.list.root {
- return p
- }
- return nil
-}
-
-// Prev returns the previous list element or nil.
-func (e *PacketElement) Prev() *PacketElement {
- if p := e.prev; e.list != nil && p != &e.list.root {
- return p
- }
- return nil
-}
-
-// PacketList represents a doubly linked list.
-// The zero value for PacketList is an empty list ready to use.
-type PacketList struct {
- root PacketElement // sentinel list element, only &root, root.prev, and root.next are used
- len int // current list length excluding (this) sentinel element
-}
-
-// Init initializes or clears list l.
-func (l *PacketList) Init() *PacketList {
- l.root.next = &l.root
- l.root.prev = &l.root
- l.len = 0
- return l
-}
-
-// NewPacketList returns an initialized list.
-func NewPacketList() *PacketList { return new(PacketList).Init() }
-
-// Len returns the number of elements of list l.
-// The complexity is O(1).
-func (l *PacketList) Len() int { return l.len }
-
-// Front returns the first element of list l or nil.
-func (l *PacketList) Front() *PacketElement {
- if l.len == 0 {
- return nil
- }
- return l.root.next
-}
-
-// Back returns the last element of list l or nil.
-func (l *PacketList) Back() *PacketElement {
- if l.len == 0 {
- return nil
- }
- return l.root.prev
-}
-
-// lazyInit lazily initializes a zero PacketList value.
-func (l *PacketList) lazyInit() {
- if l.root.next == nil {
- l.Init()
- }
-}
-
-// insert inserts e after at, increments l.len, and returns e.
-func (l *PacketList) insert(e, at *PacketElement) *PacketElement {
- n := at.next
- at.next = e
- e.prev = at
- e.next = n
- n.prev = e
- e.list = l
- l.len++
- return e
-}
-
-// insertValue is a convenience wrapper for insert(&PacketElement{Value: v}, at).
-func (l *PacketList) insertValue(v Packet, at *PacketElement) *PacketElement {
- return l.insert(&PacketElement{Value: v}, at)
-}
-
-// remove removes e from its list, decrements l.len, and returns e.
-func (l *PacketList) remove(e *PacketElement) *PacketElement {
- e.prev.next = e.next
- e.next.prev = e.prev
- e.next = nil // avoid memory leaks
- e.prev = nil // avoid memory leaks
- e.list = nil
- l.len--
- return e
-}
-
-// Remove removes e from l if e is an element of list l.
-// It returns the element value e.Value.
-func (l *PacketList) Remove(e *PacketElement) Packet {
- if e.list == l {
- // if e.list == l, l must have been initialized when e was inserted
- // in l or l == nil (e is a zero PacketElement) and l.remove will crash
- l.remove(e)
- }
- return e.Value
-}
-
-// PushFront inserts a new element e with value v at the front of list l and returns e.
-func (l *PacketList) PushFront(v Packet) *PacketElement {
- l.lazyInit()
- return l.insertValue(v, &l.root)
-}
-
-// PushBack inserts a new element e with value v at the back of list l and returns e.
-func (l *PacketList) PushBack(v Packet) *PacketElement {
- l.lazyInit()
- return l.insertValue(v, l.root.prev)
-}
-
-// InsertBefore inserts a new element e with value v immediately before mark and returns e.
-// If mark is not an element of l, the list is not modified.
-func (l *PacketList) InsertBefore(v Packet, mark *PacketElement) *PacketElement {
- if mark.list != l {
- return nil
- }
- // see comment in PacketList.Remove about initialization of l
- return l.insertValue(v, mark.prev)
-}
-
-// InsertAfter inserts a new element e with value v immediately after mark and returns e.
-// If mark is not an element of l, the list is not modified.
-func (l *PacketList) InsertAfter(v Packet, mark *PacketElement) *PacketElement {
- if mark.list != l {
- return nil
- }
- // see comment in PacketList.Remove about initialization of l
- return l.insertValue(v, mark)
-}
-
-// MoveToFront moves element e to the front of list l.
-// If e is not an element of l, the list is not modified.
-func (l *PacketList) MoveToFront(e *PacketElement) {
- if e.list != l || l.root.next == e {
- return
- }
- // see comment in PacketList.Remove about initialization of l
- l.insert(l.remove(e), &l.root)
-}
-
-// MoveToBack moves element e to the back of list l.
-// If e is not an element of l, the list is not modified.
-func (l *PacketList) MoveToBack(e *PacketElement) {
- if e.list != l || l.root.prev == e {
- return
- }
- // see comment in PacketList.Remove about initialization of l
- l.insert(l.remove(e), l.root.prev)
-}
-
-// MoveBefore moves element e to its new position before mark.
-// If e or mark is not an element of l, or e == mark, the list is not modified.
-func (l *PacketList) MoveBefore(e, mark *PacketElement) {
- if e.list != l || e == mark || mark.list != l {
- return
- }
- l.insert(l.remove(e), mark.prev)
-}
-
-// MoveAfter moves element e to its new position after mark.
-// If e is not an element of l, or e == mark, the list is not modified.
-func (l *PacketList) MoveAfter(e, mark *PacketElement) {
- if e.list != l || e == mark || mark.list != l {
- return
- }
- l.insert(l.remove(e), mark)
-}
-
-// PushBackList inserts a copy of an other list at the back of list l.
-// The lists l and other may be the same.
-func (l *PacketList) PushBackList(other *PacketList) {
- l.lazyInit()
- for i, e := other.Len(), other.Front(); i > 0; i, e = i-1, e.Next() {
- l.insertValue(e.Value, l.root.prev)
- }
-}
-
-// PushFrontList inserts a copy of an other list at the front of list l.
-// The lists l and other may be the same.
-func (l *PacketList) PushFrontList(other *PacketList) {
- l.lazyInit()
- for i, e := other.Len(), other.Back(); i > 0; i, e = i-1, e.Prev() {
- l.insertValue(e.Value, &l.root)
- }
-}
diff --git a/vendor/github.com/phuslu/quic-go/ackhandler/received_packet_handler.go b/vendor/github.com/phuslu/quic-go/ackhandler/received_packet_handler.go
deleted file mode 100644
index 6c05e07..0000000
--- a/vendor/github.com/phuslu/quic-go/ackhandler/received_packet_handler.go
+++ /dev/null
@@ -1,125 +0,0 @@
-package ackhandler
-
-import (
- "time"
-
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/wire"
-)
-
-type receivedPacketHandler struct {
- largestObserved protocol.PacketNumber
- ignoreBelow protocol.PacketNumber
- largestObservedReceivedTime time.Time
-
- packetHistory *receivedPacketHistory
-
- ackSendDelay time.Duration
-
- packetsReceivedSinceLastAck int
- retransmittablePacketsReceivedSinceLastAck int
- ackQueued bool
- ackAlarm time.Time
- lastAck *wire.AckFrame
-
- version protocol.VersionNumber
-}
-
-// NewReceivedPacketHandler creates a new receivedPacketHandler
-func NewReceivedPacketHandler(version protocol.VersionNumber) ReceivedPacketHandler {
- return &receivedPacketHandler{
- packetHistory: newReceivedPacketHistory(),
- ackSendDelay: protocol.AckSendDelay,
- version: version,
- }
-}
-
-func (h *receivedPacketHandler) ReceivedPacket(packetNumber protocol.PacketNumber, shouldInstigateAck bool) error {
- if packetNumber > h.largestObserved {
- h.largestObserved = packetNumber
- h.largestObservedReceivedTime = time.Now()
- }
-
- if packetNumber < h.ignoreBelow {
- return nil
- }
-
- if err := h.packetHistory.ReceivedPacket(packetNumber); err != nil {
- return err
- }
- h.maybeQueueAck(packetNumber, shouldInstigateAck)
- return nil
-}
-
-// IgnoreBelow sets a lower limit for acking packets.
-// Packets with packet numbers smaller than p will not be acked.
-func (h *receivedPacketHandler) IgnoreBelow(p protocol.PacketNumber) {
- h.ignoreBelow = p
- h.packetHistory.DeleteBelow(p)
-}
-
-func (h *receivedPacketHandler) maybeQueueAck(packetNumber protocol.PacketNumber, shouldInstigateAck bool) {
- h.packetsReceivedSinceLastAck++
-
- if shouldInstigateAck {
- h.retransmittablePacketsReceivedSinceLastAck++
- }
-
- // always ack the first packet
- if h.lastAck == nil {
- h.ackQueued = true
- }
-
- // if the packet number is smaller than the largest acked packet, it must have been reported missing with the last ACK
- // note that it cannot be a duplicate because they're already filtered out by ReceivedPacket()
- if h.lastAck != nil && packetNumber < h.lastAck.LargestAcked {
- h.ackQueued = true
- }
-
- // check if a new missing range above the previously was created
- if h.lastAck != nil && h.packetHistory.GetHighestAckRange().First > h.lastAck.LargestAcked {
- h.ackQueued = true
- }
-
- if !h.ackQueued && shouldInstigateAck {
- if h.retransmittablePacketsReceivedSinceLastAck >= protocol.RetransmittablePacketsBeforeAck {
- h.ackQueued = true
- } else {
- if h.ackAlarm.IsZero() {
- h.ackAlarm = time.Now().Add(h.ackSendDelay)
- }
- }
- }
-
- if h.ackQueued {
- // cancel the ack alarm
- h.ackAlarm = time.Time{}
- }
-}
-
-func (h *receivedPacketHandler) GetAckFrame() *wire.AckFrame {
- if !h.ackQueued && (h.ackAlarm.IsZero() || h.ackAlarm.After(time.Now())) {
- return nil
- }
-
- ackRanges := h.packetHistory.GetAckRanges()
- ack := &wire.AckFrame{
- LargestAcked: h.largestObserved,
- LowestAcked: ackRanges[len(ackRanges)-1].First,
- PacketReceivedTime: h.largestObservedReceivedTime,
- }
-
- if len(ackRanges) > 1 {
- ack.AckRanges = ackRanges
- }
-
- h.lastAck = ack
- h.ackAlarm = time.Time{}
- h.ackQueued = false
- h.packetsReceivedSinceLastAck = 0
- h.retransmittablePacketsReceivedSinceLastAck = 0
-
- return ack
-}
-
-func (h *receivedPacketHandler) GetAlarmTimeout() time.Time { return h.ackAlarm }
diff --git a/vendor/github.com/phuslu/quic-go/ackhandler/received_packet_history.go b/vendor/github.com/phuslu/quic-go/ackhandler/received_packet_history.go
deleted file mode 100644
index 72f75d0..0000000
--- a/vendor/github.com/phuslu/quic-go/ackhandler/received_packet_history.go
+++ /dev/null
@@ -1,118 +0,0 @@
-package ackhandler
-
-import (
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/utils"
- "github.com/phuslu/quic-go/internal/wire"
- "github.com/phuslu/quic-go/qerr"
-)
-
-// The receivedPacketHistory stores if a packet number has already been received.
-// It does not store packet contents.
-type receivedPacketHistory struct {
- ranges *utils.PacketIntervalList
-
- lowestInReceivedPacketNumbers protocol.PacketNumber
-}
-
-var errTooManyOutstandingReceivedAckRanges = qerr.Error(qerr.TooManyOutstandingReceivedPackets, "Too many outstanding received ACK ranges")
-
-// newReceivedPacketHistory creates a new received packet history
-func newReceivedPacketHistory() *receivedPacketHistory {
- return &receivedPacketHistory{
- ranges: utils.NewPacketIntervalList(),
- }
-}
-
-// ReceivedPacket registers a packet with PacketNumber p and updates the ranges
-func (h *receivedPacketHistory) ReceivedPacket(p protocol.PacketNumber) error {
- if h.ranges.Len() >= protocol.MaxTrackedReceivedAckRanges {
- return errTooManyOutstandingReceivedAckRanges
- }
-
- if h.ranges.Len() == 0 {
- h.ranges.PushBack(utils.PacketInterval{Start: p, End: p})
- return nil
- }
-
- for el := h.ranges.Back(); el != nil; el = el.Prev() {
- // p already included in an existing range. Nothing to do here
- if p >= el.Value.Start && p <= el.Value.End {
- return nil
- }
-
- var rangeExtended bool
- if el.Value.End == p-1 { // extend a range at the end
- rangeExtended = true
- el.Value.End = p
- } else if el.Value.Start == p+1 { // extend a range at the beginning
- rangeExtended = true
- el.Value.Start = p
- }
-
- // if a range was extended (either at the beginning or at the end, maybe it is possible to merge two ranges into one)
- if rangeExtended {
- prev := el.Prev()
- if prev != nil && prev.Value.End+1 == el.Value.Start { // merge two ranges
- prev.Value.End = el.Value.End
- h.ranges.Remove(el)
- return nil
- }
- return nil // if the two ranges were not merge, we're done here
- }
-
- // create a new range at the end
- if p > el.Value.End {
- h.ranges.InsertAfter(utils.PacketInterval{Start: p, End: p}, el)
- return nil
- }
- }
-
- // create a new range at the beginning
- h.ranges.InsertBefore(utils.PacketInterval{Start: p, End: p}, h.ranges.Front())
-
- return nil
-}
-
-// DeleteBelow deletes all entries below (but not including) p
-func (h *receivedPacketHistory) DeleteBelow(p protocol.PacketNumber) {
- h.lowestInReceivedPacketNumbers = utils.MaxPacketNumber(h.lowestInReceivedPacketNumbers, p)
-
- nextEl := h.ranges.Front()
- for el := h.ranges.Front(); nextEl != nil; el = nextEl {
- nextEl = el.Next()
-
- if p > el.Value.Start && p <= el.Value.End {
- el.Value.Start = p
- } else if el.Value.End < p { // delete a whole range
- h.ranges.Remove(el)
- } else { // no ranges affected. Nothing to do
- return
- }
- }
-}
-
-// GetAckRanges gets a slice of all AckRanges that can be used in an AckFrame
-func (h *receivedPacketHistory) GetAckRanges() []wire.AckRange {
- if h.ranges.Len() == 0 {
- return nil
- }
-
- ackRanges := make([]wire.AckRange, h.ranges.Len())
- i := 0
- for el := h.ranges.Back(); el != nil; el = el.Prev() {
- ackRanges[i] = wire.AckRange{First: el.Value.Start, Last: el.Value.End}
- i++
- }
- return ackRanges
-}
-
-func (h *receivedPacketHistory) GetHighestAckRange() wire.AckRange {
- ackRange := wire.AckRange{}
- if h.ranges.Len() > 0 {
- r := h.ranges.Back().Value
- ackRange.First = r.Start
- ackRange.Last = r.End
- }
- return ackRange
-}
diff --git a/vendor/github.com/phuslu/quic-go/ackhandler/retransmittable.go b/vendor/github.com/phuslu/quic-go/ackhandler/retransmittable.go
deleted file mode 100644
index 6c7c8cf..0000000
--- a/vendor/github.com/phuslu/quic-go/ackhandler/retransmittable.go
+++ /dev/null
@@ -1,36 +0,0 @@
-package ackhandler
-
-import "github.com/phuslu/quic-go/internal/wire"
-
-// Returns a new slice with all non-retransmittable frames deleted.
-func stripNonRetransmittableFrames(fs []wire.Frame) []wire.Frame {
- res := make([]wire.Frame, 0, len(fs))
- for _, f := range fs {
- if IsFrameRetransmittable(f) {
- res = append(res, f)
- }
- }
- return res
-}
-
-// IsFrameRetransmittable returns true if the frame should be retransmitted.
-func IsFrameRetransmittable(f wire.Frame) bool {
- switch f.(type) {
- case *wire.StopWaitingFrame:
- return false
- case *wire.AckFrame:
- return false
- default:
- return true
- }
-}
-
-// HasRetransmittableFrames returns true if at least one frame is retransmittable.
-func HasRetransmittableFrames(fs []wire.Frame) bool {
- for _, f := range fs {
- if IsFrameRetransmittable(f) {
- return true
- }
- }
- return false
-}
diff --git a/vendor/github.com/phuslu/quic-go/ackhandler/sent_packet_handler.go b/vendor/github.com/phuslu/quic-go/ackhandler/sent_packet_handler.go
deleted file mode 100644
index 78ca97d..0000000
--- a/vendor/github.com/phuslu/quic-go/ackhandler/sent_packet_handler.go
+++ /dev/null
@@ -1,469 +0,0 @@
-package ackhandler
-
-import (
- "errors"
- "fmt"
- "time"
-
- "github.com/phuslu/quic-go/congestion"
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/utils"
- "github.com/phuslu/quic-go/internal/wire"
- "github.com/phuslu/quic-go/qerr"
-)
-
-const (
- // Maximum reordering in time space before time based loss detection considers a packet lost.
- // In fraction of an RTT.
- timeReorderingFraction = 1.0 / 8
- // The default RTT used before an RTT sample is taken.
- // Note: This constant is also defined in the congestion package.
- defaultInitialRTT = 100 * time.Millisecond
- // defaultRTOTimeout is the RTO time on new connections
- defaultRTOTimeout = 500 * time.Millisecond
- // Minimum time in the future a tail loss probe alarm may be set for.
- minTPLTimeout = 10 * time.Millisecond
- // Minimum time in the future an RTO alarm may be set for.
- minRTOTimeout = 200 * time.Millisecond
- // maxRTOTimeout is the maximum RTO time
- maxRTOTimeout = 60 * time.Second
-)
-
-// ErrDuplicateOrOutOfOrderAck occurs when a duplicate or an out-of-order ACK is received
-var ErrDuplicateOrOutOfOrderAck = errors.New("SentPacketHandler: Duplicate or out-of-order ACK")
-
-type sentPacketHandler struct {
- lastSentPacketNumber protocol.PacketNumber
- skippedPackets []protocol.PacketNumber
-
- numNonRetransmittablePackets int // number of non-retransmittable packets since the last retransmittable packet
-
- largestAcked protocol.PacketNumber
- largestReceivedPacketWithAck protocol.PacketNumber
- // lowestPacketNotConfirmedAcked is the lowest packet number that we sent an ACK for, but haven't received confirmation, that this ACK actually arrived
- // example: we send an ACK for packets 90-100 with packet number 20
- // once we receive an ACK from the peer for packet 20, the lowestPacketNotConfirmedAcked is 101
- lowestPacketNotConfirmedAcked protocol.PacketNumber
-
- packetHistory *PacketList
- stopWaitingManager stopWaitingManager
-
- retransmissionQueue []*Packet
-
- bytesInFlight protocol.ByteCount
-
- congestion congestion.SendAlgorithm
- rttStats *congestion.RTTStats
-
- handshakeComplete bool
- // The number of times the handshake packets have been retransmitted without receiving an ack.
- handshakeCount uint32
-
- // The number of times an RTO has been sent without receiving an ack.
- rtoCount uint32
-
- // The time at which the next packet will be considered lost based on early transmit or exceeding the reordering window in time.
- lossTime time.Time
-
- // The alarm timeout
- alarm time.Time
-}
-
-// NewSentPacketHandler creates a new sentPacketHandler
-func NewSentPacketHandler(rttStats *congestion.RTTStats) SentPacketHandler {
- congestion := congestion.NewCubicSender(
- congestion.DefaultClock{},
- rttStats,
- false, /* don't use reno since chromium doesn't (why?) */
- protocol.InitialCongestionWindow,
- protocol.DefaultMaxCongestionWindow,
- )
-
- return &sentPacketHandler{
- packetHistory: NewPacketList(),
- stopWaitingManager: stopWaitingManager{},
- rttStats: rttStats,
- congestion: congestion,
- }
-}
-
-func (h *sentPacketHandler) lowestUnacked() protocol.PacketNumber {
- if f := h.packetHistory.Front(); f != nil {
- return f.Value.PacketNumber
- }
- return h.largestAcked + 1
-}
-
-func (h *sentPacketHandler) ShouldSendRetransmittablePacket() bool {
- return h.numNonRetransmittablePackets >= protocol.MaxNonRetransmittablePackets
-}
-
-func (h *sentPacketHandler) SetHandshakeComplete() {
- var queue []*Packet
- for _, packet := range h.retransmissionQueue {
- if packet.EncryptionLevel == protocol.EncryptionForwardSecure {
- queue = append(queue, packet)
- }
- }
- h.retransmissionQueue = queue
- h.handshakeComplete = true
-}
-
-func (h *sentPacketHandler) SentPacket(packet *Packet) error {
- if protocol.PacketNumber(len(h.retransmissionQueue)+h.packetHistory.Len()+1) > protocol.MaxTrackedSentPackets {
- return errors.New("Too many outstanding non-acked and non-retransmitted packets")
- }
-
- for p := h.lastSentPacketNumber + 1; p < packet.PacketNumber; p++ {
- h.skippedPackets = append(h.skippedPackets, p)
-
- if len(h.skippedPackets) > protocol.MaxTrackedSkippedPackets {
- h.skippedPackets = h.skippedPackets[1:]
- }
- }
-
- h.lastSentPacketNumber = packet.PacketNumber
- now := time.Now()
-
- var largestAcked protocol.PacketNumber
- if len(packet.Frames) > 0 {
- if ackFrame, ok := packet.Frames[0].(*wire.AckFrame); ok {
- largestAcked = ackFrame.LargestAcked
- }
- }
-
- packet.Frames = stripNonRetransmittableFrames(packet.Frames)
- isRetransmittable := len(packet.Frames) != 0
-
- if isRetransmittable {
- packet.sendTime = now
- packet.largestAcked = largestAcked
- h.bytesInFlight += packet.Length
- h.packetHistory.PushBack(*packet)
- h.numNonRetransmittablePackets = 0
- } else {
- h.numNonRetransmittablePackets++
- }
-
- h.congestion.OnPacketSent(
- now,
- h.bytesInFlight,
- packet.PacketNumber,
- packet.Length,
- isRetransmittable,
- )
-
- h.updateLossDetectionAlarm()
- return nil
-}
-
-func (h *sentPacketHandler) ReceivedAck(ackFrame *wire.AckFrame, withPacketNumber protocol.PacketNumber, encLevel protocol.EncryptionLevel, rcvTime time.Time) error {
- if ackFrame.LargestAcked > h.lastSentPacketNumber {
- return qerr.Error(qerr.InvalidAckData, "Received ACK for an unsent package")
- }
-
- // duplicate or out-of-order ACK
- // if withPacketNumber <= h.largestReceivedPacketWithAck && withPacketNumber != 0 {
- if withPacketNumber <= h.largestReceivedPacketWithAck {
- return ErrDuplicateOrOutOfOrderAck
- }
- h.largestReceivedPacketWithAck = withPacketNumber
-
- // ignore repeated ACK (ACKs that don't have a higher LargestAcked than the last ACK)
- if ackFrame.LargestAcked < h.lowestUnacked() {
- return nil
- }
- h.largestAcked = ackFrame.LargestAcked
-
- if h.skippedPacketsAcked(ackFrame) {
- return qerr.Error(qerr.InvalidAckData, "Received an ACK for a skipped packet number")
- }
-
- rttUpdated := h.maybeUpdateRTT(ackFrame.LargestAcked, ackFrame.DelayTime, rcvTime)
-
- if rttUpdated {
- h.congestion.MaybeExitSlowStart()
- }
-
- ackedPackets, err := h.determineNewlyAckedPackets(ackFrame)
- if err != nil {
- return err
- }
-
- if len(ackedPackets) > 0 {
- for _, p := range ackedPackets {
- if encLevel < p.Value.EncryptionLevel {
- return fmt.Errorf("Received ACK with encryption level %s that acks a packet %d (encryption level %s)", encLevel, p.Value.PacketNumber, p.Value.EncryptionLevel)
- }
- // largestAcked == 0 either means that the packet didn't contain an ACK, or it just acked packet 0
- // It is safe to ignore the corner case of packets that just acked packet 0, because
- // the lowestPacketNotConfirmedAcked is only used to limit the number of ACK ranges we will send.
- if p.Value.largestAcked != 0 {
- h.lowestPacketNotConfirmedAcked = utils.MaxPacketNumber(h.lowestPacketNotConfirmedAcked, p.Value.largestAcked+1)
- }
- h.onPacketAcked(p)
- h.congestion.OnPacketAcked(p.Value.PacketNumber, p.Value.Length, h.bytesInFlight)
- }
- }
-
- h.detectLostPackets()
- h.updateLossDetectionAlarm()
-
- h.garbageCollectSkippedPackets()
- h.stopWaitingManager.ReceivedAck(ackFrame)
-
- return nil
-}
-
-func (h *sentPacketHandler) GetLowestPacketNotConfirmedAcked() protocol.PacketNumber {
- return h.lowestPacketNotConfirmedAcked
-}
-
-func (h *sentPacketHandler) determineNewlyAckedPackets(ackFrame *wire.AckFrame) ([]*PacketElement, error) {
- var ackedPackets []*PacketElement
- ackRangeIndex := 0
- for el := h.packetHistory.Front(); el != nil; el = el.Next() {
- packet := el.Value
- packetNumber := packet.PacketNumber
-
- // Ignore packets below the LowestAcked
- if packetNumber < ackFrame.LowestAcked {
- continue
- }
- // Break after LargestAcked is reached
- if packetNumber > ackFrame.LargestAcked {
- break
- }
-
- if ackFrame.HasMissingRanges() {
- ackRange := ackFrame.AckRanges[len(ackFrame.AckRanges)-1-ackRangeIndex]
-
- for packetNumber > ackRange.Last && ackRangeIndex < len(ackFrame.AckRanges)-1 {
- ackRangeIndex++
- ackRange = ackFrame.AckRanges[len(ackFrame.AckRanges)-1-ackRangeIndex]
- }
-
- if packetNumber >= ackRange.First { // packet i contained in ACK range
- if packetNumber > ackRange.Last {
- return nil, fmt.Errorf("BUG: ackhandler would have acked wrong packet 0x%x, while evaluating range 0x%x -> 0x%x", packetNumber, ackRange.First, ackRange.Last)
- }
- ackedPackets = append(ackedPackets, el)
- }
- } else {
- ackedPackets = append(ackedPackets, el)
- }
- }
- return ackedPackets, nil
-}
-
-func (h *sentPacketHandler) maybeUpdateRTT(largestAcked protocol.PacketNumber, ackDelay time.Duration, rcvTime time.Time) bool {
- for el := h.packetHistory.Front(); el != nil; el = el.Next() {
- packet := el.Value
- if packet.PacketNumber == largestAcked {
- h.rttStats.UpdateRTT(rcvTime.Sub(packet.sendTime), ackDelay, time.Now())
- return true
- }
- // Packets are sorted by number, so we can stop searching
- if packet.PacketNumber > largestAcked {
- break
- }
- }
- return false
-}
-
-func (h *sentPacketHandler) updateLossDetectionAlarm() {
- // Cancel the alarm if no packets are outstanding
- if h.packetHistory.Len() == 0 {
- h.alarm = time.Time{}
- return
- }
-
- // TODO(#497): TLP
- if !h.handshakeComplete {
- h.alarm = time.Now().Add(h.computeHandshakeTimeout())
- } else if !h.lossTime.IsZero() {
- // Early retransmit timer or time loss detection.
- h.alarm = h.lossTime
- } else {
- // RTO
- h.alarm = time.Now().Add(h.computeRTOTimeout())
- }
-}
-
-func (h *sentPacketHandler) detectLostPackets() {
- h.lossTime = time.Time{}
- now := time.Now()
-
- maxRTT := float64(utils.MaxDuration(h.rttStats.LatestRTT(), h.rttStats.SmoothedRTT()))
- delayUntilLost := time.Duration((1.0 + timeReorderingFraction) * maxRTT)
-
- var lostPackets []*PacketElement
- for el := h.packetHistory.Front(); el != nil; el = el.Next() {
- packet := el.Value
-
- if packet.PacketNumber > h.largestAcked {
- break
- }
-
- timeSinceSent := now.Sub(packet.sendTime)
- if timeSinceSent > delayUntilLost {
- lostPackets = append(lostPackets, el)
- } else if h.lossTime.IsZero() {
- // Note: This conditional is only entered once per call
- h.lossTime = now.Add(delayUntilLost - timeSinceSent)
- }
- }
-
- if len(lostPackets) > 0 {
- for _, p := range lostPackets {
- h.queuePacketForRetransmission(p)
- h.congestion.OnPacketLost(p.Value.PacketNumber, p.Value.Length, h.bytesInFlight)
- }
- }
-}
-
-func (h *sentPacketHandler) OnAlarm() {
- // TODO(#497): TLP
- if !h.handshakeComplete {
- h.queueHandshakePacketsForRetransmission()
- h.handshakeCount++
- } else if !h.lossTime.IsZero() {
- // Early retransmit or time loss detection
- h.detectLostPackets()
- } else {
- // RTO
- h.retransmitOldestTwoPackets()
- h.rtoCount++
- }
-
- h.updateLossDetectionAlarm()
-}
-
-func (h *sentPacketHandler) GetAlarmTimeout() time.Time {
- return h.alarm
-}
-
-func (h *sentPacketHandler) onPacketAcked(packetElement *PacketElement) {
- h.bytesInFlight -= packetElement.Value.Length
- h.rtoCount = 0
- h.handshakeCount = 0
- // TODO(#497): h.tlpCount = 0
- h.packetHistory.Remove(packetElement)
-}
-
-func (h *sentPacketHandler) DequeuePacketForRetransmission() *Packet {
- if len(h.retransmissionQueue) == 0 {
- return nil
- }
- packet := h.retransmissionQueue[0]
- // Shift the slice and don't retain anything that isn't needed.
- copy(h.retransmissionQueue, h.retransmissionQueue[1:])
- h.retransmissionQueue[len(h.retransmissionQueue)-1] = nil
- h.retransmissionQueue = h.retransmissionQueue[:len(h.retransmissionQueue)-1]
- return packet
-}
-
-func (h *sentPacketHandler) GetLeastUnacked() protocol.PacketNumber {
- return h.lowestUnacked()
-}
-
-func (h *sentPacketHandler) GetStopWaitingFrame(force bool) *wire.StopWaitingFrame {
- return h.stopWaitingManager.GetStopWaitingFrame(force)
-}
-
-func (h *sentPacketHandler) SendingAllowed() bool {
- cwnd := h.congestion.GetCongestionWindow()
- congestionLimited := h.bytesInFlight > cwnd
- maxTrackedLimited := protocol.PacketNumber(len(h.retransmissionQueue)+h.packetHistory.Len()) >= protocol.MaxTrackedSentPackets
- if congestionLimited {
- utils.Debugf("Congestion limited: bytes in flight %d, window %d", h.bytesInFlight, cwnd)
- }
- // Workaround for #555:
- // Always allow sending of retransmissions. This should probably be limited
- // to RTOs, but we currently don't have a nice way of distinguishing them.
- haveRetransmissions := len(h.retransmissionQueue) > 0
- return !maxTrackedLimited && (!congestionLimited || haveRetransmissions)
-}
-
-func (h *sentPacketHandler) retransmitOldestTwoPackets() {
- if p := h.packetHistory.Front(); p != nil {
- h.queueRTO(p)
- }
- if p := h.packetHistory.Front(); p != nil {
- h.queueRTO(p)
- }
-}
-
-func (h *sentPacketHandler) queueRTO(el *PacketElement) {
- packet := &el.Value
- utils.Debugf(
- "\tQueueing packet 0x%x for retransmission (RTO), %d outstanding",
- packet.PacketNumber,
- h.packetHistory.Len(),
- )
- h.queuePacketForRetransmission(el)
- h.congestion.OnPacketLost(packet.PacketNumber, packet.Length, h.bytesInFlight)
- h.congestion.OnRetransmissionTimeout(true)
-}
-
-func (h *sentPacketHandler) queueHandshakePacketsForRetransmission() {
- var handshakePackets []*PacketElement
- for el := h.packetHistory.Front(); el != nil; el = el.Next() {
- if el.Value.EncryptionLevel < protocol.EncryptionForwardSecure {
- handshakePackets = append(handshakePackets, el)
- }
- }
- for _, el := range handshakePackets {
- h.queuePacketForRetransmission(el)
- }
-}
-
-func (h *sentPacketHandler) queuePacketForRetransmission(packetElement *PacketElement) {
- packet := &packetElement.Value
- h.bytesInFlight -= packet.Length
- h.retransmissionQueue = append(h.retransmissionQueue, packet)
- h.packetHistory.Remove(packetElement)
- h.stopWaitingManager.QueuedRetransmissionForPacketNumber(packet.PacketNumber)
-}
-
-func (h *sentPacketHandler) computeHandshakeTimeout() time.Duration {
- duration := 2 * h.rttStats.SmoothedRTT()
- if duration == 0 {
- duration = 2 * defaultInitialRTT
- }
- duration = utils.MaxDuration(duration, minTPLTimeout)
- // exponential backoff
- // There's an implicit limit to this set by the handshake timeout.
- return duration << h.handshakeCount
-}
-
-func (h *sentPacketHandler) computeRTOTimeout() time.Duration {
- rto := h.congestion.RetransmissionDelay()
- if rto == 0 {
- rto = defaultRTOTimeout
- }
- rto = utils.MaxDuration(rto, minRTOTimeout)
- // Exponential backoff
- rto = rto << h.rtoCount
- return utils.MinDuration(rto, maxRTOTimeout)
-}
-
-func (h *sentPacketHandler) skippedPacketsAcked(ackFrame *wire.AckFrame) bool {
- for _, p := range h.skippedPackets {
- if ackFrame.AcksPacket(p) {
- return true
- }
- }
- return false
-}
-
-func (h *sentPacketHandler) garbageCollectSkippedPackets() {
- lowestUnacked := h.lowestUnacked()
- deleteIndex := 0
- for i, p := range h.skippedPackets {
- if p < lowestUnacked {
- deleteIndex = i + 1
- }
- }
- h.skippedPackets = h.skippedPackets[deleteIndex:]
-}
diff --git a/vendor/github.com/phuslu/quic-go/ackhandler/stop_waiting_manager.go b/vendor/github.com/phuslu/quic-go/ackhandler/stop_waiting_manager.go
deleted file mode 100644
index ab380f7..0000000
--- a/vendor/github.com/phuslu/quic-go/ackhandler/stop_waiting_manager.go
+++ /dev/null
@@ -1,42 +0,0 @@
-package ackhandler
-
-import (
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/wire"
-)
-
-// This stopWaitingManager is not supposed to satisfy the StopWaitingManager interface, which is a remnant of the legacy AckHandler, and should be remove once we drop support for QUIC 33
-type stopWaitingManager struct {
- largestLeastUnackedSent protocol.PacketNumber
- nextLeastUnacked protocol.PacketNumber
-
- lastStopWaitingFrame *wire.StopWaitingFrame
-}
-
-func (s *stopWaitingManager) GetStopWaitingFrame(force bool) *wire.StopWaitingFrame {
- if s.nextLeastUnacked <= s.largestLeastUnackedSent {
- if force {
- return s.lastStopWaitingFrame
- }
- return nil
- }
-
- s.largestLeastUnackedSent = s.nextLeastUnacked
- swf := &wire.StopWaitingFrame{
- LeastUnacked: s.nextLeastUnacked,
- }
- s.lastStopWaitingFrame = swf
- return swf
-}
-
-func (s *stopWaitingManager) ReceivedAck(ack *wire.AckFrame) {
- if ack.LargestAcked >= s.nextLeastUnacked {
- s.nextLeastUnacked = ack.LargestAcked + 1
- }
-}
-
-func (s *stopWaitingManager) QueuedRetransmissionForPacketNumber(p protocol.PacketNumber) {
- if p >= s.nextLeastUnacked {
- s.nextLeastUnacked = p + 1
- }
-}
diff --git a/vendor/github.com/phuslu/quic-go/appveyor.yml b/vendor/github.com/phuslu/quic-go/appveyor.yml
deleted file mode 100644
index bcd3ac5..0000000
--- a/vendor/github.com/phuslu/quic-go/appveyor.yml
+++ /dev/null
@@ -1,35 +0,0 @@
-version: "{build}"
-
-os: Windows Server 2012 R2
-
-environment:
- GOPATH: c:\gopath
- CGO_ENABLED: 0
- TIMESCALE_FACTOR: 20
- matrix:
- - GOARCH: 386
- - GOARCH: amd64
-
-clone_folder: c:\gopath\src\github.com\lucas-clemente\quic-go
-
-install:
- - rmdir c:\go /s /q
- - appveyor DownloadFile https://storage.googleapis.com/golang/go1.9.2.windows-amd64.zip
- - 7z x go1.9.2.windows-amd64.zip -y -oC:\ > NUL
- - set PATH=%PATH%;%GOPATH%\bin\windows_%GOARCH%;%GOPATH%\bin
- - echo %PATH%
- - echo %GOPATH%
- - git submodule update --init --recursive
- - go get github.com/onsi/ginkgo/ginkgo
- - go get github.com/onsi/gomega
- - go version
- - go env
- - go get -v -t ./...
-
-build_script:
- - ginkgo -r -v -randomizeAllSpecs -randomizeSuites -trace -skipPackage benchmark,integrationtests
- - ginkgo -randomizeAllSpecs -randomizeSuites -trace benchmark -- -samples=1
-
-test: off
-
-deploy: off
diff --git a/vendor/github.com/phuslu/quic-go/buffer_pool.go b/vendor/github.com/phuslu/quic-go/buffer_pool.go
deleted file mode 100644
index 0dec407..0000000
--- a/vendor/github.com/phuslu/quic-go/buffer_pool.go
+++ /dev/null
@@ -1,26 +0,0 @@
-package quic
-
-import (
- "sync"
-
- "github.com/phuslu/quic-go/internal/protocol"
-)
-
-var bufferPool sync.Pool
-
-func getPacketBuffer() []byte {
- return bufferPool.Get().([]byte)
-}
-
-func putPacketBuffer(buf []byte) {
- if cap(buf) != int(protocol.MaxReceivePacketSize) {
- panic("putPacketBuffer called with packet of wrong size!")
- }
- bufferPool.Put(buf[:0])
-}
-
-func init() {
- bufferPool.New = func() interface{} {
- return make([]byte, 0, protocol.MaxReceivePacketSize)
- }
-}
diff --git a/vendor/github.com/phuslu/quic-go/client.go b/vendor/github.com/phuslu/quic-go/client.go
deleted file mode 100644
index 53d28bc..0000000
--- a/vendor/github.com/phuslu/quic-go/client.go
+++ /dev/null
@@ -1,402 +0,0 @@
-package quic
-
-import (
- "bytes"
- "crypto/tls"
- "errors"
- "fmt"
- "net"
- "strings"
- "sync"
- "time"
-
- "github.com/phuslu/quic-go/internal/handshake"
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/utils"
- "github.com/phuslu/quic-go/internal/wire"
- "github.com/phuslu/quic-go/qerr"
-)
-
-type client struct {
- mutex sync.Mutex
-
- conn connection
- hostname string
-
- versionNegotiationChan chan struct{} // the versionNegotiationChan is closed as soon as the server accepted the suggested version
- versionNegotiated bool // has the server accepted our version
- receivedVersionNegotiationPacket bool
- negotiatedVersions []protocol.VersionNumber // the list of versions from the version negotiation packet
-
- tlsConf *tls.Config
- config *Config
- tls handshake.MintTLS // only used when using TLS
-
- connectionID protocol.ConnectionID
-
- initialVersion protocol.VersionNumber
- version protocol.VersionNumber
-
- session packetHandler
-}
-
-var (
- // make it possible to mock connection ID generation in the tests
- generateConnectionID = utils.GenerateConnectionID
- errCloseSessionForNewVersion = errors.New("closing session in order to recreate it with a new version")
-)
-
-// DialAddr establishes a new QUIC connection to a server.
-// The hostname for SNI is taken from the given address.
-func DialAddr(addr string, tlsConf *tls.Config, config *Config) (Session, error) {
- udpAddr, err := net.ResolveUDPAddr("udp", addr)
- if err != nil {
- return nil, err
- }
- udpConn, err := net.ListenUDP("udp", &net.UDPAddr{IP: net.IPv4zero, Port: 0})
- if err != nil {
- return nil, err
- }
- return Dial(udpConn, udpAddr, addr, tlsConf, config)
-}
-
-// Dial establishes a new QUIC connection to a server using a net.PacketConn.
-// The host parameter is used for SNI.
-func Dial(
- pconn net.PacketConn,
- remoteAddr net.Addr,
- host string,
- tlsConf *tls.Config,
- config *Config,
-) (Session, error) {
- connID, err := generateConnectionID()
- if err != nil {
- return nil, err
- }
-
- var hostname string
- if tlsConf != nil {
- hostname = tlsConf.ServerName
- }
- if hostname == "" {
- hostname, _, err = net.SplitHostPort(host)
- if err != nil {
- return nil, err
- }
- }
-
- clientConfig := populateClientConfig(config)
- c := &client{
- conn: &conn{pconn: pconn, currentAddr: remoteAddr},
- connectionID: connID,
- hostname: hostname,
- tlsConf: tlsConf,
- config: clientConfig,
- version: clientConfig.Versions[0],
- versionNegotiationChan: make(chan struct{}),
- }
-
- utils.Infof("Starting new connection to %s (%s -> %s), connectionID %x, version %s", hostname, c.conn.LocalAddr().String(), c.conn.RemoteAddr().String(), c.connectionID, c.version)
-
- if err := c.dial(); err != nil {
- return nil, err
- }
- return c.session, nil
-}
-
-// populateClientConfig populates fields in the quic.Config with their default values, if none are set
-// it may be called with nil
-func populateClientConfig(config *Config) *Config {
- if config == nil {
- config = &Config{}
- }
- versions := config.Versions
- if len(versions) == 0 {
- versions = protocol.SupportedVersions
- }
-
- handshakeTimeout := protocol.DefaultHandshakeTimeout
- if config.HandshakeTimeout != 0 {
- handshakeTimeout = config.HandshakeTimeout
- }
- idleTimeout := protocol.DefaultIdleTimeout
- if config.IdleTimeout != 0 {
- idleTimeout = config.IdleTimeout
- }
-
- maxReceiveStreamFlowControlWindow := config.MaxReceiveStreamFlowControlWindow
- if maxReceiveStreamFlowControlWindow == 0 {
- maxReceiveStreamFlowControlWindow = protocol.DefaultMaxReceiveStreamFlowControlWindowClient
- }
- maxReceiveConnectionFlowControlWindow := config.MaxReceiveConnectionFlowControlWindow
- if maxReceiveConnectionFlowControlWindow == 0 {
- maxReceiveConnectionFlowControlWindow = protocol.DefaultMaxReceiveConnectionFlowControlWindowClient
- }
-
- return &Config{
- Versions: versions,
- HandshakeTimeout: handshakeTimeout,
- IdleTimeout: idleTimeout,
- RequestConnectionIDOmission: config.RequestConnectionIDOmission,
- MaxReceiveStreamFlowControlWindow: maxReceiveStreamFlowControlWindow,
- MaxReceiveConnectionFlowControlWindow: maxReceiveConnectionFlowControlWindow,
- KeepAlive: config.KeepAlive,
- }
-}
-
-func (c *client) dial() error {
- var err error
- if c.version.UsesTLS() {
- err = c.dialTLS()
- } else {
- err = c.dialGQUIC()
- }
- if err == errCloseSessionForNewVersion {
- return c.dial()
- }
- return err
-}
-
-func (c *client) dialGQUIC() error {
- if err := c.createNewGQUICSession(); err != nil {
- return err
- }
- go c.listen()
- return c.establishSecureConnection()
-}
-
-func (c *client) dialTLS() error {
- csc := handshake.NewCryptoStreamConn(nil)
- mintConf, err := tlsToMintConfig(c.tlsConf, protocol.PerspectiveClient)
- if err != nil {
- return err
- }
- mintConf.ServerName = c.hostname
- c.tls = newMintController(csc, mintConf, protocol.PerspectiveClient)
- params := &handshake.TransportParameters{
- StreamFlowControlWindow: protocol.ReceiveStreamFlowControlWindow,
- ConnectionFlowControlWindow: protocol.ReceiveConnectionFlowControlWindow,
- MaxStreams: protocol.MaxIncomingStreams,
- IdleTimeout: c.config.IdleTimeout,
- OmitConnectionID: c.config.RequestConnectionIDOmission,
- }
- eh := handshake.NewExtensionHandlerClient(params, c.initialVersion, c.config.Versions, c.version)
- if err := c.tls.SetExtensionHandler(eh); err != nil {
- return err
- }
- if err := c.createNewTLSSession(eh.GetPeerParams(), c.version); err != nil {
- return err
- }
- go c.listen()
- if err := c.establishSecureConnection(); err != nil {
- if err != handshake.ErrCloseSessionForRetry {
- return err
- }
- utils.Infof("Received a Retry packet. Recreating session.")
- if err := c.createNewTLSSession(eh.GetPeerParams(), c.version); err != nil {
- return err
- }
- if err := c.establishSecureConnection(); err != nil {
- return err
- }
- }
- return nil
-}
-
-// establishSecureConnection runs the session, and tries to establish a secure connection
-// It returns:
-// - errCloseSessionForNewVersion when the server sends a version negotiation packet
-// - handshake.ErrCloseSessionForRetry when the server performs a stateless retry (for IETF QUIC)
-// - any other error that might occur
-// - when the connection is secure (for gQUIC), or forward-secure (for IETF QUIC)
-func (c *client) establishSecureConnection() error {
- var runErr error
- errorChan := make(chan struct{})
- go func() {
- runErr = c.session.run() // returns as soon as the session is closed
- close(errorChan)
- utils.Infof("Connection %x closed.", c.connectionID)
- if runErr != handshake.ErrCloseSessionForRetry && runErr != errCloseSessionForNewVersion {
- c.conn.Close()
- }
- }()
-
- // wait until the server accepts the QUIC version (or an error occurs)
- select {
- case <-errorChan:
- return runErr
- case <-c.versionNegotiationChan:
- }
-
- select {
- case <-errorChan:
- return runErr
- case err := <-c.session.handshakeStatus():
- return err
- }
-}
-
-// Listen listens on the underlying connection and passes packets on for handling.
-// It returns when the connection is closed.
-func (c *client) listen() {
- var err error
-
- for {
- var n int
- var addr net.Addr
- data := getPacketBuffer()
- data = data[:protocol.MaxReceivePacketSize]
- // The packet size should not exceed protocol.MaxReceivePacketSize bytes
- // If it does, we only read a truncated packet, which will then end up undecryptable
- n, addr, err = c.conn.Read(data)
- if err != nil {
- if !strings.HasSuffix(err.Error(), "use of closed network connection") {
- c.mutex.Lock()
- if c.session != nil {
- c.session.Close(err)
- }
- c.mutex.Unlock()
- }
- break
- }
- c.handlePacket(addr, data[:n])
- }
-}
-
-func (c *client) handlePacket(remoteAddr net.Addr, packet []byte) {
- rcvTime := time.Now()
-
- r := bytes.NewReader(packet)
- hdr, err := wire.ParseHeaderSentByServer(r, c.version)
- if err != nil {
- utils.Errorf("error parsing packet from %s: %s", remoteAddr.String(), err.Error())
- // drop this packet if we can't parse the header
- return
- }
- // reject packets with truncated connection id if we didn't request truncation
- if hdr.OmitConnectionID && !c.config.RequestConnectionIDOmission {
- return
- }
- hdr.Raw = packet[:len(packet)-r.Len()]
-
- c.mutex.Lock()
- defer c.mutex.Unlock()
-
- // reject packets with the wrong connection ID
- if !hdr.OmitConnectionID && hdr.ConnectionID != c.connectionID {
- return
- }
-
- if hdr.ResetFlag {
- cr := c.conn.RemoteAddr()
- // check if the remote address and the connection ID match
- // otherwise this might be an attacker trying to inject a PUBLIC_RESET to kill the connection
- if cr.Network() != remoteAddr.Network() || cr.String() != remoteAddr.String() || hdr.ConnectionID != c.connectionID {
- utils.Infof("Received a spoofed Public Reset. Ignoring.")
- return
- }
- pr, err := wire.ParsePublicReset(r)
- if err != nil {
- utils.Infof("Received a Public Reset. An error occurred parsing the packet: %s", err)
- return
- }
- utils.Infof("Received Public Reset, rejected packet number: %#x.", pr.RejectedPacketNumber)
- c.session.closeRemote(qerr.Error(qerr.PublicReset, fmt.Sprintf("Received a Public Reset for packet number %#x", pr.RejectedPacketNumber)))
- return
- }
-
- // handle Version Negotiation Packets
- if hdr.IsVersionNegotiation {
- // ignore delayed / duplicated version negotiation packets
- if c.receivedVersionNegotiationPacket || c.versionNegotiated {
- return
- }
-
- // version negotiation packets have no payload
- if err := c.handleVersionNegotiationPacket(hdr); err != nil {
- c.session.Close(err)
- }
- return
- }
-
- // this is the first packet we are receiving
- // since it is not a Version Negotiation Packet, this means the server supports the suggested version
- if !c.versionNegotiated {
- c.versionNegotiated = true
- close(c.versionNegotiationChan)
- }
-
- // TODO: validate packet number and connection ID on Retry packets (for IETF QUIC)
-
- c.session.handlePacket(&receivedPacket{
- remoteAddr: remoteAddr,
- header: hdr,
- data: packet[len(packet)-r.Len():],
- rcvTime: rcvTime,
- })
-}
-
-func (c *client) handleVersionNegotiationPacket(hdr *wire.Header) error {
- for _, v := range hdr.SupportedVersions {
- if v == c.version {
- // the version negotiation packet contains the version that we offered
- // this might be a packet sent by an attacker (or by a terribly broken server implementation)
- // ignore it
- return nil
- }
- }
-
- newVersion, ok := protocol.ChooseSupportedVersion(c.config.Versions, hdr.SupportedVersions)
- if !ok {
- return qerr.InvalidVersion
- }
- c.receivedVersionNegotiationPacket = true
- c.negotiatedVersions = hdr.SupportedVersions
-
- // switch to negotiated version
- c.initialVersion = c.version
- c.version = newVersion
- var err error
- c.connectionID, err = utils.GenerateConnectionID()
- if err != nil {
- return err
- }
- utils.Infof("Switching to QUIC version %s. New connection ID: %x", newVersion, c.connectionID)
- c.session.Close(errCloseSessionForNewVersion)
- return nil
-}
-
-func (c *client) createNewGQUICSession() (err error) {
- c.mutex.Lock()
- defer c.mutex.Unlock()
- c.session, err = newClientSession(
- c.conn,
- c.hostname,
- c.version,
- c.connectionID,
- c.tlsConf,
- c.config,
- c.initialVersion,
- c.negotiatedVersions,
- )
- return err
-}
-
-func (c *client) createNewTLSSession(
- paramsChan <-chan handshake.TransportParameters,
- version protocol.VersionNumber,
-) (err error) {
- c.mutex.Lock()
- defer c.mutex.Unlock()
- c.session, err = newTLSClientSession(
- c.conn,
- c.hostname,
- c.version,
- c.connectionID,
- c.config,
- c.tls,
- paramsChan,
- 1,
- )
- return err
-}
diff --git a/vendor/github.com/phuslu/quic-go/codecov.yml b/vendor/github.com/phuslu/quic-go/codecov.yml
deleted file mode 100644
index d85e781..0000000
--- a/vendor/github.com/phuslu/quic-go/codecov.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-coverage:
- round: nearest
- ignore:
- - ackhandler/packet_linkedlist.go
- - h2quic/gzipreader.go
- - h2quic/response.go
- - internal/utils/byteinterval_linkedlist.go
- - internal/utils/packetinterval_linkedlist.go
- status:
- project:
- default:
- threshold: 0.5
- patch: false
diff --git a/vendor/github.com/phuslu/quic-go/congestion/bandwidth.go b/vendor/github.com/phuslu/quic-go/congestion/bandwidth.go
deleted file mode 100644
index 45cd381..0000000
--- a/vendor/github.com/phuslu/quic-go/congestion/bandwidth.go
+++ /dev/null
@@ -1,22 +0,0 @@
-package congestion
-
-import (
- "time"
-
- "github.com/phuslu/quic-go/internal/protocol"
-)
-
-// Bandwidth of a connection
-type Bandwidth uint64
-
-const (
- // BitsPerSecond is 1 bit per second
- BitsPerSecond Bandwidth = 1
- // BytesPerSecond is 1 byte per second
- BytesPerSecond = 8 * BitsPerSecond
-)
-
-// BandwidthFromDelta calculates the bandwidth from a number of bytes and a time delta
-func BandwidthFromDelta(bytes protocol.ByteCount, delta time.Duration) Bandwidth {
- return Bandwidth(bytes) * Bandwidth(time.Second) / Bandwidth(delta) * BytesPerSecond
-}
diff --git a/vendor/github.com/phuslu/quic-go/congestion/clock.go b/vendor/github.com/phuslu/quic-go/congestion/clock.go
deleted file mode 100644
index 405fae7..0000000
--- a/vendor/github.com/phuslu/quic-go/congestion/clock.go
+++ /dev/null
@@ -1,18 +0,0 @@
-package congestion
-
-import "time"
-
-// A Clock returns the current time
-type Clock interface {
- Now() time.Time
-}
-
-// DefaultClock implements the Clock interface using the Go stdlib clock.
-type DefaultClock struct{}
-
-var _ Clock = DefaultClock{}
-
-// Now gets the current time
-func (DefaultClock) Now() time.Time {
- return time.Now()
-}
diff --git a/vendor/github.com/phuslu/quic-go/congestion/cubic.go b/vendor/github.com/phuslu/quic-go/congestion/cubic.go
deleted file mode 100644
index 943b7ec..0000000
--- a/vendor/github.com/phuslu/quic-go/congestion/cubic.go
+++ /dev/null
@@ -1,228 +0,0 @@
-package congestion
-
-import (
- "math"
- "time"
-
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/utils"
-)
-
-// This cubic implementation is based on the one found in Chromiums's QUIC
-// implementation, in the files net/quic/congestion_control/cubic.{hh,cc}.
-
-// Constants based on TCP defaults.
-// The following constants are in 2^10 fractions of a second instead of ms to
-// allow a 10 shift right to divide.
-
-// 1024*1024^3 (first 1024 is from 0.100^3)
-// where 0.100 is 100 ms which is the scaling
-// round trip time.
-const cubeScale = 40
-const cubeCongestionWindowScale = 410
-const cubeFactor protocol.PacketNumber = 1 << cubeScale / cubeCongestionWindowScale
-
-const defaultNumConnections = 2
-
-// Default Cubic backoff factor
-const beta float32 = 0.7
-
-// Additional backoff factor when loss occurs in the concave part of the Cubic
-// curve. This additional backoff factor is expected to give up bandwidth to
-// new concurrent flows and speed up convergence.
-const betaLastMax float32 = 0.85
-
-// If true, Cubic's epoch is shifted when the sender is application-limited.
-const shiftQuicCubicEpochWhenAppLimited = true
-
-const maxCubicTimeInterval = 30 * time.Millisecond
-
-// Cubic implements the cubic algorithm from TCP
-type Cubic struct {
- clock Clock
- // Number of connections to simulate.
- numConnections int
- // Time when this cycle started, after last loss event.
- epoch time.Time
- // Time when sender went into application-limited period. Zero if not in
- // application-limited period.
- appLimitedStartTime time.Time
- // Time when we updated last_congestion_window.
- lastUpdateTime time.Time
- // Last congestion window (in packets) used.
- lastCongestionWindow protocol.PacketNumber
- // Max congestion window (in packets) used just before last loss event.
- // Note: to improve fairness to other streams an additional back off is
- // applied to this value if the new value is below our latest value.
- lastMaxCongestionWindow protocol.PacketNumber
- // Number of acked packets since the cycle started (epoch).
- ackedPacketsCount protocol.PacketNumber
- // TCP Reno equivalent congestion window in packets.
- estimatedTCPcongestionWindow protocol.PacketNumber
- // Origin point of cubic function.
- originPointCongestionWindow protocol.PacketNumber
- // Time to origin point of cubic function in 2^10 fractions of a second.
- timeToOriginPoint uint32
- // Last congestion window in packets computed by cubic function.
- lastTargetCongestionWindow protocol.PacketNumber
-}
-
-// NewCubic returns a new Cubic instance
-func NewCubic(clock Clock) *Cubic {
- c := &Cubic{
- clock: clock,
- numConnections: defaultNumConnections,
- }
- c.Reset()
- return c
-}
-
-// Reset is called after a timeout to reset the cubic state
-func (c *Cubic) Reset() {
- c.epoch = time.Time{}
- c.appLimitedStartTime = time.Time{}
- c.lastUpdateTime = time.Time{}
- c.lastCongestionWindow = 0
- c.lastMaxCongestionWindow = 0
- c.ackedPacketsCount = 0
- c.estimatedTCPcongestionWindow = 0
- c.originPointCongestionWindow = 0
- c.timeToOriginPoint = 0
- c.lastTargetCongestionWindow = 0
-}
-
-func (c *Cubic) alpha() float32 {
- // TCPFriendly alpha is described in Section 3.3 of the CUBIC paper. Note that
- // beta here is a cwnd multiplier, and is equal to 1-beta from the paper.
- // We derive the equivalent alpha for an N-connection emulation as:
- b := c.beta()
- return 3 * float32(c.numConnections) * float32(c.numConnections) * (1 - b) / (1 + b)
-}
-
-func (c *Cubic) beta() float32 {
- // kNConnectionBeta is the backoff factor after loss for our N-connection
- // emulation, which emulates the effective backoff of an ensemble of N
- // TCP-Reno connections on a single loss event. The effective multiplier is
- // computed as:
- return (float32(c.numConnections) - 1 + beta) / float32(c.numConnections)
-}
-
-// OnApplicationLimited is called on ack arrival when sender is unable to use
-// the available congestion window. Resets Cubic state during quiescence.
-func (c *Cubic) OnApplicationLimited() {
- if shiftQuicCubicEpochWhenAppLimited {
- // When sender is not using the available congestion window, Cubic's epoch
- // should not continue growing. Record the time when sender goes into an
- // app-limited period here, to compensate later when cwnd growth happens.
- if c.appLimitedStartTime.IsZero() {
- c.appLimitedStartTime = c.clock.Now()
- }
- } else {
- // When sender is not using the available congestion window, Cubic's epoch
- // should not continue growing. Reset the epoch when in such a period.
- c.epoch = time.Time{}
- }
-}
-
-// CongestionWindowAfterPacketLoss computes a new congestion window to use after
-// a loss event. Returns the new congestion window in packets. The new
-// congestion window is a multiplicative decrease of our current window.
-func (c *Cubic) CongestionWindowAfterPacketLoss(currentCongestionWindow protocol.PacketNumber) protocol.PacketNumber {
- if currentCongestionWindow < c.lastMaxCongestionWindow {
- // We never reached the old max, so assume we are competing with another
- // flow. Use our extra back off factor to allow the other flow to go up.
- c.lastMaxCongestionWindow = protocol.PacketNumber(betaLastMax * float32(currentCongestionWindow))
- } else {
- c.lastMaxCongestionWindow = currentCongestionWindow
- }
- c.epoch = time.Time{} // Reset time.
- return protocol.PacketNumber(float32(currentCongestionWindow) * c.beta())
-}
-
-// CongestionWindowAfterAck computes a new congestion window to use after a received ACK.
-// Returns the new congestion window in packets. The new congestion window
-// follows a cubic function that depends on the time passed since last
-// packet loss.
-func (c *Cubic) CongestionWindowAfterAck(currentCongestionWindow protocol.PacketNumber, delayMin time.Duration) protocol.PacketNumber {
- c.ackedPacketsCount++ // Packets acked.
- currentTime := c.clock.Now()
-
- // Cubic is "independent" of RTT, the update is limited by the time elapsed.
- if c.lastCongestionWindow == currentCongestionWindow && (currentTime.Sub(c.lastUpdateTime) <= maxCubicTimeInterval) {
- return utils.MaxPacketNumber(c.lastTargetCongestionWindow, c.estimatedTCPcongestionWindow)
- }
- c.lastCongestionWindow = currentCongestionWindow
- c.lastUpdateTime = currentTime
-
- if c.epoch.IsZero() {
- // First ACK after a loss event.
- c.epoch = currentTime // Start of epoch.
- c.ackedPacketsCount = 1 // Reset count.
- // Reset estimated_tcp_congestion_window_ to be in sync with cubic.
- c.estimatedTCPcongestionWindow = currentCongestionWindow
- if c.lastMaxCongestionWindow <= currentCongestionWindow {
- c.timeToOriginPoint = 0
- c.originPointCongestionWindow = currentCongestionWindow
- } else {
- c.timeToOriginPoint = uint32(math.Cbrt(float64(cubeFactor * (c.lastMaxCongestionWindow - currentCongestionWindow))))
- c.originPointCongestionWindow = c.lastMaxCongestionWindow
- }
- } else {
- // If sender was app-limited, then freeze congestion window growth during
- // app-limited period. Continue growth now by shifting the epoch-start
- // through the app-limited period.
- if shiftQuicCubicEpochWhenAppLimited && !c.appLimitedStartTime.IsZero() {
- shift := currentTime.Sub(c.appLimitedStartTime)
- c.epoch = c.epoch.Add(shift)
- c.appLimitedStartTime = time.Time{}
- }
- }
-
- // Change the time unit from microseconds to 2^10 fractions per second. Take
- // the round trip time in account. This is done to allow us to use shift as a
- // divide operator.
- elapsedTime := int64((currentTime.Add(delayMin).Sub(c.epoch)/time.Microsecond)<<10) / 1000000
-
- offset := int64(c.timeToOriginPoint) - elapsedTime
- // Right-shifts of negative, signed numbers have
- // implementation-dependent behavior. Force the offset to be
- // positive, similar to the kernel implementation.
- if offset < 0 {
- offset = -offset
- }
- deltaCongestionWindow := protocol.PacketNumber((cubeCongestionWindowScale * offset * offset * offset) >> cubeScale)
- var targetCongestionWindow protocol.PacketNumber
- if elapsedTime > int64(c.timeToOriginPoint) {
- targetCongestionWindow = c.originPointCongestionWindow + deltaCongestionWindow
- } else {
- targetCongestionWindow = c.originPointCongestionWindow - deltaCongestionWindow
- }
- // With dynamic beta/alpha based on number of active streams, it is possible
- // for the required_ack_count to become much lower than acked_packets_count_
- // suddenly, leading to more than one iteration through the following loop.
- for {
- // Update estimated TCP congestion_window.
- requiredAckCount := protocol.PacketNumber(float32(c.estimatedTCPcongestionWindow) / c.alpha())
- if c.ackedPacketsCount < requiredAckCount {
- break
- }
- c.ackedPacketsCount -= requiredAckCount
- c.estimatedTCPcongestionWindow++
- }
-
- // We have a new cubic congestion window.
- c.lastTargetCongestionWindow = targetCongestionWindow
-
- // Compute target congestion_window based on cubic target and estimated TCP
- // congestion_window, use highest (fastest).
- if targetCongestionWindow < c.estimatedTCPcongestionWindow {
- targetCongestionWindow = c.estimatedTCPcongestionWindow
- }
-
- return targetCongestionWindow
-}
-
-// SetNumConnections sets the number of emulated connections
-func (c *Cubic) SetNumConnections(n int) {
- c.numConnections = n
-}
diff --git a/vendor/github.com/phuslu/quic-go/congestion/cubic_sender.go b/vendor/github.com/phuslu/quic-go/congestion/cubic_sender.go
deleted file mode 100644
index 24b0433..0000000
--- a/vendor/github.com/phuslu/quic-go/congestion/cubic_sender.go
+++ /dev/null
@@ -1,298 +0,0 @@
-package congestion
-
-import (
- "time"
-
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/utils"
-)
-
-const (
- maxBurstBytes = 3 * protocol.DefaultTCPMSS
- defaultMinimumCongestionWindow protocol.PacketNumber = 2
- renoBeta float32 = 0.7 // Reno backoff factor.
-)
-
-type cubicSender struct {
- hybridSlowStart HybridSlowStart
- prr PrrSender
- rttStats *RTTStats
- stats connectionStats
- cubic *Cubic
-
- reno bool
-
- // Track the largest packet that has been sent.
- largestSentPacketNumber protocol.PacketNumber
-
- // Track the largest packet that has been acked.
- largestAckedPacketNumber protocol.PacketNumber
-
- // Track the largest packet number outstanding when a CWND cutback occurs.
- largestSentAtLastCutback protocol.PacketNumber
-
- // Congestion window in packets.
- congestionWindow protocol.PacketNumber
-
- // Slow start congestion window in packets, aka ssthresh.
- slowstartThreshold protocol.PacketNumber
-
- // Whether the last loss event caused us to exit slowstart.
- // Used for stats collection of slowstartPacketsLost
- lastCutbackExitedSlowstart bool
-
- // When true, exit slow start with large cutback of congestion window.
- slowStartLargeReduction bool
-
- // Minimum congestion window in packets.
- minCongestionWindow protocol.PacketNumber
-
- // Maximum number of outstanding packets for tcp.
- maxTCPCongestionWindow protocol.PacketNumber
-
- // Number of connections to simulate.
- numConnections int
-
- // ACK counter for the Reno implementation.
- congestionWindowCount protocol.ByteCount
-
- initialCongestionWindow protocol.PacketNumber
- initialMaxCongestionWindow protocol.PacketNumber
-}
-
-// NewCubicSender makes a new cubic sender
-func NewCubicSender(clock Clock, rttStats *RTTStats, reno bool, initialCongestionWindow, initialMaxCongestionWindow protocol.PacketNumber) SendAlgorithmWithDebugInfo {
- return &cubicSender{
- rttStats: rttStats,
- initialCongestionWindow: initialCongestionWindow,
- initialMaxCongestionWindow: initialMaxCongestionWindow,
- congestionWindow: initialCongestionWindow,
- minCongestionWindow: defaultMinimumCongestionWindow,
- slowstartThreshold: initialMaxCongestionWindow,
- maxTCPCongestionWindow: initialMaxCongestionWindow,
- numConnections: defaultNumConnections,
- cubic: NewCubic(clock),
- reno: reno,
- }
-}
-
-func (c *cubicSender) TimeUntilSend(now time.Time, bytesInFlight protocol.ByteCount) time.Duration {
- if c.InRecovery() {
- // PRR is used when in recovery.
- return c.prr.TimeUntilSend(c.GetCongestionWindow(), bytesInFlight, c.GetSlowStartThreshold())
- }
- if c.GetCongestionWindow() > bytesInFlight {
- return 0
- }
- return utils.InfDuration
-}
-
-func (c *cubicSender) OnPacketSent(sentTime time.Time, bytesInFlight protocol.ByteCount, packetNumber protocol.PacketNumber, bytes protocol.ByteCount, isRetransmittable bool) bool {
- // Only update bytesInFlight for data packets.
- if !isRetransmittable {
- return false
- }
- if c.InRecovery() {
- // PRR is used when in recovery.
- c.prr.OnPacketSent(bytes)
- }
- c.largestSentPacketNumber = packetNumber
- c.hybridSlowStart.OnPacketSent(packetNumber)
- return true
-}
-
-func (c *cubicSender) InRecovery() bool {
- return c.largestAckedPacketNumber <= c.largestSentAtLastCutback && c.largestAckedPacketNumber != 0
-}
-
-func (c *cubicSender) InSlowStart() bool {
- return c.GetCongestionWindow() < c.GetSlowStartThreshold()
-}
-
-func (c *cubicSender) GetCongestionWindow() protocol.ByteCount {
- return protocol.ByteCount(c.congestionWindow) * protocol.DefaultTCPMSS
-}
-
-func (c *cubicSender) GetSlowStartThreshold() protocol.ByteCount {
- return protocol.ByteCount(c.slowstartThreshold) * protocol.DefaultTCPMSS
-}
-
-func (c *cubicSender) ExitSlowstart() {
- c.slowstartThreshold = c.congestionWindow
-}
-
-func (c *cubicSender) SlowstartThreshold() protocol.PacketNumber {
- return c.slowstartThreshold
-}
-
-func (c *cubicSender) MaybeExitSlowStart() {
- if c.InSlowStart() && c.hybridSlowStart.ShouldExitSlowStart(c.rttStats.LatestRTT(), c.rttStats.MinRTT(), c.GetCongestionWindow()/protocol.DefaultTCPMSS) {
- c.ExitSlowstart()
- }
-}
-
-func (c *cubicSender) OnPacketAcked(ackedPacketNumber protocol.PacketNumber, ackedBytes protocol.ByteCount, bytesInFlight protocol.ByteCount) {
- c.largestAckedPacketNumber = utils.MaxPacketNumber(ackedPacketNumber, c.largestAckedPacketNumber)
- if c.InRecovery() {
- // PRR is used when in recovery.
- c.prr.OnPacketAcked(ackedBytes)
- return
- }
- c.maybeIncreaseCwnd(ackedPacketNumber, ackedBytes, bytesInFlight)
- if c.InSlowStart() {
- c.hybridSlowStart.OnPacketAcked(ackedPacketNumber)
- }
-}
-
-func (c *cubicSender) OnPacketLost(packetNumber protocol.PacketNumber, lostBytes protocol.ByteCount, bytesInFlight protocol.ByteCount) {
- // TCP NewReno (RFC6582) says that once a loss occurs, any losses in packets
- // already sent should be treated as a single loss event, since it's expected.
- if packetNumber <= c.largestSentAtLastCutback {
- if c.lastCutbackExitedSlowstart {
- c.stats.slowstartPacketsLost++
- c.stats.slowstartBytesLost += lostBytes
- if c.slowStartLargeReduction {
- if c.stats.slowstartPacketsLost == 1 || (c.stats.slowstartBytesLost/protocol.DefaultTCPMSS) > (c.stats.slowstartBytesLost-lostBytes)/protocol.DefaultTCPMSS {
- // Reduce congestion window by 1 for every mss of bytes lost.
- c.congestionWindow = utils.MaxPacketNumber(c.congestionWindow-1, c.minCongestionWindow)
- }
- c.slowstartThreshold = c.congestionWindow
- }
- }
- return
- }
- c.lastCutbackExitedSlowstart = c.InSlowStart()
- if c.InSlowStart() {
- c.stats.slowstartPacketsLost++
- }
-
- c.prr.OnPacketLost(bytesInFlight)
-
- // TODO(chromium): Separate out all of slow start into a separate class.
- if c.slowStartLargeReduction && c.InSlowStart() {
- c.congestionWindow = c.congestionWindow - 1
- } else if c.reno {
- c.congestionWindow = protocol.PacketNumber(float32(c.congestionWindow) * c.RenoBeta())
- } else {
- c.congestionWindow = c.cubic.CongestionWindowAfterPacketLoss(c.congestionWindow)
- }
- // Enforce a minimum congestion window.
- if c.congestionWindow < c.minCongestionWindow {
- c.congestionWindow = c.minCongestionWindow
- }
- c.slowstartThreshold = c.congestionWindow
- c.largestSentAtLastCutback = c.largestSentPacketNumber
- // reset packet count from congestion avoidance mode. We start
- // counting again when we're out of recovery.
- c.congestionWindowCount = 0
-}
-
-func (c *cubicSender) RenoBeta() float32 {
- // kNConnectionBeta is the backoff factor after loss for our N-connection
- // emulation, which emulates the effective backoff of an ensemble of N
- // TCP-Reno connections on a single loss event. The effective multiplier is
- // computed as:
- return (float32(c.numConnections) - 1. + renoBeta) / float32(c.numConnections)
-}
-
-// Called when we receive an ack. Normal TCP tracks how many packets one ack
-// represents, but quic has a separate ack for each packet.
-func (c *cubicSender) maybeIncreaseCwnd(ackedPacketNumber protocol.PacketNumber, ackedBytes protocol.ByteCount, bytesInFlight protocol.ByteCount) {
- // Do not increase the congestion window unless the sender is close to using
- // the current window.
- if !c.isCwndLimited(bytesInFlight) {
- c.cubic.OnApplicationLimited()
- return
- }
- if c.congestionWindow >= c.maxTCPCongestionWindow {
- return
- }
- if c.InSlowStart() {
- // TCP slow start, exponential growth, increase by one for each ACK.
- c.congestionWindow++
- return
- }
- if c.reno {
- // Classic Reno congestion avoidance.
- c.congestionWindowCount++
- // Divide by num_connections to smoothly increase the CWND at a faster
- // rate than conventional Reno.
- if protocol.PacketNumber(c.congestionWindowCount*protocol.ByteCount(c.numConnections)) >= c.congestionWindow {
- c.congestionWindow++
- c.congestionWindowCount = 0
- }
- } else {
- c.congestionWindow = utils.MinPacketNumber(c.maxTCPCongestionWindow, c.cubic.CongestionWindowAfterAck(c.congestionWindow, c.rttStats.MinRTT()))
- }
-}
-
-func (c *cubicSender) isCwndLimited(bytesInFlight protocol.ByteCount) bool {
- congestionWindow := c.GetCongestionWindow()
- if bytesInFlight >= congestionWindow {
- return true
- }
- availableBytes := congestionWindow - bytesInFlight
- slowStartLimited := c.InSlowStart() && bytesInFlight > congestionWindow/2
- return slowStartLimited || availableBytes <= maxBurstBytes
-}
-
-// BandwidthEstimate returns the current bandwidth estimate
-func (c *cubicSender) BandwidthEstimate() Bandwidth {
- srtt := c.rttStats.SmoothedRTT()
- if srtt == 0 {
- // If we haven't measured an rtt, the bandwidth estimate is unknown.
- return 0
- }
- return BandwidthFromDelta(c.GetCongestionWindow(), srtt)
-}
-
-// HybridSlowStart returns the hybrid slow start instance for testing
-func (c *cubicSender) HybridSlowStart() *HybridSlowStart {
- return &c.hybridSlowStart
-}
-
-// SetNumEmulatedConnections sets the number of emulated connections
-func (c *cubicSender) SetNumEmulatedConnections(n int) {
- c.numConnections = utils.Max(n, 1)
- c.cubic.SetNumConnections(c.numConnections)
-}
-
-// OnRetransmissionTimeout is called on an retransmission timeout
-func (c *cubicSender) OnRetransmissionTimeout(packetsRetransmitted bool) {
- c.largestSentAtLastCutback = 0
- if !packetsRetransmitted {
- return
- }
- c.hybridSlowStart.Restart()
- c.cubic.Reset()
- c.slowstartThreshold = c.congestionWindow / 2
- c.congestionWindow = c.minCongestionWindow
-}
-
-// OnConnectionMigration is called when the connection is migrated (?)
-func (c *cubicSender) OnConnectionMigration() {
- c.hybridSlowStart.Restart()
- c.prr = PrrSender{}
- c.largestSentPacketNumber = 0
- c.largestAckedPacketNumber = 0
- c.largestSentAtLastCutback = 0
- c.lastCutbackExitedSlowstart = false
- c.cubic.Reset()
- c.congestionWindowCount = 0
- c.congestionWindow = c.initialCongestionWindow
- c.slowstartThreshold = c.initialMaxCongestionWindow
- c.maxTCPCongestionWindow = c.initialMaxCongestionWindow
-}
-
-// SetSlowStartLargeReduction allows enabling the SSLR experiment
-func (c *cubicSender) SetSlowStartLargeReduction(enabled bool) {
- c.slowStartLargeReduction = enabled
-}
-
-// RetransmissionDelay gives the time to retransmission
-func (c *cubicSender) RetransmissionDelay() time.Duration {
- if c.rttStats.SmoothedRTT() == 0 {
- return 0
- }
- return c.rttStats.SmoothedRTT() + c.rttStats.MeanDeviation()*4
-}
diff --git a/vendor/github.com/phuslu/quic-go/congestion/hybrid_slow_start.go b/vendor/github.com/phuslu/quic-go/congestion/hybrid_slow_start.go
deleted file mode 100644
index 33567a6..0000000
--- a/vendor/github.com/phuslu/quic-go/congestion/hybrid_slow_start.go
+++ /dev/null
@@ -1,111 +0,0 @@
-package congestion
-
-import (
- "time"
-
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/utils"
-)
-
-// Note(pwestin): the magic clamping numbers come from the original code in
-// tcp_cubic.c.
-const hybridStartLowWindow = protocol.ByteCount(16)
-
-// Number of delay samples for detecting the increase of delay.
-const hybridStartMinSamples = uint32(8)
-
-// Exit slow start if the min rtt has increased by more than 1/8th.
-const hybridStartDelayFactorExp = 3 // 2^3 = 8
-// The original paper specifies 2 and 8ms, but those have changed over time.
-const hybridStartDelayMinThresholdUs = int64(4000)
-const hybridStartDelayMaxThresholdUs = int64(16000)
-
-// HybridSlowStart implements the TCP hybrid slow start algorithm
-type HybridSlowStart struct {
- endPacketNumber protocol.PacketNumber
- lastSentPacketNumber protocol.PacketNumber
- started bool
- currentMinRTT time.Duration
- rttSampleCount uint32
- hystartFound bool
-}
-
-// StartReceiveRound is called for the start of each receive round (burst) in the slow start phase.
-func (s *HybridSlowStart) StartReceiveRound(lastSent protocol.PacketNumber) {
- s.endPacketNumber = lastSent
- s.currentMinRTT = 0
- s.rttSampleCount = 0
- s.started = true
-}
-
-// IsEndOfRound returns true if this ack is the last packet number of our current slow start round.
-func (s *HybridSlowStart) IsEndOfRound(ack protocol.PacketNumber) bool {
- return s.endPacketNumber < ack
-}
-
-// ShouldExitSlowStart should be called on every new ack frame, since a new
-// RTT measurement can be made then.
-// rtt: the RTT for this ack packet.
-// minRTT: is the lowest delay (RTT) we have seen during the session.
-// congestionWindow: the congestion window in packets.
-func (s *HybridSlowStart) ShouldExitSlowStart(latestRTT time.Duration, minRTT time.Duration, congestionWindow protocol.ByteCount) bool {
- if !s.started {
- // Time to start the hybrid slow start.
- s.StartReceiveRound(s.lastSentPacketNumber)
- }
- if s.hystartFound {
- return true
- }
- // Second detection parameter - delay increase detection.
- // Compare the minimum delay (s.currentMinRTT) of the current
- // burst of packets relative to the minimum delay during the session.
- // Note: we only look at the first few(8) packets in each burst, since we
- // only want to compare the lowest RTT of the burst relative to previous
- // bursts.
- s.rttSampleCount++
- if s.rttSampleCount <= hybridStartMinSamples {
- if s.currentMinRTT == 0 || s.currentMinRTT > latestRTT {
- s.currentMinRTT = latestRTT
- }
- }
- // We only need to check this once per round.
- if s.rttSampleCount == hybridStartMinSamples {
- // Divide minRTT by 8 to get a rtt increase threshold for exiting.
- minRTTincreaseThresholdUs := int64(minRTT / time.Microsecond >> hybridStartDelayFactorExp)
- // Ensure the rtt threshold is never less than 2ms or more than 16ms.
- minRTTincreaseThresholdUs = utils.MinInt64(minRTTincreaseThresholdUs, hybridStartDelayMaxThresholdUs)
- minRTTincreaseThreshold := time.Duration(utils.MaxInt64(minRTTincreaseThresholdUs, hybridStartDelayMinThresholdUs)) * time.Microsecond
-
- if s.currentMinRTT > (minRTT + minRTTincreaseThreshold) {
- s.hystartFound = true
- }
- }
- // Exit from slow start if the cwnd is greater than 16 and
- // increasing delay is found.
- return congestionWindow >= hybridStartLowWindow && s.hystartFound
-}
-
-// OnPacketSent is called when a packet was sent
-func (s *HybridSlowStart) OnPacketSent(packetNumber protocol.PacketNumber) {
- s.lastSentPacketNumber = packetNumber
-}
-
-// OnPacketAcked gets invoked after ShouldExitSlowStart, so it's best to end
-// the round when the final packet of the burst is received and start it on
-// the next incoming ack.
-func (s *HybridSlowStart) OnPacketAcked(ackedPacketNumber protocol.PacketNumber) {
- if s.IsEndOfRound(ackedPacketNumber) {
- s.started = false
- }
-}
-
-// Started returns true if started
-func (s *HybridSlowStart) Started() bool {
- return s.started
-}
-
-// Restart the slow start phase
-func (s *HybridSlowStart) Restart() {
- s.started = false
- s.hystartFound = false
-}
diff --git a/vendor/github.com/phuslu/quic-go/congestion/interface.go b/vendor/github.com/phuslu/quic-go/congestion/interface.go
deleted file mode 100644
index 005c17e..0000000
--- a/vendor/github.com/phuslu/quic-go/congestion/interface.go
+++ /dev/null
@@ -1,37 +0,0 @@
-package congestion
-
-import (
- "time"
-
- "github.com/phuslu/quic-go/internal/protocol"
-)
-
-// A SendAlgorithm performs congestion control and calculates the congestion window
-type SendAlgorithm interface {
- TimeUntilSend(now time.Time, bytesInFlight protocol.ByteCount) time.Duration
- OnPacketSent(sentTime time.Time, bytesInFlight protocol.ByteCount, packetNumber protocol.PacketNumber, bytes protocol.ByteCount, isRetransmittable bool) bool
- GetCongestionWindow() protocol.ByteCount
- MaybeExitSlowStart()
- OnPacketAcked(number protocol.PacketNumber, ackedBytes protocol.ByteCount, bytesInFlight protocol.ByteCount)
- OnPacketLost(number protocol.PacketNumber, lostBytes protocol.ByteCount, bytesInFlight protocol.ByteCount)
- SetNumEmulatedConnections(n int)
- OnRetransmissionTimeout(packetsRetransmitted bool)
- OnConnectionMigration()
- RetransmissionDelay() time.Duration
-
- // Experiments
- SetSlowStartLargeReduction(enabled bool)
-}
-
-// SendAlgorithmWithDebugInfo adds some debug functions to SendAlgorithm
-type SendAlgorithmWithDebugInfo interface {
- SendAlgorithm
- BandwidthEstimate() Bandwidth
-
- // Stuff only used in testing
-
- HybridSlowStart() *HybridSlowStart
- SlowstartThreshold() protocol.PacketNumber
- RenoBeta() float32
- InRecovery() bool
-}
diff --git a/vendor/github.com/phuslu/quic-go/congestion/prr_sender.go b/vendor/github.com/phuslu/quic-go/congestion/prr_sender.go
deleted file mode 100644
index 51af9a4..0000000
--- a/vendor/github.com/phuslu/quic-go/congestion/prr_sender.go
+++ /dev/null
@@ -1,63 +0,0 @@
-package congestion
-
-import (
- "time"
-
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/utils"
-)
-
-// PrrSender implements the Proportional Rate Reduction (PRR) per RFC 6937
-type PrrSender struct {
- bytesSentSinceLoss protocol.ByteCount
- bytesDeliveredSinceLoss protocol.ByteCount
- ackCountSinceLoss protocol.ByteCount
- bytesInFlightBeforeLoss protocol.ByteCount
-}
-
-// OnPacketSent should be called after a packet was sent
-func (p *PrrSender) OnPacketSent(sentBytes protocol.ByteCount) {
- p.bytesSentSinceLoss += sentBytes
-}
-
-// OnPacketLost should be called on the first loss that triggers a recovery
-// period and all other methods in this class should only be called when in
-// recovery.
-func (p *PrrSender) OnPacketLost(bytesInFlight protocol.ByteCount) {
- p.bytesSentSinceLoss = 0
- p.bytesInFlightBeforeLoss = bytesInFlight
- p.bytesDeliveredSinceLoss = 0
- p.ackCountSinceLoss = 0
-}
-
-// OnPacketAcked should be called after a packet was acked
-func (p *PrrSender) OnPacketAcked(ackedBytes protocol.ByteCount) {
- p.bytesDeliveredSinceLoss += ackedBytes
- p.ackCountSinceLoss++
-}
-
-// TimeUntilSend calculates the time until a packet can be sent
-func (p *PrrSender) TimeUntilSend(congestionWindow, bytesInFlight, slowstartThreshold protocol.ByteCount) time.Duration {
- // Return QuicTime::Zero In order to ensure limited transmit always works.
- if p.bytesSentSinceLoss == 0 || bytesInFlight < protocol.DefaultTCPMSS {
- return 0
- }
- if congestionWindow > bytesInFlight {
- // During PRR-SSRB, limit outgoing packets to 1 extra MSS per ack, instead
- // of sending the entire available window. This prevents burst retransmits
- // when more packets are lost than the CWND reduction.
- // limit = MAX(prr_delivered - prr_out, DeliveredData) + MSS
- if p.bytesDeliveredSinceLoss+p.ackCountSinceLoss*protocol.DefaultTCPMSS <= p.bytesSentSinceLoss {
- return utils.InfDuration
- }
- return 0
- }
- // Implement Proportional Rate Reduction (RFC6937).
- // Checks a simplified version of the PRR formula that doesn't use division:
- // AvailableSendWindow =
- // CEIL(prr_delivered * ssthresh / BytesInFlightAtLoss) - prr_sent
- if p.bytesDeliveredSinceLoss*slowstartThreshold > p.bytesSentSinceLoss*p.bytesInFlightBeforeLoss {
- return 0
- }
- return utils.InfDuration
-}
diff --git a/vendor/github.com/phuslu/quic-go/congestion/rtt_stats.go b/vendor/github.com/phuslu/quic-go/congestion/rtt_stats.go
deleted file mode 100644
index b8288a1..0000000
--- a/vendor/github.com/phuslu/quic-go/congestion/rtt_stats.go
+++ /dev/null
@@ -1,183 +0,0 @@
-package congestion
-
-import (
- "time"
-
- "github.com/phuslu/quic-go/internal/utils"
-)
-
-const (
- // Note: This constant is also defined in the ackhandler package.
- initialRTTus = 100 * 1000
- rttAlpha float32 = 0.125
- oneMinusAlpha float32 = (1 - rttAlpha)
- rttBeta float32 = 0.25
- oneMinusBeta float32 = (1 - rttBeta)
- halfWindow float32 = 0.5
- quarterWindow float32 = 0.25
-)
-
-type rttSample struct {
- rtt time.Duration
- time time.Time
-}
-
-// RTTStats provides round-trip statistics
-type RTTStats struct {
- initialRTTus int64
-
- recentMinRTTwindow time.Duration
- minRTT time.Duration
- latestRTT time.Duration
- smoothedRTT time.Duration
- meanDeviation time.Duration
-
- numMinRTTsamplesRemaining uint32
-
- newMinRTT rttSample
- recentMinRTT rttSample
- halfWindowRTT rttSample
- quarterWindowRTT rttSample
-}
-
-// NewRTTStats makes a properly initialized RTTStats object
-func NewRTTStats() *RTTStats {
- return &RTTStats{
- initialRTTus: initialRTTus,
- recentMinRTTwindow: utils.InfDuration,
- }
-}
-
-// InitialRTTus is the initial RTT in us
-func (r *RTTStats) InitialRTTus() int64 { return r.initialRTTus }
-
-// MinRTT Returns the minRTT for the entire connection.
-// May return Zero if no valid updates have occurred.
-func (r *RTTStats) MinRTT() time.Duration { return r.minRTT }
-
-// LatestRTT returns the most recent rtt measurement.
-// May return Zero if no valid updates have occurred.
-func (r *RTTStats) LatestRTT() time.Duration { return r.latestRTT }
-
-// RecentMinRTT the minRTT since SampleNewRecentMinRtt has been called, or the
-// minRTT for the entire connection if SampleNewMinRtt was never called.
-func (r *RTTStats) RecentMinRTT() time.Duration { return r.recentMinRTT.rtt }
-
-// SmoothedRTT returns the EWMA smoothed RTT for the connection.
-// May return Zero if no valid updates have occurred.
-func (r *RTTStats) SmoothedRTT() time.Duration { return r.smoothedRTT }
-
-// GetQuarterWindowRTT gets the quarter window RTT
-func (r *RTTStats) GetQuarterWindowRTT() time.Duration { return r.quarterWindowRTT.rtt }
-
-// GetHalfWindowRTT gets the half window RTT
-func (r *RTTStats) GetHalfWindowRTT() time.Duration { return r.halfWindowRTT.rtt }
-
-// MeanDeviation gets the mean deviation
-func (r *RTTStats) MeanDeviation() time.Duration { return r.meanDeviation }
-
-// SetRecentMinRTTwindow sets how old a recent min rtt sample can be.
-func (r *RTTStats) SetRecentMinRTTwindow(recentMinRTTwindow time.Duration) {
- r.recentMinRTTwindow = recentMinRTTwindow
-}
-
-// UpdateRTT updates the RTT based on a new sample.
-func (r *RTTStats) UpdateRTT(sendDelta, ackDelay time.Duration, now time.Time) {
- if sendDelta == utils.InfDuration || sendDelta <= 0 {
- utils.Debugf("Ignoring measured sendDelta, because it's is either infinite, zero, or negative: %d", sendDelta/time.Microsecond)
- return
- }
-
- // Update r.minRTT first. r.minRTT does not use an rttSample corrected for
- // ackDelay but the raw observed sendDelta, since poor clock granularity at
- // the client may cause a high ackDelay to result in underestimation of the
- // r.minRTT.
- if r.minRTT == 0 || r.minRTT > sendDelta {
- r.minRTT = sendDelta
- }
- r.updateRecentMinRTT(sendDelta, now)
-
- // Correct for ackDelay if information received from the peer results in a
- // positive RTT sample. Otherwise, we use the sendDelta as a reasonable
- // measure for smoothedRTT.
- sample := sendDelta
- if sample > ackDelay {
- sample -= ackDelay
- }
- r.latestRTT = sample
- // First time call.
- if r.smoothedRTT == 0 {
- r.smoothedRTT = sample
- r.meanDeviation = sample / 2
- } else {
- r.meanDeviation = time.Duration(oneMinusBeta*float32(r.meanDeviation/time.Microsecond)+rttBeta*float32(utils.AbsDuration(r.smoothedRTT-sample)/time.Microsecond)) * time.Microsecond
- r.smoothedRTT = time.Duration((float32(r.smoothedRTT/time.Microsecond)*oneMinusAlpha)+(float32(sample/time.Microsecond)*rttAlpha)) * time.Microsecond
- }
-}
-
-func (r *RTTStats) updateRecentMinRTT(sample time.Duration, now time.Time) { // Recent minRTT update.
- if r.numMinRTTsamplesRemaining > 0 {
- r.numMinRTTsamplesRemaining--
- if r.newMinRTT.rtt == 0 || sample <= r.newMinRTT.rtt {
- r.newMinRTT = rttSample{rtt: sample, time: now}
- }
- if r.numMinRTTsamplesRemaining == 0 {
- r.recentMinRTT = r.newMinRTT
- r.halfWindowRTT = r.newMinRTT
- r.quarterWindowRTT = r.newMinRTT
- }
- }
-
- // Update the three recent rtt samples.
- if r.recentMinRTT.rtt == 0 || sample <= r.recentMinRTT.rtt {
- r.recentMinRTT = rttSample{rtt: sample, time: now}
- r.halfWindowRTT = r.recentMinRTT
- r.quarterWindowRTT = r.recentMinRTT
- } else if sample <= r.halfWindowRTT.rtt {
- r.halfWindowRTT = rttSample{rtt: sample, time: now}
- r.quarterWindowRTT = r.halfWindowRTT
- } else if sample <= r.quarterWindowRTT.rtt {
- r.quarterWindowRTT = rttSample{rtt: sample, time: now}
- }
-
- // Expire old min rtt samples.
- if r.recentMinRTT.time.Before(now.Add(-r.recentMinRTTwindow)) {
- r.recentMinRTT = r.halfWindowRTT
- r.halfWindowRTT = r.quarterWindowRTT
- r.quarterWindowRTT = rttSample{rtt: sample, time: now}
- } else if r.halfWindowRTT.time.Before(now.Add(-time.Duration(float32(r.recentMinRTTwindow/time.Microsecond)*halfWindow) * time.Microsecond)) {
- r.halfWindowRTT = r.quarterWindowRTT
- r.quarterWindowRTT = rttSample{rtt: sample, time: now}
- } else if r.quarterWindowRTT.time.Before(now.Add(-time.Duration(float32(r.recentMinRTTwindow/time.Microsecond)*quarterWindow) * time.Microsecond)) {
- r.quarterWindowRTT = rttSample{rtt: sample, time: now}
- }
-}
-
-// SampleNewRecentMinRTT forces RttStats to sample a new recent min rtt within the next
-// |numSamples| UpdateRTT calls.
-func (r *RTTStats) SampleNewRecentMinRTT(numSamples uint32) {
- r.numMinRTTsamplesRemaining = numSamples
- r.newMinRTT = rttSample{}
-}
-
-// OnConnectionMigration is called when connection migrates and rtt measurement needs to be reset.
-func (r *RTTStats) OnConnectionMigration() {
- r.latestRTT = 0
- r.minRTT = 0
- r.smoothedRTT = 0
- r.meanDeviation = 0
- r.initialRTTus = initialRTTus
- r.numMinRTTsamplesRemaining = 0
- r.recentMinRTTwindow = utils.InfDuration
- r.recentMinRTT = rttSample{}
- r.halfWindowRTT = rttSample{}
- r.quarterWindowRTT = rttSample{}
-}
-
-// ExpireSmoothedMetrics causes the smoothed_rtt to be increased to the latest_rtt if the latest_rtt
-// is larger. The mean deviation is increased to the most recent deviation if
-// it's larger.
-func (r *RTTStats) ExpireSmoothedMetrics() {
- r.meanDeviation = utils.MaxDuration(r.meanDeviation, utils.AbsDuration(r.smoothedRTT-r.latestRTT))
- r.smoothedRTT = utils.MaxDuration(r.smoothedRTT, r.latestRTT)
-}
diff --git a/vendor/github.com/phuslu/quic-go/congestion/stats.go b/vendor/github.com/phuslu/quic-go/congestion/stats.go
deleted file mode 100644
index 6bcf1c7..0000000
--- a/vendor/github.com/phuslu/quic-go/congestion/stats.go
+++ /dev/null
@@ -1,8 +0,0 @@
-package congestion
-
-import "github.com/phuslu/quic-go/internal/protocol"
-
-type connectionStats struct {
- slowstartPacketsLost protocol.PacketNumber
- slowstartBytesLost protocol.ByteCount
-}
diff --git a/vendor/github.com/phuslu/quic-go/conn.go b/vendor/github.com/phuslu/quic-go/conn.go
deleted file mode 100644
index 700c147..0000000
--- a/vendor/github.com/phuslu/quic-go/conn.go
+++ /dev/null
@@ -1,54 +0,0 @@
-package quic
-
-import (
- "net"
- "sync"
-)
-
-type connection interface {
- Write([]byte) error
- Read([]byte) (int, net.Addr, error)
- Close() error
- LocalAddr() net.Addr
- RemoteAddr() net.Addr
- SetCurrentRemoteAddr(net.Addr)
-}
-
-type conn struct {
- mutex sync.RWMutex
-
- pconn net.PacketConn
- currentAddr net.Addr
-}
-
-var _ connection = &conn{}
-
-func (c *conn) Write(p []byte) error {
- _, err := c.pconn.WriteTo(p, c.currentAddr)
- return err
-}
-
-func (c *conn) Read(p []byte) (int, net.Addr, error) {
- return c.pconn.ReadFrom(p)
-}
-
-func (c *conn) SetCurrentRemoteAddr(addr net.Addr) {
- c.mutex.Lock()
- c.currentAddr = addr
- c.mutex.Unlock()
-}
-
-func (c *conn) LocalAddr() net.Addr {
- return c.pconn.LocalAddr()
-}
-
-func (c *conn) RemoteAddr() net.Addr {
- c.mutex.RLock()
- addr := c.currentAddr
- c.mutex.RUnlock()
- return addr
-}
-
-func (c *conn) Close() error {
- return c.pconn.Close()
-}
diff --git a/vendor/github.com/phuslu/quic-go/crypto_stream.go b/vendor/github.com/phuslu/quic-go/crypto_stream.go
deleted file mode 100644
index f4eb51b..0000000
--- a/vendor/github.com/phuslu/quic-go/crypto_stream.go
+++ /dev/null
@@ -1,41 +0,0 @@
-package quic
-
-import (
- "io"
-
- "github.com/phuslu/quic-go/internal/flowcontrol"
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/wire"
-)
-
-type cryptoStreamI interface {
- StreamID() protocol.StreamID
- io.Reader
- io.Writer
- handleStreamFrame(*wire.StreamFrame) error
- popStreamFrame(protocol.ByteCount) (*wire.StreamFrame, bool)
- closeForShutdown(error)
- setReadOffset(protocol.ByteCount)
- // methods needed for flow control
- getWindowUpdate() protocol.ByteCount
- handleMaxStreamDataFrame(*wire.MaxStreamDataFrame)
-}
-
-type cryptoStream struct {
- *stream
-}
-
-var _ cryptoStreamI = &cryptoStream{}
-
-func newCryptoStream(sender streamSender, flowController flowcontrol.StreamFlowController, version protocol.VersionNumber) cryptoStreamI {
- str := newStream(version.CryptoStreamID(), sender, flowController, version)
- return &cryptoStream{str}
-}
-
-// SetReadOffset sets the read offset.
-// It is only needed for the crypto stream.
-// It must not be called concurrently with any other stream methods, especially Read and Write.
-func (s *cryptoStream) setReadOffset(offset protocol.ByteCount) {
- s.receiveStream.readOffset = offset
- s.receiveStream.frameQueue.readPosition = offset
-}
diff --git a/vendor/github.com/phuslu/quic-go/h2quic/client.go b/vendor/github.com/phuslu/quic-go/h2quic/client.go
deleted file mode 100644
index 5265cab..0000000
--- a/vendor/github.com/phuslu/quic-go/h2quic/client.go
+++ /dev/null
@@ -1,326 +0,0 @@
-package h2quic
-
-import (
- "crypto/tls"
- "errors"
- "fmt"
- "io"
- "net"
- "net/http"
- "strings"
- "sync"
- "time"
-
- "golang.org/x/net/http2"
- "golang.org/x/net/http2/hpack"
- "golang.org/x/net/idna"
-
- quic "github.com/phuslu/quic-go"
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/utils"
- "github.com/phuslu/quic-go/qerr"
-)
-
-type roundTripperOpts struct {
- DisableCompression bool
- ResponseHeaderTimeout time.Duration
- DialAddr func(hostname string, tlsConfig *tls.Config, config *quic.Config) (quic.Session, error)
-}
-
-var dialAddr = quic.DialAddr
-
-// client is a HTTP2 client doing QUIC requests
-type client struct {
- mutex sync.RWMutex
-
- createdAt time.Time
- accessAt time.Time
-
- tlsConf *tls.Config
- config *quic.Config
- opts *roundTripperOpts
-
- hostname string
- handshakeErr error
- dialOnce sync.Once
-
- session quic.Session
- headerStream quic.Stream
- headerErr *qerr.QuicError
- headerErrored chan struct{} // this channel is closed if an error occurs on the header stream
- requestWriter *requestWriter
-
- responses map[protocol.StreamID]chan *http.Response
-}
-
-var _ http.RoundTripper = &client{}
-
-var defaultQuicConfig = &quic.Config{
- RequestConnectionIDOmission: true,
- KeepAlive: true,
-}
-
-// newClient creates a new client
-func newClient(
- hostname string,
- tlsConfig *tls.Config,
- opts *roundTripperOpts,
- quicConfig *quic.Config,
-) *client {
- config := defaultQuicConfig
- if quicConfig != nil {
- config = quicConfig
- }
- return &client{
- createdAt: time.Now(),
- hostname: authorityAddr("https", hostname),
- responses: make(map[protocol.StreamID]chan *http.Response),
- tlsConf: tlsConfig,
- config: config,
- opts: opts,
- headerErrored: make(chan struct{}),
- }
-}
-
-// dial dials the connection
-func (c *client) dial() error {
- dialAddr := quic.DialAddr
- if c.opts.DialAddr != nil {
- dialAddr = c.opts.DialAddr
- }
-
- var err error
- c.session, err = dialAddr(c.hostname, c.tlsConf, c.config)
- if err != nil {
- return err
- }
-
- // once the version has been negotiated, open the header stream
- c.headerStream, err = c.session.OpenStream()
- if err != nil {
- return err
- }
- c.requestWriter = newRequestWriter(c.headerStream)
- go c.handleHeaderStream()
- return nil
-}
-
-func (c *client) handleHeaderStream() {
- decoder := hpack.NewDecoder(4096, func(hf hpack.HeaderField) {})
- h2framer := http2.NewFramer(nil, c.headerStream)
-
- var err error
- for err == nil {
- err = c.readResponse(h2framer, decoder)
- }
- utils.Debugf("Error handling header stream: %s", err)
- c.headerErr = qerr.Error(qerr.InvalidHeadersStreamData, err.Error())
- // stop all running request
- close(c.headerErrored)
-}
-
-func (c *client) readResponse(h2framer *http2.Framer, decoder *hpack.Decoder) error {
- frame, err := h2framer.ReadFrame()
- if err != nil {
- return err
- }
- hframe, ok := frame.(*http2.HeadersFrame)
- if !ok {
- return errors.New("not a headers frame")
- }
- mhframe := &http2.MetaHeadersFrame{HeadersFrame: hframe}
- mhframe.Fields, err = decoder.DecodeFull(hframe.HeaderBlockFragment())
- if err != nil {
- return fmt.Errorf("cannot read header fields: %s", err.Error())
- }
-
- c.mutex.RLock()
- responseChan, ok := c.responses[protocol.StreamID(hframe.StreamID)]
- c.mutex.RUnlock()
- if !ok {
- return fmt.Errorf("response channel for stream %d not found", hframe.StreamID)
- }
-
- rsp, err := responseFromHeaders(mhframe)
- if err != nil {
- return err
- }
- responseChan <- rsp
- return nil
-}
-
-// Roundtrip executes a request and returns a response
-func (c *client) RoundTrip(req *http.Request) (*http.Response, error) {
- c.accessAt = time.Now()
- // TODO: add port to address, if it doesn't have one
- if req.URL.Scheme != "https" {
- return nil, errors.New("quic http2: unsupported scheme")
- }
- if false {
- return nil, fmt.Errorf("h2quic Client BUG: RoundTrip called for the wrong client (expected %s, got %s)", c.hostname, req.Host)
- }
-
- c.dialOnce.Do(func() {
- c.handshakeErr = c.dial()
- })
-
- if c.handshakeErr != nil {
- return nil, c.handshakeErr
- }
-
- hasBody := (req.Body != nil)
-
- responseChan := make(chan *http.Response)
- dataStream, err := c.session.OpenStream()
- if err != nil {
- if err != qerr.TooManyOpenStreams {
- _ = c.CloseWithError(err)
- }
- return nil, err
- }
- c.mutex.Lock()
- c.responses[dataStream.StreamID()] = responseChan
- c.mutex.Unlock()
-
- var requestedGzip bool
- if !c.opts.DisableCompression && req.Header.Get("Accept-Encoding") == "" && req.Header.Get("Range") == "" && req.Method != "HEAD" {
- requestedGzip = true
- }
- // TODO: add support for trailers
- endStream := !hasBody && req.Method != http.MethodConnect
- err = c.requestWriter.WriteRequest(req, dataStream.StreamID(), endStream, requestedGzip)
- if err != nil {
- _ = c.CloseWithError(err)
- return nil, err
- }
-
- resc := make(chan error, 1)
- if hasBody {
- go func() {
- resc <- c.writeRequestBody(dataStream, req.Body)
- }()
- }
-
- var res *http.Response
-
- var receivedResponse bool
- var bodySent bool
-
- if !hasBody {
- bodySent = true
- }
-
- var timeout time.Duration
- if d := c.opts.ResponseHeaderTimeout; d != 0 {
- timeout = d
- } else {
- timeout = 10 * time.Second
- }
-
- if ctx := req.Context(); ctx != nil {
- if v := ctx.Value("ResponseHeaderTimeout"); v != nil {
- timeout = v.(time.Duration)
- }
- }
-
- for !(bodySent && receivedResponse) {
- select {
- case res = <-responseChan:
- receivedResponse = true
- c.mutex.Lock()
- delete(c.responses, dataStream.StreamID())
- c.mutex.Unlock()
- case err := <-resc:
- bodySent = true
- if err != nil {
- return nil, err
- }
- case <-c.headerErrored:
- // an error occured on the header stream
- _ = c.CloseWithError(c.headerErr)
- return nil, c.headerErr
- case <-time.After(timeout):
- // wait response timed out
- c.headerStream.Close()
- c.headerErr = qerr.Error(qerr.NetworkIdleTimeout, "read response header timed out")
- // an error occured on the header stream
- _ = c.CloseWithError(c.headerErr)
- return nil, c.headerErr
- }
- }
-
- // TODO: correctly set this variable
- var streamEnded bool
- isHead := (req.Method == "HEAD")
-
- res = setLength(res, isHead, streamEnded)
-
- if streamEnded || isHead {
- res.Body = noBody
- } else {
- res.Body = dataStream
- if requestedGzip && res.Header.Get("Content-Encoding") == "gzip" {
- res.Header.Del("Content-Encoding")
- res.Header.Del("Content-Length")
- res.ContentLength = -1
- res.Body = &gzipReader{body: res.Body}
- res.Uncompressed = true
- }
- }
-
- res.Request = req
- res.TLS = c.session.ConnectionState()
- return res, nil
-}
-
-func (c *client) writeRequestBody(dataStream quic.Stream, body io.ReadCloser) (err error) {
- defer func() {
- cerr := body.Close()
- if err == nil {
- // TODO: what to do with dataStream here? Maybe reset it?
- err = cerr
- }
- }()
-
- _, err = io.Copy(dataStream, body)
- if err != nil {
- // TODO: what to do with dataStream here? Maybe reset it?
- return err
- }
- return dataStream.Close()
-}
-
-// Close closes the client
-func (c *client) CloseWithError(e error) error {
- if c.session == nil {
- return nil
- }
- return c.session.Close(e)
-}
-
-func (c *client) Close() error {
- return c.CloseWithError(nil)
-}
-
-// copied from net/transport.go
-
-// authorityAddr returns a given authority (a host/IP, or host:port / ip:port)
-// and returns a host:port. The port 443 is added if needed.
-func authorityAddr(scheme string, authority string) (addr string) {
- host, port, err := net.SplitHostPort(authority)
- if err != nil { // authority didn't have a port
- port = "443"
- if scheme == "http" {
- port = "80"
- }
- host = authority
- }
- if a, err := idna.ToASCII(host); err == nil {
- host = a
- }
- // IPv6 address literal, without a port:
- if strings.HasPrefix(host, "[") && strings.HasSuffix(host, "]") {
- return host + ":" + port
- }
- return net.JoinHostPort(host, port)
-}
diff --git a/vendor/github.com/phuslu/quic-go/h2quic/gzipreader.go b/vendor/github.com/phuslu/quic-go/h2quic/gzipreader.go
deleted file mode 100644
index 91c226b..0000000
--- a/vendor/github.com/phuslu/quic-go/h2quic/gzipreader.go
+++ /dev/null
@@ -1,35 +0,0 @@
-package h2quic
-
-// copied from net/transport.go
-
-// gzipReader wraps a response body so it can lazily
-// call gzip.NewReader on the first call to Read
-import (
- "compress/gzip"
- "io"
-)
-
-// call gzip.NewReader on the first call to Read
-type gzipReader struct {
- body io.ReadCloser // underlying Response.Body
- zr *gzip.Reader // lazily-initialized gzip reader
- zerr error // sticky error
-}
-
-func (gz *gzipReader) Read(p []byte) (n int, err error) {
- if gz.zerr != nil {
- return 0, gz.zerr
- }
- if gz.zr == nil {
- gz.zr, err = gzip.NewReader(gz.body)
- if err != nil {
- gz.zerr = err
- return 0, err
- }
- }
- return gz.zr.Read(p)
-}
-
-func (gz *gzipReader) Close() error {
- return gz.body.Close()
-}
diff --git a/vendor/github.com/phuslu/quic-go/h2quic/request.go b/vendor/github.com/phuslu/quic-go/h2quic/request.go
deleted file mode 100644
index 8b3fc96..0000000
--- a/vendor/github.com/phuslu/quic-go/h2quic/request.go
+++ /dev/null
@@ -1,80 +0,0 @@
-package h2quic
-
-import (
- "crypto/tls"
- "errors"
- "net/http"
- "net/url"
- "strconv"
- "strings"
-
- "golang.org/x/net/http2/hpack"
-)
-
-func requestFromHeaders(headers []hpack.HeaderField) (*http.Request, error) {
- var path, authority, method, contentLengthStr string
- httpHeaders := http.Header{}
-
- for _, h := range headers {
- switch h.Name {
- case ":path":
- path = h.Value
- case ":method":
- method = h.Value
- case ":authority":
- authority = h.Value
- case "content-length":
- contentLengthStr = h.Value
- default:
- if !h.IsPseudo() {
- httpHeaders.Add(h.Name, h.Value)
- }
- }
- }
-
- // concatenate cookie headers, see https://tools.ietf.org/html/rfc6265#section-5.4
- if len(httpHeaders["Cookie"]) > 0 {
- httpHeaders.Set("Cookie", strings.Join(httpHeaders["Cookie"], "; "))
- }
-
- if (len(path) == 0 && method != http.MethodConnect) || len(authority) == 0 || len(method) == 0 {
- return nil, errors.New(":path, :authority and :method must not be empty")
- }
-
- u, err := url.Parse(path)
- if err != nil {
- return nil, err
- }
-
- var contentLength int64
- if len(contentLengthStr) > 0 {
- contentLength, err = strconv.ParseInt(contentLengthStr, 10, 64)
- if err != nil {
- return nil, err
- }
- }
-
- return &http.Request{
- Method: method,
- URL: u,
- Proto: "HTTP/2.0",
- ProtoMajor: 2,
- ProtoMinor: 0,
- Header: httpHeaders,
- Body: nil,
- ContentLength: contentLength,
- Host: authority,
- RequestURI: path,
- TLS: &tls.ConnectionState{},
- }, nil
-}
-
-func hostnameFromRequest(req *http.Request) string {
- if len(req.Host) > 0 {
- return req.Host
- }
- if req.URL != nil {
- return req.URL.Host
- }
- return ""
-}
diff --git a/vendor/github.com/phuslu/quic-go/h2quic/request_body.go b/vendor/github.com/phuslu/quic-go/h2quic/request_body.go
deleted file mode 100644
index ce78f22..0000000
--- a/vendor/github.com/phuslu/quic-go/h2quic/request_body.go
+++ /dev/null
@@ -1,29 +0,0 @@
-package h2quic
-
-import (
- "io"
-
- quic "github.com/phuslu/quic-go"
-)
-
-type requestBody struct {
- requestRead bool
- dataStream quic.Stream
-}
-
-// make sure the requestBody can be used as a http.Request.Body
-var _ io.ReadCloser = &requestBody{}
-
-func newRequestBody(stream quic.Stream) *requestBody {
- return &requestBody{dataStream: stream}
-}
-
-func (b *requestBody) Read(p []byte) (int, error) {
- b.requestRead = true
- return b.dataStream.Read(p)
-}
-
-func (b *requestBody) Close() error {
- // stream's Close() closes the write side, not the read side
- return nil
-}
diff --git a/vendor/github.com/phuslu/quic-go/h2quic/request_writer.go b/vendor/github.com/phuslu/quic-go/h2quic/request_writer.go
deleted file mode 100644
index cb89473..0000000
--- a/vendor/github.com/phuslu/quic-go/h2quic/request_writer.go
+++ /dev/null
@@ -1,201 +0,0 @@
-package h2quic
-
-import (
- "bytes"
- "fmt"
- "net/http"
- "strconv"
- "strings"
- "sync"
-
- "golang.org/x/net/http2"
- "golang.org/x/net/http2/hpack"
- "golang.org/x/net/lex/httplex"
-
- quic "github.com/phuslu/quic-go"
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/utils"
-)
-
-type requestWriter struct {
- mutex sync.Mutex
- headerStream quic.Stream
-
- henc *hpack.Encoder
- hbuf bytes.Buffer // HPACK encoder writes into this
-}
-
-const defaultUserAgent = "quic-go"
-
-func newRequestWriter(headerStream quic.Stream) *requestWriter {
- rw := &requestWriter{
- headerStream: headerStream,
- }
- rw.henc = hpack.NewEncoder(&rw.hbuf)
- return rw
-}
-
-func (w *requestWriter) WriteRequest(req *http.Request, dataStreamID protocol.StreamID, endStream, requestGzip bool) error {
- // TODO: add support for trailers
- // TODO: add support for gzip compression
- // TODO: write continuation frames, if the header frame is too long
-
- w.mutex.Lock()
- defer w.mutex.Unlock()
-
- w.encodeHeaders(req, requestGzip, "", actualContentLength(req))
- h2framer := http2.NewFramer(w.headerStream, nil)
- return h2framer.WriteHeaders(http2.HeadersFrameParam{
- StreamID: uint32(dataStreamID),
- EndHeaders: true,
- EndStream: endStream,
- BlockFragment: w.hbuf.Bytes(),
- Priority: http2.PriorityParam{Weight: 0xff},
- })
-}
-
-// the rest of this files is copied from http2.Transport
-func (w *requestWriter) encodeHeaders(req *http.Request, addGzipHeader bool, trailers string, contentLength int64) ([]byte, error) {
- w.hbuf.Reset()
-
- host := req.Host
- if host == "" {
- host = req.URL.Host
- }
- host, err := httplex.PunycodeHostPort(host)
- if err != nil {
- return nil, err
- }
-
- var path string
- if req.Method != "CONNECT" {
- path = req.URL.RequestURI()
- if !validPseudoPath(path) {
- orig := path
- path = strings.TrimPrefix(path, req.URL.Scheme+"://"+host)
- if !validPseudoPath(path) {
- if req.URL.Opaque != "" {
- return nil, fmt.Errorf("invalid request :path %q from URL.Opaque = %q", orig, req.URL.Opaque)
- } else {
- return nil, fmt.Errorf("invalid request :path %q", orig)
- }
- }
- }
- }
-
- // Check for any invalid headers and return an error before we
- // potentially pollute our hpack state. (We want to be able to
- // continue to reuse the hpack encoder for future requests)
- for k, vv := range req.Header {
- if !httplex.ValidHeaderFieldName(k) {
- return nil, fmt.Errorf("invalid HTTP header name %q", k)
- }
- for _, v := range vv {
- if !httplex.ValidHeaderFieldValue(v) {
- return nil, fmt.Errorf("invalid HTTP header value %q for header %q", v, k)
- }
- }
- }
-
- // 8.1.2.3 Request Pseudo-Header Fields
- // The :path pseudo-header field includes the path and query parts of the
- // target URI (the path-absolute production and optionally a '?' character
- // followed by the query production (see Sections 3.3 and 3.4 of
- // [RFC3986]).
- w.writeHeader(":authority", host)
- w.writeHeader(":method", req.Method)
- if req.Method != "CONNECT" {
- w.writeHeader(":path", path)
- w.writeHeader(":scheme", req.URL.Scheme)
- }
- if trailers != "" {
- w.writeHeader("trailer", trailers)
- }
-
- var didUA bool
- for k, vv := range req.Header {
- lowKey := strings.ToLower(k)
- switch lowKey {
- case "host", "content-length":
- // Host is :authority, already sent.
- // Content-Length is automatic, set below.
- continue
- case "connection", "proxy-connection", "transfer-encoding", "upgrade", "keep-alive":
- // Per 8.1.2.2 Connection-Specific Header
- // Fields, don't send connection-specific
- // fields. We have already checked if any
- // are error-worthy so just ignore the rest.
- continue
- case "user-agent":
- // Match Go's http1 behavior: at most one
- // User-Agent. If set to nil or empty string,
- // then omit it. Otherwise if not mentioned,
- // include the default (below).
- didUA = true
- if len(vv) < 1 {
- continue
- }
- vv = vv[:1]
- if vv[0] == "" {
- continue
- }
- }
- for _, v := range vv {
- w.writeHeader(lowKey, v)
- }
- }
- if shouldSendReqContentLength(req.Method, contentLength) {
- w.writeHeader("content-length", strconv.FormatInt(contentLength, 10))
- }
- if addGzipHeader {
- w.writeHeader("accept-encoding", "gzip")
- }
- if !didUA {
- w.writeHeader("user-agent", defaultUserAgent)
- }
- return w.hbuf.Bytes(), nil
-}
-
-func (w *requestWriter) writeHeader(name, value string) {
- utils.Debugf("http2: Transport encoding header %q = %q", name, value)
- w.henc.WriteField(hpack.HeaderField{Name: name, Value: value})
-}
-
-// shouldSendReqContentLength reports whether the http2.Transport should send
-// a "content-length" request header. This logic is basically a copy of the net/http
-// transferWriter.shouldSendContentLength.
-// The contentLength is the corrected contentLength (so 0 means actually 0, not unknown).
-// -1 means unknown.
-func shouldSendReqContentLength(method string, contentLength int64) bool {
- if contentLength > 0 {
- return true
- }
- if contentLength < 0 {
- return false
- }
- // For zero bodies, whether we send a content-length depends on the method.
- // It also kinda doesn't matter for http2 either way, with END_STREAM.
- switch method {
- case "POST", "PUT", "PATCH":
- return true
- default:
- return false
- }
-}
-
-func validPseudoPath(v string) bool {
- return (len(v) > 0 && v[0] == '/' && (len(v) == 1 || v[1] != '/')) || v == "*"
-}
-
-// actualContentLength returns a sanitized version of
-// req.ContentLength, where 0 actually means zero (not unknown) and -1
-// means unknown.
-func actualContentLength(req *http.Request) int64 {
- if req.Body == nil {
- return 0
- }
- if req.ContentLength != 0 {
- return req.ContentLength
- }
- return -1
-}
diff --git a/vendor/github.com/phuslu/quic-go/h2quic/response.go b/vendor/github.com/phuslu/quic-go/h2quic/response.go
deleted file mode 100644
index 13efdf8..0000000
--- a/vendor/github.com/phuslu/quic-go/h2quic/response.go
+++ /dev/null
@@ -1,111 +0,0 @@
-package h2quic
-
-import (
- "bytes"
- "errors"
- "io"
- "io/ioutil"
- "net/http"
- "net/textproto"
- "strconv"
- "strings"
-
- "golang.org/x/net/http2"
-)
-
-// copied from net/http2/transport.go
-
-var errResponseHeaderListSize = errors.New("http2: response header list larger than advertised limit")
-var noBody io.ReadCloser = ioutil.NopCloser(bytes.NewReader(nil))
-
-// from the handleResponse function
-func responseFromHeaders(f *http2.MetaHeadersFrame) (*http.Response, error) {
- if f.Truncated {
- return nil, errResponseHeaderListSize
- }
-
- status := f.PseudoValue("status")
- if status == "" {
- return nil, errors.New("missing status pseudo header")
- }
- statusCode, err := strconv.Atoi(status)
- if err != nil {
- return nil, errors.New("malformed non-numeric status pseudo header")
- }
-
- if statusCode == 100 {
- // TODO: handle this
-
- // traceGot100Continue(cs.trace)
- // if cs.on100 != nil {
- // cs.on100() // forces any write delay timer to fire
- // }
- // cs.pastHeaders = false // do it all again
- // return nil, nil
- }
-
- header := make(http.Header)
- res := &http.Response{
- Proto: "HTTP/2.0",
- ProtoMajor: 2,
- Header: header,
- StatusCode: statusCode,
- Status: status + " " + http.StatusText(statusCode),
- }
- for _, hf := range f.RegularFields() {
- key := http.CanonicalHeaderKey(hf.Name)
- if key == "Trailer" {
- t := res.Trailer
- if t == nil {
- t = make(http.Header)
- res.Trailer = t
- }
- foreachHeaderElement(hf.Value, func(v string) {
- t[http.CanonicalHeaderKey(v)] = nil
- })
- } else {
- header[key] = append(header[key], hf.Value)
- }
- }
-
- return res, nil
-}
-
-// continuation of the handleResponse function
-func setLength(res *http.Response, isHead, streamEnded bool) *http.Response {
- if !streamEnded || isHead {
- res.ContentLength = -1
- if clens := res.Header["Content-Length"]; len(clens) == 1 {
- if clen64, err := strconv.ParseInt(clens[0], 10, 64); err == nil {
- res.ContentLength = clen64
- } else {
- // TODO: care? unlike http/1, it won't mess up our framing, so it's
- // more safe smuggling-wise to ignore.
- }
- } else if len(clens) > 1 {
- // TODO: care? unlike http/1, it won't mess up our framing, so it's
- // more safe smuggling-wise to ignore.
- }
- }
- return res
-}
-
-// copied from net/http/server.go
-
-// foreachHeaderElement splits v according to the "#rule" construction
-// in RFC 2616 section 2.1 and calls fn for each non-empty element.
-func foreachHeaderElement(v string, fn func(string)) {
- v = textproto.TrimString(v)
- if v == "" {
- return
- }
- if !strings.Contains(v, ",") {
- fn(v)
- return
- }
- for _, f := range strings.Split(v, ",") {
- if f = textproto.TrimString(f); f != "" {
- fn(f)
- }
- }
-}
diff --git a/vendor/github.com/phuslu/quic-go/h2quic/response_writer.go b/vendor/github.com/phuslu/quic-go/h2quic/response_writer.go
deleted file mode 100644
index fa7d108..0000000
--- a/vendor/github.com/phuslu/quic-go/h2quic/response_writer.go
+++ /dev/null
@@ -1,108 +0,0 @@
-package h2quic
-
-import (
- "bytes"
- "net/http"
- "strconv"
- "strings"
- "sync"
-
- quic "github.com/phuslu/quic-go"
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/utils"
- "golang.org/x/net/http2"
- "golang.org/x/net/http2/hpack"
-)
-
-type responseWriter struct {
- dataStreamID protocol.StreamID
- dataStream quic.Stream
-
- headerStream quic.Stream
- headerStreamMutex *sync.Mutex
-
- header http.Header
- status int // status code passed to WriteHeader
- headerWritten bool
-}
-
-func newResponseWriter(headerStream quic.Stream, headerStreamMutex *sync.Mutex, dataStream quic.Stream, dataStreamID protocol.StreamID) *responseWriter {
- return &responseWriter{
- header: http.Header{},
- headerStream: headerStream,
- headerStreamMutex: headerStreamMutex,
- dataStream: dataStream,
- dataStreamID: dataStreamID,
- }
-}
-
-func (w *responseWriter) Header() http.Header {
- return w.header
-}
-
-func (w *responseWriter) WriteHeader(status int) {
- if w.headerWritten {
- return
- }
- w.headerWritten = true
- w.status = status
-
- var headers bytes.Buffer
- enc := hpack.NewEncoder(&headers)
- enc.WriteField(hpack.HeaderField{Name: ":status", Value: strconv.Itoa(status)})
-
- for k, v := range w.header {
- for index := range v {
- enc.WriteField(hpack.HeaderField{Name: strings.ToLower(k), Value: v[index]})
- }
- }
-
- utils.Infof("Responding with %d", status)
- w.headerStreamMutex.Lock()
- defer w.headerStreamMutex.Unlock()
- h2framer := http2.NewFramer(w.headerStream, nil)
- err := h2framer.WriteHeaders(http2.HeadersFrameParam{
- StreamID: uint32(w.dataStreamID),
- EndHeaders: true,
- BlockFragment: headers.Bytes(),
- })
- if err != nil {
- utils.Errorf("could not write h2 header: %s", err.Error())
- }
-}
-
-func (w *responseWriter) Write(p []byte) (int, error) {
- if !w.headerWritten {
- w.WriteHeader(200)
- }
- if !bodyAllowedForStatus(w.status) {
- return 0, http.ErrBodyNotAllowed
- }
- return w.dataStream.Write(p)
-}
-
-func (w *responseWriter) Flush() {}
-
-// This is a NOP. Use http.Request.Context
-func (w *responseWriter) CloseNotify() <-chan bool { return make(<-chan bool) }
-
-// test that we implement http.Flusher
-var _ http.Flusher = &responseWriter{}
-
-// test that we implement http.CloseNotifier
-var _ http.CloseNotifier = &responseWriter{}
-
-// copied from http2/http2.go
-// bodyAllowedForStatus reports whether a given response status code
-// permits a body. See RFC 2616, section 4.4.
-func bodyAllowedForStatus(status int) bool {
- switch {
- case status >= 100 && status <= 199:
- return false
- case status == 204:
- return false
- case status == 304:
- return false
- }
- return true
-}
diff --git a/vendor/github.com/phuslu/quic-go/h2quic/roundtrip.go b/vendor/github.com/phuslu/quic-go/h2quic/roundtrip.go
deleted file mode 100644
index c8adfd5..0000000
--- a/vendor/github.com/phuslu/quic-go/h2quic/roundtrip.go
+++ /dev/null
@@ -1,251 +0,0 @@
-package h2quic
-
-import (
- "crypto/tls"
- "errors"
- "fmt"
- "io"
- "net"
- "net/http"
- "runtime"
- "strings"
- "sync"
- "time"
-
- quic "github.com/phuslu/quic-go"
-
- "golang.org/x/net/lex/httplex"
-)
-
-type roundTripCloser interface {
- http.RoundTripper
- io.Closer
-}
-
-// RoundTripper implements the http.RoundTripper interface
-type RoundTripper struct {
- mutex sync.Mutex
-
- // DisableCompression, if true, prevents the Transport from
- // requesting compression with an "Accept-Encoding: gzip"
- // request header when the Request contains no existing
- // Accept-Encoding value. If the Transport requests gzip on
- // its own and gets a gzipped response, it's transparently
- // decoded in the Response.Body. However, if the user
- // explicitly requested gzip it is not automatically
- // uncompressed.
- DisableCompression bool
-
- // ResponseHeaderTimeout, if non-zero, specifies the amount of
- // time to wait for a server's response headers after fully
- // writing the request (including its body, if any). This
- // time does not include the time to read the response body.
- ResponseHeaderTimeout time.Duration
-
- // TLSClientConfig specifies the TLS configuration to use with
- // tls.Client. If nil, the default configuration is used.
- TLSClientConfig *tls.Config
-
- // GetClientKey specifies a function to return a clients key string for hostname
- GetClientKey func(hostname string) string
-
- // DialAddr specifies an optional function for quic.DailAddr.
- // If this value is nil, it will default to net.DialAddr for the client.
- DialAddr func(hostname string, tlsConfig *tls.Config, config *quic.Config) (quic.Session, error)
-
- // QuicConfig is the quic.Config used for dialing new connections.
- // If nil, reasonable default values will be used.
- QuicConfig *quic.Config
-
- // KeepAliveTimeout is specifies an optional duration for quic.Session life time.
- // If this value is zero, it will never close
- KeepAliveTimeout time.Duration
-
- // IdleConnTimeout is specifies an optional duration for quic.Session idle time.
- IdleConnTimeout time.Duration
-
- clients map[string]roundTripCloser
-}
-
-// RoundTripOpt are options for the Transport.RoundTripOpt method.
-type RoundTripOpt struct {
- // OnlyCachedConn controls whether the RoundTripper may
- // create a new QUIC connection. If set true and
- // no cached connection is available, RoundTrip
- // will return ErrNoCachedConn.
- OnlyCachedConn bool
-}
-
-var _ roundTripCloser = &RoundTripper{}
-
-// ErrNoCachedConn is returned when RoundTripper.OnlyCachedConn is set
-var ErrNoCachedConn = errors.New("h2quic: no cached connection was available")
-
-// RoundTripOpt is like RoundTrip, but takes options.
-func (r *RoundTripper) RoundTripOpt(req *http.Request, opt RoundTripOpt) (*http.Response, error) {
- if req.URL == nil {
- closeRequestBody(req)
- return nil, errors.New("quic: nil Request.URL")
- }
- if req.URL.Host == "" {
- closeRequestBody(req)
- return nil, errors.New("quic: no Host in request URL")
- }
- if req.Header == nil {
- closeRequestBody(req)
- return nil, errors.New("quic: nil Request.Header")
- }
-
- if req.URL.Scheme == "https" {
- for k, vv := range req.Header {
- if !httplex.ValidHeaderFieldName(k) {
- return nil, fmt.Errorf("quic: invalid http header field name %q", k)
- }
- for _, v := range vv {
- if !httplex.ValidHeaderFieldValue(v) {
- return nil, fmt.Errorf("quic: invalid http header field value %q for key %v", v, k)
- }
- }
- }
- } else {
- closeRequestBody(req)
- return nil, fmt.Errorf("quic: unsupported protocol scheme: %s", req.URL.Scheme)
- }
-
- if req.Method != "" && !validMethod(req.Method) {
- closeRequestBody(req)
- return nil, fmt.Errorf("quic: invalid method %q", req.Method)
- }
-
- hostname := authorityAddr("https", hostnameFromRequest(req))
- cl, err := r.getClient(hostname, opt.OnlyCachedConn)
- if err != nil {
- return nil, err
- }
-
- resp, err := cl.RoundTrip(req)
-
- if err == nil {
- return resp, err
- }
-
- if _, ok := err.(*net.OpError); ok {
- return resp, err
- }
-
- nerr := &net.OpError{
- Op: "read",
- Net: "udp",
- Err: err,
- }
-
- session := cl.(*client).session
- if session != nil {
- nerr.Addr = session.RemoteAddr()
- nerr.Source = session.LocalAddr()
- }
-
- return resp, nerr
-}
-
-// RoundTrip does a round trip.
-func (r *RoundTripper) RoundTrip(req *http.Request) (*http.Response, error) {
- return r.RoundTripOpt(req, RoundTripOpt{})
-}
-
-func (r *RoundTripper) getClient(hostname string, onlyCached bool) (http.RoundTripper, error) {
- r.mutex.Lock()
- defer r.mutex.Unlock()
-
- if r.clients == nil {
- r.clients = make(map[string]roundTripCloser)
- }
-
- var hostnameKey string
- if r.GetClientKey != nil {
- hostnameKey = r.GetClientKey(hostname)
- } else {
- hostnameKey = hostname
- }
-
- c, ok := r.clients[hostnameKey]
- if ok && r.KeepAliveTimeout != 0 && time.Since(c.(*client).createdAt) > r.KeepAliveTimeout {
- ok = false
- }
- if ok && r.IdleConnTimeout != 0 && time.Since(c.(*client).accessAt) > r.IdleConnTimeout {
- ok = false
- }
- if !ok {
- if onlyCached {
- return nil, ErrNoCachedConn
- }
- c = newClient(hostname, r.TLSClientConfig, &roundTripperOpts{DisableCompression: r.DisableCompression, ResponseHeaderTimeout: r.ResponseHeaderTimeout, DialAddr: r.DialAddr}, r.QuicConfig)
- runtime.SetFinalizer(c, func(r *client) { r.Close() })
- r.clients[hostnameKey] = c
- }
- return c, nil
-}
-
-// Close closes the QUIC connections that this RoundTripper has used
-func (r *RoundTripper) Close() error {
- r.mutex.Lock()
- defer r.mutex.Unlock()
- for _, client := range r.clients {
- if err := client.Close(); err != nil {
- return err
- }
- }
- r.clients = nil
- return nil
-}
-
-func closeRequestBody(req *http.Request) {
- if req.Body != nil {
- req.Body.Close()
- }
-}
-
-func validMethod(method string) bool {
- /*
- Method = "OPTIONS" ; Section 9.2
- | "GET" ; Section 9.3
- | "HEAD" ; Section 9.4
- | "POST" ; Section 9.5
- | "PUT" ; Section 9.6
- | "DELETE" ; Section 9.7
- | "TRACE" ; Section 9.8
- | "CONNECT" ; Section 9.9
- | extension-method
- extension-method = token
- token = 1*
- */
- return len(method) > 0 && strings.IndexFunc(method, isNotToken) == -1
-}
-
-// copied from net/http/http.go
-func isNotToken(r rune) bool {
- return !httplex.IsTokenRune(r)
-}
-
-// CloseConnections remove clients according the net.Addr
-func (r *RoundTripper) CloseConnection(f func(raddr net.Addr) bool) {
- r.mutex.Lock()
- defer r.mutex.Unlock()
-
- if f == nil {
- r.Close()
- return
- }
-
- keys := make([]string, 0)
- for k, c := range r.clients {
- session := c.(*client).session
- if session != nil && f(session.RemoteAddr()) {
- go session.Close(errors.New("h2quic: CloseConnections called"))
- keys = append(keys, k)
- }
- }
- for _, k := range keys {
- delete(r.clients, k)
- }
-}
diff --git a/vendor/github.com/phuslu/quic-go/h2quic/server.go b/vendor/github.com/phuslu/quic-go/h2quic/server.go
deleted file mode 100644
index a5f0e0e..0000000
--- a/vendor/github.com/phuslu/quic-go/h2quic/server.go
+++ /dev/null
@@ -1,392 +0,0 @@
-package h2quic
-
-import (
- "crypto/tls"
- "errors"
- "fmt"
- "net"
- "net/http"
- "runtime"
- "strings"
- "sync"
- "sync/atomic"
- "time"
-
- quic "github.com/phuslu/quic-go"
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/utils"
- "github.com/phuslu/quic-go/qerr"
- "golang.org/x/net/http2"
- "golang.org/x/net/http2/hpack"
-)
-
-type streamCreator interface {
- quic.Session
- GetOrOpenStream(protocol.StreamID) (quic.Stream, error)
-}
-
-type remoteCloser interface {
- CloseRemote(protocol.ByteCount)
-}
-
-// allows mocking of quic.Listen and quic.ListenAddr
-var (
- quicListen = quic.Listen
- quicListenAddr = quic.ListenAddr
-)
-
-// Server is a HTTP2 server listening for QUIC connections.
-type Server struct {
- *http.Server
-
- // By providing a quic.Config, it is possible to set parameters of the QUIC connection.
- // If nil, it uses reasonable default values.
- QuicConfig *quic.Config
-
- // Private flag for demo, do not use
- CloseAfterFirstRequest bool
-
- port uint32 // used atomically
-
- listenerMutex sync.Mutex
- listener quic.Listener
- closed bool
-
- supportedVersionsAsString string
-}
-
-// ListenAndServe listens on the UDP address s.Addr and calls s.Handler to handle HTTP/2 requests on incoming connections.
-func (s *Server) ListenAndServe() error {
- if s.Server == nil {
- return errors.New("use of h2quic.Server without http.Server")
- }
- return s.serveImpl(s.TLSConfig, nil)
-}
-
-// ListenAndServeTLS listens on the UDP address s.Addr and calls s.Handler to handle HTTP/2 requests on incoming connections.
-func (s *Server) ListenAndServeTLS(certFile, keyFile string) error {
- var err error
- certs := make([]tls.Certificate, 1)
- certs[0], err = tls.LoadX509KeyPair(certFile, keyFile)
- if err != nil {
- return err
- }
- // We currently only use the cert-related stuff from tls.Config,
- // so we don't need to make a full copy.
- config := &tls.Config{
- Certificates: certs,
- }
- return s.serveImpl(config, nil)
-}
-
-// Serve an existing UDP connection.
-func (s *Server) Serve(conn net.PacketConn) error {
- return s.serveImpl(s.TLSConfig, conn)
-}
-
-func (s *Server) serveImpl(tlsConfig *tls.Config, conn net.PacketConn) error {
- if s.Server == nil {
- return errors.New("use of h2quic.Server without http.Server")
- }
- s.listenerMutex.Lock()
- if s.closed {
- s.listenerMutex.Unlock()
- return errors.New("Server is already closed")
- }
- if s.listener != nil {
- s.listenerMutex.Unlock()
- return errors.New("ListenAndServe may only be called once")
- }
-
- var ln quic.Listener
- var err error
- if conn == nil {
- ln, err = quicListenAddr(s.Addr, tlsConfig, s.QuicConfig)
- } else {
- ln, err = quicListen(conn, tlsConfig, s.QuicConfig)
- }
- if err != nil {
- s.listenerMutex.Unlock()
- return err
- }
- s.listener = ln
- s.listenerMutex.Unlock()
-
- for {
- sess, err := ln.Accept()
- if err != nil {
- return err
- }
- go s.handleHeaderStream(sess.(streamCreator))
- }
-}
-
-func (s *Server) handleHeaderStream(session streamCreator) {
- stream, err := session.AcceptStream()
- if err != nil {
- session.Close(qerr.Error(qerr.InvalidHeadersStreamData, err.Error()))
- return
- }
-
- hpackDecoder := hpack.NewDecoder(4096, nil)
- h2framer := http2.NewFramer(nil, stream)
-
- var headerStreamMutex sync.Mutex // Protects concurrent calls to Write()
- for {
- if err := s.handleRequest(session, stream, &headerStreamMutex, hpackDecoder, h2framer); err != nil {
- // QuicErrors must originate from stream.Read() returning an error.
- // In this case, the session has already logged the error, so we don't
- // need to log it again.
- if _, ok := err.(*qerr.QuicError); !ok {
- utils.Errorf("error handling h2 request: %s", err.Error())
- }
- session.Close(err)
- return
- }
- }
-}
-
-func (s *Server) handleRequest(session streamCreator, headerStream quic.Stream, headerStreamMutex *sync.Mutex, hpackDecoder *hpack.Decoder, h2framer *http2.Framer) error {
- h2frame, err := h2framer.ReadFrame()
- if err != nil {
- return qerr.Error(qerr.HeadersStreamDataDecompressFailure, "cannot read frame")
- }
- h2headersFrame, ok := h2frame.(*http2.HeadersFrame)
- if !ok {
- return qerr.Error(qerr.InvalidHeadersStreamData, "expected a header frame")
- }
- if !h2headersFrame.HeadersEnded() {
- return errors.New("http2 header continuation not implemented")
- }
- headers, err := hpackDecoder.DecodeFull(h2headersFrame.HeaderBlockFragment())
- if err != nil {
- utils.Errorf("invalid http2 headers encoding: %s", err.Error())
- return err
- }
-
- req, err := requestFromHeaders(headers)
- if err != nil {
- return err
- }
-
- req.RemoteAddr = session.RemoteAddr().String()
- req.TLS = session.ConnectionState()
-
- if utils.Debug() {
- utils.Infof("%s %s%s, on data stream %d", req.Method, req.Host, req.RequestURI, h2headersFrame.StreamID)
- } else {
- utils.Infof("%s %s%s", req.Method, req.Host, req.RequestURI)
- }
-
- dataStream, err := session.GetOrOpenStream(protocol.StreamID(h2headersFrame.StreamID))
- if err != nil {
- return err
- }
- // this can happen if the client immediately closes the data stream after sending the request and the runtime processes the reset before the request
- if dataStream == nil {
- return nil
- }
-
- // handleRequest should be as non-blocking as possible to minimize
- // head-of-line blocking. Potentially blocking code is run in a separate
- // goroutine, enabling handleRequest to return before the code is executed.
- go func() {
- streamEnded := h2headersFrame.StreamEnded()
- if streamEnded {
- dataStream.(remoteCloser).CloseRemote(0)
- streamEnded = true
- _, _ = dataStream.Read([]byte{0}) // read the eof
- }
-
- req = req.WithContext(dataStream.Context())
- reqBody := newRequestBody(dataStream)
- req.Body = reqBody
-
- req.RemoteAddr = session.RemoteAddr().String()
-
- responseWriter := newResponseWriter(headerStream, headerStreamMutex, dataStream, protocol.StreamID(h2headersFrame.StreamID))
-
- handler := s.Handler
- if handler == nil {
- handler = http.DefaultServeMux
- }
- panicked := false
- func() {
- defer func() {
- if p := recover(); p != nil {
- // Copied from net/http/server.go
- const size = 64 << 10
- buf := make([]byte, size)
- buf = buf[:runtime.Stack(buf, false)]
- utils.Errorf("http: panic serving: %v\n%s", p, buf)
- panicked = true
- }
- }()
- handler.ServeHTTP(responseWriter, req)
- }()
- if panicked {
- responseWriter.WriteHeader(500)
- } else {
- responseWriter.WriteHeader(200)
- }
- if responseWriter.dataStream != nil {
- if !streamEnded && !reqBody.requestRead {
- // in gQUIC, the error code doesn't matter, so just use 0 here
- responseWriter.dataStream.CancelRead(0)
- }
- responseWriter.dataStream.Close()
- }
- if s.CloseAfterFirstRequest {
- time.Sleep(100 * time.Millisecond)
- session.Close(nil)
- }
- }()
-
- return nil
-}
-
-// Close the server immediately, aborting requests and sending CONNECTION_CLOSE frames to connected clients.
-// Close in combination with ListenAndServe() (instead of Serve()) may race if it is called before a UDP socket is established.
-func (s *Server) Close() error {
- s.listenerMutex.Lock()
- defer s.listenerMutex.Unlock()
- s.closed = true
- if s.listener != nil {
- err := s.listener.Close()
- s.listener = nil
- return err
- }
- return nil
-}
-
-// CloseGracefully shuts down the server gracefully. The server sends a GOAWAY frame first, then waits for either timeout to trigger, or for all running requests to complete.
-// CloseGracefully in combination with ListenAndServe() (instead of Serve()) may race if it is called before a UDP socket is established.
-func (s *Server) CloseGracefully(timeout time.Duration) error {
- // TODO: implement
- return nil
-}
-
-// SetQuicHeaders can be used to set the proper headers that announce that this server supports QUIC.
-// The values that are set depend on the port information from s.Server.Addr, and currently look like this (if Addr has port 443):
-// Alt-Svc: quic=":443"; ma=2592000; v="33,32,31,30"
-func (s *Server) SetQuicHeaders(hdr http.Header) error {
- port := atomic.LoadUint32(&s.port)
-
- if port == 0 {
- // Extract port from s.Server.Addr
- _, portStr, err := net.SplitHostPort(s.Server.Addr)
- if err != nil {
- return err
- }
- portInt, err := net.LookupPort("tcp", portStr)
- if err != nil {
- return err
- }
- port = uint32(portInt)
- atomic.StoreUint32(&s.port, port)
- }
-
- if s.supportedVersionsAsString == "" {
- var versions []string
- for _, v := range protocol.SupportedVersions {
- versions = append(versions, v.ToAltSvc())
- }
- s.supportedVersionsAsString = strings.Join(versions, ",")
- }
-
- hdr.Add("Alt-Svc", fmt.Sprintf(`quic=":%d"; ma=2592000; v="%s"`, port, s.supportedVersionsAsString))
-
- return nil
-}
-
-// ListenAndServeQUIC listens on the UDP network address addr and calls the
-// handler for HTTP/2 requests on incoming connections. http.DefaultServeMux is
-// used when handler is nil.
-func ListenAndServeQUIC(addr, certFile, keyFile string, handler http.Handler) error {
- server := &Server{
- Server: &http.Server{
- Addr: addr,
- Handler: handler,
- },
- }
- return server.ListenAndServeTLS(certFile, keyFile)
-}
-
-// ListenAndServe listens on the given network address for both, TLS and QUIC
-// connetions in parallel. It returns if one of the two returns an error.
-// http.DefaultServeMux is used when handler is nil.
-// The correct Alt-Svc headers for QUIC are set.
-func ListenAndServe(addr, certFile, keyFile string, handler http.Handler) error {
- // Load certs
- var err error
- certs := make([]tls.Certificate, 1)
- certs[0], err = tls.LoadX509KeyPair(certFile, keyFile)
- if err != nil {
- return err
- }
- // We currently only use the cert-related stuff from tls.Config,
- // so we don't need to make a full copy.
- config := &tls.Config{
- Certificates: certs,
- }
-
- // Open the listeners
- udpAddr, err := net.ResolveUDPAddr("udp", addr)
- if err != nil {
- return err
- }
- udpConn, err := net.ListenUDP("udp", udpAddr)
- if err != nil {
- return err
- }
- defer udpConn.Close()
-
- tcpAddr, err := net.ResolveTCPAddr("tcp", addr)
- if err != nil {
- return err
- }
- tcpConn, err := net.ListenTCP("tcp", tcpAddr)
- if err != nil {
- return err
- }
- defer tcpConn.Close()
-
- tlsConn := tls.NewListener(tcpConn, config)
- defer tlsConn.Close()
-
- // Start the servers
- httpServer := &http.Server{
- Addr: addr,
- TLSConfig: config,
- }
-
- quicServer := &Server{
- Server: httpServer,
- }
-
- if handler == nil {
- handler = http.DefaultServeMux
- }
- httpServer.Handler = http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
- quicServer.SetQuicHeaders(w.Header())
- handler.ServeHTTP(w, r)
- })
-
- hErr := make(chan error)
- qErr := make(chan error)
- go func() {
- hErr <- httpServer.Serve(tlsConn)
- }()
- go func() {
- qErr <- quicServer.Serve(udpConn)
- }()
-
- select {
- case err := <-hErr:
- quicServer.Close()
- return err
- case err := <-qErr:
- // Cannot close the HTTP server or wait for requests to complete properly :/
- return err
- }
-}
diff --git a/vendor/github.com/phuslu/quic-go/interface.go b/vendor/github.com/phuslu/quic-go/interface.go
deleted file mode 100644
index dba0e54..0000000
--- a/vendor/github.com/phuslu/quic-go/interface.go
+++ /dev/null
@@ -1,182 +0,0 @@
-package quic
-
-import (
- "context"
- "crypto/tls"
- "io"
- "net"
- "time"
-
- "github.com/phuslu/quic-go/internal/handshake"
- "github.com/phuslu/quic-go/internal/protocol"
-)
-
-// The StreamID is the ID of a QUIC stream.
-type StreamID = protocol.StreamID
-
-// A VersionNumber is a QUIC version number.
-type VersionNumber = protocol.VersionNumber
-
-// A Cookie can be used to verify the ownership of the client address.
-type Cookie = handshake.Cookie
-
-// An ErrorCode is an application-defined error code.
-type ErrorCode = protocol.ApplicationErrorCode
-
-// Stream is the interface implemented by QUIC streams
-type Stream interface {
- // StreamID returns the stream ID.
- StreamID() StreamID
- // Read reads data from the stream.
- // Read can be made to time out and return a net.Error with Timeout() == true
- // after a fixed time limit; see SetDeadline and SetReadDeadline.
- // If the stream was canceled by the peer, the error implements the StreamError
- // interface, and Canceled() == true.
- io.Reader
- // Write writes data to the stream.
- // Write can be made to time out and return a net.Error with Timeout() == true
- // after a fixed time limit; see SetDeadline and SetWriteDeadline.
- // If the stream was canceled by the peer, the error implements the StreamError
- // interface, and Canceled() == true.
- io.Writer
- // Close closes the write-direction of the stream.
- // Future calls to Write are not permitted after calling Close.
- // It must not be called concurrently with Write.
- // It must not be called after calling CancelWrite.
- io.Closer
- // CancelWrite aborts sending on this stream.
- // It must not be called after Close.
- // Data already written, but not yet delivered to the peer is not guaranteed to be delivered reliably.
- // Write will unblock immediately, and future calls to Write will fail.
- CancelWrite(ErrorCode) error
- // CancelRead aborts receiving on this stream.
- // It will ask the peer to stop transmitting stream data.
- // Read will unblock immediately, and future Read calls will fail.
- CancelRead(ErrorCode) error
- // The context is canceled as soon as the write-side of the stream is closed.
- // This happens when Close() is called, or when the stream is reset (either locally or remotely).
- // Warning: This API should not be considered stable and might change soon.
- Context() context.Context
- // SetReadDeadline sets the deadline for future Read calls and
- // any currently-blocked Read call.
- // A zero value for t means Read will not time out.
- SetReadDeadline(t time.Time) error
- // SetWriteDeadline sets the deadline for future Write calls
- // and any currently-blocked Write call.
- // Even if write times out, it may return n > 0, indicating that
- // some of the data was successfully written.
- // A zero value for t means Write will not time out.
- SetWriteDeadline(t time.Time) error
- // SetDeadline sets the read and write deadlines associated
- // with the connection. It is equivalent to calling both
- // SetReadDeadline and SetWriteDeadline.
- SetDeadline(t time.Time) error
- // LocalAddr returns the local address.
- LocalAddr() net.Addr
- // RemoteAddr returns the address of the peer.
- RemoteAddr() net.Addr
-}
-
-// A ReceiveStream is a unidirectional Receive Stream.
-type ReceiveStream interface {
- // see Stream.StreamID
- StreamID() StreamID
- // see Stream.Read
- io.Reader
- // see Stream.CancelRead
- CancelRead(ErrorCode) error
- // see Stream.SetReadDealine
- SetReadDeadline(t time.Time) error
-}
-
-// A SendStream is a unidirectional Send Stream.
-type SendStream interface {
- // see Stream.StreamID
- StreamID() StreamID
- // see Stream.Write
- io.Writer
- // see Stream.Close
- io.Closer
- // see Stream.CancelWrite
- CancelWrite(ErrorCode) error
- // see Stream.Context
- Context() context.Context
- // see Stream.SetWriteDeadline
- SetWriteDeadline(t time.Time) error
-}
-
-// StreamError is returned by Read and Write when the peer cancels the stream.
-type StreamError interface {
- error
- Canceled() bool
- ErrorCode() ErrorCode
-}
-
-// A Session is a QUIC connection between two peers.
-type Session interface {
- // AcceptStream returns the next stream opened by the peer, blocking until one is available.
- // Since stream 1 is reserved for the crypto stream, the first stream is either 2 (for a client) or 3 (for a server).
- AcceptStream() (Stream, error)
- // OpenStream opens a new QUIC stream, returning a special error when the peer's concurrent stream limit is reached.
- // New streams always have the smallest possible stream ID.
- // TODO: Enable testing for the special error
- OpenStream() (Stream, error)
- // OpenStreamSync opens a new QUIC stream, blocking until the peer's concurrent stream limit allows a new stream to be opened.
- // It always picks the smallest possible stream ID.
- OpenStreamSync() (Stream, error)
- // LocalAddr returns the local address.
- LocalAddr() net.Addr
- // RemoteAddr returns the address of the peer.
- RemoteAddr() net.Addr
- // ConnectionState returns the *tls.ConnectionState of the server session.
- ConnectionState() *tls.ConnectionState
- // Close closes the connection. The error will be sent to the remote peer in a CONNECTION_CLOSE frame. An error value of nil is allowed and will cause a normal PeerGoingAway to be sent.
- Close(error) error
- // The context is cancelled when the session is closed.
- // Warning: This API should not be considered stable and might change soon.
- Context() context.Context
-}
-
-// Config contains all configuration data needed for a QUIC server or client.
-type Config struct {
- // The QUIC versions that can be negotiated.
- // If not set, it uses all versions available.
- // Warning: This API should not be considered stable and will change soon.
- Versions []VersionNumber
- // Ask the server to omit the connection ID sent in the Public Header.
- // This saves 8 bytes in the Public Header in every packet. However, if the IP address of the server changes, the connection cannot be migrated.
- // Currently only valid for the client.
- RequestConnectionIDOmission bool
- // HandshakeTimeout is the maximum duration that the cryptographic handshake may take.
- // If the timeout is exceeded, the connection is closed.
- // If this value is zero, the timeout is set to 10 seconds.
- HandshakeTimeout time.Duration
- // IdleTimeout is the maximum duration that may pass without any incoming network activity.
- // This value only applies after the handshake has completed.
- // If the timeout is exceeded, the connection is closed.
- // If this value is zero, the timeout is set to 30 seconds.
- IdleTimeout time.Duration
- // AcceptCookie determines if a Cookie is accepted.
- // It is called with cookie = nil if the client didn't send an Cookie.
- // If not set, it verifies that the address matches, and that the Cookie was issued within the last 24 hours.
- // This option is only valid for the server.
- AcceptCookie func(clientAddr net.Addr, cookie *Cookie) bool
- // MaxReceiveStreamFlowControlWindow is the maximum stream-level flow control window for receiving data.
- // If this value is zero, it will default to 1 MB for the server and 6 MB for the client.
- MaxReceiveStreamFlowControlWindow uint64
- // MaxReceiveConnectionFlowControlWindow is the connection-level flow control window for receiving data.
- // If this value is zero, it will default to 1.5 MB for the server and 15 MB for the client.
- MaxReceiveConnectionFlowControlWindow uint64
- // KeepAlive defines whether this peer will periodically send PING frames to keep the connection alive.
- KeepAlive bool
-}
-
-// A Listener for incoming QUIC connections
-type Listener interface {
- // Close the server, sending CONNECTION_CLOSE frames to each peer.
- Close() error
- // Addr returns the local network addr that the server is listening on.
- Addr() net.Addr
- // Accept returns new sessions. It should be called in a loop.
- Accept() (Session, error)
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/crypto/AEAD.go b/vendor/github.com/phuslu/quic-go/internal/crypto/AEAD.go
deleted file mode 100644
index 41a9f5a..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/crypto/AEAD.go
+++ /dev/null
@@ -1,10 +0,0 @@
-package crypto
-
-import "github.com/phuslu/quic-go/internal/protocol"
-
-// An AEAD implements QUIC's authenticated encryption and associated data
-type AEAD interface {
- Open(dst, src []byte, packetNumber protocol.PacketNumber, associatedData []byte) ([]byte, error)
- Seal(dst, src []byte, packetNumber protocol.PacketNumber, associatedData []byte) []byte
- Overhead() int
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/crypto/aesgcm12_aead.go b/vendor/github.com/phuslu/quic-go/internal/crypto/aesgcm12_aead.go
deleted file mode 100644
index ecc30ae..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/crypto/aesgcm12_aead.go
+++ /dev/null
@@ -1,72 +0,0 @@
-package crypto
-
-import (
- "crypto/cipher"
- "encoding/binary"
- "errors"
-
- "github.com/lucas-clemente/aes12"
-
- "github.com/phuslu/quic-go/internal/protocol"
-)
-
-type aeadAESGCM12 struct {
- otherIV []byte
- myIV []byte
- encrypter cipher.AEAD
- decrypter cipher.AEAD
-}
-
-var _ AEAD = &aeadAESGCM12{}
-
-// NewAEADAESGCM12 creates a AEAD using AES-GCM with 12 bytes tag size
-//
-// AES-GCM support is a bit hacky, since the go stdlib does not support 12 byte
-// tag size, and couples the cipher and aes packages closely.
-// See https://github.com/lucas-clemente/aes12.
-func NewAEADAESGCM12(otherKey []byte, myKey []byte, otherIV []byte, myIV []byte) (AEAD, error) {
- if len(myKey) != 16 || len(otherKey) != 16 || len(myIV) != 4 || len(otherIV) != 4 {
- return nil, errors.New("AES-GCM: expected 16-byte keys and 4-byte IVs")
- }
- encrypterCipher, err := aes12.NewCipher(myKey)
- if err != nil {
- return nil, err
- }
- encrypter, err := aes12.NewGCM(encrypterCipher)
- if err != nil {
- return nil, err
- }
- decrypterCipher, err := aes12.NewCipher(otherKey)
- if err != nil {
- return nil, err
- }
- decrypter, err := aes12.NewGCM(decrypterCipher)
- if err != nil {
- return nil, err
- }
- return &aeadAESGCM12{
- otherIV: otherIV,
- myIV: myIV,
- encrypter: encrypter,
- decrypter: decrypter,
- }, nil
-}
-
-func (aead *aeadAESGCM12) Open(dst, src []byte, packetNumber protocol.PacketNumber, associatedData []byte) ([]byte, error) {
- return aead.decrypter.Open(dst, aead.makeNonce(aead.otherIV, packetNumber), src, associatedData)
-}
-
-func (aead *aeadAESGCM12) Seal(dst, src []byte, packetNumber protocol.PacketNumber, associatedData []byte) []byte {
- return aead.encrypter.Seal(dst, aead.makeNonce(aead.myIV, packetNumber), src, associatedData)
-}
-
-func (aead *aeadAESGCM12) makeNonce(iv []byte, packetNumber protocol.PacketNumber) []byte {
- res := make([]byte, 12)
- copy(res[0:4], iv)
- binary.LittleEndian.PutUint64(res[4:12], uint64(packetNumber))
- return res
-}
-
-func (aead *aeadAESGCM12) Overhead() int {
- return aead.encrypter.Overhead()
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/crypto/aesgcm_aead.go b/vendor/github.com/phuslu/quic-go/internal/crypto/aesgcm_aead.go
deleted file mode 100644
index 2abec41..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/crypto/aesgcm_aead.go
+++ /dev/null
@@ -1,74 +0,0 @@
-package crypto
-
-import (
- "crypto/aes"
- "crypto/cipher"
- "encoding/binary"
- "errors"
-
- "github.com/phuslu/quic-go/internal/protocol"
-)
-
-type aeadAESGCM struct {
- otherIV []byte
- myIV []byte
- encrypter cipher.AEAD
- decrypter cipher.AEAD
-}
-
-var _ AEAD = &aeadAESGCM{}
-
-const ivLen = 12
-
-// NewAEADAESGCM creates a AEAD using AES-GCM
-func NewAEADAESGCM(otherKey []byte, myKey []byte, otherIV []byte, myIV []byte) (AEAD, error) {
- // the IVs need to be at least 8 bytes long, otherwise we can't compute the nonce
- if len(otherIV) != ivLen || len(myIV) != ivLen {
- return nil, errors.New("AES-GCM: expected 12 byte IVs")
- }
-
- encrypterCipher, err := aes.NewCipher(myKey)
- if err != nil {
- return nil, err
- }
- encrypter, err := cipher.NewGCM(encrypterCipher)
- if err != nil {
- return nil, err
- }
- decrypterCipher, err := aes.NewCipher(otherKey)
- if err != nil {
- return nil, err
- }
- decrypter, err := cipher.NewGCM(decrypterCipher)
- if err != nil {
- return nil, err
- }
-
- return &aeadAESGCM{
- otherIV: otherIV,
- myIV: myIV,
- encrypter: encrypter,
- decrypter: decrypter,
- }, nil
-}
-
-func (aead *aeadAESGCM) Open(dst, src []byte, packetNumber protocol.PacketNumber, associatedData []byte) ([]byte, error) {
- return aead.decrypter.Open(dst, aead.makeNonce(aead.otherIV, packetNumber), src, associatedData)
-}
-
-func (aead *aeadAESGCM) Seal(dst, src []byte, packetNumber protocol.PacketNumber, associatedData []byte) []byte {
- return aead.encrypter.Seal(dst, aead.makeNonce(aead.myIV, packetNumber), src, associatedData)
-}
-
-func (aead *aeadAESGCM) makeNonce(iv []byte, packetNumber protocol.PacketNumber) []byte {
- nonce := make([]byte, ivLen)
- binary.BigEndian.PutUint64(nonce[ivLen-8:], uint64(packetNumber))
- for i := 0; i < ivLen; i++ {
- nonce[i] ^= iv[i]
- }
- return nonce
-}
-
-func (aead *aeadAESGCM) Overhead() int {
- return aead.encrypter.Overhead()
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/crypto/cert_cache.go b/vendor/github.com/phuslu/quic-go/internal/crypto/cert_cache.go
deleted file mode 100644
index e19f1d8..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/crypto/cert_cache.go
+++ /dev/null
@@ -1,48 +0,0 @@
-package crypto
-
-import (
- "fmt"
- "hash/fnv"
-
- "github.com/hashicorp/golang-lru"
- "github.com/phuslu/quic-go/internal/protocol"
-)
-
-var (
- compressedCertsCache *lru.Cache
-)
-
-func getCompressedCert(chain [][]byte, pCommonSetHashes, pCachedHashes []byte) ([]byte, error) {
- // Hash all inputs
- hasher := fnv.New64a()
- for _, v := range chain {
- hasher.Write(v)
- }
- hasher.Write(pCommonSetHashes)
- hasher.Write(pCachedHashes)
- hash := hasher.Sum64()
-
- var result []byte
-
- resultI, isCached := compressedCertsCache.Get(hash)
- if isCached {
- result = resultI.([]byte)
- } else {
- var err error
- result, err = compressChain(chain, pCommonSetHashes, pCachedHashes)
- if err != nil {
- return nil, err
- }
- compressedCertsCache.Add(hash, result)
- }
-
- return result, nil
-}
-
-func init() {
- var err error
- compressedCertsCache, err = lru.New(protocol.NumCachedCertificates)
- if err != nil {
- panic(fmt.Sprintf("fatal error in quic-go: could not create lru cache: %s", err.Error()))
- }
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/crypto/cert_chain.go b/vendor/github.com/phuslu/quic-go/internal/crypto/cert_chain.go
deleted file mode 100644
index f3bc9fb..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/crypto/cert_chain.go
+++ /dev/null
@@ -1,113 +0,0 @@
-package crypto
-
-import (
- "crypto/tls"
- "errors"
- "strings"
-)
-
-// A CertChain holds a certificate and a private key
-type CertChain interface {
- SignServerProof(sni string, chlo []byte, serverConfigData []byte) ([]byte, error)
- GetCertsCompressed(sni string, commonSetHashes, cachedHashes []byte) ([]byte, error)
- GetLeafCert(sni string) ([]byte, error)
-}
-
-// proofSource stores a key and a certificate for the server proof
-type certChain struct {
- config *tls.Config
-}
-
-var _ CertChain = &certChain{}
-
-var errNoMatchingCertificate = errors.New("no matching certificate found")
-
-// NewCertChain loads the key and cert from files
-func NewCertChain(tlsConfig *tls.Config) CertChain {
- return &certChain{config: tlsConfig}
-}
-
-// SignServerProof signs CHLO and server config for use in the server proof
-func (c *certChain) SignServerProof(sni string, chlo []byte, serverConfigData []byte) ([]byte, error) {
- cert, err := c.getCertForSNI(sni)
- if err != nil {
- return nil, err
- }
-
- return signServerProof(cert, chlo, serverConfigData)
-}
-
-// GetCertsCompressed gets the certificate in the format described by the QUIC crypto doc
-func (c *certChain) GetCertsCompressed(sni string, pCommonSetHashes, pCachedHashes []byte) ([]byte, error) {
- cert, err := c.getCertForSNI(sni)
- if err != nil {
- return nil, err
- }
- return getCompressedCert(cert.Certificate, pCommonSetHashes, pCachedHashes)
-}
-
-// GetLeafCert gets the leaf certificate
-func (c *certChain) GetLeafCert(sni string) ([]byte, error) {
- cert, err := c.getCertForSNI(sni)
- if err != nil {
- return nil, err
- }
- return cert.Certificate[0], nil
-}
-
-func (cc *certChain) getCertForSNI(sni string) (*tls.Certificate, error) {
- c := cc.config
- c, err := maybeGetConfigForClient(c, sni)
- if err != nil {
- return nil, err
- }
- // The rest of this function is mostly copied from crypto/tls.getCertificate
-
- if c.GetCertificate != nil {
- cert, err := c.GetCertificate(&tls.ClientHelloInfo{ServerName: sni})
- if cert != nil || err != nil {
- return cert, err
- }
- }
-
- if len(c.Certificates) == 0 {
- return nil, errNoMatchingCertificate
- }
-
- if len(c.Certificates) == 1 || c.NameToCertificate == nil {
- // There's only one choice, so no point doing any work.
- return &c.Certificates[0], nil
- }
-
- name := strings.ToLower(sni)
- for len(name) > 0 && name[len(name)-1] == '.' {
- name = name[:len(name)-1]
- }
-
- if cert, ok := c.NameToCertificate[name]; ok {
- return cert, nil
- }
-
- // try replacing labels in the name with wildcards until we get a
- // match.
- labels := strings.Split(name, ".")
- for i := range labels {
- labels[i] = "*"
- candidate := strings.Join(labels, ".")
- if cert, ok := c.NameToCertificate[candidate]; ok {
- return cert, nil
- }
- }
-
- // If nothing matches, return the first certificate.
- return &c.Certificates[0], nil
-}
-
-func maybeGetConfigForClient(c *tls.Config, sni string) (*tls.Config, error) {
- if c.GetConfigForClient == nil {
- return c, nil
- }
- return c.GetConfigForClient(&tls.ClientHelloInfo{
- ServerName: sni,
- })
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/crypto/cert_compression.go b/vendor/github.com/phuslu/quic-go/internal/crypto/cert_compression.go
deleted file mode 100644
index 51c5b62..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/crypto/cert_compression.go
+++ /dev/null
@@ -1,272 +0,0 @@
-package crypto
-
-import (
- "bytes"
- "compress/flate"
- "compress/zlib"
- "encoding/binary"
- "errors"
- "fmt"
- "hash/fnv"
-
- "github.com/phuslu/quic-go/internal/utils"
-)
-
-type entryType uint8
-
-const (
- entryCompressed entryType = 1
- entryCached entryType = 2
- entryCommon entryType = 3
-)
-
-type entry struct {
- t entryType
- h uint64 // set hash
- i uint32 // index
-}
-
-func compressChain(chain [][]byte, pCommonSetHashes, pCachedHashes []byte) ([]byte, error) {
- res := &bytes.Buffer{}
-
- cachedHashes, err := splitHashes(pCachedHashes)
- if err != nil {
- return nil, err
- }
-
- setHashes, err := splitHashes(pCommonSetHashes)
- if err != nil {
- return nil, err
- }
-
- chainHashes := make([]uint64, len(chain))
- for i := range chain {
- chainHashes[i] = HashCert(chain[i])
- }
-
- entries := buildEntries(chain, chainHashes, cachedHashes, setHashes)
-
- totalUncompressedLen := 0
- for i, e := range entries {
- res.WriteByte(uint8(e.t))
- switch e.t {
- case entryCached:
- utils.LittleEndian.WriteUint64(res, e.h)
- case entryCommon:
- utils.LittleEndian.WriteUint64(res, e.h)
- utils.LittleEndian.WriteUint32(res, e.i)
- case entryCompressed:
- totalUncompressedLen += 4 + len(chain[i])
- }
- }
- res.WriteByte(0) // end of list
-
- if totalUncompressedLen > 0 {
- gz, err := zlib.NewWriterLevelDict(res, flate.BestCompression, buildZlibDictForEntries(entries, chain))
- if err != nil {
- return nil, fmt.Errorf("cert compression failed: %s", err.Error())
- }
-
- utils.LittleEndian.WriteUint32(res, uint32(totalUncompressedLen))
-
- for i, e := range entries {
- if e.t != entryCompressed {
- continue
- }
- lenCert := len(chain[i])
- gz.Write([]byte{
- byte(lenCert & 0xff),
- byte((lenCert >> 8) & 0xff),
- byte((lenCert >> 16) & 0xff),
- byte((lenCert >> 24) & 0xff),
- })
- gz.Write(chain[i])
- }
-
- gz.Close()
- }
-
- return res.Bytes(), nil
-}
-
-func decompressChain(data []byte) ([][]byte, error) {
- var chain [][]byte
- var entries []entry
- r := bytes.NewReader(data)
-
- var numCerts int
- var hasCompressedCerts bool
- for {
- entryTypeByte, err := r.ReadByte()
- if entryTypeByte == 0 {
- break
- }
-
- et := entryType(entryTypeByte)
- if err != nil {
- return nil, err
- }
-
- numCerts++
-
- switch et {
- case entryCached:
- // we're not sending any certificate hashes in the CHLO, so there shouldn't be any cached certificates in the chain
- return nil, errors.New("unexpected cached certificate")
- case entryCommon:
- e := entry{t: entryCommon}
- e.h, err = utils.LittleEndian.ReadUint64(r)
- if err != nil {
- return nil, err
- }
- e.i, err = utils.LittleEndian.ReadUint32(r)
- if err != nil {
- return nil, err
- }
- certSet, ok := certSets[e.h]
- if !ok {
- return nil, errors.New("unknown certSet")
- }
- if e.i >= uint32(len(certSet)) {
- return nil, errors.New("certificate not found in certSet")
- }
- entries = append(entries, e)
- chain = append(chain, certSet[e.i])
- case entryCompressed:
- hasCompressedCerts = true
- entries = append(entries, entry{t: entryCompressed})
- chain = append(chain, nil)
- default:
- return nil, errors.New("unknown entryType")
- }
- }
-
- if numCerts == 0 {
- return make([][]byte, 0), nil
- }
-
- if hasCompressedCerts {
- uncompressedLength, err := utils.LittleEndian.ReadUint32(r)
- if err != nil {
- fmt.Println(4)
- return nil, err
- }
-
- zlibDict := buildZlibDictForEntries(entries, chain)
- gz, err := zlib.NewReaderDict(r, zlibDict)
- if err != nil {
- return nil, err
- }
- defer gz.Close()
-
- var totalLength uint32
- var certIndex int
- for totalLength < uncompressedLength {
- lenBytes := make([]byte, 4)
- _, err := gz.Read(lenBytes)
- if err != nil {
- return nil, err
- }
- certLen := binary.LittleEndian.Uint32(lenBytes)
-
- cert := make([]byte, certLen)
- n, err := gz.Read(cert)
- if uint32(n) != certLen && err != nil {
- return nil, err
- }
-
- for {
- if certIndex >= len(entries) {
- return nil, errors.New("CertCompression BUG: no element to save uncompressed certificate")
- }
- if entries[certIndex].t == entryCompressed {
- chain[certIndex] = cert
- certIndex++
- break
- }
- certIndex++
- }
-
- totalLength += 4 + certLen
- }
- }
-
- return chain, nil
-}
-
-func buildEntries(chain [][]byte, chainHashes, cachedHashes, setHashes []uint64) []entry {
- res := make([]entry, len(chain))
-chainLoop:
- for i := range chain {
- // Check if hash is in cachedHashes
- for j := range cachedHashes {
- if chainHashes[i] == cachedHashes[j] {
- res[i] = entry{t: entryCached, h: chainHashes[i]}
- continue chainLoop
- }
- }
-
- // Go through common sets and check if it's in there
- for _, setHash := range setHashes {
- set, ok := certSets[setHash]
- if !ok {
- // We don't have this set
- continue
- }
- // We have this set, check if chain[i] is in the set
- pos := set.findCertInSet(chain[i])
- if pos >= 0 {
- // Found
- res[i] = entry{t: entryCommon, h: setHash, i: uint32(pos)}
- continue chainLoop
- }
- }
-
- res[i] = entry{t: entryCompressed}
- }
- return res
-}
-
-func buildZlibDictForEntries(entries []entry, chain [][]byte) []byte {
- var dict bytes.Buffer
-
- // First the cached and common in reverse order
- for i := len(entries) - 1; i >= 0; i-- {
- if entries[i].t == entryCompressed {
- continue
- }
- dict.Write(chain[i])
- }
-
- dict.Write(certDictZlib)
- return dict.Bytes()
-}
-
-func splitHashes(hashes []byte) ([]uint64, error) {
- if len(hashes)%8 != 0 {
- return nil, errors.New("expected a multiple of 8 bytes for CCS / CCRT hashes")
- }
- n := len(hashes) / 8
- res := make([]uint64, n)
- for i := 0; i < n; i++ {
- res[i] = binary.LittleEndian.Uint64(hashes[i*8 : (i+1)*8])
- }
- return res, nil
-}
-
-func getCommonCertificateHashes() []byte {
- ccs := make([]byte, 8*len(certSets))
- i := 0
- for certSetHash := range certSets {
- binary.LittleEndian.PutUint64(ccs[i*8:(i+1)*8], certSetHash)
- i++
- }
- return ccs
-}
-
-// HashCert calculates the FNV1a hash of a certificate
-func HashCert(cert []byte) uint64 {
- h := fnv.New64a()
- h.Write(cert)
- return h.Sum64()
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/crypto/cert_dict.go b/vendor/github.com/phuslu/quic-go/internal/crypto/cert_dict.go
deleted file mode 100644
index 300ec71..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/crypto/cert_dict.go
+++ /dev/null
@@ -1,128 +0,0 @@
-package crypto
-
-var certDictZlib = []byte{
- 0x04, 0x02, 0x30, 0x00, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x04,
- 0x16, 0x30, 0x14, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03,
- 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x02, 0x30,
- 0x5f, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x42, 0x04, 0x01,
- 0x06, 0x06, 0x0b, 0x60, 0x86, 0x48, 0x01, 0x86, 0xfd, 0x6d, 0x01, 0x07,
- 0x17, 0x01, 0x30, 0x33, 0x20, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65,
- 0x64, 0x20, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x20, 0x53, 0x20, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x31, 0x34,
- 0x20, 0x53, 0x53, 0x4c, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31,
- 0x32, 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x53, 0x65, 0x72,
- 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x30, 0x2d, 0x61, 0x69, 0x61, 0x2e,
- 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d,
- 0x2f, 0x45, 0x2d, 0x63, 0x72, 0x6c, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73,
- 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x2e, 0x63, 0x65,
- 0x72, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01,
- 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x4a, 0x2e, 0x63,
- 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73,
- 0x2f, 0x63, 0x70, 0x73, 0x20, 0x28, 0x63, 0x29, 0x30, 0x30, 0x09, 0x06,
- 0x03, 0x55, 0x1d, 0x13, 0x04, 0x02, 0x30, 0x00, 0x30, 0x1d, 0x30, 0x0d,
- 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05,
- 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x7b, 0x30, 0x1d, 0x06, 0x03, 0x55,
- 0x1d, 0x0e, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
- 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01,
- 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xd2,
- 0x6f, 0x64, 0x6f, 0x63, 0x61, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x2e,
- 0x63, 0x72, 0x6c, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16,
- 0x04, 0x14, 0xb4, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x73, 0x69,
- 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x30, 0x0b, 0x06, 0x03,
- 0x55, 0x1d, 0x0f, 0x04, 0x04, 0x03, 0x02, 0x01, 0x30, 0x0d, 0x06, 0x09,
- 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30,
- 0x81, 0xca, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13,
- 0x02, 0x55, 0x53, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x08,
- 0x13, 0x07, 0x41, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x61, 0x31, 0x13, 0x30,
- 0x11, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x0a, 0x53, 0x63, 0x6f, 0x74,
- 0x74, 0x73, 0x64, 0x61, 0x6c, 0x65, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03,
- 0x55, 0x04, 0x0a, 0x13, 0x11, 0x47, 0x6f, 0x44, 0x61, 0x64, 0x64, 0x79,
- 0x2e, 0x63, 0x6f, 0x6d, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x33,
- 0x30, 0x31, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x2a, 0x68, 0x74, 0x74,
- 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63,
- 0x61, 0x74, 0x65, 0x73, 0x2e, 0x67, 0x6f, 0x64, 0x61, 0x64, 0x64, 0x79,
- 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74,
- 0x6f, 0x72, 0x79, 0x31, 0x30, 0x30, 0x2e, 0x06, 0x03, 0x55, 0x04, 0x03,
- 0x13, 0x27, 0x47, 0x6f, 0x20, 0x44, 0x61, 0x64, 0x64, 0x79, 0x20, 0x53,
- 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66,
- 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68,
- 0x6f, 0x72, 0x69, 0x74, 0x79, 0x31, 0x11, 0x30, 0x0f, 0x06, 0x03, 0x55,
- 0x04, 0x05, 0x13, 0x08, 0x30, 0x37, 0x39, 0x36, 0x39, 0x32, 0x38, 0x37,
- 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x31, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d,
- 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x05, 0xa0, 0x30, 0x0c,
- 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x02, 0x30, 0x00,
- 0x30, 0x1d, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff,
- 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0x00, 0x30, 0x1d, 0x06, 0x03, 0x55,
- 0x1d, 0x25, 0x04, 0x16, 0x30, 0x14, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05,
- 0x05, 0x07, 0x03, 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07,
- 0x03, 0x02, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff,
- 0x04, 0x04, 0x03, 0x02, 0x05, 0xa0, 0x30, 0x33, 0x06, 0x03, 0x55, 0x1d,
- 0x1f, 0x04, 0x2c, 0x30, 0x2a, 0x30, 0x28, 0xa0, 0x26, 0xa0, 0x24, 0x86,
- 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e,
- 0x67, 0x6f, 0x64, 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
- 0x67, 0x64, 0x73, 0x31, 0x2d, 0x32, 0x30, 0x2a, 0x30, 0x28, 0x06, 0x08,
- 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1c, 0x68, 0x74,
- 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x76, 0x65,
- 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63,
- 0x70, 0x73, 0x30, 0x34, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17,
- 0x0d, 0x31, 0x33, 0x30, 0x35, 0x30, 0x39, 0x06, 0x08, 0x2b, 0x06, 0x01,
- 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x2d, 0x68, 0x74, 0x74, 0x70, 0x3a,
- 0x2f, 0x2f, 0x73, 0x30, 0x39, 0x30, 0x37, 0x06, 0x08, 0x2b, 0x06, 0x01,
- 0x05, 0x05, 0x07, 0x02, 0x30, 0x44, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04,
- 0x3d, 0x30, 0x3b, 0x30, 0x39, 0x06, 0x0b, 0x60, 0x86, 0x48, 0x01, 0x86,
- 0xf8, 0x45, 0x01, 0x07, 0x17, 0x06, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03,
- 0x55, 0x04, 0x06, 0x13, 0x02, 0x47, 0x42, 0x31, 0x1b, 0x53, 0x31, 0x17,
- 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e, 0x56, 0x65, 0x72,
- 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31,
- 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x16, 0x56, 0x65,
- 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, 0x72, 0x75, 0x73, 0x74,
- 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x31, 0x3b, 0x30, 0x39,
- 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x32, 0x54, 0x65, 0x72, 0x6d, 0x73,
- 0x20, 0x6f, 0x66, 0x20, 0x75, 0x73, 0x65, 0x20, 0x61, 0x74, 0x20, 0x68,
- 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x76,
- 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
- 0x72, 0x70, 0x61, 0x20, 0x28, 0x63, 0x29, 0x30, 0x31, 0x10, 0x30, 0x0e,
- 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x07, 0x53, 0x31, 0x13, 0x30, 0x11,
- 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0a, 0x47, 0x31, 0x13, 0x30, 0x11,
- 0x06, 0x0b, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x3c, 0x02, 0x01,
- 0x03, 0x13, 0x02, 0x55, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04,
- 0x03, 0x14, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13,
- 0x31, 0x1d, 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, 0x0f, 0x13, 0x14, 0x50,
- 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x20, 0x4f, 0x72, 0x67, 0x61, 0x6e,
- 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x12, 0x31, 0x21, 0x30,
- 0x1f, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x18, 0x44, 0x6f, 0x6d, 0x61,
- 0x69, 0x6e, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x20, 0x56,
- 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x31, 0x14, 0x31, 0x31,
- 0x30, 0x2f, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x28, 0x53, 0x65, 0x65,
- 0x20, 0x77, 0x77, 0x77, 0x2e, 0x72, 0x3a, 0x2f, 0x2f, 0x73, 0x65, 0x63,
- 0x75, 0x72, 0x65, 0x2e, 0x67, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53,
- 0x69, 0x67, 0x6e, 0x31, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x41,
- 0x2e, 0x63, 0x72, 0x6c, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e,
- 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x45, 0x63, 0x72,
- 0x6c, 0x2e, 0x67, 0x65, 0x6f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63,
- 0x6f, 0x6d, 0x2f, 0x63, 0x72, 0x6c, 0x73, 0x2f, 0x73, 0x64, 0x31, 0x1a,
- 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x68, 0x74, 0x74, 0x70, 0x3a,
- 0x2f, 0x2f, 0x45, 0x56, 0x49, 0x6e, 0x74, 0x6c, 0x2d, 0x63, 0x63, 0x72,
- 0x74, 0x2e, 0x67, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x69, 0x63, 0x65, 0x72,
- 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x31, 0x6f, 0x63, 0x73, 0x70, 0x2e,
- 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d,
- 0x30, 0x39, 0x72, 0x61, 0x70, 0x69, 0x64, 0x73, 0x73, 0x6c, 0x2e, 0x63,
- 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x64, 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63,
- 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72,
- 0x79, 0x2f, 0x30, 0x81, 0x80, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
- 0x07, 0x01, 0x01, 0x04, 0x74, 0x30, 0x72, 0x30, 0x24, 0x06, 0x08, 0x2b,
- 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74,
- 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x67, 0x6f, 0x64,
- 0x61, 0x64, 0x64, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x30, 0x4a, 0x06,
- 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x3e, 0x68,
- 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66,
- 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x2e, 0x67, 0x6f, 0x64, 0x61, 0x64,
- 0x64, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73,
- 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x67, 0x64, 0x5f, 0x69, 0x6e, 0x74,
- 0x65, 0x72, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x2e, 0x63, 0x72,
- 0x74, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16,
- 0x80, 0x14, 0xfd, 0xac, 0x61, 0x32, 0x93, 0x6c, 0x45, 0xd6, 0xe2, 0xee,
- 0x85, 0x5f, 0x9a, 0xba, 0xe7, 0x76, 0x99, 0x68, 0xcc, 0xe7, 0x30, 0x27,
- 0x86, 0x29, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x86, 0x30,
- 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x73,
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/crypto/cert_manager.go b/vendor/github.com/phuslu/quic-go/internal/crypto/cert_manager.go
deleted file mode 100644
index feb33ad..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/crypto/cert_manager.go
+++ /dev/null
@@ -1,135 +0,0 @@
-package crypto
-
-import (
- "crypto/tls"
- "crypto/x509"
- "errors"
- "hash/fnv"
- "time"
-
- "github.com/phuslu/quic-go/qerr"
-)
-
-// CertManager manages the certificates sent by the server
-type CertManager interface {
- SetData([]byte) error
- GetCommonCertificateHashes() []byte
- GetLeafCert() []byte
- GetLeafCertHash() (uint64, error)
- VerifyServerProof(proof, chlo, serverConfigData []byte) bool
- Verify(hostname string) error
- GetCertificateChain() []*x509.Certificate
-}
-
-type certManager struct {
- chain []*x509.Certificate
- config *tls.Config
-}
-
-var _ CertManager = &certManager{}
-
-var errNoCertificateChain = errors.New("CertManager BUG: No certicifate chain loaded")
-
-// NewCertManager creates a new CertManager
-func NewCertManager(tlsConfig *tls.Config) CertManager {
- return &certManager{config: tlsConfig}
-}
-
-// SetData takes the byte-slice sent in the SHLO and decompresses it into the certificate chain
-func (c *certManager) SetData(data []byte) error {
- byteChain, err := decompressChain(data)
- if err != nil {
- return qerr.Error(qerr.InvalidCryptoMessageParameter, "Certificate data invalid")
- }
-
- chain := make([]*x509.Certificate, len(byteChain))
- for i, data := range byteChain {
- cert, err := x509.ParseCertificate(data)
- if err != nil {
- return err
- }
- chain[i] = cert
- }
-
- c.chain = chain
- return nil
-}
-
-func (c *certManager) GetCommonCertificateHashes() []byte {
- return getCommonCertificateHashes()
-}
-
-// GetLeafCert returns the leaf certificate of the certificate chain
-// it returns nil if the certificate chain has not yet been set
-func (c *certManager) GetLeafCert() []byte {
- if len(c.chain) == 0 {
- return nil
- }
- return c.chain[0].Raw
-}
-
-// GetLeafCertHash calculates the FNV1a_64 hash of the leaf certificate
-func (c *certManager) GetLeafCertHash() (uint64, error) {
- leafCert := c.GetLeafCert()
- if leafCert == nil {
- return 0, errNoCertificateChain
- }
-
- h := fnv.New64a()
- _, err := h.Write(leafCert)
- if err != nil {
- return 0, err
- }
- return h.Sum64(), nil
-}
-
-// VerifyServerProof verifies the signature of the server config
-// it should only be called after the certificate chain has been set, otherwise it returns false
-func (c *certManager) VerifyServerProof(proof, chlo, serverConfigData []byte) bool {
- if len(c.chain) == 0 {
- return false
- }
-
- return verifyServerProof(proof, c.chain[0], chlo, serverConfigData)
-}
-
-// Verify verifies the certificate chain
-func (c *certManager) Verify(hostname string) error {
- if len(c.chain) == 0 {
- return errNoCertificateChain
- }
-
- if c.config != nil && c.config.InsecureSkipVerify {
- return nil
- }
-
- leafCert := c.chain[0]
-
- var opts x509.VerifyOptions
- if c.config != nil {
- opts.Roots = c.config.RootCAs
- if c.config.Time == nil {
- opts.CurrentTime = time.Now()
- } else {
- opts.CurrentTime = c.config.Time()
- }
- }
- // we don't need to care about the tls.Config.ServerName here, since hostname has already been set to that value in the session setup
- opts.DNSName = hostname
-
- // the first certificate is the leaf certificate, all others are intermediates
- if len(c.chain) > 1 {
- intermediates := x509.NewCertPool()
- for i := 1; i < len(c.chain); i++ {
- intermediates.AddCert(c.chain[i])
- }
- opts.Intermediates = intermediates
- }
-
- _, err := leafCert.Verify(opts)
- return err
-}
-
-func (c *certManager) GetCertificateChain() []*x509.Certificate {
- return c.chain
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/crypto/cert_sets.go b/vendor/github.com/phuslu/quic-go/internal/crypto/cert_sets.go
deleted file mode 100644
index 1552668..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/crypto/cert_sets.go
+++ /dev/null
@@ -1,24 +0,0 @@
-package crypto
-
-import (
- "bytes"
-
- "github.com/lucas-clemente/quic-go-certificates"
-)
-
-type certSet [][]byte
-
-var certSets = map[uint64]certSet{
- certsets.CertSet2Hash: certsets.CertSet2,
- certsets.CertSet3Hash: certsets.CertSet3,
-}
-
-// findCertInSet searches for the cert in the set. Negative return value means not found.
-func (s *certSet) findCertInSet(cert []byte) int {
- for i, c := range *s {
- if bytes.Equal(c, cert) {
- return i
- }
- }
- return -1
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/crypto/chacha20poly1305_aead.go b/vendor/github.com/phuslu/quic-go/internal/crypto/chacha20poly1305_aead.go
deleted file mode 100644
index 900296a..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/crypto/chacha20poly1305_aead.go
+++ /dev/null
@@ -1,61 +0,0 @@
-// +build ignore
-
-package crypto
-
-import (
- "crypto/cipher"
- "encoding/binary"
- "errors"
-
- "github.com/aead/chacha20"
-
- "github.com/phuslu/quic-go/internal/protocol"
-)
-
-type aeadChacha20Poly1305 struct {
- otherIV []byte
- myIV []byte
- encrypter cipher.AEAD
- decrypter cipher.AEAD
-}
-
-// NewAEADChacha20Poly1305 creates a AEAD using chacha20poly1305
-func NewAEADChacha20Poly1305(otherKey []byte, myKey []byte, otherIV []byte, myIV []byte) (AEAD, error) {
- if len(myKey) != 32 || len(otherKey) != 32 || len(myIV) != 4 || len(otherIV) != 4 {
- return nil, errors.New("chacha20poly1305: expected 32-byte keys and 4-byte IVs")
- }
- // copy because ChaCha20Poly1305 expects array pointers
- var MyKey, OtherKey [32]byte
- copy(MyKey[:], myKey)
- copy(OtherKey[:], otherKey)
-
- encrypter, err := chacha20.NewChaCha20Poly1305WithTagSize(&MyKey, 12)
- if err != nil {
- return nil, err
- }
- decrypter, err := chacha20.NewChaCha20Poly1305WithTagSize(&OtherKey, 12)
- if err != nil {
- return nil, err
- }
- return &aeadChacha20Poly1305{
- otherIV: otherIV,
- myIV: myIV,
- encrypter: encrypter,
- decrypter: decrypter,
- }, nil
-}
-
-func (aead *aeadChacha20Poly1305) Open(dst, src []byte, packetNumber protocol.PacketNumber, associatedData []byte) ([]byte, error) {
- return aead.decrypter.Open(dst, aead.makeNonce(aead.otherIV, packetNumber), src, associatedData)
-}
-
-func (aead *aeadChacha20Poly1305) Seal(dst, src []byte, packetNumber protocol.PacketNumber, associatedData []byte) []byte {
- return aead.encrypter.Seal(dst, aead.makeNonce(aead.myIV, packetNumber), src, associatedData)
-}
-
-func (aead *aeadChacha20Poly1305) makeNonce(iv []byte, packetNumber protocol.PacketNumber) []byte {
- res := make([]byte, 12)
- copy(res[0:4], iv)
- binary.LittleEndian.PutUint64(res[4:12], uint64(packetNumber))
- return res
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/crypto/curve_25519.go b/vendor/github.com/phuslu/quic-go/internal/crypto/curve_25519.go
deleted file mode 100644
index a570d6b..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/crypto/curve_25519.go
+++ /dev/null
@@ -1,45 +0,0 @@
-package crypto
-
-import (
- "crypto/rand"
- "errors"
-
- "golang.org/x/crypto/curve25519"
-)
-
-// KeyExchange manages the exchange of keys
-type curve25519KEX struct {
- secret [32]byte
- public [32]byte
-}
-
-var _ KeyExchange = &curve25519KEX{}
-
-// NewCurve25519KEX creates a new KeyExchange using Curve25519, see https://cr.yp.to/ecdh.html
-func NewCurve25519KEX() (KeyExchange, error) {
- c := &curve25519KEX{}
- if _, err := rand.Read(c.secret[:]); err != nil {
- return nil, errors.New("Curve25519: could not create private key")
- }
- // See https://cr.yp.to/ecdh.html
- c.secret[0] &= 248
- c.secret[31] &= 127
- c.secret[31] |= 64
- curve25519.ScalarBaseMult(&c.public, &c.secret)
- return c, nil
-}
-
-func (c *curve25519KEX) PublicKey() []byte {
- return c.public[:]
-}
-
-func (c *curve25519KEX) CalculateSharedKey(otherPublic []byte) ([]byte, error) {
- if len(otherPublic) != 32 {
- return nil, errors.New("Curve25519: expected public key of 32 byte")
- }
- var res [32]byte
- var otherPublicArray [32]byte
- copy(otherPublicArray[:], otherPublic)
- curve25519.ScalarMult(&res, &c.secret, &otherPublicArray)
- return res[:], nil
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/crypto/key_derivation.go b/vendor/github.com/phuslu/quic-go/internal/crypto/key_derivation.go
deleted file mode 100644
index 4703b68..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/crypto/key_derivation.go
+++ /dev/null
@@ -1,49 +0,0 @@
-package crypto
-
-import (
- "github.com/bifurcation/mint"
- "github.com/phuslu/quic-go/internal/protocol"
-)
-
-const (
- clientExporterLabel = "EXPORTER-QUIC client 1-RTT Secret"
- serverExporterLabel = "EXPORTER-QUIC server 1-RTT Secret"
-)
-
-// A TLSExporter gets the negotiated ciphersuite and computes exporter
-type TLSExporter interface {
- GetCipherSuite() mint.CipherSuiteParams
- ComputeExporter(label string, context []byte, keyLength int) ([]byte, error)
-}
-
-// DeriveAESKeys derives the AES keys and creates a matching AES-GCM AEAD instance
-func DeriveAESKeys(tls TLSExporter, pers protocol.Perspective) (AEAD, error) {
- var myLabel, otherLabel string
- if pers == protocol.PerspectiveClient {
- myLabel = clientExporterLabel
- otherLabel = serverExporterLabel
- } else {
- myLabel = serverExporterLabel
- otherLabel = clientExporterLabel
- }
- myKey, myIV, err := computeKeyAndIV(tls, myLabel)
- if err != nil {
- return nil, err
- }
- otherKey, otherIV, err := computeKeyAndIV(tls, otherLabel)
- if err != nil {
- return nil, err
- }
- return NewAEADAESGCM(otherKey, myKey, otherIV, myIV)
-}
-
-func computeKeyAndIV(tls TLSExporter, label string) (key, iv []byte, err error) {
- cs := tls.GetCipherSuite()
- secret, err := tls.ComputeExporter(label, nil, cs.Hash.Size())
- if err != nil {
- return nil, nil, err
- }
- key = mint.HkdfExpandLabel(cs.Hash, secret, "key", nil, cs.KeyLen)
- iv = mint.HkdfExpandLabel(cs.Hash, secret, "iv", nil, cs.IvLen)
- return key, iv, nil
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/crypto/key_derivation_quic_crypto.go b/vendor/github.com/phuslu/quic-go/internal/crypto/key_derivation_quic_crypto.go
deleted file mode 100644
index 6ef5402..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/crypto/key_derivation_quic_crypto.go
+++ /dev/null
@@ -1,101 +0,0 @@
-package crypto
-
-import (
- "bytes"
- "crypto/sha256"
- "io"
-
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/utils"
-
- "golang.org/x/crypto/hkdf"
-)
-
-// DeriveKeysChacha20 derives the client and server keys and creates a matching chacha20poly1305 AEAD instance
-// func DeriveKeysChacha20(version protocol.VersionNumber, forwardSecure bool, sharedSecret, nonces []byte, connID protocol.ConnectionID, chlo []byte, scfg []byte, cert []byte, divNonce []byte) (AEAD, error) {
-// otherKey, myKey, otherIV, myIV, err := deriveKeys(version, forwardSecure, sharedSecret, nonces, connID, chlo, scfg, cert, divNonce, 32)
-// if err != nil {
-// return nil, err
-// }
-// return NewAEADChacha20Poly1305(otherKey, myKey, otherIV, myIV)
-// }
-
-// DeriveQuicCryptoAESKeys derives the client and server keys and creates a matching AES-GCM AEAD instance
-func DeriveQuicCryptoAESKeys(forwardSecure bool, sharedSecret, nonces []byte, connID protocol.ConnectionID, chlo []byte, scfg []byte, cert []byte, divNonce []byte, pers protocol.Perspective) (AEAD, error) {
- var swap bool
- if pers == protocol.PerspectiveClient {
- swap = true
- }
- otherKey, myKey, otherIV, myIV, err := deriveKeys(forwardSecure, sharedSecret, nonces, connID, chlo, scfg, cert, divNonce, 16, swap)
- if err != nil {
- return nil, err
- }
- return NewAEADAESGCM12(otherKey, myKey, otherIV, myIV)
-}
-
-// deriveKeys derives the keys and the IVs
-// swap should be set true if generating the values for the client, and false for the server
-func deriveKeys(forwardSecure bool, sharedSecret, nonces []byte, connID protocol.ConnectionID, chlo, scfg, cert, divNonce []byte, keyLen int, swap bool) ([]byte, []byte, []byte, []byte, error) {
- var info bytes.Buffer
- if forwardSecure {
- info.Write([]byte("QUIC forward secure key expansion\x00"))
- } else {
- info.Write([]byte("QUIC key expansion\x00"))
- }
- utils.BigEndian.WriteUint64(&info, uint64(connID))
- info.Write(chlo)
- info.Write(scfg)
- info.Write(cert)
-
- r := hkdf.New(sha256.New, sharedSecret, nonces, info.Bytes())
-
- s := make([]byte, 2*keyLen+2*4)
- if _, err := io.ReadFull(r, s); err != nil {
- return nil, nil, nil, nil, err
- }
-
- key1 := s[:keyLen]
- key2 := s[keyLen : 2*keyLen]
- iv1 := s[2*keyLen : 2*keyLen+4]
- iv2 := s[2*keyLen+4:]
-
- var otherKey, myKey []byte
- var otherIV, myIV []byte
-
- if !forwardSecure {
- if err := diversify(key2, iv2, divNonce); err != nil {
- return nil, nil, nil, nil, err
- }
- }
-
- if swap {
- otherKey = key2
- myKey = key1
- otherIV = iv2
- myIV = iv1
- } else {
- otherKey = key1
- myKey = key2
- otherIV = iv1
- myIV = iv2
- }
-
- return otherKey, myKey, otherIV, myIV, nil
-}
-
-func diversify(key, iv, divNonce []byte) error {
- secret := make([]byte, len(key)+len(iv))
- copy(secret, key)
- copy(secret[len(key):], iv)
-
- r := hkdf.New(sha256.New, secret, divNonce, []byte("QUIC key diversification"))
-
- if _, err := io.ReadFull(r, key); err != nil {
- return err
- }
- if _, err := io.ReadFull(r, iv); err != nil {
- return err
- }
-
- return nil
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/crypto/key_exchange.go b/vendor/github.com/phuslu/quic-go/internal/crypto/key_exchange.go
deleted file mode 100644
index d240b9c..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/crypto/key_exchange.go
+++ /dev/null
@@ -1,7 +0,0 @@
-package crypto
-
-// KeyExchange manages the exchange of keys
-type KeyExchange interface {
- PublicKey() []byte
- CalculateSharedKey(otherPublic []byte) ([]byte, error)
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/crypto/null_aead.go b/vendor/github.com/phuslu/quic-go/internal/crypto/null_aead.go
deleted file mode 100644
index f836215..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/crypto/null_aead.go
+++ /dev/null
@@ -1,11 +0,0 @@
-package crypto
-
-import "github.com/phuslu/quic-go/internal/protocol"
-
-// NewNullAEAD creates a NullAEAD
-func NewNullAEAD(p protocol.Perspective, connID protocol.ConnectionID, v protocol.VersionNumber) (AEAD, error) {
- if v.UsesTLS() {
- return newNullAEADAESGCM(connID, p)
- }
- return &nullAEADFNV128a{perspective: p}, nil
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/crypto/null_aead_aesgcm.go b/vendor/github.com/phuslu/quic-go/internal/crypto/null_aead_aesgcm.go
deleted file mode 100644
index 506a970..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/crypto/null_aead_aesgcm.go
+++ /dev/null
@@ -1,44 +0,0 @@
-package crypto
-
-import (
- "crypto"
- "encoding/binary"
-
- "github.com/bifurcation/mint"
- "github.com/phuslu/quic-go/internal/protocol"
-)
-
-var quicVersion1Salt = []byte{0xaf, 0xc8, 0x24, 0xec, 0x5f, 0xc7, 0x7e, 0xca, 0x1e, 0x9d, 0x36, 0xf3, 0x7f, 0xb2, 0xd4, 0x65, 0x18, 0xc3, 0x66, 0x39}
-
-func newNullAEADAESGCM(connectionID protocol.ConnectionID, pers protocol.Perspective) (AEAD, error) {
- clientSecret, serverSecret := computeSecrets(connectionID)
-
- var mySecret, otherSecret []byte
- if pers == protocol.PerspectiveClient {
- mySecret = clientSecret
- otherSecret = serverSecret
- } else {
- mySecret = serverSecret
- otherSecret = clientSecret
- }
-
- myKey, myIV := computeNullAEADKeyAndIV(mySecret)
- otherKey, otherIV := computeNullAEADKeyAndIV(otherSecret)
-
- return NewAEADAESGCM(otherKey, myKey, otherIV, myIV)
-}
-
-func computeSecrets(connectionID protocol.ConnectionID) (clientSecret, serverSecret []byte) {
- connID := make([]byte, 8)
- binary.BigEndian.PutUint64(connID, uint64(connectionID))
- cleartextSecret := mint.HkdfExtract(crypto.SHA256, []byte(quicVersion1Salt), connID)
- clientSecret = mint.HkdfExpandLabel(crypto.SHA256, cleartextSecret, "QUIC client cleartext Secret", []byte{}, crypto.SHA256.Size())
- serverSecret = mint.HkdfExpandLabel(crypto.SHA256, cleartextSecret, "QUIC server cleartext Secret", []byte{}, crypto.SHA256.Size())
- return
-}
-
-func computeNullAEADKeyAndIV(secret []byte) (key, iv []byte) {
- key = mint.HkdfExpandLabel(crypto.SHA256, secret, "key", nil, 16)
- iv = mint.HkdfExpandLabel(crypto.SHA256, secret, "iv", nil, 12)
- return
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/crypto/null_aead_fnv128a.go b/vendor/github.com/phuslu/quic-go/internal/crypto/null_aead_fnv128a.go
deleted file mode 100644
index 65338a6..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/crypto/null_aead_fnv128a.go
+++ /dev/null
@@ -1,71 +0,0 @@
-package crypto
-
-import (
- "encoding/binary"
- "errors"
-
- "github.com/lucas-clemente/fnv128a"
- "github.com/phuslu/quic-go/internal/protocol"
-)
-
-// nullAEAD handles not-yet encrypted packets
-type nullAEADFNV128a struct {
- perspective protocol.Perspective
-}
-
-var _ AEAD = &nullAEADFNV128a{}
-
-// Open and verify the ciphertext
-func (n *nullAEADFNV128a) Open(dst, src []byte, packetNumber protocol.PacketNumber, associatedData []byte) ([]byte, error) {
- if len(src) < 12 {
- return nil, errors.New("NullAEAD: ciphertext cannot be less than 12 bytes long")
- }
-
- hash := fnv128a.New()
- hash.Write(associatedData)
- hash.Write(src[12:])
- if n.perspective == protocol.PerspectiveServer {
- hash.Write([]byte("Client"))
- } else {
- hash.Write([]byte("Server"))
- }
- testHigh, testLow := hash.Sum128()
-
- low := binary.LittleEndian.Uint64(src)
- high := binary.LittleEndian.Uint32(src[8:])
-
- if uint32(testHigh&0xffffffff) != high || testLow != low {
- return nil, errors.New("NullAEAD: failed to authenticate received data")
- }
- return src[12:], nil
-}
-
-// Seal writes hash and ciphertext to the buffer
-func (n *nullAEADFNV128a) Seal(dst, src []byte, packetNumber protocol.PacketNumber, associatedData []byte) []byte {
- if cap(dst) < 12+len(src) {
- dst = make([]byte, 12+len(src))
- } else {
- dst = dst[:12+len(src)]
- }
-
- hash := fnv128a.New()
- hash.Write(associatedData)
- hash.Write(src)
-
- if n.perspective == protocol.PerspectiveServer {
- hash.Write([]byte("Server"))
- } else {
- hash.Write([]byte("Client"))
- }
-
- high, low := hash.Sum128()
-
- copy(dst[12:], src)
- binary.LittleEndian.PutUint64(dst, low)
- binary.LittleEndian.PutUint32(dst[8:], uint32(high))
- return dst
-}
-
-func (n *nullAEADFNV128a) Overhead() int {
- return 12
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/crypto/server_proof.go b/vendor/github.com/phuslu/quic-go/internal/crypto/server_proof.go
deleted file mode 100644
index 456ad32..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/crypto/server_proof.go
+++ /dev/null
@@ -1,66 +0,0 @@
-package crypto
-
-import (
- "crypto"
- "crypto/ecdsa"
- "crypto/rand"
- "crypto/rsa"
- "crypto/sha256"
- "crypto/tls"
- "crypto/x509"
- "encoding/asn1"
- "errors"
- "math/big"
-)
-
-type ecdsaSignature struct {
- R, S *big.Int
-}
-
-// signServerProof signs CHLO and server config for use in the server proof
-func signServerProof(cert *tls.Certificate, chlo []byte, serverConfigData []byte) ([]byte, error) {
- hash := sha256.New()
- hash.Write([]byte("QUIC CHLO and server config signature\x00"))
- chloHash := sha256.Sum256(chlo)
- hash.Write([]byte{32, 0, 0, 0})
- hash.Write(chloHash[:])
- hash.Write(serverConfigData)
-
- key, ok := cert.PrivateKey.(crypto.Signer)
- if !ok {
- return nil, errors.New("expected PrivateKey to implement crypto.Signer")
- }
-
- opts := crypto.SignerOpts(crypto.SHA256)
-
- if _, ok = key.(*rsa.PrivateKey); ok {
- opts = &rsa.PSSOptions{SaltLength: 32, Hash: crypto.SHA256}
- }
-
- return key.Sign(rand.Reader, hash.Sum(nil), opts)
-}
-
-// verifyServerProof verifies the server proof signature
-func verifyServerProof(proof []byte, cert *x509.Certificate, chlo []byte, serverConfigData []byte) bool {
- hash := sha256.New()
- hash.Write([]byte("QUIC CHLO and server config signature\x00"))
- chloHash := sha256.Sum256(chlo)
- hash.Write([]byte{32, 0, 0, 0})
- hash.Write(chloHash[:])
- hash.Write(serverConfigData)
-
- // RSA
- if cert.PublicKeyAlgorithm == x509.RSA {
- opts := &rsa.PSSOptions{SaltLength: 32, Hash: crypto.SHA256}
- err := rsa.VerifyPSS(cert.PublicKey.(*rsa.PublicKey), crypto.SHA256, hash.Sum(nil), proof, opts)
- return err == nil
- }
-
- // ECDSA
- signature := &ecdsaSignature{}
- rest, err := asn1.Unmarshal(proof, signature)
- if err != nil || len(rest) != 0 {
- return false
- }
- return ecdsa.Verify(cert.PublicKey.(*ecdsa.PublicKey), hash.Sum(nil), signature.R, signature.S)
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/flowcontrol/base_flow_controller.go b/vendor/github.com/phuslu/quic-go/internal/flowcontrol/base_flow_controller.go
deleted file mode 100644
index 4da69ea..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/flowcontrol/base_flow_controller.go
+++ /dev/null
@@ -1,108 +0,0 @@
-package flowcontrol
-
-import (
- "sync"
- "time"
-
- "github.com/phuslu/quic-go/congestion"
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/utils"
-)
-
-type baseFlowController struct {
- // for sending data
- bytesSent protocol.ByteCount
- sendWindow protocol.ByteCount
-
- // for receiving data
- mutex sync.RWMutex
- bytesRead protocol.ByteCount
- highestReceived protocol.ByteCount
- receiveWindow protocol.ByteCount
- receiveWindowSize protocol.ByteCount
- maxReceiveWindowSize protocol.ByteCount
-
- epochStartTime time.Time
- epochStartOffset protocol.ByteCount
- rttStats *congestion.RTTStats
-}
-
-func (c *baseFlowController) AddBytesSent(n protocol.ByteCount) {
- c.bytesSent += n
-}
-
-// UpdateSendWindow should be called after receiving a WindowUpdateFrame
-// it returns true if the window was actually updated
-func (c *baseFlowController) UpdateSendWindow(offset protocol.ByteCount) {
- if offset > c.sendWindow {
- c.sendWindow = offset
- }
-}
-
-func (c *baseFlowController) sendWindowSize() protocol.ByteCount {
- // this only happens during connection establishment, when data is sent before we receive the peer's transport parameters
- if c.bytesSent > c.sendWindow {
- return 0
- }
- return c.sendWindow - c.bytesSent
-}
-
-func (c *baseFlowController) AddBytesRead(n protocol.ByteCount) {
- c.mutex.Lock()
- defer c.mutex.Unlock()
-
- // pretend we sent a WindowUpdate when reading the first byte
- // this way auto-tuning of the window size already works for the first WindowUpdate
- if c.bytesRead == 0 {
- c.startNewAutoTuningEpoch()
- }
- c.bytesRead += n
-}
-
-func (c *baseFlowController) hasWindowUpdate() bool {
- bytesRemaining := c.receiveWindow - c.bytesRead
- // update the window when more than the threshold was consumed
- return bytesRemaining <= protocol.ByteCount((float64(c.receiveWindowSize) * float64((1 - protocol.WindowUpdateThreshold))))
-}
-
-// getWindowUpdate updates the receive window, if necessary
-// it returns the new offset
-func (c *baseFlowController) getWindowUpdate() protocol.ByteCount {
- if !c.hasWindowUpdate() {
- return 0
- }
-
- c.maybeAdjustWindowSize()
- c.receiveWindow = c.bytesRead + c.receiveWindowSize
- return c.receiveWindow
-}
-
-// maybeAdjustWindowSize increases the receiveWindowSize if we're sending updates too often.
-// For details about auto-tuning, see https://docs.google.com/document/d/1SExkMmGiz8VYzV3s9E35JQlJ73vhzCekKkDi85F1qCE/edit?usp=sharing.
-func (c *baseFlowController) maybeAdjustWindowSize() {
- bytesReadInEpoch := c.bytesRead - c.epochStartOffset
- // don't do anything if less than half the window has been consumed
- if bytesReadInEpoch <= c.receiveWindowSize/2 {
- return
- }
- rtt := c.rttStats.SmoothedRTT()
- if rtt == 0 {
- return
- }
-
- fraction := float64(bytesReadInEpoch) / float64(c.receiveWindowSize)
- if time.Since(c.epochStartTime) < time.Duration(4*fraction*float64(rtt)) {
- // window is consumed too fast, try to increase the window size
- c.receiveWindowSize = utils.MinByteCount(2*c.receiveWindowSize, c.maxReceiveWindowSize)
- }
- c.startNewAutoTuningEpoch()
-}
-
-func (c *baseFlowController) startNewAutoTuningEpoch() {
- c.epochStartTime = time.Now()
- c.epochStartOffset = c.bytesRead
-}
-
-func (c *baseFlowController) checkFlowControlViolation() bool {
- return c.highestReceived > c.receiveWindow
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/flowcontrol/connection_flow_controller.go b/vendor/github.com/phuslu/quic-go/internal/flowcontrol/connection_flow_controller.go
deleted file mode 100644
index c7c8b7d..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/flowcontrol/connection_flow_controller.go
+++ /dev/null
@@ -1,83 +0,0 @@
-package flowcontrol
-
-import (
- "fmt"
-
- "github.com/phuslu/quic-go/congestion"
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/utils"
- "github.com/phuslu/quic-go/qerr"
-)
-
-type connectionFlowController struct {
- lastBlockedAt protocol.ByteCount
- baseFlowController
-}
-
-var _ ConnectionFlowController = &connectionFlowController{}
-
-// NewConnectionFlowController gets a new flow controller for the connection
-// It is created before we receive the peer's transport paramenters, thus it starts with a sendWindow of 0.
-func NewConnectionFlowController(
- receiveWindow protocol.ByteCount,
- maxReceiveWindow protocol.ByteCount,
- rttStats *congestion.RTTStats,
-) ConnectionFlowController {
- return &connectionFlowController{
- baseFlowController: baseFlowController{
- rttStats: rttStats,
- receiveWindow: receiveWindow,
- receiveWindowSize: receiveWindow,
- maxReceiveWindowSize: maxReceiveWindow,
- },
- }
-}
-
-func (c *connectionFlowController) SendWindowSize() protocol.ByteCount {
- return c.baseFlowController.sendWindowSize()
-}
-
-// IsNewlyBlocked says if it is newly blocked by flow control.
-// For every offset, it only returns true once.
-// If it is blocked, the offset is returned.
-func (c *connectionFlowController) IsNewlyBlocked() (bool, protocol.ByteCount) {
- if c.sendWindowSize() != 0 || c.sendWindow == c.lastBlockedAt {
- return false, 0
- }
- c.lastBlockedAt = c.sendWindow
- return true, c.sendWindow
-}
-
-// IncrementHighestReceived adds an increment to the highestReceived value
-func (c *connectionFlowController) IncrementHighestReceived(increment protocol.ByteCount) error {
- c.mutex.Lock()
- defer c.mutex.Unlock()
-
- c.highestReceived += increment
- if c.checkFlowControlViolation() {
- return qerr.Error(qerr.FlowControlReceivedTooMuchData, fmt.Sprintf("Received %d bytes for the connection, allowed %d bytes", c.highestReceived, c.receiveWindow))
- }
- return nil
-}
-
-func (c *connectionFlowController) GetWindowUpdate() protocol.ByteCount {
- c.mutex.Lock()
- oldWindowSize := c.receiveWindowSize
- offset := c.baseFlowController.getWindowUpdate()
- if oldWindowSize < c.receiveWindowSize {
- utils.Debugf("Increasing receive flow control window for the connection to %d kB", c.receiveWindowSize/(1<<10))
- }
- c.mutex.Unlock()
- return offset
-}
-
-// EnsureMinimumWindowSize sets a minimum window size
-// it should make sure that the connection-level window is increased when a stream-level window grows
-func (c *connectionFlowController) EnsureMinimumWindowSize(inc protocol.ByteCount) {
- c.mutex.Lock()
- if inc > c.receiveWindowSize {
- c.receiveWindowSize = utils.MinByteCount(inc, c.maxReceiveWindowSize)
- c.startNewAutoTuningEpoch()
- }
- c.mutex.Unlock()
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/flowcontrol/interface.go b/vendor/github.com/phuslu/quic-go/internal/flowcontrol/interface.go
deleted file mode 100644
index 05aadbd..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/flowcontrol/interface.go
+++ /dev/null
@@ -1,42 +0,0 @@
-package flowcontrol
-
-import "github.com/phuslu/quic-go/internal/protocol"
-
-type flowController interface {
- // for sending
- SendWindowSize() protocol.ByteCount
- UpdateSendWindow(protocol.ByteCount)
- AddBytesSent(protocol.ByteCount)
- // for receiving
- AddBytesRead(protocol.ByteCount)
- GetWindowUpdate() protocol.ByteCount // returns 0 if no update is necessary
-}
-
-// A StreamFlowController is a flow controller for a QUIC stream.
-type StreamFlowController interface {
- flowController
- // for sending
- IsBlocked() (bool, protocol.ByteCount)
- // for receiving
- // UpdateHighestReceived should be called when a new highest offset is received
- // final has to be to true if this is the final offset of the stream, as contained in a STREAM frame with FIN bit, and the RST_STREAM frame
- UpdateHighestReceived(offset protocol.ByteCount, final bool) error
- // HasWindowUpdate says if it is necessary to update the window
- HasWindowUpdate() bool
-}
-
-// The ConnectionFlowController is the flow controller for the connection.
-type ConnectionFlowController interface {
- flowController
- // for sending
- IsNewlyBlocked() (bool, protocol.ByteCount)
-}
-
-type connectionFlowControllerI interface {
- ConnectionFlowController
- // The following two methods are not supposed to be called from outside this packet, but are needed internally
- // for sending
- EnsureMinimumWindowSize(protocol.ByteCount)
- // for receiving
- IncrementHighestReceived(protocol.ByteCount) error
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/flowcontrol/stream_flow_controller.go b/vendor/github.com/phuslu/quic-go/internal/flowcontrol/stream_flow_controller.go
deleted file mode 100644
index 7dcdf54..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/flowcontrol/stream_flow_controller.go
+++ /dev/null
@@ -1,147 +0,0 @@
-package flowcontrol
-
-import (
- "fmt"
-
- "github.com/phuslu/quic-go/congestion"
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/utils"
- "github.com/phuslu/quic-go/qerr"
-)
-
-type streamFlowController struct {
- baseFlowController
-
- streamID protocol.StreamID
-
- connection connectionFlowControllerI
- contributesToConnection bool // does the stream contribute to connection level flow control
-
- receivedFinalOffset bool
-}
-
-var _ StreamFlowController = &streamFlowController{}
-
-// NewStreamFlowController gets a new flow controller for a stream
-func NewStreamFlowController(
- streamID protocol.StreamID,
- contributesToConnection bool,
- cfc ConnectionFlowController,
- receiveWindow protocol.ByteCount,
- maxReceiveWindow protocol.ByteCount,
- initialSendWindow protocol.ByteCount,
- rttStats *congestion.RTTStats,
-) StreamFlowController {
- return &streamFlowController{
- streamID: streamID,
- contributesToConnection: contributesToConnection,
- connection: cfc.(connectionFlowControllerI),
- baseFlowController: baseFlowController{
- rttStats: rttStats,
- receiveWindow: receiveWindow,
- receiveWindowSize: receiveWindow,
- maxReceiveWindowSize: maxReceiveWindow,
- sendWindow: initialSendWindow,
- },
- }
-}
-
-// UpdateHighestReceived updates the highestReceived value, if the byteOffset is higher
-// it returns an ErrReceivedSmallerByteOffset if the received byteOffset is smaller than any byteOffset received before
-func (c *streamFlowController) UpdateHighestReceived(byteOffset protocol.ByteCount, final bool) error {
- c.mutex.Lock()
- defer c.mutex.Unlock()
-
- // when receiving a final offset, check that this final offset is consistent with a final offset we might have received earlier
- if final && c.receivedFinalOffset && byteOffset != c.highestReceived {
- return qerr.Error(qerr.StreamDataAfterTermination, fmt.Sprintf("Received inconsistent final offset for stream %d (old: %d, new: %d bytes)", c.streamID, c.highestReceived, byteOffset))
- }
- // if we already received a final offset, check that the offset in the STREAM frames is below the final offset
- if c.receivedFinalOffset && byteOffset > c.highestReceived {
- return qerr.StreamDataAfterTermination
- }
- if final {
- c.receivedFinalOffset = true
- }
- if byteOffset == c.highestReceived {
- return nil
- }
- if byteOffset <= c.highestReceived {
- // a STREAM_FRAME with a higher offset was received before.
- if final {
- // If the current byteOffset is smaller than the offset in that STREAM_FRAME, this STREAM_FRAME contained data after the end of the stream
- return qerr.StreamDataAfterTermination
- }
- // this is a reordered STREAM_FRAME
- return nil
- }
-
- increment := byteOffset - c.highestReceived
- c.highestReceived = byteOffset
- if c.checkFlowControlViolation() {
- return qerr.Error(qerr.FlowControlReceivedTooMuchData, fmt.Sprintf("Received %d bytes on stream %d, allowed %d bytes", byteOffset, c.streamID, c.receiveWindow))
- }
- if c.contributesToConnection {
- return c.connection.IncrementHighestReceived(increment)
- }
- return nil
-}
-
-func (c *streamFlowController) AddBytesRead(n protocol.ByteCount) {
- c.baseFlowController.AddBytesRead(n)
- if c.contributesToConnection {
- c.connection.AddBytesRead(n)
- }
-}
-
-func (c *streamFlowController) AddBytesSent(n protocol.ByteCount) {
- c.baseFlowController.AddBytesSent(n)
- if c.contributesToConnection {
- c.connection.AddBytesSent(n)
- }
-}
-
-func (c *streamFlowController) SendWindowSize() protocol.ByteCount {
- window := c.baseFlowController.sendWindowSize()
- if c.contributesToConnection {
- window = utils.MinByteCount(window, c.connection.SendWindowSize())
- }
- return window
-}
-
-// IsBlocked says if it is blocked by stream-level flow control.
-// If it is blocked, the offset is returned.
-func (c *streamFlowController) IsBlocked() (bool, protocol.ByteCount) {
- if c.sendWindowSize() != 0 {
- return false, 0
- }
- return true, c.sendWindow
-}
-
-func (c *streamFlowController) HasWindowUpdate() bool {
- c.mutex.Lock()
- hasWindowUpdate := !c.receivedFinalOffset && c.hasWindowUpdate()
- c.mutex.Unlock()
- return hasWindowUpdate
-}
-
-func (c *streamFlowController) GetWindowUpdate() protocol.ByteCount {
- // don't use defer for unlocking the mutex here, GetWindowUpdate() is called frequently and defer shows up in the profiler
- c.mutex.Lock()
- // if we already received the final offset for this stream, the peer won't need any additional flow control credit
- if c.receivedFinalOffset {
- c.mutex.Unlock()
- return 0
- }
-
- oldWindowSize := c.receiveWindowSize
- offset := c.baseFlowController.getWindowUpdate()
- if c.receiveWindowSize > oldWindowSize { // auto-tuning enlarged the window size
- utils.Debugf("Increasing receive flow control window for the connection to %d kB", c.receiveWindowSize/(1<<10))
- if c.contributesToConnection {
- c.connection.EnsureMinimumWindowSize(protocol.ByteCount(float64(c.receiveWindowSize) * protocol.ConnectionFlowControlMultiplier))
- }
- }
- c.mutex.Unlock()
- return offset
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/handshake/cookie_generator.go b/vendor/github.com/phuslu/quic-go/internal/handshake/cookie_generator.go
deleted file mode 100644
index 97accb7..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/handshake/cookie_generator.go
+++ /dev/null
@@ -1,101 +0,0 @@
-package handshake
-
-import (
- "encoding/asn1"
- "fmt"
- "net"
- "time"
-
- "github.com/bifurcation/mint"
-)
-
-const (
- cookiePrefixIP byte = iota
- cookiePrefixString
-)
-
-// A Cookie is derived from the client address and can be used to verify the ownership of this address.
-type Cookie struct {
- RemoteAddr string
- // The time that the STK was issued (resolution 1 second)
- SentTime time.Time
-}
-
-// token is the struct that is used for ASN1 serialization and deserialization
-type token struct {
- Data []byte
- Timestamp int64
-}
-
-// A CookieGenerator generates Cookies
-type CookieGenerator struct {
- cookieProtector mint.CookieProtector
-}
-
-// NewCookieGenerator initializes a new CookieGenerator
-func NewCookieGenerator() (*CookieGenerator, error) {
- cookieProtector, err := mint.NewDefaultCookieProtector()
- if err != nil {
- return nil, err
- }
- return &CookieGenerator{
- cookieProtector: cookieProtector,
- }, nil
-}
-
-// NewToken generates a new Cookie for a given source address
-func (g *CookieGenerator) NewToken(raddr net.Addr) ([]byte, error) {
- data, err := asn1.Marshal(token{
- Data: encodeRemoteAddr(raddr),
- Timestamp: time.Now().Unix(),
- })
- if err != nil {
- return nil, err
- }
- return g.cookieProtector.NewToken(data)
-}
-
-// DecodeToken decodes a Cookie
-func (g *CookieGenerator) DecodeToken(encrypted []byte) (*Cookie, error) {
- // if the client didn't send any Cookie, DecodeToken will be called with a nil-slice
- if len(encrypted) == 0 {
- return nil, nil
- }
-
- data, err := g.cookieProtector.DecodeToken(encrypted)
- if err != nil {
- return nil, err
- }
- t := &token{}
- rest, err := asn1.Unmarshal(data, t)
- if err != nil {
- return nil, err
- }
- if len(rest) != 0 {
- return nil, fmt.Errorf("rest when unpacking token: %d", len(rest))
- }
- return &Cookie{
- RemoteAddr: decodeRemoteAddr(t.Data),
- SentTime: time.Unix(t.Timestamp, 0),
- }, nil
-}
-
-// encodeRemoteAddr encodes a remote address such that it can be saved in the Cookie
-func encodeRemoteAddr(remoteAddr net.Addr) []byte {
- if udpAddr, ok := remoteAddr.(*net.UDPAddr); ok {
- return append([]byte{cookiePrefixIP}, udpAddr.IP...)
- }
- return append([]byte{cookiePrefixString}, []byte(remoteAddr.String())...)
-}
-
-// decodeRemoteAddr decodes the remote address saved in the Cookie
-func decodeRemoteAddr(data []byte) string {
- // data will never be empty for a Cookie that we generated. Check it to be on the safe side
- if len(data) == 0 {
- return ""
- }
- if data[0] == cookiePrefixIP {
- return net.IP(data[1:]).String()
- }
- return string(data[1:])
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/handshake/cookie_handler.go b/vendor/github.com/phuslu/quic-go/internal/handshake/cookie_handler.go
deleted file mode 100644
index 1b67cef..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/handshake/cookie_handler.go
+++ /dev/null
@@ -1,43 +0,0 @@
-package handshake
-
-import (
- "net"
-
- "github.com/bifurcation/mint"
- "github.com/phuslu/quic-go/internal/utils"
-)
-
-type CookieHandler struct {
- callback func(net.Addr, *Cookie) bool
-
- cookieGenerator *CookieGenerator
-}
-
-var _ mint.CookieHandler = &CookieHandler{}
-
-func NewCookieHandler(callback func(net.Addr, *Cookie) bool) (*CookieHandler, error) {
- cookieGenerator, err := NewCookieGenerator()
- if err != nil {
- return nil, err
- }
- return &CookieHandler{
- callback: callback,
- cookieGenerator: cookieGenerator,
- }, nil
-}
-
-func (h *CookieHandler) Generate(conn *mint.Conn) ([]byte, error) {
- if h.callback(conn.RemoteAddr(), nil) {
- return nil, nil
- }
- return h.cookieGenerator.NewToken(conn.RemoteAddr())
-}
-
-func (h *CookieHandler) Validate(conn *mint.Conn, token []byte) bool {
- data, err := h.cookieGenerator.DecodeToken(token)
- if err != nil {
- utils.Debugf("Couldn't decode cookie from %s: %s", conn.RemoteAddr(), err.Error())
- return false
- }
- return h.callback(conn.RemoteAddr(), data)
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/handshake/crypto_setup_client.go b/vendor/github.com/phuslu/quic-go/internal/handshake/crypto_setup_client.go
deleted file mode 100644
index 6c22f9c..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/handshake/crypto_setup_client.go
+++ /dev/null
@@ -1,538 +0,0 @@
-package handshake
-
-import (
- "bytes"
- "crypto/rand"
- "crypto/tls"
- "encoding/binary"
- "errors"
- "fmt"
- "io"
- "sync"
- "time"
-
- "github.com/phuslu/quic-go/internal/crypto"
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/utils"
- "github.com/phuslu/quic-go/qerr"
-)
-
-type cryptoSetupClient struct {
- mutex sync.RWMutex
-
- hostname string
- connID protocol.ConnectionID
- version protocol.VersionNumber
- initialVersion protocol.VersionNumber
- negotiatedVersions []protocol.VersionNumber
-
- cryptoStream io.ReadWriter
-
- serverConfig *serverConfigClient
-
- connectionState *tls.ConnectionState
-
- stk []byte
- sno []byte
- nonc []byte
- proof []byte
- chloForSignature []byte
- lastSentCHLO []byte
- certManager crypto.CertManager
-
- divNonceChan chan []byte
- diversificationNonce []byte
-
- clientHelloCounter int
- serverVerified bool // has the certificate chain and the proof already been verified
- keyDerivation QuicCryptoKeyDerivationFunction
- keyExchange KeyExchangeFunction
-
- receivedSecurePacket bool
- nullAEAD crypto.AEAD
- secureAEAD crypto.AEAD
- forwardSecureAEAD crypto.AEAD
-
- paramsChan chan<- TransportParameters
- handshakeEvent chan<- struct{}
-
- params *TransportParameters
-}
-
-var _ CryptoSetup = &cryptoSetupClient{}
-
-var (
- errNoObitForClientNonce = errors.New("CryptoSetup BUG: No OBIT for client nonce available")
- errClientNonceAlreadyExists = errors.New("CryptoSetup BUG: A client nonce was already generated")
- errConflictingDiversificationNonces = errors.New("Received two different diversification nonces")
-)
-
-// NewCryptoSetupClient creates a new CryptoSetup instance for a client
-func NewCryptoSetupClient(
- cryptoStream io.ReadWriter,
- hostname string,
- connID protocol.ConnectionID,
- version protocol.VersionNumber,
- tlsConfig *tls.Config,
- params *TransportParameters,
- paramsChan chan<- TransportParameters,
- handshakeEvent chan<- struct{},
- initialVersion protocol.VersionNumber,
- negotiatedVersions []protocol.VersionNumber,
-) (CryptoSetup, error) {
- nullAEAD, err := crypto.NewNullAEAD(protocol.PerspectiveClient, connID, version)
- if err != nil {
- return nil, err
- }
- return &cryptoSetupClient{
- cryptoStream: cryptoStream,
- hostname: hostname,
- connID: connID,
- version: version,
- certManager: crypto.NewCertManager(tlsConfig),
- params: params,
- keyDerivation: crypto.DeriveQuicCryptoAESKeys,
- keyExchange: getEphermalKEX,
- nullAEAD: nullAEAD,
- paramsChan: paramsChan,
- handshakeEvent: handshakeEvent,
- initialVersion: initialVersion,
- negotiatedVersions: negotiatedVersions,
- divNonceChan: make(chan []byte),
- }, nil
-}
-
-func (h *cryptoSetupClient) HandleCryptoStream() (*tls.ConnectionState, error) {
- messageChan := make(chan HandshakeMessage)
- errorChan := make(chan error, 1)
-
- go func() {
- for {
- message, err := ParseHandshakeMessage(h.cryptoStream)
- if err != nil {
- errorChan <- qerr.Error(qerr.HandshakeFailed, err.Error())
- return
- }
- messageChan <- message
- }
- }()
-
- for {
- err := h.maybeUpgradeCrypto()
- if err != nil {
- return h.connectionState, err
- }
-
- h.mutex.RLock()
- sendCHLO := h.secureAEAD == nil
- h.mutex.RUnlock()
-
- if sendCHLO {
- err = h.sendCHLO()
- if err != nil {
- return h.connectionState, err
- }
- }
-
- var message HandshakeMessage
- select {
- case divNonce := <-h.divNonceChan:
- if len(h.diversificationNonce) != 0 && !bytes.Equal(h.diversificationNonce, divNonce) {
- return h.connectionState, errConflictingDiversificationNonces
- }
- h.diversificationNonce = divNonce
- // there's no message to process, but we should try upgrading the crypto again
- continue
- case message = <-messageChan:
- case err = <-errorChan:
- return h.connectionState, err
- }
-
- utils.Debugf("Got %s", message)
- switch message.Tag {
- case TagREJ:
- if err := h.handleREJMessage(message.Data); err != nil {
- return h.connectionState, err
- }
- case TagSHLO:
- params, err := h.handleSHLOMessage(message.Data)
- if err != nil {
- return h.connectionState, err
- }
- // blocks until the session has received the parameters
- h.paramsChan <- *params
- h.handshakeEvent <- struct{}{}
- close(h.handshakeEvent)
- default:
- return h.connectionState, qerr.InvalidCryptoMessageType
- }
- }
-}
-
-func (h *cryptoSetupClient) handleREJMessage(cryptoData map[Tag][]byte) error {
- var err error
-
- if stk, ok := cryptoData[TagSTK]; ok {
- h.stk = stk
- }
-
- if sno, ok := cryptoData[TagSNO]; ok {
- h.sno = sno
- }
-
- // TODO: what happens if the server sends a different server config in two packets?
- if scfg, ok := cryptoData[TagSCFG]; ok {
- h.serverConfig, err = parseServerConfig(scfg)
- if err != nil {
- return err
- }
-
- if h.serverConfig.IsExpired() {
- return qerr.CryptoServerConfigExpired
- }
-
- // now that we have a server config, we can use its OBIT value to generate a client nonce
- if len(h.nonc) == 0 {
- err = h.generateClientNonce()
- if err != nil {
- return err
- }
- }
- }
-
- if proof, ok := cryptoData[TagPROF]; ok {
- h.proof = proof
- h.chloForSignature = h.lastSentCHLO
- }
-
- if crt, ok := cryptoData[TagCERT]; ok {
- err := h.certManager.SetData(crt)
- if err != nil {
- return qerr.Error(qerr.InvalidCryptoMessageParameter, "Certificate data invalid")
- }
-
- err = h.certManager.Verify(h.hostname)
- if err != nil {
- utils.Infof("Certificate validation failed: %s", err.Error())
- return qerr.ProofInvalid
- }
- }
-
- if h.serverConfig != nil && len(h.proof) != 0 && h.certManager.GetLeafCert() != nil {
- validProof := h.certManager.VerifyServerProof(h.proof, h.chloForSignature, h.serverConfig.Get())
- if !validProof {
- utils.Infof("Server proof verification failed")
- return qerr.ProofInvalid
- }
-
- h.serverVerified = true
- }
-
- return nil
-}
-
-func (h *cryptoSetupClient) handleSHLOMessage(cryptoData map[Tag][]byte) (*TransportParameters, error) {
- h.mutex.Lock()
- defer h.mutex.Unlock()
-
- if !h.receivedSecurePacket {
- return nil, qerr.Error(qerr.CryptoEncryptionLevelIncorrect, "unencrypted SHLO message")
- }
-
- if sno, ok := cryptoData[TagSNO]; ok {
- h.sno = sno
- }
-
- serverPubs, ok := cryptoData[TagPUBS]
- if !ok {
- return nil, qerr.Error(qerr.CryptoMessageParameterNotFound, "PUBS")
- }
-
- verTag, ok := cryptoData[TagVER]
- if !ok {
- return nil, qerr.Error(qerr.InvalidCryptoMessageParameter, "server hello missing version list")
- }
- if !h.validateVersionList(verTag) {
- return nil, qerr.Error(qerr.VersionNegotiationMismatch, "Downgrade attack detected")
- }
-
- nonce := append(h.nonc, h.sno...)
-
- ephermalSharedSecret, err := h.serverConfig.kex.CalculateSharedKey(serverPubs)
- if err != nil {
- return nil, err
- }
-
- leafCert := h.certManager.GetLeafCert()
-
- h.forwardSecureAEAD, err = h.keyDerivation(
- true,
- ephermalSharedSecret,
- nonce,
- h.connID,
- h.lastSentCHLO,
- h.serverConfig.Get(),
- leafCert,
- nil,
- protocol.PerspectiveClient,
- )
- if err != nil {
- return nil, err
- }
-
- params, err := readHelloMap(cryptoData)
- if err != nil {
- return nil, qerr.InvalidCryptoMessageParameter
- }
-
- h.connectionState = &tls.ConnectionState{
- HandshakeComplete: true,
- Version: tls.VersionTLS12,
- PeerCertificates: h.certManager.GetCertificateChain(),
- }
-
- return params, nil
-}
-
-func (h *cryptoSetupClient) validateVersionList(verTags []byte) bool {
- numNegotiatedVersions := len(h.negotiatedVersions)
- if numNegotiatedVersions == 0 {
- return true
- }
- if len(verTags)%4 != 0 || len(verTags)/4 != numNegotiatedVersions {
- return false
- }
-
- b := bytes.NewReader(verTags)
- for i := 0; i < numNegotiatedVersions; i++ {
- v, err := utils.BigEndian.ReadUint32(b)
- if err != nil { // should never occur, since the length was already checked
- return false
- }
- if protocol.VersionNumber(v) != h.negotiatedVersions[i] {
- return false
- }
- }
- return true
-}
-
-func (h *cryptoSetupClient) Open(dst, src []byte, packetNumber protocol.PacketNumber, associatedData []byte) ([]byte, protocol.EncryptionLevel, error) {
- h.mutex.RLock()
- defer h.mutex.RUnlock()
-
- if h.forwardSecureAEAD != nil {
- data, err := h.forwardSecureAEAD.Open(dst, src, packetNumber, associatedData)
- if err == nil {
- return data, protocol.EncryptionForwardSecure, nil
- }
- return nil, protocol.EncryptionUnspecified, err
- }
-
- if h.secureAEAD != nil {
- data, err := h.secureAEAD.Open(dst, src, packetNumber, associatedData)
- if err == nil {
- h.receivedSecurePacket = true
- return data, protocol.EncryptionSecure, nil
- }
- if h.receivedSecurePacket {
- return nil, protocol.EncryptionUnspecified, err
- }
- }
- res, err := h.nullAEAD.Open(dst, src, packetNumber, associatedData)
- if err != nil {
- return nil, protocol.EncryptionUnspecified, err
- }
- return res, protocol.EncryptionUnencrypted, nil
-}
-
-func (h *cryptoSetupClient) GetSealer() (protocol.EncryptionLevel, Sealer) {
- h.mutex.RLock()
- defer h.mutex.RUnlock()
- if h.forwardSecureAEAD != nil {
- return protocol.EncryptionForwardSecure, h.forwardSecureAEAD
- } else if h.secureAEAD != nil {
- return protocol.EncryptionSecure, h.secureAEAD
- } else {
- return protocol.EncryptionUnencrypted, h.nullAEAD
- }
-}
-
-func (h *cryptoSetupClient) GetSealerForCryptoStream() (protocol.EncryptionLevel, Sealer) {
- return protocol.EncryptionUnencrypted, h.nullAEAD
-}
-
-func (h *cryptoSetupClient) GetSealerWithEncryptionLevel(encLevel protocol.EncryptionLevel) (Sealer, error) {
- h.mutex.RLock()
- defer h.mutex.RUnlock()
-
- switch encLevel {
- case protocol.EncryptionUnencrypted:
- return h.nullAEAD, nil
- case protocol.EncryptionSecure:
- if h.secureAEAD == nil {
- return nil, errors.New("CryptoSetupClient: no secureAEAD")
- }
- return h.secureAEAD, nil
- case protocol.EncryptionForwardSecure:
- if h.forwardSecureAEAD == nil {
- return nil, errors.New("CryptoSetupClient: no forwardSecureAEAD")
- }
- return h.forwardSecureAEAD, nil
- }
- return nil, errors.New("CryptoSetupClient: no encryption level specified")
-}
-
-func (h *cryptoSetupClient) DiversificationNonce() []byte {
- panic("not needed for cryptoSetupClient")
-}
-
-func (h *cryptoSetupClient) SetDiversificationNonce(data []byte) {
- h.divNonceChan <- data
-}
-
-func (h *cryptoSetupClient) sendCHLO() error {
- h.clientHelloCounter++
- if h.clientHelloCounter > protocol.MaxClientHellos {
- return qerr.Error(qerr.CryptoTooManyRejects, fmt.Sprintf("More than %d rejects", protocol.MaxClientHellos))
- }
-
- b := &bytes.Buffer{}
-
- tags, err := h.getTags()
- if err != nil {
- return err
- }
- h.addPadding(tags)
- message := HandshakeMessage{
- Tag: TagCHLO,
- Data: tags,
- }
-
- utils.Debugf("Sending %s", message)
- message.Write(b)
-
- _, err = h.cryptoStream.Write(b.Bytes())
- if err != nil {
- return err
- }
-
- h.lastSentCHLO = b.Bytes()
- return nil
-}
-
-func (h *cryptoSetupClient) getTags() (map[Tag][]byte, error) {
- tags := h.params.getHelloMap()
- tags[TagSNI] = []byte(h.hostname)
- tags[TagPDMD] = []byte("X509")
-
- ccs := h.certManager.GetCommonCertificateHashes()
- if len(ccs) > 0 {
- tags[TagCCS] = ccs
- }
-
- versionTag := make([]byte, 4)
- binary.BigEndian.PutUint32(versionTag, uint32(h.initialVersion))
- tags[TagVER] = versionTag
-
- if len(h.stk) > 0 {
- tags[TagSTK] = h.stk
- }
- if len(h.sno) > 0 {
- tags[TagSNO] = h.sno
- }
-
- if h.serverConfig != nil {
- tags[TagSCID] = h.serverConfig.ID
-
- leafCert := h.certManager.GetLeafCert()
- if leafCert != nil {
- certHash, _ := h.certManager.GetLeafCertHash()
- xlct := make([]byte, 8)
- binary.LittleEndian.PutUint64(xlct, certHash)
-
- tags[TagNONC] = h.nonc
- tags[TagXLCT] = xlct
- tags[TagKEXS] = []byte("C255")
- tags[TagAEAD] = []byte("AESG")
- tags[TagPUBS] = h.serverConfig.kex.PublicKey() // TODO: check if 3 bytes need to be prepended
- }
- }
-
- return tags, nil
-}
-
-// add a TagPAD to a tagMap, such that the total size will be bigger than the ClientHelloMinimumSize
-func (h *cryptoSetupClient) addPadding(tags map[Tag][]byte) {
- var size int
- for _, tag := range tags {
- size += 8 + len(tag) // 4 bytes for the tag + 4 bytes for the offset + the length of the data
- }
- paddingSize := protocol.MinClientHelloSize - size
- if paddingSize > 0 {
- tags[TagPAD] = bytes.Repeat([]byte{0}, paddingSize)
- }
-}
-
-func (h *cryptoSetupClient) maybeUpgradeCrypto() error {
- if !h.serverVerified {
- return nil
- }
-
- h.mutex.Lock()
- defer h.mutex.Unlock()
-
- leafCert := h.certManager.GetLeafCert()
- if h.secureAEAD == nil && (h.serverConfig != nil && len(h.serverConfig.sharedSecret) > 0 && len(h.nonc) > 0 && len(leafCert) > 0 && len(h.diversificationNonce) > 0 && len(h.lastSentCHLO) > 0) {
- var err error
- var nonce []byte
- if h.sno == nil {
- nonce = h.nonc
- } else {
- nonce = append(h.nonc, h.sno...)
- }
-
- h.secureAEAD, err = h.keyDerivation(
- false,
- h.serverConfig.sharedSecret,
- nonce,
- h.connID,
- h.lastSentCHLO,
- h.serverConfig.Get(),
- leafCert,
- h.diversificationNonce,
- protocol.PerspectiveClient,
- )
- if err != nil {
- return err
- }
- h.handshakeEvent <- struct{}{}
- }
- return nil
-}
-
-func (h *cryptoSetupClient) generateClientNonce() error {
- if len(h.nonc) > 0 {
- return errClientNonceAlreadyExists
- }
-
- nonc := make([]byte, 32)
- binary.BigEndian.PutUint32(nonc, uint32(time.Now().Unix()))
-
- if len(h.serverConfig.obit) != 8 {
- return errNoObitForClientNonce
- }
-
- copy(nonc[4:12], h.serverConfig.obit)
-
- _, err := rand.Read(nonc[12:])
- if err != nil {
- return err
- }
-
- h.nonc = nonc
- return nil
-}
-
-func (h *cryptoSetupClient) ConnectionState() *tls.ConnectionState {
- return h.connectionState
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/handshake/crypto_setup_server.go b/vendor/github.com/phuslu/quic-go/internal/handshake/crypto_setup_server.go
deleted file mode 100644
index 7143844..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/handshake/crypto_setup_server.go
+++ /dev/null
@@ -1,476 +0,0 @@
-package handshake
-
-import (
- "bytes"
- "crypto/rand"
- "crypto/tls"
- "encoding/binary"
- "errors"
- "io"
- "net"
- "sync"
-
- "github.com/phuslu/quic-go/internal/crypto"
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/utils"
- "github.com/phuslu/quic-go/qerr"
-)
-
-// QuicCryptoKeyDerivationFunction is used for key derivation
-type QuicCryptoKeyDerivationFunction func(forwardSecure bool, sharedSecret, nonces []byte, connID protocol.ConnectionID, chlo []byte, scfg []byte, cert []byte, divNonce []byte, pers protocol.Perspective) (crypto.AEAD, error)
-
-// KeyExchangeFunction is used to make a new KEX
-type KeyExchangeFunction func() crypto.KeyExchange
-
-// The CryptoSetupServer handles all things crypto for the Session
-type cryptoSetupServer struct {
- connID protocol.ConnectionID
- remoteAddr net.Addr
- scfg *ServerConfig
- diversificationNonce []byte
-
- version protocol.VersionNumber
- supportedVersions []protocol.VersionNumber
-
- acceptSTKCallback func(net.Addr, *Cookie) bool
-
- connectionState *tls.ConnectionState
-
- nullAEAD crypto.AEAD
- secureAEAD crypto.AEAD
- forwardSecureAEAD crypto.AEAD
- receivedForwardSecurePacket bool
- receivedSecurePacket bool
- sentSHLO chan struct{} // this channel is closed as soon as the SHLO has been written
-
- receivedParams bool
- paramsChan chan<- TransportParameters
- handshakeEvent chan<- struct{}
-
- keyDerivation QuicCryptoKeyDerivationFunction
- keyExchange KeyExchangeFunction
-
- cryptoStream io.ReadWriter
-
- params *TransportParameters
-
- mutex sync.RWMutex
-}
-
-var _ CryptoSetup = &cryptoSetupServer{}
-
-// ErrHOLExperiment is returned when the client sends the FHL2 tag in the CHLO.
-// This is an experiment implemented by Chrome in QUIC 36, which we don't support.
-// TODO: remove this when dropping support for QUIC 36
-var ErrHOLExperiment = qerr.Error(qerr.InvalidCryptoMessageParameter, "HOL experiment. Unsupported")
-
-// ErrNSTPExperiment is returned when the client sends the NSTP tag in the CHLO.
-// This is an experiment implemented by Chrome in QUIC 38, which we don't support at this point.
-var ErrNSTPExperiment = qerr.Error(qerr.InvalidCryptoMessageParameter, "NSTP experiment. Unsupported")
-
-// NewCryptoSetup creates a new CryptoSetup instance for a server
-func NewCryptoSetup(
- cryptoStream io.ReadWriter,
- connID protocol.ConnectionID,
- remoteAddr net.Addr,
- version protocol.VersionNumber,
- scfg *ServerConfig,
- params *TransportParameters,
- supportedVersions []protocol.VersionNumber,
- acceptSTK func(net.Addr, *Cookie) bool,
- paramsChan chan<- TransportParameters,
- handshakeEvent chan<- struct{},
-) (CryptoSetup, error) {
- nullAEAD, err := crypto.NewNullAEAD(protocol.PerspectiveServer, connID, version)
- if err != nil {
- return nil, err
- }
- return &cryptoSetupServer{
- cryptoStream: cryptoStream,
- connID: connID,
- remoteAddr: remoteAddr,
- version: version,
- supportedVersions: supportedVersions,
- scfg: scfg,
- keyDerivation: crypto.DeriveQuicCryptoAESKeys,
- keyExchange: getEphermalKEX,
- nullAEAD: nullAEAD,
- params: params,
- acceptSTKCallback: acceptSTK,
- sentSHLO: make(chan struct{}),
- paramsChan: paramsChan,
- handshakeEvent: handshakeEvent,
- }, nil
-}
-
-// HandleCryptoStream reads and writes messages on the crypto stream
-func (h *cryptoSetupServer) HandleCryptoStream() (*tls.ConnectionState, error) {
- for {
- var chloData bytes.Buffer
- message, err := ParseHandshakeMessage(io.TeeReader(h.cryptoStream, &chloData))
- if err != nil {
- return h.connectionState, qerr.HandshakeFailed
- }
- if message.Tag != TagCHLO {
- return h.connectionState, qerr.InvalidCryptoMessageType
- }
-
- utils.Debugf("Got %s", message)
- done, err := h.handleMessage(chloData.Bytes(), message.Data)
- if err != nil {
- return h.connectionState, err
- }
- if done {
- return h.connectionState, nil
- }
- }
-}
-
-func (h *cryptoSetupServer) handleMessage(chloData []byte, cryptoData map[Tag][]byte) (bool, error) {
- if _, isHOLExperiment := cryptoData[TagFHL2]; isHOLExperiment {
- return false, ErrHOLExperiment
- }
- if _, isNSTPExperiment := cryptoData[TagNSTP]; isNSTPExperiment {
- return false, ErrNSTPExperiment
- }
-
- sniSlice, ok := cryptoData[TagSNI]
- if !ok {
- return false, qerr.Error(qerr.CryptoMessageParameterNotFound, "SNI required")
- }
- sni := string(sniSlice)
- if sni == "" {
- return false, qerr.Error(qerr.CryptoMessageParameterNotFound, "SNI required")
- }
-
- // prevent version downgrade attacks
- // see https://groups.google.com/a/chromium.org/forum/#!topic/proto-quic/N-de9j63tCk for a discussion and examples
- verSlice, ok := cryptoData[TagVER]
- if !ok {
- return false, qerr.Error(qerr.InvalidCryptoMessageParameter, "client hello missing version tag")
- }
- if len(verSlice) != 4 {
- return false, qerr.Error(qerr.InvalidCryptoMessageParameter, "incorrect version tag")
- }
- ver := protocol.VersionNumber(binary.BigEndian.Uint32(verSlice))
- // If the client's preferred version is not the version we are currently speaking, then the client went through a version negotiation. In this case, we need to make sure that we actually do not support this version and that it wasn't a downgrade attack.
- if ver != h.version && protocol.IsSupportedVersion(h.supportedVersions, ver) {
- return false, qerr.Error(qerr.VersionNegotiationMismatch, "Downgrade attack detected")
- }
-
- var reply []byte
- var err error
-
- certUncompressed, err := h.scfg.certChain.GetLeafCert(sni)
- if err != nil {
- return false, err
- }
-
- params, err := readHelloMap(cryptoData)
- if err != nil {
- return false, err
- }
- // blocks until the session has received the parameters
- if !h.receivedParams {
- h.receivedParams = true
- h.paramsChan <- *params
- }
-
- if !h.isInchoateCHLO(cryptoData, certUncompressed) {
- // We have a CHLO with a proper server config ID, do a 0-RTT handshake
- reply, err = h.handleCHLO(sni, chloData, cryptoData)
- if err != nil {
- return false, err
- }
- if _, err := h.cryptoStream.Write(reply); err != nil {
- return false, err
- }
- h.handshakeEvent <- struct{}{}
- close(h.sentSHLO)
- h.connectionState = &tls.ConnectionState{
- HandshakeComplete: true,
- Version: tls.VersionTLS12,
- ServerName: sni,
- }
- return true, nil
- }
-
- // We have an inchoate or non-matching CHLO, we now send a rejection
- reply, err = h.handleInchoateCHLO(sni, chloData, cryptoData)
- if err != nil {
- return false, err
- }
- _, err = h.cryptoStream.Write(reply)
- return false, err
-}
-
-// Open a message
-func (h *cryptoSetupServer) Open(dst, src []byte, packetNumber protocol.PacketNumber, associatedData []byte) ([]byte, protocol.EncryptionLevel, error) {
- h.mutex.RLock()
- defer h.mutex.RUnlock()
-
- if h.forwardSecureAEAD != nil {
- res, err := h.forwardSecureAEAD.Open(dst, src, packetNumber, associatedData)
- if err == nil {
- if !h.receivedForwardSecurePacket { // this is the first forward secure packet we receive from the client
- h.receivedForwardSecurePacket = true
- // wait for the send on the handshakeEvent chan
- <-h.sentSHLO
- close(h.handshakeEvent)
- }
- return res, protocol.EncryptionForwardSecure, nil
- }
- if h.receivedForwardSecurePacket {
- return nil, protocol.EncryptionUnspecified, err
- }
- }
- if h.secureAEAD != nil {
- res, err := h.secureAEAD.Open(dst, src, packetNumber, associatedData)
- if err == nil {
- h.receivedSecurePacket = true
- return res, protocol.EncryptionSecure, nil
- }
- if h.receivedSecurePacket {
- return nil, protocol.EncryptionUnspecified, err
- }
- }
- res, err := h.nullAEAD.Open(dst, src, packetNumber, associatedData)
- if err != nil {
- return res, protocol.EncryptionUnspecified, err
- }
- return res, protocol.EncryptionUnencrypted, err
-}
-
-func (h *cryptoSetupServer) GetSealer() (protocol.EncryptionLevel, Sealer) {
- h.mutex.RLock()
- defer h.mutex.RUnlock()
- if h.forwardSecureAEAD != nil {
- return protocol.EncryptionForwardSecure, h.forwardSecureAEAD
- }
- return protocol.EncryptionUnencrypted, h.nullAEAD
-}
-
-func (h *cryptoSetupServer) GetSealerForCryptoStream() (protocol.EncryptionLevel, Sealer) {
- h.mutex.RLock()
- defer h.mutex.RUnlock()
- if h.secureAEAD != nil {
- return protocol.EncryptionSecure, h.secureAEAD
- }
- return protocol.EncryptionUnencrypted, h.nullAEAD
-}
-
-func (h *cryptoSetupServer) GetSealerWithEncryptionLevel(encLevel protocol.EncryptionLevel) (Sealer, error) {
- h.mutex.RLock()
- defer h.mutex.RUnlock()
-
- switch encLevel {
- case protocol.EncryptionUnencrypted:
- return h.nullAEAD, nil
- case protocol.EncryptionSecure:
- if h.secureAEAD == nil {
- return nil, errors.New("CryptoSetupServer: no secureAEAD")
- }
- return h.secureAEAD, nil
- case protocol.EncryptionForwardSecure:
- if h.forwardSecureAEAD == nil {
- return nil, errors.New("CryptoSetupServer: no forwardSecureAEAD")
- }
- return h.forwardSecureAEAD, nil
- }
- return nil, errors.New("CryptoSetupServer: no encryption level specified")
-}
-
-func (h *cryptoSetupServer) isInchoateCHLO(cryptoData map[Tag][]byte, cert []byte) bool {
- if _, ok := cryptoData[TagPUBS]; !ok {
- return true
- }
- scid, ok := cryptoData[TagSCID]
- if !ok || !bytes.Equal(h.scfg.ID, scid) {
- return true
- }
- xlctTag, ok := cryptoData[TagXLCT]
- if !ok || len(xlctTag) != 8 {
- return true
- }
- xlct := binary.LittleEndian.Uint64(xlctTag)
- if crypto.HashCert(cert) != xlct {
- return true
- }
- return !h.acceptSTK(cryptoData[TagSTK])
-}
-
-func (h *cryptoSetupServer) acceptSTK(token []byte) bool {
- stk, err := h.scfg.cookieGenerator.DecodeToken(token)
- if err != nil {
- utils.Debugf("STK invalid: %s", err.Error())
- return false
- }
- return h.acceptSTKCallback(h.remoteAddr, stk)
-}
-
-func (h *cryptoSetupServer) handleInchoateCHLO(sni string, chlo []byte, cryptoData map[Tag][]byte) ([]byte, error) {
- token, err := h.scfg.cookieGenerator.NewToken(h.remoteAddr)
- if err != nil {
- return nil, err
- }
-
- replyMap := map[Tag][]byte{
- TagSCFG: h.scfg.Get(),
- TagSTK: token,
- TagSVID: []byte("quic-go"),
- }
-
- if h.acceptSTK(cryptoData[TagSTK]) {
- proof, err := h.scfg.Sign(sni, chlo)
- if err != nil {
- return nil, err
- }
-
- commonSetHashes := cryptoData[TagCCS]
- cachedCertsHashes := cryptoData[TagCCRT]
-
- certCompressed, err := h.scfg.GetCertsCompressed(sni, commonSetHashes, cachedCertsHashes)
- if err != nil {
- return nil, err
- }
- // Token was valid, send more details
- replyMap[TagPROF] = proof
- replyMap[TagCERT] = certCompressed
- }
-
- message := HandshakeMessage{
- Tag: TagREJ,
- Data: replyMap,
- }
-
- var serverReply bytes.Buffer
- message.Write(&serverReply)
- utils.Debugf("Sending %s", message)
- return serverReply.Bytes(), nil
-}
-
-func (h *cryptoSetupServer) handleCHLO(sni string, data []byte, cryptoData map[Tag][]byte) ([]byte, error) {
- // We have a CHLO matching our server config, we can continue with the 0-RTT handshake
- sharedSecret, err := h.scfg.kex.CalculateSharedKey(cryptoData[TagPUBS])
- if err != nil {
- return nil, err
- }
-
- h.mutex.Lock()
- defer h.mutex.Unlock()
-
- certUncompressed, err := h.scfg.certChain.GetLeafCert(sni)
- if err != nil {
- return nil, err
- }
-
- serverNonce := make([]byte, 32)
- if _, err = rand.Read(serverNonce); err != nil {
- return nil, err
- }
-
- h.diversificationNonce = make([]byte, 32)
- if _, err = rand.Read(h.diversificationNonce); err != nil {
- return nil, err
- }
-
- clientNonce := cryptoData[TagNONC]
- err = h.validateClientNonce(clientNonce)
- if err != nil {
- return nil, err
- }
-
- aead := cryptoData[TagAEAD]
- if !bytes.Equal(aead, []byte("AESG")) {
- return nil, qerr.Error(qerr.CryptoNoSupport, "Unsupported AEAD or KEXS")
- }
-
- kexs := cryptoData[TagKEXS]
- if !bytes.Equal(kexs, []byte("C255")) {
- return nil, qerr.Error(qerr.CryptoNoSupport, "Unsupported AEAD or KEXS")
- }
-
- h.secureAEAD, err = h.keyDerivation(
- false,
- sharedSecret,
- clientNonce,
- h.connID,
- data,
- h.scfg.Get(),
- certUncompressed,
- h.diversificationNonce,
- protocol.PerspectiveServer,
- )
- if err != nil {
- return nil, err
- }
- h.handshakeEvent <- struct{}{}
-
- // Generate a new curve instance to derive the forward secure key
- var fsNonce bytes.Buffer
- fsNonce.Write(clientNonce)
- fsNonce.Write(serverNonce)
- ephermalKex := h.keyExchange()
- ephermalSharedSecret, err := ephermalKex.CalculateSharedKey(cryptoData[TagPUBS])
- if err != nil {
- return nil, err
- }
-
- h.forwardSecureAEAD, err = h.keyDerivation(
- true,
- ephermalSharedSecret,
- fsNonce.Bytes(),
- h.connID,
- data,
- h.scfg.Get(),
- certUncompressed,
- nil,
- protocol.PerspectiveServer,
- )
- if err != nil {
- return nil, err
- }
-
- replyMap := h.params.getHelloMap()
- // add crypto parameters
- verTag := &bytes.Buffer{}
- for _, v := range protocol.GetGreasedVersions(h.supportedVersions) {
- utils.BigEndian.WriteUint32(verTag, uint32(v))
- }
- replyMap[TagPUBS] = ephermalKex.PublicKey()
- replyMap[TagSNO] = serverNonce
- replyMap[TagVER] = verTag.Bytes()
-
- // note that the SHLO *has* to fit into one packet
- message := HandshakeMessage{
- Tag: TagSHLO,
- Data: replyMap,
- }
- var reply bytes.Buffer
- message.Write(&reply)
- utils.Debugf("Sending %s", message)
- return reply.Bytes(), nil
-}
-
-// DiversificationNonce returns the diversification nonce
-func (h *cryptoSetupServer) DiversificationNonce() []byte {
- return h.diversificationNonce
-}
-
-func (h *cryptoSetupServer) SetDiversificationNonce(data []byte) {
- panic("not needed for cryptoSetupServer")
-}
-
-func (h *cryptoSetupServer) validateClientNonce(nonce []byte) error {
- if len(nonce) != 32 {
- return qerr.Error(qerr.InvalidCryptoMessageParameter, "invalid client nonce length")
- }
- if !bytes.Equal(nonce[4:12], h.scfg.obit) {
- return qerr.Error(qerr.InvalidCryptoMessageParameter, "OBIT not matching")
- }
- return nil
-}
-
-func (h *cryptoSetupServer) ConnectionState() *tls.ConnectionState {
- return h.connectionState
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/handshake/crypto_setup_tls.go b/vendor/github.com/phuslu/quic-go/internal/handshake/crypto_setup_tls.go
deleted file mode 100644
index f9878f4..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/handshake/crypto_setup_tls.go
+++ /dev/null
@@ -1,173 +0,0 @@
-package handshake
-
-import (
- "crypto/tls"
- "errors"
- "fmt"
- "io"
- "sync"
-
- "github.com/bifurcation/mint"
- "github.com/phuslu/quic-go/internal/crypto"
- "github.com/phuslu/quic-go/internal/protocol"
-)
-
-// ErrCloseSessionForRetry is returned by HandleCryptoStream when the server wishes to perform a stateless retry
-var ErrCloseSessionForRetry = errors.New("closing session in order to recreate after a retry")
-
-// KeyDerivationFunction is used for key derivation
-type KeyDerivationFunction func(crypto.TLSExporter, protocol.Perspective) (crypto.AEAD, error)
-
-type cryptoSetupTLS struct {
- mutex sync.RWMutex
-
- perspective protocol.Perspective
-
- keyDerivation KeyDerivationFunction
- nullAEAD crypto.AEAD
- aead crypto.AEAD
-
- tls MintTLS
- cryptoStream *CryptoStreamConn
- handshakeEvent chan<- struct{}
-
- connectionState *tls.ConnectionState
-}
-
-// NewCryptoSetupTLSServer creates a new TLS CryptoSetup instance for a server
-func NewCryptoSetupTLSServer(
- tls MintTLS,
- cryptoStream *CryptoStreamConn,
- nullAEAD crypto.AEAD,
- handshakeEvent chan<- struct{},
- version protocol.VersionNumber,
-) CryptoSetup {
- return &cryptoSetupTLS{
- tls: tls,
- cryptoStream: cryptoStream,
- nullAEAD: nullAEAD,
- perspective: protocol.PerspectiveServer,
- keyDerivation: crypto.DeriveAESKeys,
- handshakeEvent: handshakeEvent,
- }
-}
-
-// NewCryptoSetupTLSClient creates a new TLS CryptoSetup instance for a client
-func NewCryptoSetupTLSClient(
- cryptoStream io.ReadWriter,
- connID protocol.ConnectionID,
- hostname string,
- handshakeEvent chan<- struct{},
- tls MintTLS,
- version protocol.VersionNumber,
-) (CryptoSetup, error) {
- nullAEAD, err := crypto.NewNullAEAD(protocol.PerspectiveClient, connID, version)
- if err != nil {
- return nil, err
- }
-
- return &cryptoSetupTLS{
- perspective: protocol.PerspectiveClient,
- tls: tls,
- nullAEAD: nullAEAD,
- keyDerivation: crypto.DeriveAESKeys,
- handshakeEvent: handshakeEvent,
- }, nil
-}
-
-func (h *cryptoSetupTLS) HandleCryptoStream() (*tls.ConnectionState, error) {
- if h.perspective == protocol.PerspectiveServer {
- // mint already wrote the ServerHello, EncryptedExtensions and the certificate chain to the buffer
- // send out that data now
- if _, err := h.cryptoStream.Flush(); err != nil {
- return h.connectionState, err
- }
- }
-
-handshakeLoop:
- for {
- if alert := h.tls.Handshake(); alert != mint.AlertNoAlert {
- return h.connectionState, fmt.Errorf("TLS handshake error: %s (Alert %d)", alert.String(), alert)
- }
- switch h.tls.State() {
- case mint.StateClientStart: // this happens if a stateless retry is performed
- return h.connectionState, ErrCloseSessionForRetry
- case mint.StateClientConnected, mint.StateServerConnected:
- break handshakeLoop
- }
- }
-
- aead, err := h.keyDerivation(h.tls, h.perspective)
- if err != nil {
- return h.connectionState, err
- }
- h.mutex.Lock()
- h.aead = aead
- h.mutex.Unlock()
-
- h.handshakeEvent <- struct{}{}
- close(h.handshakeEvent)
- return h.connectionState, nil
-}
-
-func (h *cryptoSetupTLS) Open(dst, src []byte, packetNumber protocol.PacketNumber, associatedData []byte) ([]byte, protocol.EncryptionLevel, error) {
- h.mutex.RLock()
- defer h.mutex.RUnlock()
-
- if h.aead != nil {
- data, err := h.aead.Open(dst, src, packetNumber, associatedData)
- if err != nil {
- return nil, protocol.EncryptionUnspecified, err
- }
- return data, protocol.EncryptionForwardSecure, nil
- }
- data, err := h.nullAEAD.Open(dst, src, packetNumber, associatedData)
- if err != nil {
- return nil, protocol.EncryptionUnspecified, err
- }
- return data, protocol.EncryptionUnencrypted, nil
-}
-
-func (h *cryptoSetupTLS) GetSealer() (protocol.EncryptionLevel, Sealer) {
- h.mutex.RLock()
- defer h.mutex.RUnlock()
-
- if h.aead != nil {
- return protocol.EncryptionForwardSecure, h.aead
- }
- return protocol.EncryptionUnencrypted, h.nullAEAD
-}
-
-func (h *cryptoSetupTLS) GetSealerWithEncryptionLevel(encLevel protocol.EncryptionLevel) (Sealer, error) {
- errNoSealer := fmt.Errorf("CryptoSetup: no sealer with encryption level %s", encLevel.String())
- h.mutex.RLock()
- defer h.mutex.RUnlock()
-
- switch encLevel {
- case protocol.EncryptionUnencrypted:
- return h.nullAEAD, nil
- case protocol.EncryptionForwardSecure:
- if h.aead == nil {
- return nil, errNoSealer
- }
- return h.aead, nil
- default:
- return nil, errNoSealer
- }
-}
-
-func (h *cryptoSetupTLS) GetSealerForCryptoStream() (protocol.EncryptionLevel, Sealer) {
- return protocol.EncryptionUnencrypted, h.nullAEAD
-}
-
-func (h *cryptoSetupTLS) DiversificationNonce() []byte {
- panic("diversification nonce not needed for TLS")
-}
-
-func (h *cryptoSetupTLS) SetDiversificationNonce([]byte) {
- panic("diversification nonce not needed for TLS")
-}
-
-func (h *cryptoSetupTLS) ConnectionState() *tls.ConnectionState {
- return nil
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/handshake/crypto_stream_conn.go b/vendor/github.com/phuslu/quic-go/internal/handshake/crypto_stream_conn.go
deleted file mode 100644
index 03825c4..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/handshake/crypto_stream_conn.go
+++ /dev/null
@@ -1,101 +0,0 @@
-package handshake
-
-import (
- "bytes"
- "io"
- "net"
- "time"
-)
-
-// The CryptoStreamConn is used as the net.Conn passed to mint.
-// It has two operating modes:
-// 1. It can read and write to bytes.Buffers.
-// 2. It can use a quic.Stream for reading and writing.
-// The buffer-mode is only used by the server, in order to statelessly handle retries.
-type CryptoStreamConn struct {
- remoteAddr net.Addr
-
- // the buffers are used before the session is initialized
- readBuf bytes.Buffer
- writeBuf bytes.Buffer
-
- // stream will be set once the session is initialized
- stream io.ReadWriter
-}
-
-var _ net.Conn = &CryptoStreamConn{}
-
-// NewCryptoStreamConn creates a new CryptoStreamConn
-func NewCryptoStreamConn(remoteAddr net.Addr) *CryptoStreamConn {
- return &CryptoStreamConn{remoteAddr: remoteAddr}
-}
-
-func (c *CryptoStreamConn) Read(b []byte) (int, error) {
- if c.stream != nil {
- return c.stream.Read(b)
- }
- return c.readBuf.Read(b)
-}
-
-// AddDataForReading adds data to the read buffer.
-// This data will ONLY be read when the stream has not been set.
-func (c *CryptoStreamConn) AddDataForReading(data []byte) {
- c.readBuf.Write(data)
-}
-
-func (c *CryptoStreamConn) Write(p []byte) (int, error) {
- if c.stream != nil {
- return c.stream.Write(p)
- }
- return c.writeBuf.Write(p)
-}
-
-// GetDataForWriting returns all data currently in the write buffer, and resets this buffer.
-func (c *CryptoStreamConn) GetDataForWriting() []byte {
- defer c.writeBuf.Reset()
- data := make([]byte, c.writeBuf.Len())
- copy(data, c.writeBuf.Bytes())
- return data
-}
-
-// SetStream sets the stream.
-// After setting the stream, the read and write buffer won't be used any more.
-func (c *CryptoStreamConn) SetStream(stream io.ReadWriter) {
- c.stream = stream
-}
-
-// Flush copies the contents of the write buffer to the stream
-func (c *CryptoStreamConn) Flush() (int, error) {
- n, err := io.Copy(c.stream, &c.writeBuf)
- return int(n), err
-}
-
-// Close is not implemented
-func (c *CryptoStreamConn) Close() error {
- return nil
-}
-
-// LocalAddr is not implemented
-func (c *CryptoStreamConn) LocalAddr() net.Addr {
- return nil
-}
-
-// RemoteAddr returns the remote address
-func (c *CryptoStreamConn) RemoteAddr() net.Addr {
- return c.remoteAddr
-}
-
-// SetReadDeadline is not implemented
-func (c *CryptoStreamConn) SetReadDeadline(time.Time) error {
- return nil
-}
-
-// SetWriteDeadline is not implemented
-func (c *CryptoStreamConn) SetWriteDeadline(time.Time) error {
- return nil
-}
-
-// SetDeadline is not implemented
-func (c *CryptoStreamConn) SetDeadline(time.Time) error {
- return nil
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/handshake/ephermal_cache.go b/vendor/github.com/phuslu/quic-go/internal/handshake/ephermal_cache.go
deleted file mode 100644
index eef5a09..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/handshake/ephermal_cache.go
+++ /dev/null
@@ -1,50 +0,0 @@
-package handshake
-
-import (
- "sync"
- "time"
-
- "github.com/phuslu/quic-go/internal/crypto"
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/utils"
-)
-
-var (
- kexLifetime = protocol.EphermalKeyLifetime
- kexCurrent crypto.KeyExchange
- kexCurrentTime time.Time
- kexMutex sync.RWMutex
-)
-
-// getEphermalKEX returns the currently active KEX, which changes every protocol.EphermalKeyLifetime
-// See the explanation from the QUIC crypto doc:
-//
-// A single connection is the usual scope for forward security, but the security
-// difference between an ephemeral key used for a single connection, and one
-// used for all connections for 60 seconds is negligible. Thus we can amortise
-// the Diffie-Hellman key generation at the server over all the connections in a
-// small time span.
-func getEphermalKEX() (res crypto.KeyExchange) {
- kexMutex.RLock()
- res = kexCurrent
- t := kexCurrentTime
- kexMutex.RUnlock()
- if res != nil && time.Since(t) < kexLifetime {
- return res
- }
-
- kexMutex.Lock()
- defer kexMutex.Unlock()
- // Check if still unfulfilled
- if kexCurrent == nil || time.Since(kexCurrentTime) > kexLifetime {
- kex, err := crypto.NewCurve25519KEX()
- if err != nil {
- utils.Errorf("could not set KEX: %s", err.Error())
- return kexCurrent
- }
- kexCurrent = kex
- kexCurrentTime = time.Now()
- return kexCurrent
- }
- return kexCurrent
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/handshake/handshake_message.go b/vendor/github.com/phuslu/quic-go/internal/handshake/handshake_message.go
deleted file mode 100644
index 6c7151f..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/handshake/handshake_message.go
+++ /dev/null
@@ -1,138 +0,0 @@
-package handshake
-
-import (
- "bytes"
- "encoding/binary"
- "fmt"
- "io"
- "sort"
-
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/utils"
- "github.com/phuslu/quic-go/qerr"
-)
-
-// A HandshakeMessage is a handshake message
-type HandshakeMessage struct {
- Tag Tag
- Data map[Tag][]byte
-}
-
-var _ fmt.Stringer = &HandshakeMessage{}
-
-// ParseHandshakeMessage reads a crypto message
-func ParseHandshakeMessage(r io.Reader) (HandshakeMessage, error) {
- slice4 := make([]byte, 4)
-
- if _, err := io.ReadFull(r, slice4); err != nil {
- return HandshakeMessage{}, err
- }
- messageTag := Tag(binary.LittleEndian.Uint32(slice4))
-
- if _, err := io.ReadFull(r, slice4); err != nil {
- return HandshakeMessage{}, err
- }
- nPairs := binary.LittleEndian.Uint32(slice4)
-
- if nPairs > protocol.CryptoMaxParams {
- return HandshakeMessage{}, qerr.CryptoTooManyEntries
- }
-
- index := make([]byte, nPairs*8)
- if _, err := io.ReadFull(r, index); err != nil {
- return HandshakeMessage{}, err
- }
-
- resultMap := map[Tag][]byte{}
-
- var dataStart uint32
- for indexPos := 0; indexPos < int(nPairs)*8; indexPos += 8 {
- tag := Tag(binary.LittleEndian.Uint32(index[indexPos : indexPos+4]))
- dataEnd := binary.LittleEndian.Uint32(index[indexPos+4 : indexPos+8])
-
- dataLen := dataEnd - dataStart
- if dataLen > protocol.CryptoParameterMaxLength {
- return HandshakeMessage{}, qerr.Error(qerr.CryptoInvalidValueLength, "value too long")
- }
-
- data := make([]byte, dataLen)
- if _, err := io.ReadFull(r, data); err != nil {
- return HandshakeMessage{}, err
- }
-
- resultMap[tag] = data
- dataStart = dataEnd
- }
-
- return HandshakeMessage{
- Tag: messageTag,
- Data: resultMap}, nil
-}
-
-// Write writes a crypto message
-func (h HandshakeMessage) Write(b *bytes.Buffer) {
- data := h.Data
- utils.LittleEndian.WriteUint32(b, uint32(h.Tag))
- utils.LittleEndian.WriteUint16(b, uint16(len(data)))
- utils.LittleEndian.WriteUint16(b, 0)
-
- // Save current position in the buffer, so that we can update the index in-place later
- indexStart := b.Len()
-
- indexData := make([]byte, 8*len(data))
- b.Write(indexData) // Will be updated later
-
- offset := uint32(0)
- for i, t := range h.getTagsSorted() {
- v := data[Tag(t)]
- b.Write(v)
- offset += uint32(len(v))
- binary.LittleEndian.PutUint32(indexData[i*8:], uint32(t))
- binary.LittleEndian.PutUint32(indexData[i*8+4:], offset)
- }
-
- // Now we write the index data for real
- copy(b.Bytes()[indexStart:], indexData)
-}
-
-func (h *HandshakeMessage) getTagsSorted() []Tag {
- tags := make([]Tag, len(h.Data))
- i := 0
- for t := range h.Data {
- tags[i] = t
- i++
- }
- sort.Slice(tags, func(i, j int) bool {
- return tags[i] < tags[j]
- })
- return tags
-}
-
-func (h HandshakeMessage) String() string {
- var pad string
- res := tagToString(h.Tag) + ":\n"
- for _, t := range h.getTagsSorted() {
- tag := Tag(t)
- if tag == TagPAD {
- pad = fmt.Sprintf("\t%s: (%d bytes)\n", tagToString(tag), len(h.Data[tag]))
- } else {
- res += fmt.Sprintf("\t%s: %#v\n", tagToString(tag), string(h.Data[tag]))
- }
- }
-
- if len(pad) > 0 {
- res += pad
- }
- return res
-}
-
-func tagToString(tag Tag) string {
- b := make([]byte, 4)
- binary.LittleEndian.PutUint32(b, uint32(tag))
- for i := range b {
- if b[i] == 0 {
- b[i] = ' '
- }
- }
- return string(b)
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/handshake/interface.go b/vendor/github.com/phuslu/quic-go/internal/handshake/interface.go
deleted file mode 100644
index 7aaa897..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/handshake/interface.go
+++ /dev/null
@@ -1,51 +0,0 @@
-package handshake
-
-import (
- "crypto/tls"
- "io"
-
- "github.com/bifurcation/mint"
- "github.com/phuslu/quic-go/internal/crypto"
- "github.com/phuslu/quic-go/internal/protocol"
-)
-
-// Sealer seals a packet
-type Sealer interface {
- Seal(dst, src []byte, packetNumber protocol.PacketNumber, associatedData []byte) []byte
- Overhead() int
-}
-
-// A TLSExtensionHandler sends and received the QUIC TLS extension.
-// It provides the parameters sent by the peer on a channel.
-type TLSExtensionHandler interface {
- Send(mint.HandshakeType, *mint.ExtensionList) error
- Receive(mint.HandshakeType, *mint.ExtensionList) error
- GetPeerParams() <-chan TransportParameters
-}
-
-// MintTLS combines some methods needed to interact with mint.
-type MintTLS interface {
- crypto.TLSExporter
-
- // additional methods
- Handshake() mint.Alert
- State() mint.State
-
- SetCryptoStream(io.ReadWriter)
- SetExtensionHandler(mint.AppExtensionHandler) error
-}
-
-// CryptoSetup is a crypto setup
-type CryptoSetup interface {
- Open(dst, src []byte, packetNumber protocol.PacketNumber, associatedData []byte) ([]byte, protocol.EncryptionLevel, error)
- HandleCryptoStream() (*tls.ConnectionState, error)
- // TODO: clean up this interface
- DiversificationNonce() []byte // only needed for cryptoSetupServer
- SetDiversificationNonce([]byte) // only needed for cryptoSetupClient
-
- GetSealer() (protocol.EncryptionLevel, Sealer)
- GetSealerWithEncryptionLevel(protocol.EncryptionLevel) (Sealer, error)
- GetSealerForCryptoStream() (protocol.EncryptionLevel, Sealer)
-
- ConnectionState() *tls.ConnectionState
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/handshake/server_config.go b/vendor/github.com/phuslu/quic-go/internal/handshake/server_config.go
deleted file mode 100644
index 4a53ac1..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/handshake/server_config.go
+++ /dev/null
@@ -1,73 +0,0 @@
-package handshake
-
-import (
- "bytes"
- "crypto/rand"
-
- "github.com/phuslu/quic-go/internal/crypto"
-)
-
-// ServerConfig is a server config
-type ServerConfig struct {
- kex crypto.KeyExchange
- certChain crypto.CertChain
- ID []byte
- obit []byte
- cookieGenerator *CookieGenerator
-}
-
-// NewServerConfig creates a new server config
-func NewServerConfig(kex crypto.KeyExchange, certChain crypto.CertChain) (*ServerConfig, error) {
- id := make([]byte, 16)
- _, err := rand.Read(id)
- if err != nil {
- return nil, err
- }
-
- obit := make([]byte, 8)
- if _, err = rand.Read(obit); err != nil {
- return nil, err
- }
-
- cookieGenerator, err := NewCookieGenerator()
-
- if err != nil {
- return nil, err
- }
-
- return &ServerConfig{
- kex: kex,
- certChain: certChain,
- ID: id,
- obit: obit,
- cookieGenerator: cookieGenerator,
- }, nil
-}
-
-// Get the server config binary representation
-func (s *ServerConfig) Get() []byte {
- var serverConfig bytes.Buffer
- msg := HandshakeMessage{
- Tag: TagSCFG,
- Data: map[Tag][]byte{
- TagSCID: s.ID,
- TagKEXS: []byte("C255"),
- TagAEAD: []byte("AESG"),
- TagPUBS: append([]byte{0x20, 0x00, 0x00}, s.kex.PublicKey()...),
- TagOBIT: s.obit,
- TagEXPY: {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
- },
- }
- msg.Write(&serverConfig)
- return serverConfig.Bytes()
-}
-
-// Sign the server config and CHLO with the server's keyData
-func (s *ServerConfig) Sign(sni string, chlo []byte) ([]byte, error) {
- return s.certChain.SignServerProof(sni, chlo, s.Get())
-}
-
-// GetCertsCompressed returns the certificate data
-func (s *ServerConfig) GetCertsCompressed(sni string, commonSetHashes, compressedHashes []byte) ([]byte, error) {
- return s.certChain.GetCertsCompressed(sni, commonSetHashes, compressedHashes)
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/handshake/server_config_client.go b/vendor/github.com/phuslu/quic-go/internal/handshake/server_config_client.go
deleted file mode 100644
index f739901..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/handshake/server_config_client.go
+++ /dev/null
@@ -1,180 +0,0 @@
-package handshake
-
-import (
- "bytes"
- "encoding/binary"
- "errors"
- "math"
- "time"
-
- "github.com/phuslu/quic-go/internal/crypto"
- "github.com/phuslu/quic-go/internal/utils"
- "github.com/phuslu/quic-go/qerr"
-)
-
-type serverConfigClient struct {
- raw []byte
- ID []byte
- obit []byte
- expiry time.Time
-
- kex crypto.KeyExchange
- sharedSecret []byte
-}
-
-var (
- errMessageNotServerConfig = errors.New("ServerConfig must have TagSCFG")
-)
-
-// parseServerConfig parses a server config
-func parseServerConfig(data []byte) (*serverConfigClient, error) {
- message, err := ParseHandshakeMessage(bytes.NewReader(data))
- if err != nil {
- return nil, err
- }
- if message.Tag != TagSCFG {
- return nil, errMessageNotServerConfig
- }
-
- scfg := &serverConfigClient{raw: data}
- err = scfg.parseValues(message.Data)
- if err != nil {
- return nil, err
- }
-
- return scfg, nil
-}
-
-func (s *serverConfigClient) parseValues(tagMap map[Tag][]byte) error {
- // SCID
- scfgID, ok := tagMap[TagSCID]
- if !ok {
- return qerr.Error(qerr.CryptoMessageParameterNotFound, "SCID")
- }
- if len(scfgID) != 16 {
- return qerr.Error(qerr.CryptoInvalidValueLength, "SCID")
- }
- s.ID = scfgID
-
- // KEXS
- // TODO: setup Key Exchange
- kexs, ok := tagMap[TagKEXS]
- if !ok {
- return qerr.Error(qerr.CryptoMessageParameterNotFound, "KEXS")
- }
- if len(kexs)%4 != 0 {
- return qerr.Error(qerr.CryptoInvalidValueLength, "KEXS")
- }
- c255Foundat := -1
-
- for i := 0; i < len(kexs)/4; i++ {
- if bytes.Equal(kexs[4*i:4*i+4], []byte("C255")) {
- c255Foundat = i
- break
- }
- }
- if c255Foundat < 0 {
- return qerr.Error(qerr.CryptoNoSupport, "KEXS: Could not find C255, other key exchanges are not supported")
- }
-
- // AEAD
- aead, ok := tagMap[TagAEAD]
- if !ok {
- return qerr.Error(qerr.CryptoMessageParameterNotFound, "AEAD")
- }
- if len(aead)%4 != 0 {
- return qerr.Error(qerr.CryptoInvalidValueLength, "AEAD")
- }
- var aesgFound bool
- for i := 0; i < len(aead)/4; i++ {
- if bytes.Equal(aead[4*i:4*i+4], []byte("AESG")) {
- aesgFound = true
- break
- }
- }
- if !aesgFound {
- return qerr.Error(qerr.CryptoNoSupport, "AEAD")
- }
-
- // PUBS
- pubs, ok := tagMap[TagPUBS]
- if !ok {
- return qerr.Error(qerr.CryptoMessageParameterNotFound, "PUBS")
- }
-
- var pubs_kexs []struct{Length uint32; Value []byte}
- var last_len uint32
-
- for i := 0; i < len(pubs)-3; i += int(last_len)+3 {
- // the PUBS value is always prepended by 3 byte little endian length field
-
- err := binary.Read(bytes.NewReader([]byte{pubs[i], pubs[i+1], pubs[i+2], 0x00}), binary.LittleEndian, &last_len);
- if err != nil {
- return qerr.Error(qerr.CryptoInvalidValueLength, "PUBS not decodable")
- }
- if last_len == 0 {
- return qerr.Error(qerr.CryptoInvalidValueLength, "PUBS")
- }
-
- if i+3+int(last_len) > len(pubs) {
- return qerr.Error(qerr.CryptoInvalidValueLength, "PUBS")
- }
-
- pubs_kexs = append(pubs_kexs, struct{Length uint32; Value []byte}{last_len, pubs[i+3:i+3+int(last_len)]})
- }
-
- if c255Foundat >= len(pubs_kexs) {
- return qerr.Error(qerr.CryptoMessageParameterNotFound, "KEXS not in PUBS")
- }
-
- if pubs_kexs[c255Foundat].Length != 32 {
- return qerr.Error(qerr.CryptoInvalidValueLength, "PUBS")
- }
-
- var err error
- s.kex, err = crypto.NewCurve25519KEX()
- if err != nil {
- return err
- }
-
-
- s.sharedSecret, err = s.kex.CalculateSharedKey(pubs_kexs[c255Foundat].Value)
- if err != nil {
- return err
- }
-
- // OBIT
- obit, ok := tagMap[TagOBIT]
- if !ok {
- return qerr.Error(qerr.CryptoMessageParameterNotFound, "OBIT")
- }
- if len(obit) != 8 {
- return qerr.Error(qerr.CryptoInvalidValueLength, "OBIT")
- }
- s.obit = obit
-
- // EXPY
- expy, ok := tagMap[TagEXPY]
- if !ok {
- return qerr.Error(qerr.CryptoMessageParameterNotFound, "EXPY")
- }
- if len(expy) != 8 {
- return qerr.Error(qerr.CryptoInvalidValueLength, "EXPY")
- }
- // make sure that the value doesn't overflow an int64
- // furthermore, values close to MaxInt64 are not a valid input to time.Unix, thus set MaxInt64/2 as the maximum value here
- expyTimestamp := utils.MinUint64(binary.LittleEndian.Uint64(expy), math.MaxInt64/2)
- s.expiry = time.Unix(int64(expyTimestamp), 0)
-
- // TODO: implement VER
-
- return nil
-}
-
-func (s *serverConfigClient) IsExpired() bool {
- return s.expiry.Before(time.Now())
-}
-
-func (s *serverConfigClient) Get() []byte {
- return s.raw
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/handshake/tags.go b/vendor/github.com/phuslu/quic-go/internal/handshake/tags.go
deleted file mode 100644
index 19ec78d..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/handshake/tags.go
+++ /dev/null
@@ -1,97 +0,0 @@
-package handshake
-
-// A Tag in the QUIC crypto
-type Tag uint32
-
-const (
- // TagCHLO is a client hello
- TagCHLO Tag = 'C' + 'H'<<8 + 'L'<<16 + 'O'<<24
- // TagREJ is a server hello rejection
- TagREJ Tag = 'R' + 'E'<<8 + 'J'<<16
- // TagSCFG is a server config
- TagSCFG Tag = 'S' + 'C'<<8 + 'F'<<16 + 'G'<<24
-
- // TagPAD is padding
- TagPAD Tag = 'P' + 'A'<<8 + 'D'<<16
- // TagSNI is the server name indication
- TagSNI Tag = 'S' + 'N'<<8 + 'I'<<16
- // TagVER is the QUIC version
- TagVER Tag = 'V' + 'E'<<8 + 'R'<<16
- // TagCCS are the hashes of the common certificate sets
- TagCCS Tag = 'C' + 'C'<<8 + 'S'<<16
- // TagCCRT are the hashes of the cached certificates
- TagCCRT Tag = 'C' + 'C'<<8 + 'R'<<16 + 'T'<<24
- // TagMSPC is max streams per connection
- TagMSPC Tag = 'M' + 'S'<<8 + 'P'<<16 + 'C'<<24
- // TagMIDS is max incoming dyanamic streams
- TagMIDS Tag = 'M' + 'I'<<8 + 'D'<<16 + 'S'<<24
- // TagUAID is the user agent ID
- TagUAID Tag = 'U' + 'A'<<8 + 'I'<<16 + 'D'<<24
- // TagSVID is the server ID (unofficial tag by us :)
- TagSVID Tag = 'S' + 'V'<<8 + 'I'<<16 + 'D'<<24
- // TagTCID is truncation of the connection ID
- TagTCID Tag = 'T' + 'C'<<8 + 'I'<<16 + 'D'<<24
- // TagPDMD is the proof demand
- TagPDMD Tag = 'P' + 'D'<<8 + 'M'<<16 + 'D'<<24
- // TagSRBF is the socket receive buffer
- TagSRBF Tag = 'S' + 'R'<<8 + 'B'<<16 + 'F'<<24
- // TagICSL is the idle connection state lifetime
- TagICSL Tag = 'I' + 'C'<<8 + 'S'<<16 + 'L'<<24
- // TagNONP is the client proof nonce
- TagNONP Tag = 'N' + 'O'<<8 + 'N'<<16 + 'P'<<24
- // TagSCLS is the silently close timeout
- TagSCLS Tag = 'S' + 'C'<<8 + 'L'<<16 + 'S'<<24
- // TagCSCT is the signed cert timestamp (RFC6962) of leaf cert
- TagCSCT Tag = 'C' + 'S'<<8 + 'C'<<16 + 'T'<<24
- // TagCOPT are the connection options
- TagCOPT Tag = 'C' + 'O'<<8 + 'P'<<16 + 'T'<<24
- // TagCFCW is the initial session/connection flow control receive window
- TagCFCW Tag = 'C' + 'F'<<8 + 'C'<<16 + 'W'<<24
- // TagSFCW is the initial stream flow control receive window.
- TagSFCW Tag = 'S' + 'F'<<8 + 'C'<<16 + 'W'<<24
-
- // TagFHL2 forces head of line blocking.
- // Chrome experiment (see https://codereview.chromium.org/2115033002)
- // unsupported by quic-go
- TagFHL2 Tag = 'F' + 'H'<<8 + 'L'<<16 + '2'<<24
- // TagNSTP is the no STOP_WAITING experiment
- // currently unsupported by quic-go
- TagNSTP Tag = 'N' + 'S'<<8 + 'T'<<16 + 'P'<<24
-
- // TagSTK is the source-address token
- TagSTK Tag = 'S' + 'T'<<8 + 'K'<<16
- // TagSNO is the server nonce
- TagSNO Tag = 'S' + 'N'<<8 + 'O'<<16
- // TagPROF is the server proof
- TagPROF Tag = 'P' + 'R'<<8 + 'O'<<16 + 'F'<<24
-
- // TagNONC is the client nonce
- TagNONC Tag = 'N' + 'O'<<8 + 'N'<<16 + 'C'<<24
- // TagXLCT is the expected leaf certificate
- TagXLCT Tag = 'X' + 'L'<<8 + 'C'<<16 + 'T'<<24
-
- // TagSCID is the server config ID
- TagSCID Tag = 'S' + 'C'<<8 + 'I'<<16 + 'D'<<24
- // TagKEXS is the list of key exchange algos
- TagKEXS Tag = 'K' + 'E'<<8 + 'X'<<16 + 'S'<<24
- // TagAEAD is the list of AEAD algos
- TagAEAD Tag = 'A' + 'E'<<8 + 'A'<<16 + 'D'<<24
- // TagPUBS is the public value for the KEX
- TagPUBS Tag = 'P' + 'U'<<8 + 'B'<<16 + 'S'<<24
- // TagOBIT is the client orbit
- TagOBIT Tag = 'O' + 'B'<<8 + 'I'<<16 + 'T'<<24
- // TagEXPY is the server config expiry
- TagEXPY Tag = 'E' + 'X'<<8 + 'P'<<16 + 'Y'<<24
- // TagCERT is the CERT data
- TagCERT Tag = 0xff545243
-
- // TagSHLO is the server hello
- TagSHLO Tag = 'S' + 'H'<<8 + 'L'<<16 + 'O'<<24
-
- // TagPRST is the public reset tag
- TagPRST Tag = 'P' + 'R'<<8 + 'S'<<16 + 'T'<<24
- // TagRSEQ is the public reset rejected packet number
- TagRSEQ Tag = 'R' + 'S'<<8 + 'E'<<16 + 'Q'<<24
- // TagRNON is the public reset nonce
- TagRNON Tag = 'R' + 'N'<<8 + 'O'<<16 + 'N'<<24
-)
diff --git a/vendor/github.com/phuslu/quic-go/internal/handshake/tls_extension.go b/vendor/github.com/phuslu/quic-go/internal/handshake/tls_extension.go
deleted file mode 100644
index c6e8b35..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/handshake/tls_extension.go
+++ /dev/null
@@ -1,55 +0,0 @@
-package handshake
-
-import (
- "github.com/bifurcation/mint"
-)
-
-type transportParameterID uint16
-
-const quicTLSExtensionType = 26
-
-const (
- initialMaxStreamDataParameterID transportParameterID = 0x0
- initialMaxDataParameterID transportParameterID = 0x1
- initialMaxStreamIDBiDiParameterID transportParameterID = 0x2
- idleTimeoutParameterID transportParameterID = 0x3
- omitConnectionIDParameterID transportParameterID = 0x4
- maxPacketSizeParameterID transportParameterID = 0x5
- statelessResetTokenParameterID transportParameterID = 0x6
- initialMaxStreamIDUniParameterID transportParameterID = 0x8
-)
-
-type transportParameter struct {
- Parameter transportParameterID
- Value []byte `tls:"head=2"`
-}
-
-type clientHelloTransportParameters struct {
- InitialVersion uint32 // actually a protocol.VersionNumber
- Parameters []transportParameter `tls:"head=2"`
-}
-
-type encryptedExtensionsTransportParameters struct {
- NegotiatedVersion uint32 // actually a protocol.VersionNumber
- SupportedVersions []uint32 `tls:"head=1"` // actually a protocol.VersionNumber
- Parameters []transportParameter `tls:"head=2"`
-}
-
-type tlsExtensionBody struct {
- data []byte
-}
-
-var _ mint.ExtensionBody = &tlsExtensionBody{}
-
-func (e *tlsExtensionBody) Type() mint.ExtensionType {
- return quicTLSExtensionType
-}
-
-func (e *tlsExtensionBody) Marshal() ([]byte, error) {
- return e.data, nil
-}
-
-func (e *tlsExtensionBody) Unmarshal(data []byte) (int, error) {
- e.data = data
- return len(data), nil
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/handshake/tls_extension_handler_client.go b/vendor/github.com/phuslu/quic-go/internal/handshake/tls_extension_handler_client.go
deleted file mode 100644
index d827bd6..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/handshake/tls_extension_handler_client.go
+++ /dev/null
@@ -1,134 +0,0 @@
-package handshake
-
-import (
- "errors"
- "fmt"
- "math"
-
- "github.com/phuslu/quic-go/qerr"
-
- "github.com/bifurcation/mint"
- "github.com/bifurcation/mint/syntax"
- "github.com/phuslu/quic-go/internal/protocol"
-)
-
-type extensionHandlerClient struct {
- ourParams *TransportParameters
- paramsChan chan TransportParameters
-
- initialVersion protocol.VersionNumber
- supportedVersions []protocol.VersionNumber
- version protocol.VersionNumber
-}
-
-var _ mint.AppExtensionHandler = &extensionHandlerClient{}
-var _ TLSExtensionHandler = &extensionHandlerClient{}
-
-// NewExtensionHandlerClient creates a new extension handler for the client.
-func NewExtensionHandlerClient(
- params *TransportParameters,
- initialVersion protocol.VersionNumber,
- supportedVersions []protocol.VersionNumber,
- version protocol.VersionNumber,
-) TLSExtensionHandler {
- paramsChan := make(chan TransportParameters, 1)
- return &extensionHandlerClient{
- ourParams: params,
- paramsChan: paramsChan,
- initialVersion: initialVersion,
- supportedVersions: supportedVersions,
- version: version,
- }
-}
-
-func (h *extensionHandlerClient) Send(hType mint.HandshakeType, el *mint.ExtensionList) error {
- if hType != mint.HandshakeTypeClientHello {
- return nil
- }
-
- data, err := syntax.Marshal(clientHelloTransportParameters{
- InitialVersion: uint32(h.initialVersion),
- Parameters: h.ourParams.getTransportParameters(),
- })
- if err != nil {
- return err
- }
- return el.Add(&tlsExtensionBody{data})
-}
-
-func (h *extensionHandlerClient) Receive(hType mint.HandshakeType, el *mint.ExtensionList) error {
- ext := &tlsExtensionBody{}
- found, err := el.Find(ext)
- if err != nil {
- return err
- }
-
- if hType != mint.HandshakeTypeEncryptedExtensions && hType != mint.HandshakeTypeNewSessionTicket {
- if found {
- return fmt.Errorf("Unexpected QUIC extension in handshake message %d", hType)
- }
- return nil
- }
- if hType == mint.HandshakeTypeNewSessionTicket {
- // the extension it's optional in the NewSessionTicket message
- // TODO: handle this
- return nil
- }
-
- // hType == mint.HandshakeTypeEncryptedExtensions
- if !found {
- return errors.New("EncryptedExtensions message didn't contain a QUIC extension")
- }
-
- eetp := &encryptedExtensionsTransportParameters{}
- if _, err := syntax.Unmarshal(ext.data, eetp); err != nil {
- return err
- }
- serverSupportedVersions := make([]protocol.VersionNumber, len(eetp.SupportedVersions))
- for i, v := range eetp.SupportedVersions {
- serverSupportedVersions[i] = protocol.VersionNumber(v)
- }
- // check that the negotiated_version is the current version
- if protocol.VersionNumber(eetp.NegotiatedVersion) != h.version {
- return qerr.Error(qerr.VersionNegotiationMismatch, "current version doesn't match negotiated_version")
- }
- // check that the current version is included in the supported versions
- if !protocol.IsSupportedVersion(serverSupportedVersions, h.version) {
- return qerr.Error(qerr.VersionNegotiationMismatch, "current version not included in the supported versions")
- }
- // if version negotiation was performed, check that we would have selected the current version based on the supported versions sent by the server
- if h.version != h.initialVersion {
- negotiatedVersion, ok := protocol.ChooseSupportedVersion(h.supportedVersions, serverSupportedVersions)
- if !ok || h.version != negotiatedVersion {
- return qerr.Error(qerr.VersionNegotiationMismatch, "would have picked a different version")
- }
- }
-
- // check that the server sent the stateless reset token
- var foundStatelessResetToken bool
- for _, p := range eetp.Parameters {
- if p.Parameter == statelessResetTokenParameterID {
- if len(p.Value) != 16 {
- return fmt.Errorf("wrong length for stateless_reset_token: %d (expected 16)", len(p.Value))
- }
- foundStatelessResetToken = true
- // TODO: handle this value
- }
- }
- if !foundStatelessResetToken {
- // TODO: return the right error here
- return errors.New("server didn't sent stateless_reset_token")
- }
- params, err := readTransportParamters(eetp.Parameters)
- if err != nil {
- return err
- }
- // TODO(#878): remove this when implementing the MAX_STREAM_ID frame
- params.MaxStreams = math.MaxUint32
- h.paramsChan <- *params
- return nil
-}
-
-func (h *extensionHandlerClient) GetPeerParams() <-chan TransportParameters {
- return h.paramsChan
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/handshake/tls_extension_handler_server.go b/vendor/github.com/phuslu/quic-go/internal/handshake/tls_extension_handler_server.go
deleted file mode 100644
index 7307bfb..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/handshake/tls_extension_handler_server.go
+++ /dev/null
@@ -1,116 +0,0 @@
-package handshake
-
-import (
- "bytes"
- "errors"
- "fmt"
- "math"
-
- "github.com/phuslu/quic-go/qerr"
-
- "github.com/bifurcation/mint"
- "github.com/bifurcation/mint/syntax"
- "github.com/phuslu/quic-go/internal/protocol"
-)
-
-type extensionHandlerServer struct {
- ourParams *TransportParameters
- paramsChan chan TransportParameters
-
- version protocol.VersionNumber
- supportedVersions []protocol.VersionNumber
-}
-
-var _ mint.AppExtensionHandler = &extensionHandlerServer{}
-var _ TLSExtensionHandler = &extensionHandlerServer{}
-
-// NewExtensionHandlerServer creates a new extension handler for the server
-func NewExtensionHandlerServer(
- params *TransportParameters,
- supportedVersions []protocol.VersionNumber,
- version protocol.VersionNumber,
-) TLSExtensionHandler {
- paramsChan := make(chan TransportParameters, 1)
- return &extensionHandlerServer{
- ourParams: params,
- paramsChan: paramsChan,
- supportedVersions: supportedVersions,
- version: version,
- }
-}
-
-func (h *extensionHandlerServer) Send(hType mint.HandshakeType, el *mint.ExtensionList) error {
- if hType != mint.HandshakeTypeEncryptedExtensions {
- return nil
- }
-
- transportParams := append(
- h.ourParams.getTransportParameters(),
- // TODO(#855): generate a real token
- transportParameter{statelessResetTokenParameterID, bytes.Repeat([]byte{42}, 16)},
- )
- supportedVersions := protocol.GetGreasedVersions(h.supportedVersions)
- versions := make([]uint32, len(supportedVersions))
- for i, v := range supportedVersions {
- versions[i] = uint32(v)
- }
- data, err := syntax.Marshal(encryptedExtensionsTransportParameters{
- NegotiatedVersion: uint32(h.version),
- SupportedVersions: versions,
- Parameters: transportParams,
- })
- if err != nil {
- return err
- }
- return el.Add(&tlsExtensionBody{data})
-}
-
-func (h *extensionHandlerServer) Receive(hType mint.HandshakeType, el *mint.ExtensionList) error {
- ext := &tlsExtensionBody{}
- found, err := el.Find(ext)
- if err != nil {
- return err
- }
-
- if hType != mint.HandshakeTypeClientHello {
- if found {
- return fmt.Errorf("Unexpected QUIC extension in handshake message %d", hType)
- }
- return nil
- }
-
- if !found {
- return errors.New("ClientHello didn't contain a QUIC extension")
- }
- chtp := &clientHelloTransportParameters{}
- if _, err := syntax.Unmarshal(ext.data, chtp); err != nil {
- return err
- }
- initialVersion := protocol.VersionNumber(chtp.InitialVersion)
-
- // perform the stateless version negotiation validation:
- // make sure that we would have sent a Version Negotiation Packet if the client offered the initial version
- // this is the case if and only if the initial version is not contained in the supported versions
- if initialVersion != h.version && protocol.IsSupportedVersion(h.supportedVersions, initialVersion) {
- return qerr.Error(qerr.VersionNegotiationMismatch, "Client should have used the initial version")
- }
-
- for _, p := range chtp.Parameters {
- if p.Parameter == statelessResetTokenParameterID {
- // TODO: return the correct error type
- return errors.New("client sent a stateless reset token")
- }
- }
- params, err := readTransportParamters(chtp.Parameters)
- if err != nil {
- return err
- }
- // TODO(#878): remove this when implementing the MAX_STREAM_ID frame
- params.MaxStreams = math.MaxUint32
- h.paramsChan <- *params
- return nil
-}
-
-func (h *extensionHandlerServer) GetPeerParams() <-chan TransportParameters {
- return h.paramsChan
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/handshake/transport_parameters.go b/vendor/github.com/phuslu/quic-go/internal/handshake/transport_parameters.go
deleted file mode 100644
index 01ccad8..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/handshake/transport_parameters.go
+++ /dev/null
@@ -1,171 +0,0 @@
-package handshake
-
-import (
- "bytes"
- "encoding/binary"
- "errors"
- "fmt"
- "math"
- "time"
-
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/utils"
- "github.com/phuslu/quic-go/qerr"
-)
-
-// errMalformedTag is returned when the tag value cannot be read
-var errMalformedTag = qerr.Error(qerr.InvalidCryptoMessageParameter, "malformed Tag value")
-
-// TransportParameters are parameters sent to the peer during the handshake
-type TransportParameters struct {
- StreamFlowControlWindow protocol.ByteCount
- ConnectionFlowControlWindow protocol.ByteCount
-
- MaxStreams uint32
-
- OmitConnectionID bool
- IdleTimeout time.Duration
-}
-
-// readHelloMap reads the transport parameters from the tags sent in a gQUIC handshake message
-func readHelloMap(tags map[Tag][]byte) (*TransportParameters, error) {
- params := &TransportParameters{}
- if value, ok := tags[TagTCID]; ok {
- v, err := utils.LittleEndian.ReadUint32(bytes.NewBuffer(value))
- if err != nil {
- return nil, errMalformedTag
- }
- params.OmitConnectionID = (v == 0)
- }
- if value, ok := tags[TagMIDS]; ok {
- v, err := utils.LittleEndian.ReadUint32(bytes.NewBuffer(value))
- if err != nil {
- return nil, errMalformedTag
- }
- params.MaxStreams = v
- }
- if value, ok := tags[TagICSL]; ok {
- v, err := utils.LittleEndian.ReadUint32(bytes.NewBuffer(value))
- if err != nil {
- return nil, errMalformedTag
- }
- params.IdleTimeout = utils.MaxDuration(protocol.MinRemoteIdleTimeout, time.Duration(v)*time.Second)
- }
- if value, ok := tags[TagSFCW]; ok {
- v, err := utils.LittleEndian.ReadUint32(bytes.NewBuffer(value))
- if err != nil {
- return nil, errMalformedTag
- }
- params.StreamFlowControlWindow = protocol.ByteCount(v)
- }
- if value, ok := tags[TagCFCW]; ok {
- v, err := utils.LittleEndian.ReadUint32(bytes.NewBuffer(value))
- if err != nil {
- return nil, errMalformedTag
- }
- params.ConnectionFlowControlWindow = protocol.ByteCount(v)
- }
- return params, nil
-}
-
-// GetHelloMap gets all parameters needed for the Hello message in the gQUIC handshake.
-func (p *TransportParameters) getHelloMap() map[Tag][]byte {
- sfcw := bytes.NewBuffer([]byte{})
- utils.LittleEndian.WriteUint32(sfcw, uint32(p.StreamFlowControlWindow))
- cfcw := bytes.NewBuffer([]byte{})
- utils.LittleEndian.WriteUint32(cfcw, uint32(p.ConnectionFlowControlWindow))
- mids := bytes.NewBuffer([]byte{})
- utils.LittleEndian.WriteUint32(mids, p.MaxStreams)
- icsl := bytes.NewBuffer([]byte{})
- utils.LittleEndian.WriteUint32(icsl, uint32(p.IdleTimeout/time.Second))
-
- tags := map[Tag][]byte{
- TagICSL: icsl.Bytes(),
- TagMIDS: mids.Bytes(),
- TagCFCW: cfcw.Bytes(),
- TagSFCW: sfcw.Bytes(),
- }
- if p.OmitConnectionID {
- tags[TagTCID] = []byte{0, 0, 0, 0}
- }
- return tags
-}
-
-// readTransportParameters reads the transport parameters sent in the QUIC TLS extension
-func readTransportParamters(paramsList []transportParameter) (*TransportParameters, error) {
- params := &TransportParameters{}
-
- var foundInitialMaxStreamData bool
- var foundInitialMaxData bool
- var foundIdleTimeout bool
-
- for _, p := range paramsList {
- switch p.Parameter {
- case initialMaxStreamDataParameterID:
- foundInitialMaxStreamData = true
- if len(p.Value) != 4 {
- return nil, fmt.Errorf("wrong length for initial_max_stream_data: %d (expected 4)", len(p.Value))
- }
- params.StreamFlowControlWindow = protocol.ByteCount(binary.BigEndian.Uint32(p.Value))
- case initialMaxDataParameterID:
- foundInitialMaxData = true
- if len(p.Value) != 4 {
- return nil, fmt.Errorf("wrong length for initial_max_data: %d (expected 4)", len(p.Value))
- }
- params.ConnectionFlowControlWindow = protocol.ByteCount(binary.BigEndian.Uint32(p.Value))
- case initialMaxStreamIDBiDiParameterID:
- if len(p.Value) != 4 {
- return nil, fmt.Errorf("wrong length for initial_max_stream_id_bidi: %d (expected 4)", len(p.Value))
- }
- // TODO: handle this value
- case initialMaxStreamIDUniParameterID:
- if len(p.Value) != 4 {
- return nil, fmt.Errorf("wrong length for initial_max_stream_id_uni: %d (expected 4)", len(p.Value))
- }
- // TODO: handle this value
- case idleTimeoutParameterID:
- foundIdleTimeout = true
- if len(p.Value) != 2 {
- return nil, fmt.Errorf("wrong length for idle_timeout: %d (expected 2)", len(p.Value))
- }
- params.IdleTimeout = utils.MaxDuration(protocol.MinRemoteIdleTimeout, time.Duration(binary.BigEndian.Uint16(p.Value))*time.Second)
- case omitConnectionIDParameterID:
- if len(p.Value) != 0 {
- return nil, fmt.Errorf("wrong length for omit_connection_id: %d (expected empty)", len(p.Value))
- }
- params.OmitConnectionID = true
- }
- }
-
- if !(foundInitialMaxStreamData && foundInitialMaxData && foundIdleTimeout) {
- return nil, errors.New("missing parameter")
- }
- return params, nil
-}
-
-// GetTransportParameters gets the parameters needed for the TLS handshake.
-// It doesn't send the initial_max_stream_id_uni parameter, so the peer isn't allowed to open any unidirectional streams.
-func (p *TransportParameters) getTransportParameters() []transportParameter {
- initialMaxStreamData := make([]byte, 4)
- binary.BigEndian.PutUint32(initialMaxStreamData, uint32(p.StreamFlowControlWindow))
- initialMaxData := make([]byte, 4)
- binary.BigEndian.PutUint32(initialMaxData, uint32(p.ConnectionFlowControlWindow))
- initialMaxStreamIDBiDi := make([]byte, 4)
- // TODO: use a reasonable value here
- binary.BigEndian.PutUint32(initialMaxStreamIDBiDi, math.MaxUint32)
- idleTimeout := make([]byte, 2)
- binary.BigEndian.PutUint16(idleTimeout, uint16(p.IdleTimeout/time.Second))
- maxPacketSize := make([]byte, 2)
- binary.BigEndian.PutUint16(maxPacketSize, uint16(protocol.MaxReceivePacketSize))
- params := []transportParameter{
- {initialMaxStreamDataParameterID, initialMaxStreamData},
- {initialMaxDataParameterID, initialMaxData},
- {initialMaxStreamIDBiDiParameterID, initialMaxStreamIDBiDi},
- {idleTimeoutParameterID, idleTimeout},
- {maxPacketSizeParameterID, maxPacketSize},
- }
- if p.OmitConnectionID {
- params = append(params, transportParameter{omitConnectionIDParameterID, []byte{}})
- }
- return params
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/protocol/encryption_level.go b/vendor/github.com/phuslu/quic-go/internal/protocol/encryption_level.go
deleted file mode 100644
index 19480b1..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/protocol/encryption_level.go
+++ /dev/null
@@ -1,28 +0,0 @@
-package protocol
-
-// EncryptionLevel is the encryption level
-// Default value is Unencrypted
-type EncryptionLevel int
-
-const (
- // EncryptionUnspecified is a not specified encryption level
- EncryptionUnspecified EncryptionLevel = iota
- // EncryptionUnencrypted is not encrypted
- EncryptionUnencrypted
- // EncryptionSecure is encrypted, but not forward secure
- EncryptionSecure
- // EncryptionForwardSecure is forward secure
- EncryptionForwardSecure
-)
-
-func (e EncryptionLevel) String() string {
- switch e {
- case EncryptionUnencrypted:
- return "unencrypted"
- case EncryptionSecure:
- return "encrypted (not forward-secure)"
- case EncryptionForwardSecure:
- return "forward-secure"
- }
- return "unknown"
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/protocol/packet_number.go b/vendor/github.com/phuslu/quic-go/internal/protocol/packet_number.go
deleted file mode 100644
index 4bc8bfc..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/protocol/packet_number.go
+++ /dev/null
@@ -1,52 +0,0 @@
-package protocol
-
-// InferPacketNumber calculates the packet number based on the received packet number, its length and the last seen packet number
-func InferPacketNumber(packetNumberLength PacketNumberLen, lastPacketNumber PacketNumber, wirePacketNumber PacketNumber) PacketNumber {
- epochDelta := PacketNumber(1) << (uint8(packetNumberLength) * 8)
- epoch := lastPacketNumber & ^(epochDelta - 1)
- prevEpochBegin := epoch - epochDelta
- nextEpochBegin := epoch + epochDelta
- return closestTo(
- lastPacketNumber+1,
- epoch+wirePacketNumber,
- closestTo(lastPacketNumber+1, prevEpochBegin+wirePacketNumber, nextEpochBegin+wirePacketNumber),
- )
-}
-
-func closestTo(target, a, b PacketNumber) PacketNumber {
- if delta(target, a) < delta(target, b) {
- return a
- }
- return b
-}
-
-func delta(a, b PacketNumber) PacketNumber {
- if a < b {
- return b - a
- }
- return a - b
-}
-
-// GetPacketNumberLengthForHeader gets the length of the packet number for the public header
-// it never chooses a PacketNumberLen of 1 byte, since this is too short under certain circumstances
-func GetPacketNumberLengthForHeader(packetNumber PacketNumber, leastUnacked PacketNumber) PacketNumberLen {
- diff := uint64(packetNumber - leastUnacked)
- if diff < (1 << (uint8(PacketNumberLen2)*8 - 1)) {
- return PacketNumberLen2
- }
- return PacketNumberLen4
-}
-
-// GetPacketNumberLength gets the minimum length needed to fully represent the packet number
-func GetPacketNumberLength(packetNumber PacketNumber) PacketNumberLen {
- if packetNumber < (1 << (uint8(PacketNumberLen1) * 8)) {
- return PacketNumberLen1
- }
- if packetNumber < (1 << (uint8(PacketNumberLen2) * 8)) {
- return PacketNumberLen2
- }
- if packetNumber < (1 << (uint8(PacketNumberLen4) * 8)) {
- return PacketNumberLen4
- }
- return PacketNumberLen6
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/protocol/perspective.go b/vendor/github.com/phuslu/quic-go/internal/protocol/perspective.go
deleted file mode 100644
index 6aa3b70..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/protocol/perspective.go
+++ /dev/null
@@ -1,10 +0,0 @@
-package protocol
-
-// Perspective determines if we're acting as a server or a client
-type Perspective int
-
-// the perspectives
-const (
- PerspectiveServer Perspective = 1
- PerspectiveClient Perspective = 2
-)
diff --git a/vendor/github.com/phuslu/quic-go/internal/protocol/protocol.go b/vendor/github.com/phuslu/quic-go/internal/protocol/protocol.go
deleted file mode 100644
index 1622983..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/protocol/protocol.go
+++ /dev/null
@@ -1,90 +0,0 @@
-package protocol
-
-import (
- "fmt"
-)
-
-// A PacketNumber in QUIC
-type PacketNumber uint64
-
-// PacketNumberLen is the length of the packet number in bytes
-type PacketNumberLen uint8
-
-const (
- // PacketNumberLenInvalid is the default value and not a valid length for a packet number
- PacketNumberLenInvalid PacketNumberLen = 0
- // PacketNumberLen1 is a packet number length of 1 byte
- PacketNumberLen1 PacketNumberLen = 1
- // PacketNumberLen2 is a packet number length of 2 bytes
- PacketNumberLen2 PacketNumberLen = 2
- // PacketNumberLen4 is a packet number length of 4 bytes
- PacketNumberLen4 PacketNumberLen = 4
- // PacketNumberLen6 is a packet number length of 6 bytes
- PacketNumberLen6 PacketNumberLen = 6
-)
-
-// The PacketType is the Long Header Type (only used for the IETF draft header format)
-type PacketType uint8
-
-const (
- // PacketTypeInitial is the packet type of a Initial packet
- PacketTypeInitial PacketType = 2
- // PacketTypeRetry is the packet type of a Retry packet
- PacketTypeRetry PacketType = 3
- // PacketTypeHandshake is the packet type of a Cleartext packet
- PacketTypeHandshake PacketType = 4
- // PacketType0RTT is the packet type of a 0-RTT packet
- PacketType0RTT PacketType = 5
-)
-
-func (t PacketType) String() string {
- switch t {
- case PacketTypeInitial:
- return "Initial"
- case PacketTypeRetry:
- return "Retry"
- case PacketTypeHandshake:
- return "Handshake"
- case PacketType0RTT:
- return "0-RTT Protected"
- default:
- return fmt.Sprintf("unknown packet type: %d", t)
- }
-}
-
-// A ConnectionID in QUIC
-type ConnectionID uint64
-
-// A StreamID in QUIC
-type StreamID uint64
-
-// A ByteCount in QUIC
-type ByteCount uint64
-
-// MaxByteCount is the maximum value of a ByteCount
-const MaxByteCount = ByteCount(1<<62 - 1)
-
-// An ApplicationErrorCode is an application-defined error code.
-type ApplicationErrorCode uint16
-
-// MaxReceivePacketSize maximum packet size of any QUIC packet, based on
-// ethernet's max size, minus the IP and UDP headers. IPv6 has a 40 byte header,
-// UDP adds an additional 8 bytes. This is a total overhead of 48 bytes.
-// Ethernet's max packet size is 1500 bytes, 1500 - 48 = 1452.
-const MaxReceivePacketSize ByteCount = 1452
-
-// DefaultTCPMSS is the default maximum packet size used in the Linux TCP implementation.
-// Used in QUIC for congestion window computations in bytes.
-const DefaultTCPMSS ByteCount = 1460
-
-// MinClientHelloSize is the minimum size the server expects an inchoate CHLO to have (in gQUIC)
-const MinClientHelloSize = 1024
-
-// MinInitialPacketSize is the minimum size an Initial packet (in IETF QUIC) is requried to have.
-const MinInitialPacketSize = 1200
-
-// MaxClientHellos is the maximum number of times we'll send a client hello
-// The value 3 accounts for:
-// * one failure due to an incorrect or missing source-address token
-// * one failure due the server's certificate chain being unavailible and the server being unwilling to send it without a valid source-address token
-const MaxClientHellos = 3
diff --git a/vendor/github.com/phuslu/quic-go/internal/protocol/server_parameters.go b/vendor/github.com/phuslu/quic-go/internal/protocol/server_parameters.go
deleted file mode 100644
index 7886482..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/protocol/server_parameters.go
+++ /dev/null
@@ -1,133 +0,0 @@
-package protocol
-
-import "time"
-
-// MaxPacketSize is the maximum packet size that we use for sending packets.
-// It includes the QUIC packet header, but excludes the UDP and IP header.
-const MaxPacketSize ByteCount = 1200
-
-// NonForwardSecurePacketSizeReduction is the number of bytes a non forward-secure packet has to be smaller than a forward-secure packet
-// This makes sure that those packets can always be retransmitted without splitting the contained StreamFrames
-const NonForwardSecurePacketSizeReduction = 50
-
-// DefaultMaxCongestionWindow is the default for the max congestion window
-const DefaultMaxCongestionWindow = 1000
-
-// InitialCongestionWindow is the initial congestion window in QUIC packets
-const InitialCongestionWindow = 32
-
-// MaxUndecryptablePackets limits the number of undecryptable packets that a
-// session queues for later until it sends a public reset.
-const MaxUndecryptablePackets = 10
-
-// PublicResetTimeout is the time to wait before sending a Public Reset when receiving too many undecryptable packets during the handshake
-// This timeout allows the Go scheduler to switch to the Go rountine that reads the crypto stream and to escalate the crypto
-const PublicResetTimeout = 500 * time.Millisecond
-
-// AckSendDelay is the maximum delay that can be applied to an ACK for a retransmittable packet
-// This is the value Chromium is using
-const AckSendDelay = 25 * time.Millisecond
-
-// ReceiveStreamFlowControlWindow is the stream-level flow control window for receiving data
-// This is the value that Google servers are using
-const ReceiveStreamFlowControlWindow = (1 << 10) * 32 // 32 kB
-
-// ReceiveConnectionFlowControlWindow is the connection-level flow control window for receiving data
-// This is the value that Google servers are using
-const ReceiveConnectionFlowControlWindow = (1 << 10) * 48 // 48 kB
-
-// DefaultMaxReceiveStreamFlowControlWindowServer is the default maximum stream-level flow control window for receiving data, for the server
-// This is the value that Google servers are using
-const DefaultMaxReceiveStreamFlowControlWindowServer = 1 * (1 << 20) // 1 MB
-
-// DefaultMaxReceiveConnectionFlowControlWindowServer is the default connection-level flow control window for receiving data, for the server
-// This is the value that Google servers are using
-const DefaultMaxReceiveConnectionFlowControlWindowServer = 1.5 * (1 << 20) // 1.5 MB
-
-// DefaultMaxReceiveStreamFlowControlWindowClient is the default maximum stream-level flow control window for receiving data, for the client
-// This is the value that Chromium is using
-const DefaultMaxReceiveStreamFlowControlWindowClient = 6 * (1 << 20) // 6 MB
-
-// DefaultMaxReceiveConnectionFlowControlWindowClient is the default connection-level flow control window for receiving data, for the client
-// This is the value that Google servers are using
-const DefaultMaxReceiveConnectionFlowControlWindowClient = 15 * (1 << 20) // 15 MB
-
-// ConnectionFlowControlMultiplier determines how much larger the connection flow control windows needs to be relative to any stream's flow control window
-// This is the value that Chromium is using
-const ConnectionFlowControlMultiplier = 1.5
-
-// WindowUpdateThreshold is the fraction of the receive window that has to be consumed before an higher offset is advertised to the client
-const WindowUpdateThreshold = 0.25
-
-// MaxIncomingStreams is the maximum number of streams that a peer may open
-const MaxIncomingStreams = 100
-
-// MaxStreamsMultiplier is the slack the client is allowed for the maximum number of streams per connection, needed e.g. when packets are out of order or dropped. The minimum of this procentual increase and the absolute increment specified by MaxStreamsMinimumIncrement is used.
-const MaxStreamsMultiplier = 1.1
-
-// MaxStreamsMinimumIncrement is the slack the client is allowed for the maximum number of streams per connection, needed e.g. when packets are out of order or dropped. The minimum of this absolute increment and the procentual increase specified by MaxStreamsMultiplier is used.
-const MaxStreamsMinimumIncrement = 10
-
-// MaxNewStreamIDDelta is the maximum difference between and a newly opened Stream and the highest StreamID that a client has ever opened
-// note that the number of streams is half this value, since the client can only open streams with open StreamID
-const MaxNewStreamIDDelta = 4 * MaxIncomingStreams
-
-// MaxSessionUnprocessedPackets is the max number of packets stored in each session that are not yet processed.
-const MaxSessionUnprocessedPackets = DefaultMaxCongestionWindow
-
-// SkipPacketAveragePeriodLength is the average period length in which one packet number is skipped to prevent an Optimistic ACK attack
-const SkipPacketAveragePeriodLength PacketNumber = 500
-
-// MaxTrackedSkippedPackets is the maximum number of skipped packet numbers the SentPacketHandler keep track of for Optimistic ACK attack mitigation
-const MaxTrackedSkippedPackets = 10
-
-// CookieExpiryTime is the valid time of a cookie
-const CookieExpiryTime = 24 * time.Hour
-
-// MaxTrackedSentPackets is maximum number of sent packets saved for either later retransmission or entropy calculation
-const MaxTrackedSentPackets = 2 * DefaultMaxCongestionWindow
-
-// MaxTrackedReceivedAckRanges is the maximum number of ACK ranges tracked
-const MaxTrackedReceivedAckRanges = DefaultMaxCongestionWindow
-
-// MaxNonRetransmittablePackets is the maximum number of non-retransmittable packets that we send in a row
-const MaxNonRetransmittablePackets = 19
-
-// RetransmittablePacketsBeforeAck is the number of retransmittable that an ACK is sent for
-const RetransmittablePacketsBeforeAck = 2
-
-// MaxStreamFrameSorterGaps is the maximum number of gaps between received StreamFrames
-// prevents DoS attacks against the streamFrameSorter
-const MaxStreamFrameSorterGaps = 1000
-
-// CryptoMaxParams is the upper limit for the number of parameters in a crypto message.
-// Value taken from Chrome.
-const CryptoMaxParams = 128
-
-// CryptoParameterMaxLength is the upper limit for the length of a parameter in a crypto message.
-const CryptoParameterMaxLength = 4000
-
-// EphermalKeyLifetime is the lifetime of the ephermal key during the handshake, see handshake.getEphermalKEX.
-const EphermalKeyLifetime = time.Minute
-
-// MinRemoteIdleTimeout is the minimum value that we accept for the remote idle timeout
-const MinRemoteIdleTimeout = 5 * time.Second
-
-// DefaultIdleTimeout is the default idle timeout
-const DefaultIdleTimeout = 30 * time.Second
-
-// DefaultHandshakeTimeout is the default timeout for a connection until the crypto handshake succeeds.
-const DefaultHandshakeTimeout = 10 * time.Second
-
-// ClosedSessionDeleteTimeout the server ignores packets arriving on a connection that is already closed
-// after this time all information about the old connection will be deleted
-const ClosedSessionDeleteTimeout = time.Minute
-
-// NumCachedCertificates is the number of cached compressed certificate chains, each taking ~1K space
-const NumCachedCertificates = 128
-
-// MinStreamFrameSize is the minimum size that has to be left in a packet, so that we add another STREAM frame.
-// This avoids splitting up STREAM frames into small pieces, which has 2 advantages:
-// 1. it reduces the framing overhead
-// 2. it reduces the head-of-line blocking, when a packet is lost
-const MinStreamFrameSize ByteCount = 128
diff --git a/vendor/github.com/phuslu/quic-go/internal/protocol/version.go b/vendor/github.com/phuslu/quic-go/internal/protocol/version.go
deleted file mode 100644
index 3135ca8..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/protocol/version.go
+++ /dev/null
@@ -1,135 +0,0 @@
-package protocol
-
-import (
- "crypto/rand"
- "encoding/binary"
- "fmt"
-)
-
-// VersionNumber is a version number as int
-type VersionNumber int32
-
-// gQUIC version range as defined in the wiki: https://github.com/quicwg/base-drafts/wiki/QUIC-Versions
-const (
- gquicVersion0 = 0x51303030
- maxGquicVersion = 0x51303439
-)
-
-// The version numbers, making grepping easier
-const (
- Version39 VersionNumber = gquicVersion0 + 3*0x100 + 0x9 + iota
- VersionTLS VersionNumber = 101
- VersionWhatever VersionNumber = 0 // for when the version doesn't matter
- VersionUnknown VersionNumber = -1
-)
-
-// SupportedVersions lists the versions that the server supports
-// must be in sorted descending order
-var SupportedVersions = []VersionNumber{
- Version39,
-}
-
-// UsesTLS says if this QUIC version uses TLS 1.3 for the handshake
-func (vn VersionNumber) UsesTLS() bool {
- return vn == VersionTLS
-}
-
-func (vn VersionNumber) String() string {
- switch vn {
- case VersionWhatever:
- return "whatever"
- case VersionUnknown:
- return "unknown"
- case VersionTLS:
- return "TLS dev version (WIP)"
- default:
- if vn.isGQUIC() {
- return fmt.Sprintf("gQUIC %d", vn.toGQUICVersion())
- }
- return fmt.Sprintf("%d", vn)
- }
-}
-
-// ToAltSvc returns the representation of the version for the H2 Alt-Svc parameters
-func (vn VersionNumber) ToAltSvc() string {
- if vn.isGQUIC() {
- return fmt.Sprintf("%d", vn.toGQUICVersion())
- }
- return fmt.Sprintf("%d", vn)
-}
-
-// CryptoStreamID gets the Stream ID of the crypto stream
-func (vn VersionNumber) CryptoStreamID() StreamID {
- if vn.isGQUIC() {
- return 1
- }
- return 0
-}
-
-// UsesIETFFrameFormat tells if this version uses the IETF frame format
-func (vn VersionNumber) UsesIETFFrameFormat() bool {
- return vn != Version39
-}
-
-// StreamContributesToConnectionFlowControl says if a stream contributes to connection-level flow control
-func (vn VersionNumber) StreamContributesToConnectionFlowControl(id StreamID) bool {
- if id == vn.CryptoStreamID() {
- return false
- }
- if vn.isGQUIC() && id == 3 {
- return false
- }
- return true
-}
-
-func (vn VersionNumber) isGQUIC() bool {
- return vn > gquicVersion0 && vn <= maxGquicVersion
-}
-
-func (vn VersionNumber) toGQUICVersion() int {
- return int(10*(vn-gquicVersion0)/0x100) + int(vn%0x10)
-}
-
-// IsSupportedVersion returns true if the server supports this version
-func IsSupportedVersion(supported []VersionNumber, v VersionNumber) bool {
- for _, t := range supported {
- if t == v {
- return true
- }
- }
- return false
-}
-
-// ChooseSupportedVersion finds the best version in the overlap of ours and theirs
-// ours is a slice of versions that we support, sorted by our preference (descending)
-// theirs is a slice of versions offered by the peer. The order does not matter.
-// The bool returned indicates if a matching version was found.
-func ChooseSupportedVersion(ours, theirs []VersionNumber) (VersionNumber, bool) {
- for _, ourVer := range ours {
- for _, theirVer := range theirs {
- if ourVer == theirVer {
- return ourVer, true
- }
- }
- }
- return 0, false
-}
-
-// generateReservedVersion generates a reserved version number (v & 0x0f0f0f0f == 0x0a0a0a0a)
-func generateReservedVersion() VersionNumber {
- b := make([]byte, 4)
- _, _ = rand.Read(b) // ignore the error here. Failure to read random data doesn't break anything
- return VersionNumber((binary.BigEndian.Uint32(b) | 0x0a0a0a0a) & 0xfafafafa)
-}
-
-// GetGreasedVersions adds one reserved version number to a slice of version numbers, at a random position
-func GetGreasedVersions(supported []VersionNumber) []VersionNumber {
- b := make([]byte, 1)
- _, _ = rand.Read(b) // ignore the error here. Failure to read random data doesn't break anything
- randPos := int(b[0]) % (len(supported) + 1)
- greased := make([]VersionNumber, len(supported)+1)
- copy(greased, supported[:randPos])
- greased[randPos] = generateReservedVersion()
- copy(greased[randPos+1:], supported[randPos:])
- return greased
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/utils/_gen.go b/vendor/github.com/phuslu/quic-go/internal/utils/_gen.go
deleted file mode 100644
index 154515b..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/utils/_gen.go
+++ /dev/null
@@ -1,7 +0,0 @@
-package main
-
-import (
- _ "github.com/clipperhouse/linkedlist"
- _ "github.com/clipperhouse/slice"
- _ "github.com/clipperhouse/stringer"
-)
diff --git a/vendor/github.com/phuslu/quic-go/internal/utils/atomic_bool.go b/vendor/github.com/phuslu/quic-go/internal/utils/atomic_bool.go
deleted file mode 100644
index cf46425..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/utils/atomic_bool.go
+++ /dev/null
@@ -1,22 +0,0 @@
-package utils
-
-import "sync/atomic"
-
-// An AtomicBool is an atomic bool
-type AtomicBool struct {
- v int32
-}
-
-// Set sets the value
-func (a *AtomicBool) Set(value bool) {
- var n int32
- if value {
- n = 1
- }
- atomic.StoreInt32(&a.v, n)
-}
-
-// Get gets the value
-func (a *AtomicBool) Get() bool {
- return atomic.LoadInt32(&a.v) != 0
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/utils/byteinterval_linkedlist.go b/vendor/github.com/phuslu/quic-go/internal/utils/byteinterval_linkedlist.go
deleted file mode 100644
index 545fc20..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/utils/byteinterval_linkedlist.go
+++ /dev/null
@@ -1,214 +0,0 @@
-// Generated by: main
-// TypeWriter: linkedlist
-// Directive: +gen on ByteInterval
-
-package utils
-
-// List is a modification of http://golang.org/pkg/container/list/
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// ByteIntervalElement is an element of a linked list.
-type ByteIntervalElement struct {
- // Next and previous pointers in the doubly-linked list of elements.
- // To simplify the implementation, internally a list l is implemented
- // as a ring, such that &l.root is both the next element of the last
- // list element (l.Back()) and the previous element of the first list
- // element (l.Front()).
- next, prev *ByteIntervalElement
-
- // The list to which this element belongs.
- list *ByteIntervalList
-
- // The value stored with this element.
- Value ByteInterval
-}
-
-// Next returns the next list element or nil.
-func (e *ByteIntervalElement) Next() *ByteIntervalElement {
- if p := e.next; e.list != nil && p != &e.list.root {
- return p
- }
- return nil
-}
-
-// Prev returns the previous list element or nil.
-func (e *ByteIntervalElement) Prev() *ByteIntervalElement {
- if p := e.prev; e.list != nil && p != &e.list.root {
- return p
- }
- return nil
-}
-
-// ByteIntervalList represents a doubly linked list.
-// The zero value for ByteIntervalList is an empty list ready to use.
-type ByteIntervalList struct {
- root ByteIntervalElement // sentinel list element, only &root, root.prev, and root.next are used
- len int // current list length excluding (this) sentinel element
-}
-
-// Init initializes or clears list l.
-func (l *ByteIntervalList) Init() *ByteIntervalList {
- l.root.next = &l.root
- l.root.prev = &l.root
- l.len = 0
- return l
-}
-
-// NewByteIntervalList returns an initialized list.
-func NewByteIntervalList() *ByteIntervalList { return new(ByteIntervalList).Init() }
-
-// Len returns the number of elements of list l.
-// The complexity is O(1).
-func (l *ByteIntervalList) Len() int { return l.len }
-
-// Front returns the first element of list l or nil.
-func (l *ByteIntervalList) Front() *ByteIntervalElement {
- if l.len == 0 {
- return nil
- }
- return l.root.next
-}
-
-// Back returns the last element of list l or nil.
-func (l *ByteIntervalList) Back() *ByteIntervalElement {
- if l.len == 0 {
- return nil
- }
- return l.root.prev
-}
-
-// lazyInit lazily initializes a zero ByteIntervalList value.
-func (l *ByteIntervalList) lazyInit() {
- if l.root.next == nil {
- l.Init()
- }
-}
-
-// insert inserts e after at, increments l.len, and returns e.
-func (l *ByteIntervalList) insert(e, at *ByteIntervalElement) *ByteIntervalElement {
- n := at.next
- at.next = e
- e.prev = at
- e.next = n
- n.prev = e
- e.list = l
- l.len++
- return e
-}
-
-// insertValue is a convenience wrapper for insert(&ByteIntervalElement{Value: v}, at).
-func (l *ByteIntervalList) insertValue(v ByteInterval, at *ByteIntervalElement) *ByteIntervalElement {
- return l.insert(&ByteIntervalElement{Value: v}, at)
-}
-
-// remove removes e from its list, decrements l.len, and returns e.
-func (l *ByteIntervalList) remove(e *ByteIntervalElement) *ByteIntervalElement {
- e.prev.next = e.next
- e.next.prev = e.prev
- e.next = nil // avoid memory leaks
- e.prev = nil // avoid memory leaks
- e.list = nil
- l.len--
- return e
-}
-
-// Remove removes e from l if e is an element of list l.
-// It returns the element value e.Value.
-func (l *ByteIntervalList) Remove(e *ByteIntervalElement) ByteInterval {
- if e.list == l {
- // if e.list == l, l must have been initialized when e was inserted
- // in l or l == nil (e is a zero ByteIntervalElement) and l.remove will crash
- l.remove(e)
- }
- return e.Value
-}
-
-// PushFront inserts a new element e with value v at the front of list l and returns e.
-func (l *ByteIntervalList) PushFront(v ByteInterval) *ByteIntervalElement {
- l.lazyInit()
- return l.insertValue(v, &l.root)
-}
-
-// PushBack inserts a new element e with value v at the back of list l and returns e.
-func (l *ByteIntervalList) PushBack(v ByteInterval) *ByteIntervalElement {
- l.lazyInit()
- return l.insertValue(v, l.root.prev)
-}
-
-// InsertBefore inserts a new element e with value v immediately before mark and returns e.
-// If mark is not an element of l, the list is not modified.
-func (l *ByteIntervalList) InsertBefore(v ByteInterval, mark *ByteIntervalElement) *ByteIntervalElement {
- if mark.list != l {
- return nil
- }
- // see comment in ByteIntervalList.Remove about initialization of l
- return l.insertValue(v, mark.prev)
-}
-
-// InsertAfter inserts a new element e with value v immediately after mark and returns e.
-// If mark is not an element of l, the list is not modified.
-func (l *ByteIntervalList) InsertAfter(v ByteInterval, mark *ByteIntervalElement) *ByteIntervalElement {
- if mark.list != l {
- return nil
- }
- // see comment in ByteIntervalList.Remove about initialization of l
- return l.insertValue(v, mark)
-}
-
-// MoveToFront moves element e to the front of list l.
-// If e is not an element of l, the list is not modified.
-func (l *ByteIntervalList) MoveToFront(e *ByteIntervalElement) {
- if e.list != l || l.root.next == e {
- return
- }
- // see comment in ByteIntervalList.Remove about initialization of l
- l.insert(l.remove(e), &l.root)
-}
-
-// MoveToBack moves element e to the back of list l.
-// If e is not an element of l, the list is not modified.
-func (l *ByteIntervalList) MoveToBack(e *ByteIntervalElement) {
- if e.list != l || l.root.prev == e {
- return
- }
- // see comment in ByteIntervalList.Remove about initialization of l
- l.insert(l.remove(e), l.root.prev)
-}
-
-// MoveBefore moves element e to its new position before mark.
-// If e or mark is not an element of l, or e == mark, the list is not modified.
-func (l *ByteIntervalList) MoveBefore(e, mark *ByteIntervalElement) {
- if e.list != l || e == mark || mark.list != l {
- return
- }
- l.insert(l.remove(e), mark.prev)
-}
-
-// MoveAfter moves element e to its new position after mark.
-// If e is not an element of l, or e == mark, the list is not modified.
-func (l *ByteIntervalList) MoveAfter(e, mark *ByteIntervalElement) {
- if e.list != l || e == mark || mark.list != l {
- return
- }
- l.insert(l.remove(e), mark)
-}
-
-// PushBackList inserts a copy of an other list at the back of list l.
-// The lists l and other may be the same.
-func (l *ByteIntervalList) PushBackList(other *ByteIntervalList) {
- l.lazyInit()
- for i, e := other.Len(), other.Front(); i > 0; i, e = i-1, e.Next() {
- l.insertValue(e.Value, l.root.prev)
- }
-}
-
-// PushFrontList inserts a copy of an other list at the front of list l.
-// The lists l and other may be the same.
-func (l *ByteIntervalList) PushFrontList(other *ByteIntervalList) {
- l.lazyInit()
- for i, e := other.Len(), other.Back(); i > 0; i, e = i-1, e.Prev() {
- l.insertValue(e.Value, &l.root)
- }
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/utils/byteorder.go b/vendor/github.com/phuslu/quic-go/internal/utils/byteorder.go
deleted file mode 100644
index b45800a..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/utils/byteorder.go
+++ /dev/null
@@ -1,25 +0,0 @@
-package utils
-
-import (
- "bytes"
- "io"
-)
-
-// A ByteOrder specifies how to convert byte sequences into 16-, 32-, or 64-bit unsigned integers.
-type ByteOrder interface {
- ReadUintN(b io.ByteReader, length uint8) (uint64, error)
- ReadUint64(io.ByteReader) (uint64, error)
- ReadUint32(io.ByteReader) (uint32, error)
- ReadUint16(io.ByteReader) (uint16, error)
-
- WriteUint64(*bytes.Buffer, uint64)
- WriteUint56(*bytes.Buffer, uint64)
- WriteUint48(*bytes.Buffer, uint64)
- WriteUint40(*bytes.Buffer, uint64)
- WriteUint32(*bytes.Buffer, uint32)
- WriteUint24(*bytes.Buffer, uint32)
- WriteUint16(*bytes.Buffer, uint16)
-
- ReadUfloat16(io.ByteReader) (uint64, error)
- WriteUfloat16(*bytes.Buffer, uint64)
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/utils/byteorder_big_endian.go b/vendor/github.com/phuslu/quic-go/internal/utils/byteorder_big_endian.go
deleted file mode 100644
index 9f6c9a6..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/utils/byteorder_big_endian.go
+++ /dev/null
@@ -1,157 +0,0 @@
-package utils
-
-import (
- "bytes"
- "fmt"
- "io"
-)
-
-// BigEndian is the big-endian implementation of ByteOrder.
-var BigEndian ByteOrder = bigEndian{}
-
-type bigEndian struct{}
-
-var _ ByteOrder = &bigEndian{}
-
-// ReadUintN reads N bytes
-func (bigEndian) ReadUintN(b io.ByteReader, length uint8) (uint64, error) {
- var res uint64
- for i := uint8(0); i < length; i++ {
- bt, err := b.ReadByte()
- if err != nil {
- return 0, err
- }
- res ^= uint64(bt) << ((length - 1 - i) * 8)
- }
- return res, nil
-}
-
-// ReadUint64 reads a uint64
-func (bigEndian) ReadUint64(b io.ByteReader) (uint64, error) {
- var b1, b2, b3, b4, b5, b6, b7, b8 uint8
- var err error
- if b8, err = b.ReadByte(); err != nil {
- return 0, err
- }
- if b7, err = b.ReadByte(); err != nil {
- return 0, err
- }
- if b6, err = b.ReadByte(); err != nil {
- return 0, err
- }
- if b5, err = b.ReadByte(); err != nil {
- return 0, err
- }
- if b4, err = b.ReadByte(); err != nil {
- return 0, err
- }
- if b3, err = b.ReadByte(); err != nil {
- return 0, err
- }
- if b2, err = b.ReadByte(); err != nil {
- return 0, err
- }
- if b1, err = b.ReadByte(); err != nil {
- return 0, err
- }
- return uint64(b1) + uint64(b2)<<8 + uint64(b3)<<16 + uint64(b4)<<24 + uint64(b5)<<32 + uint64(b6)<<40 + uint64(b7)<<48 + uint64(b8)<<56, nil
-}
-
-// ReadUint32 reads a uint32
-func (bigEndian) ReadUint32(b io.ByteReader) (uint32, error) {
- var b1, b2, b3, b4 uint8
- var err error
- if b4, err = b.ReadByte(); err != nil {
- return 0, err
- }
- if b3, err = b.ReadByte(); err != nil {
- return 0, err
- }
- if b2, err = b.ReadByte(); err != nil {
- return 0, err
- }
- if b1, err = b.ReadByte(); err != nil {
- return 0, err
- }
- return uint32(b1) + uint32(b2)<<8 + uint32(b3)<<16 + uint32(b4)<<24, nil
-}
-
-// ReadUint16 reads a uint16
-func (bigEndian) ReadUint16(b io.ByteReader) (uint16, error) {
- var b1, b2 uint8
- var err error
- if b2, err = b.ReadByte(); err != nil {
- return 0, err
- }
- if b1, err = b.ReadByte(); err != nil {
- return 0, err
- }
- return uint16(b1) + uint16(b2)<<8, nil
-}
-
-// WriteUint64 writes a uint64
-func (bigEndian) WriteUint64(b *bytes.Buffer, i uint64) {
- b.Write([]byte{
- uint8(i >> 56), uint8(i >> 48), uint8(i >> 40), uint8(i >> 32),
- uint8(i >> 24), uint8(i >> 16), uint8(i >> 8), uint8(i),
- })
-}
-
-// WriteUint56 writes 56 bit of a uint64
-func (bigEndian) WriteUint56(b *bytes.Buffer, i uint64) {
- if i >= (1 << 56) {
- panic(fmt.Sprintf("%#x doesn't fit into 56 bits", i))
- }
- b.Write([]byte{
- uint8(i >> 48), uint8(i >> 40), uint8(i >> 32),
- uint8(i >> 24), uint8(i >> 16), uint8(i >> 8), uint8(i),
- })
-}
-
-// WriteUint48 writes 48 bit of a uint64
-func (bigEndian) WriteUint48(b *bytes.Buffer, i uint64) {
- if i >= (1 << 48) {
- panic(fmt.Sprintf("%#x doesn't fit into 48 bits", i))
- }
- b.Write([]byte{
- uint8(i >> 40), uint8(i >> 32),
- uint8(i >> 24), uint8(i >> 16), uint8(i >> 8), uint8(i),
- })
-}
-
-// WriteUint40 writes 40 bit of a uint64
-func (bigEndian) WriteUint40(b *bytes.Buffer, i uint64) {
- if i >= (1 << 40) {
- panic(fmt.Sprintf("%#x doesn't fit into 40 bits", i))
- }
- b.Write([]byte{
- uint8(i >> 32),
- uint8(i >> 24), uint8(i >> 16), uint8(i >> 8), uint8(i),
- })
-}
-
-// WriteUint32 writes a uint32
-func (bigEndian) WriteUint32(b *bytes.Buffer, i uint32) {
- b.Write([]byte{uint8(i >> 24), uint8(i >> 16), uint8(i >> 8), uint8(i)})
-}
-
-// WriteUint24 writes 24 bit of a uint32
-func (bigEndian) WriteUint24(b *bytes.Buffer, i uint32) {
- if i >= (1 << 24) {
- panic(fmt.Sprintf("%#x doesn't fit into 24 bits", i))
- }
- b.Write([]byte{uint8(i >> 16), uint8(i >> 8), uint8(i)})
-}
-
-// WriteUint16 writes a uint16
-func (bigEndian) WriteUint16(b *bytes.Buffer, i uint16) {
- b.Write([]byte{uint8(i >> 8), uint8(i)})
-}
-
-func (l bigEndian) ReadUfloat16(b io.ByteReader) (uint64, error) {
- return readUfloat16(b, l)
-}
-
-func (l bigEndian) WriteUfloat16(b *bytes.Buffer, val uint64) {
- writeUfloat16(b, l, val)
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/utils/byteorder_little_endian.go b/vendor/github.com/phuslu/quic-go/internal/utils/byteorder_little_endian.go
deleted file mode 100644
index 71ff95d..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/utils/byteorder_little_endian.go
+++ /dev/null
@@ -1,157 +0,0 @@
-package utils
-
-import (
- "bytes"
- "fmt"
- "io"
-)
-
-// LittleEndian is the little-endian implementation of ByteOrder.
-var LittleEndian ByteOrder = littleEndian{}
-
-type littleEndian struct{}
-
-var _ ByteOrder = &littleEndian{}
-
-// ReadUintN reads N bytes
-func (littleEndian) ReadUintN(b io.ByteReader, length uint8) (uint64, error) {
- var res uint64
- for i := uint8(0); i < length; i++ {
- bt, err := b.ReadByte()
- if err != nil {
- return 0, err
- }
- res ^= uint64(bt) << (i * 8)
- }
- return res, nil
-}
-
-// ReadUint64 reads a uint64
-func (littleEndian) ReadUint64(b io.ByteReader) (uint64, error) {
- var b1, b2, b3, b4, b5, b6, b7, b8 uint8
- var err error
- if b1, err = b.ReadByte(); err != nil {
- return 0, err
- }
- if b2, err = b.ReadByte(); err != nil {
- return 0, err
- }
- if b3, err = b.ReadByte(); err != nil {
- return 0, err
- }
- if b4, err = b.ReadByte(); err != nil {
- return 0, err
- }
- if b5, err = b.ReadByte(); err != nil {
- return 0, err
- }
- if b6, err = b.ReadByte(); err != nil {
- return 0, err
- }
- if b7, err = b.ReadByte(); err != nil {
- return 0, err
- }
- if b8, err = b.ReadByte(); err != nil {
- return 0, err
- }
- return uint64(b1) + uint64(b2)<<8 + uint64(b3)<<16 + uint64(b4)<<24 + uint64(b5)<<32 + uint64(b6)<<40 + uint64(b7)<<48 + uint64(b8)<<56, nil
-}
-
-// ReadUint32 reads a uint32
-func (littleEndian) ReadUint32(b io.ByteReader) (uint32, error) {
- var b1, b2, b3, b4 uint8
- var err error
- if b1, err = b.ReadByte(); err != nil {
- return 0, err
- }
- if b2, err = b.ReadByte(); err != nil {
- return 0, err
- }
- if b3, err = b.ReadByte(); err != nil {
- return 0, err
- }
- if b4, err = b.ReadByte(); err != nil {
- return 0, err
- }
- return uint32(b1) + uint32(b2)<<8 + uint32(b3)<<16 + uint32(b4)<<24, nil
-}
-
-// ReadUint16 reads a uint16
-func (littleEndian) ReadUint16(b io.ByteReader) (uint16, error) {
- var b1, b2 uint8
- var err error
- if b1, err = b.ReadByte(); err != nil {
- return 0, err
- }
- if b2, err = b.ReadByte(); err != nil {
- return 0, err
- }
- return uint16(b1) + uint16(b2)<<8, nil
-}
-
-// WriteUint64 writes a uint64
-func (littleEndian) WriteUint64(b *bytes.Buffer, i uint64) {
- b.Write([]byte{
- uint8(i), uint8(i >> 8), uint8(i >> 16), uint8(i >> 24),
- uint8(i >> 32), uint8(i >> 40), uint8(i >> 48), uint8(i >> 56),
- })
-}
-
-// WriteUint56 writes 56 bit of a uint64
-func (littleEndian) WriteUint56(b *bytes.Buffer, i uint64) {
- if i >= (1 << 56) {
- panic(fmt.Sprintf("%#x doesn't fit into 56 bits", i))
- }
- b.Write([]byte{
- uint8(i), uint8(i >> 8), uint8(i >> 16), uint8(i >> 24),
- uint8(i >> 32), uint8(i >> 40), uint8(i >> 48),
- })
-}
-
-// WriteUint48 writes 48 bit of a uint64
-func (littleEndian) WriteUint48(b *bytes.Buffer, i uint64) {
- if i >= (1 << 48) {
- panic(fmt.Sprintf("%#x doesn't fit into 48 bits", i))
- }
- b.Write([]byte{
- uint8(i), uint8(i >> 8), uint8(i >> 16), uint8(i >> 24),
- uint8(i >> 32), uint8(i >> 40),
- })
-}
-
-// WriteUint40 writes 40 bit of a uint64
-func (littleEndian) WriteUint40(b *bytes.Buffer, i uint64) {
- if i >= (1 << 40) {
- panic(fmt.Sprintf("%#x doesn't fit into 40 bits", i))
- }
- b.Write([]byte{
- uint8(i), uint8(i >> 8), uint8(i >> 16),
- uint8(i >> 24), uint8(i >> 32),
- })
-}
-
-// WriteUint32 writes a uint32
-func (littleEndian) WriteUint32(b *bytes.Buffer, i uint32) {
- b.Write([]byte{uint8(i), uint8(i >> 8), uint8(i >> 16), uint8(i >> 24)})
-}
-
-// WriteUint24 writes 24 bit of a uint32
-func (littleEndian) WriteUint24(b *bytes.Buffer, i uint32) {
- if i >= (1 << 24) {
- panic(fmt.Sprintf("%#x doesn't fit into 24 bits", i))
- }
- b.Write([]byte{uint8(i), uint8(i >> 8), uint8(i >> 16)})
-}
-
-// WriteUint16 writes a uint16
-func (littleEndian) WriteUint16(b *bytes.Buffer, i uint16) {
- b.Write([]byte{uint8(i), uint8(i >> 8)})
-}
-
-func (l littleEndian) ReadUfloat16(b io.ByteReader) (uint64, error) {
- return readUfloat16(b, l)
-}
-
-func (l littleEndian) WriteUfloat16(b *bytes.Buffer, val uint64) {
- writeUfloat16(b, l, val)
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/utils/connection_id.go b/vendor/github.com/phuslu/quic-go/internal/utils/connection_id.go
deleted file mode 100644
index dbc1392..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/utils/connection_id.go
+++ /dev/null
@@ -1,18 +0,0 @@
-package utils
-
-import (
- "crypto/rand"
- "encoding/binary"
-
- "github.com/phuslu/quic-go/internal/protocol"
-)
-
-// GenerateConnectionID generates a connection ID using cryptographic random
-func GenerateConnectionID() (protocol.ConnectionID, error) {
- b := make([]byte, 8)
- _, err := rand.Read(b)
- if err != nil {
- return 0, err
- }
- return protocol.ConnectionID(binary.LittleEndian.Uint64(b)), nil
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/utils/float16.go b/vendor/github.com/phuslu/quic-go/internal/utils/float16.go
deleted file mode 100644
index 8e2ca1b..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/utils/float16.go
+++ /dev/null
@@ -1,86 +0,0 @@
-package utils
-
-import (
- "bytes"
- "io"
- "math"
-)
-
-// We define an unsigned 16-bit floating point value, inspired by IEEE floats
-// (http://en.wikipedia.org/wiki/Half_precision_floating-point_format),
-// with 5-bit exponent (bias 1), 11-bit mantissa (effective 12 with hidden
-// bit) and denormals, but without signs, transfinites or fractions. Wire format
-// 16 bits (little-endian byte order) are split into exponent (high 5) and
-// mantissa (low 11) and decoded as:
-// uint64_t value;
-// if (exponent == 0) value = mantissa;
-// else value = (mantissa | 1 << 11) << (exponent - 1)
-const uFloat16ExponentBits = 5
-const uFloat16MaxExponent = (1 << uFloat16ExponentBits) - 2 // 30
-const uFloat16MantissaBits = 16 - uFloat16ExponentBits // 11
-const uFloat16MantissaEffectiveBits = uFloat16MantissaBits + 1 // 12
-const uFloat16MaxValue = ((uint64(1) << uFloat16MantissaEffectiveBits) - 1) << uFloat16MaxExponent // 0x3FFC0000000
-
-// readUfloat16 reads a float in the QUIC-float16 format and returns its uint64 representation
-func readUfloat16(b io.ByteReader, byteOrder ByteOrder) (uint64, error) {
- val, err := byteOrder.ReadUint16(b)
- if err != nil {
- return 0, err
- }
-
- res := uint64(val)
-
- if res < (1 << uFloat16MantissaEffectiveBits) {
- // Fast path: either the value is denormalized (no hidden bit), or
- // normalized (hidden bit set, exponent offset by one) with exponent zero.
- // Zero exponent offset by one sets the bit exactly where the hidden bit is.
- // So in both cases the value encodes itself.
- return res, nil
- }
-
- exponent := val >> uFloat16MantissaBits // No sign extend on uint!
- // After the fast pass, the exponent is at least one (offset by one).
- // Un-offset the exponent.
- exponent--
- // Here we need to clear the exponent and set the hidden bit. We have already
- // decremented the exponent, so when we subtract it, it leaves behind the
- // hidden bit.
- res -= uint64(exponent) << uFloat16MantissaBits
- res <<= exponent
- return res, nil
-}
-
-// writeUfloat16 writes a float in the QUIC-float16 format from its uint64 representation
-func writeUfloat16(b *bytes.Buffer, byteOrder ByteOrder, value uint64) {
- var result uint16
- if value < (uint64(1) << uFloat16MantissaEffectiveBits) {
- // Fast path: either the value is denormalized, or has exponent zero.
- // Both cases are represented by the value itself.
- result = uint16(value)
- } else if value >= uFloat16MaxValue {
- // Value is out of range; clamp it to the maximum representable.
- result = math.MaxUint16
- } else {
- // The highest bit is between position 13 and 42 (zero-based), which
- // corresponds to exponent 1-30. In the output, mantissa is from 0 to 10,
- // hidden bit is 11 and exponent is 11 to 15. Shift the highest bit to 11
- // and count the shifts.
- exponent := uint16(0)
- for offset := uint16(16); offset > 0; offset /= 2 {
- // Right-shift the value until the highest bit is in position 11.
- // For offset of 16, 8, 4, 2 and 1 (binary search over 1-30),
- // shift if the bit is at or above 11 + offset.
- if value >= (uint64(1) << (uFloat16MantissaBits + offset)) {
- exponent += offset
- value >>= offset
- }
- }
-
- // Hidden bit (position 11) is set. We should remove it and increment the
- // exponent. Equivalently, we just add it to the exponent.
- // This hides the bit.
- result = (uint16(value) + (exponent << uFloat16MantissaBits))
- }
-
- byteOrder.WriteUint16(b, result)
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/utils/host.go b/vendor/github.com/phuslu/quic-go/internal/utils/host.go
deleted file mode 100644
index a1d6453..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/utils/host.go
+++ /dev/null
@@ -1,27 +0,0 @@
-package utils
-
-import (
- "net/url"
- "strings"
-)
-
-// HostnameFromAddr determines the hostname in an address string
-func HostnameFromAddr(addr string) (string, error) {
- p, err := url.Parse(addr)
- if err != nil {
- return "", err
- }
- h := p.Host
-
- // copied from https://golang.org/src/net/http/transport.go
- if hasPort(h) {
- h = h[:strings.LastIndex(h, ":")]
- }
-
- return h, nil
-}
-
-// copied from https://golang.org/src/net/http/http.go
-func hasPort(s string) bool {
- return strings.LastIndex(s, ":") > strings.LastIndex(s, "]")
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/utils/log.go b/vendor/github.com/phuslu/quic-go/internal/utils/log.go
deleted file mode 100644
index ceda146..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/utils/log.go
+++ /dev/null
@@ -1,95 +0,0 @@
-package utils
-
-import (
- "fmt"
- "log"
- "os"
- "strings"
- "time"
-)
-
-// LogLevel of quic-go
-type LogLevel uint8
-
-const logEnv = "QUIC_GO_LOG_LEVEL"
-
-const (
- // LogLevelNothing disables
- LogLevelNothing LogLevel = iota
- // LogLevelError enables err logs
- LogLevelError
- // LogLevelInfo enables info logs (e.g. packets)
- LogLevelInfo
- // LogLevelDebug enables debug logs (e.g. packet contents)
- LogLevelDebug
-)
-
-var (
- logLevel = LogLevelNothing
- timeFormat = ""
-)
-
-// SetLogLevel sets the log level
-func SetLogLevel(level LogLevel) {
- logLevel = level
-}
-
-// SetLogTimeFormat sets the format of the timestamp
-// an empty string disables the logging of timestamps
-func SetLogTimeFormat(format string) {
- log.SetFlags(0) // disable timestamp logging done by the log package
- timeFormat = format
-}
-
-// Debugf logs something
-func Debugf(format string, args ...interface{}) {
- if logLevel == LogLevelDebug {
- logMessage(format, args...)
- }
-}
-
-// Infof logs something
-func Infof(format string, args ...interface{}) {
- if logLevel >= LogLevelInfo {
- logMessage(format, args...)
- }
-}
-
-// Errorf logs something
-func Errorf(format string, args ...interface{}) {
- if logLevel >= LogLevelError {
- logMessage(format, args...)
- }
-}
-
-func logMessage(format string, args ...interface{}) {
- if len(timeFormat) > 0 {
- log.Printf(time.Now().Format(timeFormat)+" "+format, args...)
- } else {
- log.Printf(format, args...)
- }
-}
-
-// Debug returns true if the log level is LogLevelDebug
-func Debug() bool {
- return logLevel == LogLevelDebug
-}
-
-func init() {
- readLoggingEnv()
-}
-
-func readLoggingEnv() {
- switch strings.ToLower(os.Getenv(logEnv)) {
- case "":
- return
- case "debug":
- logLevel = LogLevelDebug
- case "info":
- logLevel = LogLevelInfo
- case "error":
- logLevel = LogLevelError
- default:
- fmt.Fprintln(os.Stderr, "invalid quic-go log level, see https://github.com/phuslu/quic-go/wiki/Logging")
- }
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/utils/minmax.go b/vendor/github.com/phuslu/quic-go/internal/utils/minmax.go
deleted file mode 100644
index 845ae8a..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/utils/minmax.go
+++ /dev/null
@@ -1,131 +0,0 @@
-package utils
-
-import (
- "math"
- "time"
-
- "github.com/phuslu/quic-go/internal/protocol"
-)
-
-// InfDuration is a duration of infinite length
-const InfDuration = time.Duration(math.MaxInt64)
-
-// Max returns the maximum of two Ints
-func Max(a, b int) int {
- if a < b {
- return b
- }
- return a
-}
-
-// MaxUint32 returns the maximum of two uint32
-func MaxUint32(a, b uint32) uint32 {
- if a < b {
- return b
- }
- return a
-}
-
-// MaxUint64 returns the maximum of two uint64
-func MaxUint64(a, b uint64) uint64 {
- if a < b {
- return b
- }
- return a
-}
-
-// MinUint64 returns the maximum of two uint64
-func MinUint64(a, b uint64) uint64 {
- if a < b {
- return a
- }
- return b
-}
-
-// Min returns the minimum of two Ints
-func Min(a, b int) int {
- if a < b {
- return a
- }
- return b
-}
-
-// MinUint32 returns the maximum of two uint32
-func MinUint32(a, b uint32) uint32 {
- if a < b {
- return a
- }
- return b
-}
-
-// MinInt64 returns the minimum of two int64
-func MinInt64(a, b int64) int64 {
- if a < b {
- return a
- }
- return b
-}
-
-// MaxInt64 returns the minimum of two int64
-func MaxInt64(a, b int64) int64 {
- if a > b {
- return a
- }
- return b
-}
-
-// MinByteCount returns the minimum of two ByteCounts
-func MinByteCount(a, b protocol.ByteCount) protocol.ByteCount {
- if a < b {
- return a
- }
- return b
-}
-
-// MaxDuration returns the max duration
-func MaxDuration(a, b time.Duration) time.Duration {
- if a > b {
- return a
- }
- return b
-}
-
-// MinDuration returns the minimum duration
-func MinDuration(a, b time.Duration) time.Duration {
- if a > b {
- return b
- }
- return a
-}
-
-// AbsDuration returns the absolute value of a time duration
-func AbsDuration(d time.Duration) time.Duration {
- if d >= 0 {
- return d
- }
- return -d
-}
-
-// MinTime returns the earlier time
-func MinTime(a, b time.Time) time.Time {
- if a.After(b) {
- return b
- }
- return a
-}
-
-// MaxPacketNumber returns the max packet number
-func MaxPacketNumber(a, b protocol.PacketNumber) protocol.PacketNumber {
- if a > b {
- return a
- }
- return b
-}
-
-// MinPacketNumber returns the min packet number
-func MinPacketNumber(a, b protocol.PacketNumber) protocol.PacketNumber {
- if a < b {
- return a
- }
- return b
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/utils/packet_interval.go b/vendor/github.com/phuslu/quic-go/internal/utils/packet_interval.go
deleted file mode 100644
index e2336fe..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/utils/packet_interval.go
+++ /dev/null
@@ -1,10 +0,0 @@
-package utils
-
-import "github.com/phuslu/quic-go/internal/protocol"
-
-// PacketInterval is an interval from one PacketNumber to the other
-// +gen linkedlist
-type PacketInterval struct {
- Start protocol.PacketNumber
- End protocol.PacketNumber
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/utils/packetinterval_linkedlist.go b/vendor/github.com/phuslu/quic-go/internal/utils/packetinterval_linkedlist.go
deleted file mode 100644
index e3431d6..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/utils/packetinterval_linkedlist.go
+++ /dev/null
@@ -1,214 +0,0 @@
-// Generated by: main
-// TypeWriter: linkedlist
-// Directive: +gen on PacketInterval
-
-package utils
-
-// List is a modification of http://golang.org/pkg/container/list/
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// PacketIntervalElement is an element of a linked list.
-type PacketIntervalElement struct {
- // Next and previous pointers in the doubly-linked list of elements.
- // To simplify the implementation, internally a list l is implemented
- // as a ring, such that &l.root is both the next element of the last
- // list element (l.Back()) and the previous element of the first list
- // element (l.Front()).
- next, prev *PacketIntervalElement
-
- // The list to which this element belongs.
- list *PacketIntervalList
-
- // The value stored with this element.
- Value PacketInterval
-}
-
-// Next returns the next list element or nil.
-func (e *PacketIntervalElement) Next() *PacketIntervalElement {
- if p := e.next; e.list != nil && p != &e.list.root {
- return p
- }
- return nil
-}
-
-// Prev returns the previous list element or nil.
-func (e *PacketIntervalElement) Prev() *PacketIntervalElement {
- if p := e.prev; e.list != nil && p != &e.list.root {
- return p
- }
- return nil
-}
-
-// PacketIntervalList represents a doubly linked list.
-// The zero value for PacketIntervalList is an empty list ready to use.
-type PacketIntervalList struct {
- root PacketIntervalElement // sentinel list element, only &root, root.prev, and root.next are used
- len int // current list length excluding (this) sentinel element
-}
-
-// Init initializes or clears list l.
-func (l *PacketIntervalList) Init() *PacketIntervalList {
- l.root.next = &l.root
- l.root.prev = &l.root
- l.len = 0
- return l
-}
-
-// NewPacketIntervalList returns an initialized list.
-func NewPacketIntervalList() *PacketIntervalList { return new(PacketIntervalList).Init() }
-
-// Len returns the number of elements of list l.
-// The complexity is O(1).
-func (l *PacketIntervalList) Len() int { return l.len }
-
-// Front returns the first element of list l or nil.
-func (l *PacketIntervalList) Front() *PacketIntervalElement {
- if l.len == 0 {
- return nil
- }
- return l.root.next
-}
-
-// Back returns the last element of list l or nil.
-func (l *PacketIntervalList) Back() *PacketIntervalElement {
- if l.len == 0 {
- return nil
- }
- return l.root.prev
-}
-
-// lazyInit lazily initializes a zero PacketIntervalList value.
-func (l *PacketIntervalList) lazyInit() {
- if l.root.next == nil {
- l.Init()
- }
-}
-
-// insert inserts e after at, increments l.len, and returns e.
-func (l *PacketIntervalList) insert(e, at *PacketIntervalElement) *PacketIntervalElement {
- n := at.next
- at.next = e
- e.prev = at
- e.next = n
- n.prev = e
- e.list = l
- l.len++
- return e
-}
-
-// insertValue is a convenience wrapper for insert(&PacketIntervalElement{Value: v}, at).
-func (l *PacketIntervalList) insertValue(v PacketInterval, at *PacketIntervalElement) *PacketIntervalElement {
- return l.insert(&PacketIntervalElement{Value: v}, at)
-}
-
-// remove removes e from its list, decrements l.len, and returns e.
-func (l *PacketIntervalList) remove(e *PacketIntervalElement) *PacketIntervalElement {
- e.prev.next = e.next
- e.next.prev = e.prev
- e.next = nil // avoid memory leaks
- e.prev = nil // avoid memory leaks
- e.list = nil
- l.len--
- return e
-}
-
-// Remove removes e from l if e is an element of list l.
-// It returns the element value e.Value.
-func (l *PacketIntervalList) Remove(e *PacketIntervalElement) PacketInterval {
- if e.list == l {
- // if e.list == l, l must have been initialized when e was inserted
- // in l or l == nil (e is a zero PacketIntervalElement) and l.remove will crash
- l.remove(e)
- }
- return e.Value
-}
-
-// PushFront inserts a new element e with value v at the front of list l and returns e.
-func (l *PacketIntervalList) PushFront(v PacketInterval) *PacketIntervalElement {
- l.lazyInit()
- return l.insertValue(v, &l.root)
-}
-
-// PushBack inserts a new element e with value v at the back of list l and returns e.
-func (l *PacketIntervalList) PushBack(v PacketInterval) *PacketIntervalElement {
- l.lazyInit()
- return l.insertValue(v, l.root.prev)
-}
-
-// InsertBefore inserts a new element e with value v immediately before mark and returns e.
-// If mark is not an element of l, the list is not modified.
-func (l *PacketIntervalList) InsertBefore(v PacketInterval, mark *PacketIntervalElement) *PacketIntervalElement {
- if mark.list != l {
- return nil
- }
- // see comment in PacketIntervalList.Remove about initialization of l
- return l.insertValue(v, mark.prev)
-}
-
-// InsertAfter inserts a new element e with value v immediately after mark and returns e.
-// If mark is not an element of l, the list is not modified.
-func (l *PacketIntervalList) InsertAfter(v PacketInterval, mark *PacketIntervalElement) *PacketIntervalElement {
- if mark.list != l {
- return nil
- }
- // see comment in PacketIntervalList.Remove about initialization of l
- return l.insertValue(v, mark)
-}
-
-// MoveToFront moves element e to the front of list l.
-// If e is not an element of l, the list is not modified.
-func (l *PacketIntervalList) MoveToFront(e *PacketIntervalElement) {
- if e.list != l || l.root.next == e {
- return
- }
- // see comment in PacketIntervalList.Remove about initialization of l
- l.insert(l.remove(e), &l.root)
-}
-
-// MoveToBack moves element e to the back of list l.
-// If e is not an element of l, the list is not modified.
-func (l *PacketIntervalList) MoveToBack(e *PacketIntervalElement) {
- if e.list != l || l.root.prev == e {
- return
- }
- // see comment in PacketIntervalList.Remove about initialization of l
- l.insert(l.remove(e), l.root.prev)
-}
-
-// MoveBefore moves element e to its new position before mark.
-// If e or mark is not an element of l, or e == mark, the list is not modified.
-func (l *PacketIntervalList) MoveBefore(e, mark *PacketIntervalElement) {
- if e.list != l || e == mark || mark.list != l {
- return
- }
- l.insert(l.remove(e), mark.prev)
-}
-
-// MoveAfter moves element e to its new position after mark.
-// If e is not an element of l, or e == mark, the list is not modified.
-func (l *PacketIntervalList) MoveAfter(e, mark *PacketIntervalElement) {
- if e.list != l || e == mark || mark.list != l {
- return
- }
- l.insert(l.remove(e), mark)
-}
-
-// PushBackList inserts a copy of an other list at the back of list l.
-// The lists l and other may be the same.
-func (l *PacketIntervalList) PushBackList(other *PacketIntervalList) {
- l.lazyInit()
- for i, e := other.Len(), other.Front(); i > 0; i, e = i-1, e.Next() {
- l.insertValue(e.Value, l.root.prev)
- }
-}
-
-// PushFrontList inserts a copy of an other list at the front of list l.
-// The lists l and other may be the same.
-func (l *PacketIntervalList) PushFrontList(other *PacketIntervalList) {
- l.lazyInit()
- for i, e := other.Len(), other.Back(); i > 0; i, e = i-1, e.Prev() {
- l.insertValue(e.Value, &l.root)
- }
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/utils/streamframe_interval.go b/vendor/github.com/phuslu/quic-go/internal/utils/streamframe_interval.go
deleted file mode 100644
index ca0f197..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/utils/streamframe_interval.go
+++ /dev/null
@@ -1,10 +0,0 @@
-package utils
-
-import "github.com/phuslu/quic-go/internal/protocol"
-
-// ByteInterval is an interval from one ByteCount to the other
-// +gen linkedlist
-type ByteInterval struct {
- Start protocol.ByteCount
- End protocol.ByteCount
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/utils/timer.go b/vendor/github.com/phuslu/quic-go/internal/utils/timer.go
deleted file mode 100644
index 695ad3e..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/utils/timer.go
+++ /dev/null
@@ -1,43 +0,0 @@
-package utils
-
-import "time"
-
-// A Timer wrapper that behaves correctly when resetting
-type Timer struct {
- t *time.Timer
- read bool
- deadline time.Time
-}
-
-// NewTimer creates a new timer that is not set
-func NewTimer() *Timer {
- return &Timer{t: time.NewTimer(0)}
-}
-
-// Chan returns the channel of the wrapped timer
-func (t *Timer) Chan() <-chan time.Time {
- return t.t.C
-}
-
-// Reset the timer, no matter whether the value was read or not
-func (t *Timer) Reset(deadline time.Time) {
- if deadline.Equal(t.deadline) {
- // No need to reset the timer
- return
- }
-
- // We need to drain the timer if the value from its channel was not read yet.
- // See https://groups.google.com/forum/#!topic/golang-dev/c9UUfASVPoU
- if !t.t.Stop() && !t.read {
- <-t.t.C
- }
- t.t.Reset(deadline.Sub(time.Now()))
-
- t.read = false
- t.deadline = deadline
-}
-
-// SetRead should be called after the value from the chan was read
-func (t *Timer) SetRead() {
- t.read = true
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/utils/varint.go b/vendor/github.com/phuslu/quic-go/internal/utils/varint.go
deleted file mode 100644
index b39e3fe..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/utils/varint.go
+++ /dev/null
@@ -1,101 +0,0 @@
-package utils
-
-import (
- "bytes"
- "fmt"
- "io"
-
- "github.com/phuslu/quic-go/internal/protocol"
-)
-
-// taken from the QUIC draft
-const (
- maxVarInt1 = 63
- maxVarInt2 = 16383
- maxVarInt4 = 1073741823
- maxVarInt8 = 4611686018427387903
-)
-
-// ReadVarInt reads a number in the QUIC varint format
-func ReadVarInt(b io.ByteReader) (uint64, error) {
- firstByte, err := b.ReadByte()
- if err != nil {
- return 0, err
- }
- // the first two bits of the first byte encode the length
- len := 1 << ((firstByte & 0xc0) >> 6)
- b1 := firstByte & (0xff - 0xc0)
- if len == 1 {
- return uint64(b1), nil
- }
- b2, err := b.ReadByte()
- if err != nil {
- return 0, err
- }
- if len == 2 {
- return uint64(b2) + uint64(b1)<<8, nil
- }
- b3, err := b.ReadByte()
- if err != nil {
- return 0, err
- }
- b4, err := b.ReadByte()
- if err != nil {
- return 0, err
- }
- if len == 4 {
- return uint64(b4) + uint64(b3)<<8 + uint64(b2)<<16 + uint64(b1)<<24, nil
- }
- b5, err := b.ReadByte()
- if err != nil {
- return 0, err
- }
- b6, err := b.ReadByte()
- if err != nil {
- return 0, err
- }
- b7, err := b.ReadByte()
- if err != nil {
- return 0, err
- }
- b8, err := b.ReadByte()
- if err != nil {
- return 0, err
- }
- return uint64(b8) + uint64(b7)<<8 + uint64(b6)<<16 + uint64(b5)<<24 + uint64(b4)<<32 + uint64(b3)<<40 + uint64(b2)<<48 + uint64(b1)<<56, nil
-}
-
-// WriteVarInt writes a number in the QUIC varint format
-func WriteVarInt(b *bytes.Buffer, i uint64) {
- if i <= maxVarInt1 {
- b.WriteByte(uint8(i))
- } else if i <= maxVarInt2 {
- b.Write([]byte{uint8(i>>8) | 0x40, uint8(i)})
- } else if i <= maxVarInt4 {
- b.Write([]byte{uint8(i>>24) | 0x80, uint8(i >> 16), uint8(i >> 8), uint8(i)})
- } else if i <= maxVarInt8 {
- b.Write([]byte{
- uint8(i>>56) | 0xc0, uint8(i >> 48), uint8(i >> 40), uint8(i >> 32),
- uint8(i >> 24), uint8(i >> 16), uint8(i >> 8), uint8(i),
- })
- } else {
- panic(fmt.Sprintf("%#x doesn't fit into 62 bits", i))
- }
-}
-
-// VarIntLen determines the number of bytes that will be needed to write a number
-func VarIntLen(i uint64) protocol.ByteCount {
- if i <= maxVarInt1 {
- return 1
- }
- if i <= maxVarInt2 {
- return 2
- }
- if i <= maxVarInt4 {
- return 4
- }
- if i <= maxVarInt8 {
- return 8
- }
- panic(fmt.Sprintf("%#x doesn't fit into 62 bits", i))
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/wire/ack_frame.go b/vendor/github.com/phuslu/quic-go/internal/wire/ack_frame.go
deleted file mode 100644
index f9dd96e..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/wire/ack_frame.go
+++ /dev/null
@@ -1,239 +0,0 @@
-package wire
-
-import (
- "bytes"
- "errors"
- "time"
-
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/utils"
-)
-
-// TODO: use the value sent in the transport parameters
-const ackDelayExponent = 3
-
-// An AckFrame is an ACK frame
-type AckFrame struct {
- LargestAcked protocol.PacketNumber
- LowestAcked protocol.PacketNumber
- AckRanges []AckRange // has to be ordered. The highest ACK range goes first, the lowest ACK range goes last
-
- // time when the LargestAcked was receiveid
- // this field will not be set for received ACKs frames
- PacketReceivedTime time.Time
- DelayTime time.Duration
-}
-
-// ParseAckFrame reads an ACK frame
-func ParseAckFrame(r *bytes.Reader, version protocol.VersionNumber) (*AckFrame, error) {
- if !version.UsesIETFFrameFormat() {
- return parseAckFrameLegacy(r, version)
- }
-
- if _, err := r.ReadByte(); err != nil {
- return nil, err
- }
-
- frame := &AckFrame{}
-
- largestAcked, err := utils.ReadVarInt(r)
- if err != nil {
- return nil, err
- }
- frame.LargestAcked = protocol.PacketNumber(largestAcked)
- delay, err := utils.ReadVarInt(r)
- if err != nil {
- return nil, err
- }
- frame.DelayTime = time.Duration(delay*1< frame.LargestAcked {
- return nil, errors.New("invalid first ACK range")
- }
- smallest := frame.LargestAcked - protocol.PacketNumber(ackBlock)
-
- // read all the other ACK ranges
- if numBlocks > 0 {
- frame.AckRanges = append(frame.AckRanges, AckRange{First: smallest, Last: frame.LargestAcked})
- }
- for i := uint64(0); i < numBlocks; i++ {
- g, err := utils.ReadVarInt(r)
- if err != nil {
- return nil, err
- }
- gap := protocol.PacketNumber(g)
- if smallest < gap+2 {
- return nil, errInvalidAckRanges
- }
- largest := smallest - gap - 2
-
- ab, err := utils.ReadVarInt(r)
- if err != nil {
- return nil, err
- }
- ackBlock := protocol.PacketNumber(ab)
-
- if ackBlock > largest {
- return nil, errInvalidAckRanges
- }
- smallest = largest - protocol.PacketNumber(ackBlock)
- frame.AckRanges = append(frame.AckRanges, AckRange{First: smallest, Last: largest})
- }
-
- frame.LowestAcked = smallest
- if !frame.validateAckRanges() {
- return nil, errInvalidAckRanges
- }
-
- return frame, nil
-}
-
-// Write writes an ACK frame.
-func (f *AckFrame) Write(b *bytes.Buffer, version protocol.VersionNumber) error {
- if !version.UsesIETFFrameFormat() {
- return f.writeLegacy(b, version)
- }
-
- b.WriteByte(0xe)
- utils.WriteVarInt(b, uint64(f.LargestAcked))
- utils.WriteVarInt(b, encodeAckDelay(f.DelayTime))
-
- // TODO: limit the number of ACK ranges, such that the frame doesn't grow larger than an upper bound
- var lowestInFirstRange protocol.PacketNumber
- if f.HasMissingRanges() {
- utils.WriteVarInt(b, uint64(len(f.AckRanges)-1))
- lowestInFirstRange = f.AckRanges[0].First
- } else {
- utils.WriteVarInt(b, 0)
- lowestInFirstRange = f.LowestAcked
- }
-
- // write the first range
- utils.WriteVarInt(b, uint64(f.LargestAcked-lowestInFirstRange))
-
- // write all the other range
- if !f.HasMissingRanges() {
- return nil
- }
- var lowest protocol.PacketNumber
- for i, ackRange := range f.AckRanges {
- if i == 0 {
- lowest = lowestInFirstRange
- continue
- }
- utils.WriteVarInt(b, uint64(lowest-ackRange.Last-2))
- utils.WriteVarInt(b, uint64(ackRange.Last-ackRange.First))
- lowest = ackRange.First
- }
- return nil
-}
-
-// MinLength of a written frame
-func (f *AckFrame) MinLength(version protocol.VersionNumber) protocol.ByteCount {
- if !version.UsesIETFFrameFormat() {
- return f.minLengthLegacy(version)
- }
-
- length := 1 + utils.VarIntLen(uint64(f.LargestAcked)) + utils.VarIntLen(uint64(encodeAckDelay(f.DelayTime)))
-
- var lowestInFirstRange protocol.PacketNumber
- if f.HasMissingRanges() {
- length += utils.VarIntLen(uint64(len(f.AckRanges) - 1))
- lowestInFirstRange = f.AckRanges[0].First
- } else {
- length += utils.VarIntLen(0)
- lowestInFirstRange = f.LowestAcked
- }
- length += utils.VarIntLen(uint64(f.LargestAcked - lowestInFirstRange))
-
- if !f.HasMissingRanges() {
- return length
- }
- var lowest protocol.PacketNumber
- for i, ackRange := range f.AckRanges {
- if i == 0 {
- lowest = ackRange.First
- continue
- }
- length += utils.VarIntLen(uint64(lowest - ackRange.Last - 2))
- length += utils.VarIntLen(uint64(ackRange.Last - ackRange.First))
- lowest = ackRange.First
- }
- return length
-}
-
-// HasMissingRanges returns if this frame reports any missing packets
-func (f *AckFrame) HasMissingRanges() bool {
- return len(f.AckRanges) > 0
-}
-
-func (f *AckFrame) validateAckRanges() bool {
- if len(f.AckRanges) == 0 {
- return true
- }
-
- // if there are missing packets, there will always be at least 2 ACK ranges
- if len(f.AckRanges) == 1 {
- return false
- }
-
- if f.AckRanges[0].Last != f.LargestAcked {
- return false
- }
-
- // check the validity of every single ACK range
- for _, ackRange := range f.AckRanges {
- if ackRange.First > ackRange.Last {
- return false
- }
- }
-
- // check the consistency for ACK with multiple NACK ranges
- for i, ackRange := range f.AckRanges {
- if i == 0 {
- continue
- }
- lastAckRange := f.AckRanges[i-1]
- if lastAckRange.First <= ackRange.First {
- return false
- }
- if lastAckRange.First <= ackRange.Last+1 {
- return false
- }
- }
-
- return true
-}
-
-// AcksPacket determines if this ACK frame acks a certain packet number
-func (f *AckFrame) AcksPacket(p protocol.PacketNumber) bool {
- if p < f.LowestAcked || p > f.LargestAcked { // this is just a performance optimization
- return false
- }
-
- if f.HasMissingRanges() {
- // TODO: this could be implemented as a binary search
- for _, ackRange := range f.AckRanges {
- if p >= ackRange.First && p <= ackRange.Last {
- return true
- }
- }
- return false
- }
- // if packet doesn't have missing ranges
- return (p >= f.LowestAcked && p <= f.LargestAcked)
-}
-
-func encodeAckDelay(delay time.Duration) uint64 {
- return uint64(delay.Nanoseconds() / (1000 * (1 << ackDelayExponent)))
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/wire/ack_frame_legacy.go b/vendor/github.com/phuslu/quic-go/internal/wire/ack_frame_legacy.go
deleted file mode 100644
index 32bb525..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/wire/ack_frame_legacy.go
+++ /dev/null
@@ -1,381 +0,0 @@
-package wire
-
-import (
- "bytes"
- "errors"
- "time"
-
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/utils"
-)
-
-var (
- errInconsistentAckLargestAcked = errors.New("internal inconsistency: LargestAcked does not match ACK ranges")
- errInconsistentAckLowestAcked = errors.New("internal inconsistency: LowestAcked does not match ACK ranges")
- errInvalidAckRanges = errors.New("AckFrame: ACK frame contains invalid ACK ranges")
-)
-
-func parseAckFrameLegacy(r *bytes.Reader, _ protocol.VersionNumber) (*AckFrame, error) {
- frame := &AckFrame{}
-
- typeByte, err := r.ReadByte()
- if err != nil {
- return nil, err
- }
-
- hasMissingRanges := false
- if typeByte&0x20 == 0x20 {
- hasMissingRanges = true
- }
-
- largestAckedLen := 2 * ((typeByte & 0x0C) >> 2)
- if largestAckedLen == 0 {
- largestAckedLen = 1
- }
-
- missingSequenceNumberDeltaLen := 2 * (typeByte & 0x03)
- if missingSequenceNumberDeltaLen == 0 {
- missingSequenceNumberDeltaLen = 1
- }
-
- largestAcked, err := utils.BigEndian.ReadUintN(r, largestAckedLen)
- if err != nil {
- return nil, err
- }
- frame.LargestAcked = protocol.PacketNumber(largestAcked)
-
- delay, err := utils.BigEndian.ReadUfloat16(r)
- if err != nil {
- return nil, err
- }
- frame.DelayTime = time.Duration(delay) * time.Microsecond
-
- var numAckBlocks uint8
- if hasMissingRanges {
- numAckBlocks, err = r.ReadByte()
- if err != nil {
- return nil, err
- }
- }
-
- if hasMissingRanges && numAckBlocks == 0 {
- return nil, errInvalidAckRanges
- }
-
- ackBlockLength, err := utils.BigEndian.ReadUintN(r, missingSequenceNumberDeltaLen)
- if err != nil {
- return nil, err
- }
- if frame.LargestAcked > 0 && ackBlockLength < 1 {
- return nil, errors.New("invalid first ACK range")
- }
-
- if ackBlockLength > largestAcked+1 {
- return nil, errInvalidAckRanges
- }
-
- if hasMissingRanges {
- ackRange := AckRange{
- First: protocol.PacketNumber(largestAcked-ackBlockLength) + 1,
- Last: frame.LargestAcked,
- }
- frame.AckRanges = append(frame.AckRanges, ackRange)
-
- var inLongBlock bool
- var lastRangeComplete bool
- for i := uint8(0); i < numAckBlocks; i++ {
- var gap uint8
- gap, err = r.ReadByte()
- if err != nil {
- return nil, err
- }
-
- ackBlockLength, err = utils.BigEndian.ReadUintN(r, missingSequenceNumberDeltaLen)
- if err != nil {
- return nil, err
- }
-
- length := protocol.PacketNumber(ackBlockLength)
-
- if inLongBlock {
- frame.AckRanges[len(frame.AckRanges)-1].First -= protocol.PacketNumber(gap) + length
- frame.AckRanges[len(frame.AckRanges)-1].Last -= protocol.PacketNumber(gap)
- } else {
- lastRangeComplete = false
- ackRange := AckRange{
- Last: frame.AckRanges[len(frame.AckRanges)-1].First - protocol.PacketNumber(gap) - 1,
- }
- ackRange.First = ackRange.Last - length + 1
- frame.AckRanges = append(frame.AckRanges, ackRange)
- }
-
- if length > 0 {
- lastRangeComplete = true
- }
-
- inLongBlock = (ackBlockLength == 0)
- }
-
- // if the last range was not complete, First and Last make no sense
- // remove the range from frame.AckRanges
- if !lastRangeComplete {
- frame.AckRanges = frame.AckRanges[:len(frame.AckRanges)-1]
- }
-
- frame.LowestAcked = frame.AckRanges[len(frame.AckRanges)-1].First
- } else {
- if frame.LargestAcked == 0 {
- frame.LowestAcked = 0
- } else {
- frame.LowestAcked = protocol.PacketNumber(largestAcked + 1 - ackBlockLength)
- }
- }
-
- if !frame.validateAckRanges() {
- return nil, errInvalidAckRanges
- }
-
- var numTimestamp byte
- numTimestamp, err = r.ReadByte()
- if err != nil {
- return nil, err
- }
-
- if numTimestamp > 0 {
- // Delta Largest acked
- _, err = r.ReadByte()
- if err != nil {
- return nil, err
- }
- // First Timestamp
- _, err = utils.BigEndian.ReadUint32(r)
- if err != nil {
- return nil, err
- }
-
- for i := 0; i < int(numTimestamp)-1; i++ {
- // Delta Largest acked
- _, err = r.ReadByte()
- if err != nil {
- return nil, err
- }
-
- // Time Since Previous Timestamp
- _, err = utils.BigEndian.ReadUint16(r)
- if err != nil {
- return nil, err
- }
- }
- }
- return frame, nil
-}
-
-func (f *AckFrame) writeLegacy(b *bytes.Buffer, _ protocol.VersionNumber) error {
- largestAckedLen := protocol.GetPacketNumberLength(f.LargestAcked)
-
- typeByte := uint8(0x40)
-
- if largestAckedLen != protocol.PacketNumberLen1 {
- typeByte ^= (uint8(largestAckedLen / 2)) << 2
- }
-
- missingSequenceNumberDeltaLen := f.getMissingSequenceNumberDeltaLen()
- if missingSequenceNumberDeltaLen != protocol.PacketNumberLen1 {
- typeByte ^= (uint8(missingSequenceNumberDeltaLen / 2))
- }
-
- if f.HasMissingRanges() {
- typeByte |= 0x20
- }
-
- b.WriteByte(typeByte)
-
- switch largestAckedLen {
- case protocol.PacketNumberLen1:
- b.WriteByte(uint8(f.LargestAcked))
- case protocol.PacketNumberLen2:
- utils.BigEndian.WriteUint16(b, uint16(f.LargestAcked))
- case protocol.PacketNumberLen4:
- utils.BigEndian.WriteUint32(b, uint32(f.LargestAcked))
- case protocol.PacketNumberLen6:
- utils.BigEndian.WriteUint48(b, uint64(f.LargestAcked)&(1<<48-1))
- }
-
- f.DelayTime = time.Since(f.PacketReceivedTime)
- utils.BigEndian.WriteUfloat16(b, uint64(f.DelayTime/time.Microsecond))
-
- var numRanges uint64
- var numRangesWritten uint64
- if f.HasMissingRanges() {
- numRanges = f.numWritableNackRanges()
- if numRanges > 0xFF {
- panic("AckFrame: Too many ACK ranges")
- }
- b.WriteByte(uint8(numRanges - 1))
- }
-
- var firstAckBlockLength protocol.PacketNumber
- if !f.HasMissingRanges() {
- firstAckBlockLength = f.LargestAcked - f.LowestAcked + 1
- } else {
- if f.LargestAcked != f.AckRanges[0].Last {
- return errInconsistentAckLargestAcked
- }
- if f.LowestAcked != f.AckRanges[len(f.AckRanges)-1].First {
- return errInconsistentAckLowestAcked
- }
- firstAckBlockLength = f.LargestAcked - f.AckRanges[0].First + 1
- numRangesWritten++
- }
-
- switch missingSequenceNumberDeltaLen {
- case protocol.PacketNumberLen1:
- b.WriteByte(uint8(firstAckBlockLength))
- case protocol.PacketNumberLen2:
- utils.BigEndian.WriteUint16(b, uint16(firstAckBlockLength))
- case protocol.PacketNumberLen4:
- utils.BigEndian.WriteUint32(b, uint32(firstAckBlockLength))
- case protocol.PacketNumberLen6:
- utils.BigEndian.WriteUint48(b, uint64(firstAckBlockLength)&(1<<48-1))
- }
-
- for i, ackRange := range f.AckRanges {
- if i == 0 {
- continue
- }
-
- length := ackRange.Last - ackRange.First + 1
- gap := f.AckRanges[i-1].First - ackRange.Last - 1
-
- num := gap/0xFF + 1
- if gap%0xFF == 0 {
- num--
- }
-
- if num == 1 {
- b.WriteByte(uint8(gap))
- switch missingSequenceNumberDeltaLen {
- case protocol.PacketNumberLen1:
- b.WriteByte(uint8(length))
- case protocol.PacketNumberLen2:
- utils.BigEndian.WriteUint16(b, uint16(length))
- case protocol.PacketNumberLen4:
- utils.BigEndian.WriteUint32(b, uint32(length))
- case protocol.PacketNumberLen6:
- utils.BigEndian.WriteUint48(b, uint64(length)&(1<<48-1))
- }
- numRangesWritten++
- } else {
- for i := 0; i < int(num); i++ {
- var lengthWritten uint64
- var gapWritten uint8
-
- if i == int(num)-1 { // last block
- lengthWritten = uint64(length)
- gapWritten = uint8(1 + ((gap - 1) % 255))
- } else {
- lengthWritten = 0
- gapWritten = 0xFF
- }
-
- b.WriteByte(gapWritten)
- switch missingSequenceNumberDeltaLen {
- case protocol.PacketNumberLen1:
- b.WriteByte(uint8(lengthWritten))
- case protocol.PacketNumberLen2:
- utils.BigEndian.WriteUint16(b, uint16(lengthWritten))
- case protocol.PacketNumberLen4:
- utils.BigEndian.WriteUint32(b, uint32(lengthWritten))
- case protocol.PacketNumberLen6:
- utils.BigEndian.WriteUint48(b, lengthWritten&(1<<48-1))
- }
-
- numRangesWritten++
- }
- }
-
- // this is needed if not all AckRanges can be written to the ACK frame (if there are more than 0xFF)
- if numRangesWritten >= numRanges {
- break
- }
- }
-
- if numRanges != numRangesWritten {
- return errors.New("BUG: Inconsistent number of ACK ranges written")
- }
-
- b.WriteByte(0) // no timestamps
- return nil
-}
-
-func (f *AckFrame) minLengthLegacy(_ protocol.VersionNumber) protocol.ByteCount {
- length := protocol.ByteCount(1 + 2 + 1) // 1 TypeByte, 2 ACK delay time, 1 Num Timestamp
- length += protocol.ByteCount(protocol.GetPacketNumberLength(f.LargestAcked))
-
- missingSequenceNumberDeltaLen := protocol.ByteCount(f.getMissingSequenceNumberDeltaLen())
-
- if f.HasMissingRanges() {
- length += (1 + missingSequenceNumberDeltaLen) * protocol.ByteCount(f.numWritableNackRanges())
- } else {
- length += missingSequenceNumberDeltaLen
- }
- // we don't write
- return length
-}
-
-// numWritableNackRanges calculates the number of ACK blocks that are about to be written
-// this number is different from len(f.AckRanges) for the case of long gaps (> 255 packets)
-func (f *AckFrame) numWritableNackRanges() uint64 {
- if len(f.AckRanges) == 0 {
- return 0
- }
-
- var numRanges uint64
- for i, ackRange := range f.AckRanges {
- if i == 0 {
- continue
- }
-
- lastAckRange := f.AckRanges[i-1]
- gap := lastAckRange.First - ackRange.Last - 1
- rangeLength := 1 + uint64(gap)/0xFF
- if uint64(gap)%0xFF == 0 {
- rangeLength--
- }
-
- if numRanges+rangeLength < 0xFF {
- numRanges += rangeLength
- } else {
- break
- }
- }
-
- return numRanges + 1
-}
-
-func (f *AckFrame) getMissingSequenceNumberDeltaLen() protocol.PacketNumberLen {
- var maxRangeLength protocol.PacketNumber
-
- if f.HasMissingRanges() {
- for _, ackRange := range f.AckRanges {
- rangeLength := ackRange.Last - ackRange.First + 1
- if rangeLength > maxRangeLength {
- maxRangeLength = rangeLength
- }
- }
- } else {
- maxRangeLength = f.LargestAcked - f.LowestAcked + 1
- }
-
- if maxRangeLength <= 0xFF {
- return protocol.PacketNumberLen1
- }
- if maxRangeLength <= 0xFFFF {
- return protocol.PacketNumberLen2
- }
- if maxRangeLength <= 0xFFFFFFFF {
- return protocol.PacketNumberLen4
- }
-
- return protocol.PacketNumberLen6
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/wire/ack_range.go b/vendor/github.com/phuslu/quic-go/internal/wire/ack_range.go
deleted file mode 100644
index ed67e99..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/wire/ack_range.go
+++ /dev/null
@@ -1,9 +0,0 @@
-package wire
-
-import "github.com/phuslu/quic-go/internal/protocol"
-
-// AckRange is an ACK range
-type AckRange struct {
- First protocol.PacketNumber
- Last protocol.PacketNumber
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/wire/blocked_frame.go b/vendor/github.com/phuslu/quic-go/internal/wire/blocked_frame.go
deleted file mode 100644
index ea6f987..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/wire/blocked_frame.go
+++ /dev/null
@@ -1,45 +0,0 @@
-package wire
-
-import (
- "bytes"
-
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/utils"
-)
-
-// A BlockedFrame is a BLOCKED frame
-type BlockedFrame struct {
- Offset protocol.ByteCount
-}
-
-// ParseBlockedFrame parses a BLOCKED frame
-func ParseBlockedFrame(r *bytes.Reader, _ protocol.VersionNumber) (*BlockedFrame, error) {
- if _, err := r.ReadByte(); err != nil {
- return nil, err
- }
- offset, err := utils.ReadVarInt(r)
- if err != nil {
- return nil, err
- }
- return &BlockedFrame{
- Offset: protocol.ByteCount(offset),
- }, nil
-}
-
-func (f *BlockedFrame) Write(b *bytes.Buffer, version protocol.VersionNumber) error {
- if !version.UsesIETFFrameFormat() {
- return (&blockedFrameLegacy{}).Write(b, version)
- }
- typeByte := uint8(0x08)
- b.WriteByte(typeByte)
- utils.WriteVarInt(b, uint64(f.Offset))
- return nil
-}
-
-// MinLength of a written frame
-func (f *BlockedFrame) MinLength(version protocol.VersionNumber) protocol.ByteCount {
- if !version.UsesIETFFrameFormat() {
- return 1 + 4
- }
- return 1 + utils.VarIntLen(uint64(f.Offset))
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/wire/blocked_frame_legacy.go b/vendor/github.com/phuslu/quic-go/internal/wire/blocked_frame_legacy.go
deleted file mode 100644
index e0235a3..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/wire/blocked_frame_legacy.go
+++ /dev/null
@@ -1,37 +0,0 @@
-package wire
-
-import (
- "bytes"
-
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/utils"
-)
-
-type blockedFrameLegacy struct {
- StreamID protocol.StreamID
-}
-
-// ParseBlockedFrameLegacy parses a BLOCKED frame (in gQUIC format)
-// The frame returned is
-// * a STREAM_BLOCKED frame, if the BLOCKED applies to a stream
-// * a BLOCKED frame, if the BLOCKED applies to the connection
-func ParseBlockedFrameLegacy(r *bytes.Reader, _ protocol.VersionNumber) (Frame, error) {
- if _, err := r.ReadByte(); err != nil { // read the TypeByte
- return nil, err
- }
- streamID, err := utils.BigEndian.ReadUint32(r)
- if err != nil {
- return nil, err
- }
- if streamID == 0 {
- return &BlockedFrame{}, nil
- }
- return &StreamBlockedFrame{StreamID: protocol.StreamID(streamID)}, nil
-}
-
-//Write writes a BLOCKED frame
-func (f *blockedFrameLegacy) Write(b *bytes.Buffer, _ protocol.VersionNumber) error {
- b.WriteByte(0x05)
- utils.BigEndian.WriteUint32(b, uint32(f.StreamID))
- return nil
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/wire/connection_close_frame.go b/vendor/github.com/phuslu/quic-go/internal/wire/connection_close_frame.go
deleted file mode 100644
index 9b6973f..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/wire/connection_close_frame.go
+++ /dev/null
@@ -1,96 +0,0 @@
-package wire
-
-import (
- "bytes"
- "errors"
- "io"
- "math"
-
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/utils"
- "github.com/phuslu/quic-go/qerr"
-)
-
-// A ConnectionCloseFrame in QUIC
-type ConnectionCloseFrame struct {
- ErrorCode qerr.ErrorCode
- ReasonPhrase string
-}
-
-// ParseConnectionCloseFrame reads a CONNECTION_CLOSE frame
-func ParseConnectionCloseFrame(r *bytes.Reader, version protocol.VersionNumber) (*ConnectionCloseFrame, error) {
- if _, err := r.ReadByte(); err != nil { // read the TypeByte
- return nil, err
- }
-
- var errorCode qerr.ErrorCode
- var reasonPhraseLen uint64
- if version.UsesIETFFrameFormat() {
- ec, err := utils.BigEndian.ReadUint16(r)
- if err != nil {
- return nil, err
- }
- errorCode = qerr.ErrorCode(ec)
- reasonPhraseLen, err = utils.ReadVarInt(r)
- if err != nil {
- return nil, err
- }
- } else {
- ec, err := utils.BigEndian.ReadUint32(r)
- if err != nil {
- return nil, err
- }
- errorCode = qerr.ErrorCode(ec)
- length, err := utils.BigEndian.ReadUint16(r)
- if err != nil {
- return nil, err
- }
- reasonPhraseLen = uint64(length)
- }
-
- // shortcut to prevent the unneccessary allocation of dataLen bytes
- // if the dataLen is larger than the remaining length of the packet
- // reading the whole reason phrase would result in EOF when attempting to READ
- if int(reasonPhraseLen) > r.Len() {
- return nil, io.EOF
- }
-
- reasonPhrase := make([]byte, reasonPhraseLen)
- if _, err := io.ReadFull(r, reasonPhrase); err != nil {
- // this should never happen, since we already checked the reasonPhraseLen earlier
- return nil, err
- }
-
- return &ConnectionCloseFrame{
- ErrorCode: qerr.ErrorCode(errorCode),
- ReasonPhrase: string(reasonPhrase),
- }, nil
-}
-
-// MinLength of a written frame
-func (f *ConnectionCloseFrame) MinLength(version protocol.VersionNumber) protocol.ByteCount {
- if version.UsesIETFFrameFormat() {
- return 1 + 2 + utils.VarIntLen(uint64(len(f.ReasonPhrase))) + protocol.ByteCount(len(f.ReasonPhrase))
- }
- return 1 + 4 + 2 + protocol.ByteCount(len(f.ReasonPhrase))
-}
-
-// Write writes an CONNECTION_CLOSE frame.
-func (f *ConnectionCloseFrame) Write(b *bytes.Buffer, version protocol.VersionNumber) error {
- b.WriteByte(0x02)
-
- if len(f.ReasonPhrase) > math.MaxUint16 {
- return errors.New("ConnectionFrame: ReasonPhrase too long")
- }
-
- if version.UsesIETFFrameFormat() {
- utils.BigEndian.WriteUint16(b, uint16(f.ErrorCode))
- utils.WriteVarInt(b, uint64(len(f.ReasonPhrase)))
- } else {
- utils.BigEndian.WriteUint32(b, uint32(f.ErrorCode))
- utils.BigEndian.WriteUint16(b, uint16(len(f.ReasonPhrase)))
- }
- b.WriteString(f.ReasonPhrase)
-
- return nil
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/wire/frame.go b/vendor/github.com/phuslu/quic-go/internal/wire/frame.go
deleted file mode 100644
index c575067..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/wire/frame.go
+++ /dev/null
@@ -1,13 +0,0 @@
-package wire
-
-import (
- "bytes"
-
- "github.com/phuslu/quic-go/internal/protocol"
-)
-
-// A Frame in QUIC
-type Frame interface {
- Write(b *bytes.Buffer, version protocol.VersionNumber) error
- MinLength(version protocol.VersionNumber) protocol.ByteCount
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/wire/goaway_frame.go b/vendor/github.com/phuslu/quic-go/internal/wire/goaway_frame.go
deleted file mode 100644
index 2f5ff64..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/wire/goaway_frame.go
+++ /dev/null
@@ -1,68 +0,0 @@
-package wire
-
-import (
- "bytes"
- "io"
-
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/utils"
- "github.com/phuslu/quic-go/qerr"
-)
-
-// A GoawayFrame is a GOAWAY frame
-type GoawayFrame struct {
- ErrorCode qerr.ErrorCode
- LastGoodStream protocol.StreamID
- ReasonPhrase string
-}
-
-// ParseGoawayFrame parses a GOAWAY frame
-func ParseGoawayFrame(r *bytes.Reader, _ protocol.VersionNumber) (*GoawayFrame, error) {
- frame := &GoawayFrame{}
-
- if _, err := r.ReadByte(); err != nil {
- return nil, err
- }
-
- errorCode, err := utils.BigEndian.ReadUint32(r)
- if err != nil {
- return nil, err
- }
- frame.ErrorCode = qerr.ErrorCode(errorCode)
-
- lastGoodStream, err := utils.BigEndian.ReadUint32(r)
- if err != nil {
- return nil, err
- }
- frame.LastGoodStream = protocol.StreamID(lastGoodStream)
-
- reasonPhraseLen, err := utils.BigEndian.ReadUint16(r)
- if err != nil {
- return nil, err
- }
-
- if reasonPhraseLen > uint16(protocol.MaxPacketSize) {
- return nil, qerr.Error(qerr.InvalidGoawayData, "reason phrase too long")
- }
-
- reasonPhrase := make([]byte, reasonPhraseLen)
- if _, err := io.ReadFull(r, reasonPhrase); err != nil {
- return nil, err
- }
- frame.ReasonPhrase = string(reasonPhrase)
- return frame, nil
-}
-
-func (f *GoawayFrame) Write(b *bytes.Buffer, _ protocol.VersionNumber) error {
- b.WriteByte(0x03)
- utils.BigEndian.WriteUint32(b, uint32(f.ErrorCode))
- utils.BigEndian.WriteUint32(b, uint32(f.LastGoodStream))
- utils.BigEndian.WriteUint16(b, uint16(len(f.ReasonPhrase)))
- b.WriteString(f.ReasonPhrase)
- return nil
-}
-
-// MinLength of a written frame
-func (f *GoawayFrame) MinLength(version protocol.VersionNumber) protocol.ByteCount {
- return protocol.ByteCount(1 + 4 + 4 + 2 + len(f.ReasonPhrase))
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/wire/header.go b/vendor/github.com/phuslu/quic-go/internal/wire/header.go
deleted file mode 100644
index a2081d7..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/wire/header.go
+++ /dev/null
@@ -1,110 +0,0 @@
-package wire
-
-import (
- "bytes"
-
- "github.com/phuslu/quic-go/internal/protocol"
-)
-
-// Header is the header of a QUIC packet.
-// It contains fields that are only needed for the gQUIC Public Header and the IETF draft Header.
-type Header struct {
- Raw []byte
- ConnectionID protocol.ConnectionID
- OmitConnectionID bool
- PacketNumberLen protocol.PacketNumberLen
- PacketNumber protocol.PacketNumber
- Version protocol.VersionNumber // VersionNumber sent by the client
-
- IsVersionNegotiation bool
- SupportedVersions []protocol.VersionNumber // Version Number sent in a Version Negotiation Packet by the server
-
- // only needed for the gQUIC Public Header
- VersionFlag bool
- ResetFlag bool
- DiversificationNonce []byte
-
- // only needed for the IETF Header
- Type protocol.PacketType
- IsLongHeader bool
- KeyPhase int
-
- // only needed for logging
- isPublicHeader bool
-}
-
-// ParseHeaderSentByServer parses the header for a packet that was sent by the server.
-func ParseHeaderSentByServer(b *bytes.Reader, version protocol.VersionNumber) (*Header, error) {
- typeByte, err := b.ReadByte()
- if err != nil {
- return nil, err
- }
- _ = b.UnreadByte() // unread the type byte
-
- var isPublicHeader bool
- if typeByte&0x80 > 0 { // gQUIC always has 0x80 unset. IETF Long Header or Version Negotiation
- isPublicHeader = false
- } else if typeByte&0xcf == 0x9 { // gQUIC Version Negotiation Packet
- isPublicHeader = true
- } else {
- // the client knows the version that this packet was sent with
- isPublicHeader = !version.UsesTLS()
- }
- return parsePacketHeader(b, protocol.PerspectiveServer, isPublicHeader)
-}
-
-// ParseHeaderSentByClient parses the header for a packet that was sent by the client.
-func ParseHeaderSentByClient(b *bytes.Reader) (*Header, error) {
- typeByte, err := b.ReadByte()
- if err != nil {
- return nil, err
- }
- _ = b.UnreadByte() // unread the type byte
-
- // If this is a gQUIC header 0x80 and 0x40 will be set to 0.
- // If this is an IETF QUIC header there are two options:
- // * either 0x80 will be 1 (for the Long Header)
- // * or 0x40 (the Connection ID Flag) will be 0 (for the Short Header), since we don't the client to omit it
- isPublicHeader := typeByte&0xc0 == 0
-
- return parsePacketHeader(b, protocol.PerspectiveClient, isPublicHeader)
-}
-
-func parsePacketHeader(b *bytes.Reader, sentBy protocol.Perspective, isPublicHeader bool) (*Header, error) {
- // This is a gQUIC Public Header.
- if isPublicHeader {
- hdr, err := parsePublicHeader(b, sentBy)
- if err != nil {
- return nil, err
- }
- hdr.isPublicHeader = true // save that this is a Public Header, so we can log it correctly later
- return hdr, nil
- }
- return parseHeader(b, sentBy)
-}
-
-// Write writes the Header.
-func (h *Header) Write(b *bytes.Buffer, pers protocol.Perspective, version protocol.VersionNumber) error {
- if !version.UsesTLS() {
- h.isPublicHeader = true // save that this is a Public Header, so we can log it correctly later
- return h.writePublicHeader(b, pers, version)
- }
- return h.writeHeader(b)
-}
-
-// GetLength determines the length of the Header.
-func (h *Header) GetLength(pers protocol.Perspective, version protocol.VersionNumber) (protocol.ByteCount, error) {
- if !version.UsesTLS() {
- return h.getPublicHeaderLength(pers)
- }
- return h.getHeaderLength()
-}
-
-// Log logs the Header
-func (h *Header) Log() {
- if h.isPublicHeader {
- h.logPublicHeader()
- } else {
- h.logHeader()
- }
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/wire/ietf_header.go b/vendor/github.com/phuslu/quic-go/internal/wire/ietf_header.go
deleted file mode 100644
index 1d0ad6d..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/wire/ietf_header.go
+++ /dev/null
@@ -1,172 +0,0 @@
-package wire
-
-import (
- "bytes"
- "fmt"
-
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/utils"
- "github.com/phuslu/quic-go/qerr"
-)
-
-// parseHeader parses the header.
-func parseHeader(b *bytes.Reader, packetSentBy protocol.Perspective) (*Header, error) {
- typeByte, err := b.ReadByte()
- if err != nil {
- return nil, err
- }
- if typeByte&0x80 > 0 {
- return parseLongHeader(b, packetSentBy, typeByte)
- }
- return parseShortHeader(b, typeByte)
-}
-
-// parse long header and version negotiation packets
-func parseLongHeader(b *bytes.Reader, sentBy protocol.Perspective, typeByte byte) (*Header, error) {
- connID, err := utils.BigEndian.ReadUint64(b)
- if err != nil {
- return nil, err
- }
- v, err := utils.BigEndian.ReadUint32(b)
- if err != nil {
- return nil, err
- }
- pn, err := utils.BigEndian.ReadUint32(b)
- if err != nil {
- return nil, err
- }
- h := &Header{
- ConnectionID: protocol.ConnectionID(connID),
- PacketNumber: protocol.PacketNumber(pn),
- PacketNumberLen: protocol.PacketNumberLen4,
- Version: protocol.VersionNumber(v),
- }
- if v == 0 { // version negotiation packet
- if sentBy == protocol.PerspectiveClient {
- return nil, qerr.InvalidVersion
- }
- if b.Len() == 0 {
- return nil, qerr.Error(qerr.InvalidVersionNegotiationPacket, "empty version list")
- }
- h.IsVersionNegotiation = true
- h.SupportedVersions = make([]protocol.VersionNumber, b.Len()/4)
- for i := 0; b.Len() > 0; i++ {
- v, err := utils.BigEndian.ReadUint32(b)
- if err != nil {
- return nil, qerr.InvalidVersionNegotiationPacket
- }
- h.SupportedVersions[i] = protocol.VersionNumber(v)
- }
- return h, nil
- }
- h.IsLongHeader = true
- h.Type = protocol.PacketType(typeByte & 0x7f)
- if sentBy == protocol.PerspectiveClient && (h.Type != protocol.PacketTypeInitial && h.Type != protocol.PacketTypeHandshake && h.Type != protocol.PacketType0RTT) {
- return nil, qerr.Error(qerr.InvalidPacketHeader, fmt.Sprintf("Received packet with invalid packet type: %d", h.Type))
- }
- if sentBy == protocol.PerspectiveServer && (h.Type != protocol.PacketTypeRetry && h.Type != protocol.PacketTypeHandshake) {
- return nil, qerr.Error(qerr.InvalidPacketHeader, fmt.Sprintf("Received packet with invalid packet type: %d", h.Type))
- }
- return h, nil
-}
-
-func parseShortHeader(b *bytes.Reader, typeByte byte) (*Header, error) {
- hasConnID := typeByte&0x40 > 0
- var connID uint64
- if hasConnID {
- var err error
- connID, err = utils.BigEndian.ReadUint64(b)
- if err != nil {
- return nil, err
- }
- }
- pnLen := 1 << ((typeByte & 0x3) - 1)
- pn, err := utils.BigEndian.ReadUintN(b, uint8(pnLen))
- if err != nil {
- return nil, err
- }
- return &Header{
- KeyPhase: int(typeByte&0x20) >> 5,
- OmitConnectionID: !hasConnID,
- ConnectionID: protocol.ConnectionID(connID),
- PacketNumber: protocol.PacketNumber(pn),
- PacketNumberLen: protocol.PacketNumberLen(pnLen),
- }, nil
-}
-
-// writeHeader writes the Header.
-func (h *Header) writeHeader(b *bytes.Buffer) error {
- if h.IsLongHeader {
- return h.writeLongHeader(b)
- }
- return h.writeShortHeader(b)
-}
-
-// TODO: add support for the key phase
-func (h *Header) writeLongHeader(b *bytes.Buffer) error {
- b.WriteByte(byte(0x80 | h.Type))
- utils.BigEndian.WriteUint64(b, uint64(h.ConnectionID))
- utils.BigEndian.WriteUint32(b, uint32(h.Version))
- utils.BigEndian.WriteUint32(b, uint32(h.PacketNumber))
- return nil
-}
-
-func (h *Header) writeShortHeader(b *bytes.Buffer) error {
- typeByte := byte(h.KeyPhase << 5)
- if !h.OmitConnectionID {
- typeByte ^= 0x40
- }
- switch h.PacketNumberLen {
- case protocol.PacketNumberLen1:
- typeByte ^= 0x1
- case protocol.PacketNumberLen2:
- typeByte ^= 0x2
- case protocol.PacketNumberLen4:
- typeByte ^= 0x3
- default:
- return fmt.Errorf("invalid packet number length: %d", h.PacketNumberLen)
- }
- b.WriteByte(typeByte)
-
- if !h.OmitConnectionID {
- utils.BigEndian.WriteUint64(b, uint64(h.ConnectionID))
- }
- switch h.PacketNumberLen {
- case protocol.PacketNumberLen1:
- b.WriteByte(uint8(h.PacketNumber))
- case protocol.PacketNumberLen2:
- utils.BigEndian.WriteUint16(b, uint16(h.PacketNumber))
- case protocol.PacketNumberLen4:
- utils.BigEndian.WriteUint32(b, uint32(h.PacketNumber))
- }
- return nil
-}
-
-// getHeaderLength gets the length of the Header in bytes.
-func (h *Header) getHeaderLength() (protocol.ByteCount, error) {
- if h.IsLongHeader {
- return 1 + 8 + 4 + 4, nil
- }
-
- length := protocol.ByteCount(1) // type byte
- if !h.OmitConnectionID {
- length += 8
- }
- if h.PacketNumberLen != protocol.PacketNumberLen1 && h.PacketNumberLen != protocol.PacketNumberLen2 && h.PacketNumberLen != protocol.PacketNumberLen4 {
- return 0, fmt.Errorf("invalid packet number length: %d", h.PacketNumberLen)
- }
- length += protocol.ByteCount(h.PacketNumberLen)
- return length, nil
-}
-
-func (h *Header) logHeader() {
- if h.IsLongHeader {
- utils.Debugf(" Long Header{Type: %s, ConnectionID: %#x, PacketNumber: %#x, Version: %s}", h.Type, h.ConnectionID, h.PacketNumber, h.Version)
- } else {
- connID := "(omitted)"
- if !h.OmitConnectionID {
- connID = fmt.Sprintf("%#x", h.ConnectionID)
- }
- utils.Debugf(" Short Header{ConnectionID: %s, PacketNumber: %#x, PacketNumberLen: %d, KeyPhase: %d}", connID, h.PacketNumber, h.PacketNumberLen, h.KeyPhase)
- }
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/wire/log.go b/vendor/github.com/phuslu/quic-go/internal/wire/log.go
deleted file mode 100644
index ff7fc88..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/wire/log.go
+++ /dev/null
@@ -1,28 +0,0 @@
-package wire
-
-import "github.com/phuslu/quic-go/internal/utils"
-
-// LogFrame logs a frame, either sent or received
-func LogFrame(frame Frame, sent bool) {
- if !utils.Debug() {
- return
- }
- dir := "<-"
- if sent {
- dir = "->"
- }
- switch f := frame.(type) {
- case *StreamFrame:
- utils.Debugf("\t%s &wire.StreamFrame{StreamID: %d, FinBit: %t, Offset: 0x%x, Data length: 0x%x, Offset + Data length: 0x%x}", dir, f.StreamID, f.FinBit, f.Offset, f.DataLen(), f.Offset+f.DataLen())
- case *StopWaitingFrame:
- if sent {
- utils.Debugf("\t%s &wire.StopWaitingFrame{LeastUnacked: 0x%x, PacketNumberLen: 0x%x}", dir, f.LeastUnacked, f.PacketNumberLen)
- } else {
- utils.Debugf("\t%s &wire.StopWaitingFrame{LeastUnacked: 0x%x}", dir, f.LeastUnacked)
- }
- case *AckFrame:
- utils.Debugf("\t%s &wire.AckFrame{LargestAcked: 0x%x, LowestAcked: 0x%x, AckRanges: %#v, DelayTime: %s}", dir, f.LargestAcked, f.LowestAcked, f.AckRanges, f.DelayTime.String())
- default:
- utils.Debugf("\t%s %#v", dir, frame)
- }
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/wire/max_data_frame.go b/vendor/github.com/phuslu/quic-go/internal/wire/max_data_frame.go
deleted file mode 100644
index fb8f97b..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/wire/max_data_frame.go
+++ /dev/null
@@ -1,51 +0,0 @@
-package wire
-
-import (
- "bytes"
-
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/utils"
-)
-
-// A MaxDataFrame carries flow control information for the connection
-type MaxDataFrame struct {
- ByteOffset protocol.ByteCount
-}
-
-// ParseMaxDataFrame parses a MAX_DATA frame
-func ParseMaxDataFrame(r *bytes.Reader, version protocol.VersionNumber) (*MaxDataFrame, error) {
- // read the TypeByte
- if _, err := r.ReadByte(); err != nil {
- return nil, err
- }
-
- frame := &MaxDataFrame{}
- byteOffset, err := utils.ReadVarInt(r)
- if err != nil {
- return nil, err
- }
- frame.ByteOffset = protocol.ByteCount(byteOffset)
- return frame, nil
-}
-
-//Write writes a MAX_STREAM_DATA frame
-func (f *MaxDataFrame) Write(b *bytes.Buffer, version protocol.VersionNumber) error {
- if !version.UsesIETFFrameFormat() {
- // write a gQUIC WINDOW_UPDATE frame (with stream ID 0, which means connection-level there)
- return (&windowUpdateFrame{
- StreamID: 0,
- ByteOffset: f.ByteOffset,
- }).Write(b, version)
- }
- b.WriteByte(0x4)
- utils.WriteVarInt(b, uint64(f.ByteOffset))
- return nil
-}
-
-// MinLength of a written frame
-func (f *MaxDataFrame) MinLength(version protocol.VersionNumber) protocol.ByteCount {
- if !version.UsesIETFFrameFormat() { // writing this frame would result in a gQUIC WINDOW_UPDATE being written, which is longer
- return 1 + 4 + 8
- }
- return 1 + utils.VarIntLen(uint64(f.ByteOffset))
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/wire/max_stream_data_frame.go b/vendor/github.com/phuslu/quic-go/internal/wire/max_stream_data_frame.go
deleted file mode 100644
index b0792ec..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/wire/max_stream_data_frame.go
+++ /dev/null
@@ -1,60 +0,0 @@
-package wire
-
-import (
- "bytes"
-
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/utils"
-)
-
-// A MaxStreamDataFrame carries flow control information for a stream
-type MaxStreamDataFrame struct {
- StreamID protocol.StreamID
- ByteOffset protocol.ByteCount
-}
-
-// ParseMaxStreamDataFrame parses a MAX_STREAM_DATA frame
-func ParseMaxStreamDataFrame(r *bytes.Reader, version protocol.VersionNumber) (*MaxStreamDataFrame, error) {
- frame := &MaxStreamDataFrame{}
-
- // read the TypeByte
- if _, err := r.ReadByte(); err != nil {
- return nil, err
- }
-
- sid, err := utils.ReadVarInt(r)
- if err != nil {
- return nil, err
- }
- frame.StreamID = protocol.StreamID(sid)
-
- byteOffset, err := utils.ReadVarInt(r)
- if err != nil {
- return nil, err
- }
- frame.ByteOffset = protocol.ByteCount(byteOffset)
- return frame, nil
-}
-
-// Write writes a MAX_STREAM_DATA frame
-func (f *MaxStreamDataFrame) Write(b *bytes.Buffer, version protocol.VersionNumber) error {
- if !version.UsesIETFFrameFormat() {
- return (&windowUpdateFrame{
- StreamID: f.StreamID,
- ByteOffset: f.ByteOffset,
- }).Write(b, version)
- }
- b.WriteByte(0x5)
- utils.WriteVarInt(b, uint64(f.StreamID))
- utils.WriteVarInt(b, uint64(f.ByteOffset))
- return nil
-}
-
-// MinLength of a written frame
-func (f *MaxStreamDataFrame) MinLength(version protocol.VersionNumber) protocol.ByteCount {
- // writing this frame would result in a gQUIC WINDOW_UPDATE being written, which has a different length
- if !version.UsesIETFFrameFormat() {
- return 1 + 4 + 8
- }
- return 1 + utils.VarIntLen(uint64(f.StreamID)) + utils.VarIntLen(uint64(f.ByteOffset))
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/wire/max_stream_id_frame.go b/vendor/github.com/phuslu/quic-go/internal/wire/max_stream_id_frame.go
deleted file mode 100644
index dcf2969..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/wire/max_stream_id_frame.go
+++ /dev/null
@@ -1,37 +0,0 @@
-package wire
-
-import (
- "bytes"
-
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/utils"
-)
-
-// A MaxStreamIDFrame is a MAX_STREAM_ID frame
-type MaxStreamIDFrame struct {
- StreamID protocol.StreamID
-}
-
-// ParseMaxStreamIDFrame parses a MAX_STREAM_ID frame
-func ParseMaxStreamIDFrame(r *bytes.Reader, _ protocol.VersionNumber) (*MaxStreamIDFrame, error) {
- // read the Type byte
- if _, err := r.ReadByte(); err != nil {
- return nil, err
- }
- streamID, err := utils.ReadVarInt(r)
- if err != nil {
- return nil, err
- }
- return &MaxStreamIDFrame{StreamID: protocol.StreamID(streamID)}, nil
-}
-
-func (f *MaxStreamIDFrame) Write(b *bytes.Buffer, _ protocol.VersionNumber) error {
- b.WriteByte(0x6)
- utils.WriteVarInt(b, uint64(f.StreamID))
- return nil
-}
-
-// MinLength of a written frame
-func (f *MaxStreamIDFrame) MinLength(protocol.VersionNumber) protocol.ByteCount {
- return 1 + utils.VarIntLen(uint64(f.StreamID))
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/wire/ping_frame.go b/vendor/github.com/phuslu/quic-go/internal/wire/ping_frame.go
deleted file mode 100644
index 654d69d..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/wire/ping_frame.go
+++ /dev/null
@@ -1,33 +0,0 @@
-package wire
-
-import (
- "bytes"
-
- "github.com/phuslu/quic-go/internal/protocol"
-)
-
-// A PingFrame is a ping frame
-type PingFrame struct{}
-
-// ParsePingFrame parses a Ping frame
-func ParsePingFrame(r *bytes.Reader, version protocol.VersionNumber) (*PingFrame, error) {
- frame := &PingFrame{}
-
- _, err := r.ReadByte()
- if err != nil {
- return nil, err
- }
-
- return frame, nil
-}
-
-func (f *PingFrame) Write(b *bytes.Buffer, version protocol.VersionNumber) error {
- typeByte := uint8(0x07)
- b.WriteByte(typeByte)
- return nil
-}
-
-// MinLength of a written frame
-func (f *PingFrame) MinLength(version protocol.VersionNumber) protocol.ByteCount {
- return 1
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/wire/public_header.go b/vendor/github.com/phuslu/quic-go/internal/wire/public_header.go
deleted file mode 100644
index 9921d46..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/wire/public_header.go
+++ /dev/null
@@ -1,242 +0,0 @@
-package wire
-
-import (
- "bytes"
- "errors"
- "fmt"
- "io"
-
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/utils"
- "github.com/phuslu/quic-go/qerr"
-)
-
-var (
- errResetAndVersionFlagSet = errors.New("PublicHeader: Reset Flag and Version Flag should not be set at the same time")
- errReceivedOmittedConnectionID = qerr.Error(qerr.InvalidPacketHeader, "receiving packets with omitted ConnectionID is not supported")
- errInvalidConnectionID = qerr.Error(qerr.InvalidPacketHeader, "connection ID cannot be 0")
- errGetLengthNotForVersionNegotiation = errors.New("PublicHeader: GetLength cannot be called for VersionNegotiation packets")
-)
-
-// writePublicHeader writes a Public Header.
-func (h *Header) writePublicHeader(b *bytes.Buffer, pers protocol.Perspective, _ protocol.VersionNumber) error {
- if h.VersionFlag && h.ResetFlag {
- return errResetAndVersionFlagSet
- }
-
- publicFlagByte := uint8(0x00)
- if h.VersionFlag {
- publicFlagByte |= 0x01
- }
- if h.ResetFlag {
- publicFlagByte |= 0x02
- }
- if !h.OmitConnectionID {
- publicFlagByte |= 0x08
- }
- if len(h.DiversificationNonce) > 0 {
- if len(h.DiversificationNonce) != 32 {
- return errors.New("invalid diversification nonce length")
- }
- publicFlagByte |= 0x04
- }
- // only set PacketNumberLen bits if a packet number will be written
- if h.hasPacketNumber(pers) {
- switch h.PacketNumberLen {
- case protocol.PacketNumberLen1:
- publicFlagByte |= 0x00
- case protocol.PacketNumberLen2:
- publicFlagByte |= 0x10
- case protocol.PacketNumberLen4:
- publicFlagByte |= 0x20
- case protocol.PacketNumberLen6:
- publicFlagByte |= 0x30
- }
- }
- b.WriteByte(publicFlagByte)
-
- if !h.OmitConnectionID {
- utils.BigEndian.WriteUint64(b, uint64(h.ConnectionID))
- }
- if h.VersionFlag && pers == protocol.PerspectiveClient {
- utils.BigEndian.WriteUint32(b, uint32(h.Version))
- }
- if len(h.DiversificationNonce) > 0 {
- b.Write(h.DiversificationNonce)
- }
- // if we're a server, and the VersionFlag is set, we must not include anything else in the packet
- if !h.hasPacketNumber(pers) {
- return nil
- }
-
- switch h.PacketNumberLen {
- case protocol.PacketNumberLen1:
- b.WriteByte(uint8(h.PacketNumber))
- case protocol.PacketNumberLen2:
- utils.BigEndian.WriteUint16(b, uint16(h.PacketNumber))
- case protocol.PacketNumberLen4:
- utils.BigEndian.WriteUint32(b, uint32(h.PacketNumber))
- case protocol.PacketNumberLen6:
- utils.BigEndian.WriteUint48(b, uint64(h.PacketNumber)&(1<<48-1))
- default:
- return errors.New("PublicHeader: PacketNumberLen not set")
- }
-
- return nil
-}
-
-// parsePublicHeader parses a QUIC packet's Public Header.
-// The packetSentBy is the perspective of the peer that sent this PublicHeader, i.e. if we're the server, packetSentBy should be PerspectiveClient.
-func parsePublicHeader(b *bytes.Reader, packetSentBy protocol.Perspective) (*Header, error) {
- header := &Header{}
-
- // First byte
- publicFlagByte, err := b.ReadByte()
- if err != nil {
- return nil, err
- }
- header.ResetFlag = publicFlagByte&0x02 > 0
- header.VersionFlag = publicFlagByte&0x01 > 0
-
- // TODO: activate this check once Chrome sends the correct value
- // see https://github.com/phuslu/quic-go/issues/232
- // if publicFlagByte&0x04 > 0 {
- // return nil, errors.New("diversification nonces should only be sent by servers")
- // }
-
- header.OmitConnectionID = publicFlagByte&0x08 == 0
- if header.OmitConnectionID && packetSentBy == protocol.PerspectiveClient {
- return nil, errReceivedOmittedConnectionID
- }
- if header.hasPacketNumber(packetSentBy) {
- switch publicFlagByte & 0x30 {
- case 0x30:
- header.PacketNumberLen = protocol.PacketNumberLen6
- case 0x20:
- header.PacketNumberLen = protocol.PacketNumberLen4
- case 0x10:
- header.PacketNumberLen = protocol.PacketNumberLen2
- case 0x00:
- header.PacketNumberLen = protocol.PacketNumberLen1
- }
- }
-
- // Connection ID
- if !header.OmitConnectionID {
- var connID uint64
- connID, err = utils.BigEndian.ReadUint64(b)
- if err != nil {
- return nil, err
- }
- header.ConnectionID = protocol.ConnectionID(connID)
- if header.ConnectionID == 0 {
- return nil, errInvalidConnectionID
- }
- }
-
- if packetSentBy == protocol.PerspectiveServer && publicFlagByte&0x04 > 0 {
- // TODO: remove the if once the Google servers send the correct value
- // assume that a packet doesn't contain a diversification nonce if the version flag or the reset flag is set, no matter what the public flag says
- // see https://github.com/phuslu/quic-go/issues/232
- if !header.VersionFlag && !header.ResetFlag {
- header.DiversificationNonce = make([]byte, 32)
- if _, err := io.ReadFull(b, header.DiversificationNonce); err != nil {
- return nil, err
- }
- }
- }
-
- // Version (optional)
- if !header.ResetFlag && header.VersionFlag {
- if packetSentBy == protocol.PerspectiveServer { // parse the version negotiaton packet
- if b.Len() == 0 {
- return nil, qerr.Error(qerr.InvalidVersionNegotiationPacket, "empty version list")
- }
- if b.Len()%4 != 0 {
- return nil, qerr.InvalidVersionNegotiationPacket
- }
- header.IsVersionNegotiation = true
- header.SupportedVersions = make([]protocol.VersionNumber, 0)
- for {
- var versionTag uint32
- versionTag, err = utils.BigEndian.ReadUint32(b)
- if err != nil {
- break
- }
- v := protocol.VersionNumber(versionTag)
- header.SupportedVersions = append(header.SupportedVersions, v)
- }
- // a version negotiation packet doesn't have a packet number
- return header, nil
- }
- // packet was sent by the client. Read the version number
- var versionTag uint32
- versionTag, err = utils.BigEndian.ReadUint32(b)
- if err != nil {
- return nil, err
- }
- header.Version = protocol.VersionNumber(versionTag)
- }
-
- // Packet number
- if header.hasPacketNumber(packetSentBy) {
- packetNumber, err := utils.BigEndian.ReadUintN(b, uint8(header.PacketNumberLen))
- if err != nil {
- return nil, err
- }
- header.PacketNumber = protocol.PacketNumber(packetNumber)
- }
- return header, nil
-}
-
-// getPublicHeaderLength gets the length of the publicHeader in bytes.
-// It can only be called for regular packets.
-func (h *Header) getPublicHeaderLength(pers protocol.Perspective) (protocol.ByteCount, error) {
- if h.VersionFlag && h.ResetFlag {
- return 0, errResetAndVersionFlagSet
- }
- if h.VersionFlag && pers == protocol.PerspectiveServer {
- return 0, errGetLengthNotForVersionNegotiation
- }
-
- length := protocol.ByteCount(1) // 1 byte for public flags
- if h.hasPacketNumber(pers) {
- if h.PacketNumberLen != protocol.PacketNumberLen1 && h.PacketNumberLen != protocol.PacketNumberLen2 && h.PacketNumberLen != protocol.PacketNumberLen4 && h.PacketNumberLen != protocol.PacketNumberLen6 {
- return 0, errPacketNumberLenNotSet
- }
- length += protocol.ByteCount(h.PacketNumberLen)
- }
- if !h.OmitConnectionID {
- length += 8 // 8 bytes for the connection ID
- }
- // Version Number in packets sent by the client
- if h.VersionFlag {
- length += 4
- }
- length += protocol.ByteCount(len(h.DiversificationNonce))
- return length, nil
-}
-
-// hasPacketNumber determines if this Public Header will contain a packet number
-// this depends on the ResetFlag, the VersionFlag and who sent the packet
-func (h *Header) hasPacketNumber(packetSentBy protocol.Perspective) bool {
- if h.ResetFlag {
- return false
- }
- if h.VersionFlag && packetSentBy == protocol.PerspectiveServer {
- return false
- }
- return true
-}
-
-func (h *Header) logPublicHeader() {
- connID := "(omitted)"
- if !h.OmitConnectionID {
- connID = fmt.Sprintf("%#x", h.ConnectionID)
- }
- ver := "(unset)"
- if h.Version != 0 {
- ver = fmt.Sprintf("%s", h.Version)
- }
- utils.Debugf(" Public Header{ConnectionID: %s, PacketNumber: %#x, PacketNumberLen: %d, Version: %s, DiversificationNonce: %#v}", connID, h.PacketNumber, h.PacketNumberLen, ver, h.DiversificationNonce)
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/wire/public_reset.go b/vendor/github.com/phuslu/quic-go/internal/wire/public_reset.go
deleted file mode 100644
index 044220f..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/wire/public_reset.go
+++ /dev/null
@@ -1,65 +0,0 @@
-package wire
-
-import (
- "bytes"
- "encoding/binary"
- "errors"
-
- "github.com/phuslu/quic-go/internal/handshake"
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/utils"
-)
-
-// A PublicReset is a PUBLIC_RESET
-type PublicReset struct {
- RejectedPacketNumber protocol.PacketNumber
- Nonce uint64
-}
-
-// WritePublicReset writes a Public Reset
-func WritePublicReset(connectionID protocol.ConnectionID, rejectedPacketNumber protocol.PacketNumber, nonceProof uint64) []byte {
- b := &bytes.Buffer{}
- b.WriteByte(0x0a)
- utils.BigEndian.WriteUint64(b, uint64(connectionID))
- utils.LittleEndian.WriteUint32(b, uint32(handshake.TagPRST))
- utils.LittleEndian.WriteUint32(b, 2)
- utils.LittleEndian.WriteUint32(b, uint32(handshake.TagRNON))
- utils.LittleEndian.WriteUint32(b, 8)
- utils.LittleEndian.WriteUint32(b, uint32(handshake.TagRSEQ))
- utils.LittleEndian.WriteUint32(b, 16)
- utils.LittleEndian.WriteUint64(b, nonceProof)
- utils.LittleEndian.WriteUint64(b, uint64(rejectedPacketNumber))
- return b.Bytes()
-}
-
-// ParsePublicReset parses a Public Reset
-func ParsePublicReset(r *bytes.Reader) (*PublicReset, error) {
- pr := PublicReset{}
- msg, err := handshake.ParseHandshakeMessage(r)
- if err != nil {
- return nil, err
- }
- if msg.Tag != handshake.TagPRST {
- return nil, errors.New("wrong public reset tag")
- }
-
- // The RSEQ tag is mandatory according to the gQUIC wire spec.
- // However, Google doesn't send RSEQ in their Public Resets.
- // Therefore, we'll treat RSEQ as an optional field.
- if rseq, ok := msg.Data[handshake.TagRSEQ]; ok {
- if len(rseq) != 8 {
- return nil, errors.New("invalid RSEQ tag")
- }
- pr.RejectedPacketNumber = protocol.PacketNumber(binary.LittleEndian.Uint64(rseq))
- }
-
- rnon, ok := msg.Data[handshake.TagRNON]
- if !ok {
- return nil, errors.New("RNON missing")
- }
- if len(rnon) != 8 {
- return nil, errors.New("invalid RNON tag")
- }
- pr.Nonce = binary.LittleEndian.Uint64(rnon)
- return &pr, nil
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/wire/rst_stream_frame.go b/vendor/github.com/phuslu/quic-go/internal/wire/rst_stream_frame.go
deleted file mode 100644
index db5385f..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/wire/rst_stream_frame.go
+++ /dev/null
@@ -1,89 +0,0 @@
-package wire
-
-import (
- "bytes"
-
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/utils"
-)
-
-// A RstStreamFrame is a RST_STREAM frame in QUIC
-type RstStreamFrame struct {
- StreamID protocol.StreamID
- // The error code is a uint32 in gQUIC, but a uint16 in IETF QUIC.
- // protocol.ApplicaitonErrorCode is a uint16, so larger values in gQUIC frames will be truncated.
- ErrorCode protocol.ApplicationErrorCode
- ByteOffset protocol.ByteCount
-}
-
-// ParseRstStreamFrame parses a RST_STREAM frame
-func ParseRstStreamFrame(r *bytes.Reader, version protocol.VersionNumber) (*RstStreamFrame, error) {
- if _, err := r.ReadByte(); err != nil { // read the TypeByte
- return nil, err
- }
-
- var streamID protocol.StreamID
- var errorCode uint16
- var byteOffset protocol.ByteCount
- if version.UsesIETFFrameFormat() {
- sid, err := utils.ReadVarInt(r)
- if err != nil {
- return nil, err
- }
- streamID = protocol.StreamID(sid)
- errorCode, err = utils.BigEndian.ReadUint16(r)
- if err != nil {
- return nil, err
- }
- bo, err := utils.ReadVarInt(r)
- if err != nil {
- return nil, err
- }
- byteOffset = protocol.ByteCount(bo)
- } else {
- sid, err := utils.BigEndian.ReadUint32(r)
- if err != nil {
- return nil, err
- }
- streamID = protocol.StreamID(sid)
- bo, err := utils.BigEndian.ReadUint64(r)
- if err != nil {
- return nil, err
- }
- byteOffset = protocol.ByteCount(bo)
- ec, err := utils.BigEndian.ReadUint32(r)
- if err != nil {
- return nil, err
- }
- errorCode = uint16(ec)
- }
-
- return &RstStreamFrame{
- StreamID: streamID,
- ErrorCode: protocol.ApplicationErrorCode(errorCode),
- ByteOffset: byteOffset,
- }, nil
-}
-
-//Write writes a RST_STREAM frame
-func (f *RstStreamFrame) Write(b *bytes.Buffer, version protocol.VersionNumber) error {
- b.WriteByte(0x01)
- if version.UsesIETFFrameFormat() {
- utils.WriteVarInt(b, uint64(f.StreamID))
- utils.BigEndian.WriteUint16(b, uint16(f.ErrorCode))
- utils.WriteVarInt(b, uint64(f.ByteOffset))
- } else {
- utils.BigEndian.WriteUint32(b, uint32(f.StreamID))
- utils.BigEndian.WriteUint64(b, uint64(f.ByteOffset))
- utils.BigEndian.WriteUint32(b, uint32(f.ErrorCode))
- }
- return nil
-}
-
-// MinLength of a written frame
-func (f *RstStreamFrame) MinLength(version protocol.VersionNumber) protocol.ByteCount {
- if version.UsesIETFFrameFormat() {
- return 1 + utils.VarIntLen(uint64(f.StreamID)) + 2 + utils.VarIntLen(uint64(f.ByteOffset))
- }
- return 1 + 4 + 8 + 4
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/wire/stop_sending_frame.go b/vendor/github.com/phuslu/quic-go/internal/wire/stop_sending_frame.go
deleted file mode 100644
index 8dce32f..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/wire/stop_sending_frame.go
+++ /dev/null
@@ -1,47 +0,0 @@
-package wire
-
-import (
- "bytes"
-
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/utils"
-)
-
-// A StopSendingFrame is a STOP_SENDING frame
-type StopSendingFrame struct {
- StreamID protocol.StreamID
- ErrorCode protocol.ApplicationErrorCode
-}
-
-// ParseStopSendingFrame parses a STOP_SENDING frame
-func ParseStopSendingFrame(r *bytes.Reader, _ protocol.VersionNumber) (*StopSendingFrame, error) {
- if _, err := r.ReadByte(); err != nil { // read the TypeByte
- return nil, err
- }
-
- streamID, err := utils.ReadVarInt(r)
- if err != nil {
- return nil, err
- }
- errorCode, err := utils.BigEndian.ReadUint16(r)
- if err != nil {
- return nil, err
- }
-
- return &StopSendingFrame{
- StreamID: protocol.StreamID(streamID),
- ErrorCode: protocol.ApplicationErrorCode(errorCode),
- }, nil
-}
-
-// MinLength of a written frame
-func (f *StopSendingFrame) MinLength(_ protocol.VersionNumber) protocol.ByteCount {
- return 1 + utils.VarIntLen(uint64(f.StreamID)) + 2
-}
-
-func (f *StopSendingFrame) Write(b *bytes.Buffer, _ protocol.VersionNumber) error {
- b.WriteByte(0x0c)
- utils.WriteVarInt(b, uint64(f.StreamID))
- utils.BigEndian.WriteUint16(b, uint16(f.ErrorCode))
- return nil
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/wire/stop_waiting_frame.go b/vendor/github.com/phuslu/quic-go/internal/wire/stop_waiting_frame.go
deleted file mode 100644
index 4d5d9c4..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/wire/stop_waiting_frame.go
+++ /dev/null
@@ -1,77 +0,0 @@
-package wire
-
-import (
- "bytes"
- "errors"
-
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/utils"
-)
-
-// A StopWaitingFrame in QUIC
-type StopWaitingFrame struct {
- LeastUnacked protocol.PacketNumber
- PacketNumberLen protocol.PacketNumberLen
- // PacketNumber is the packet number of the packet that this StopWaitingFrame will be sent with
- PacketNumber protocol.PacketNumber
-}
-
-var (
- errLeastUnackedHigherThanPacketNumber = errors.New("StopWaitingFrame: LeastUnacked can't be greater than the packet number")
- errPacketNumberNotSet = errors.New("StopWaitingFrame: PacketNumber not set")
- errPacketNumberLenNotSet = errors.New("StopWaitingFrame: PacketNumberLen not set")
-)
-
-func (f *StopWaitingFrame) Write(b *bytes.Buffer, v protocol.VersionNumber) error {
- if v.UsesIETFFrameFormat() {
- return errors.New("STOP_WAITING not defined in IETF QUIC")
- }
- // make sure the PacketNumber was set
- if f.PacketNumber == protocol.PacketNumber(0) {
- return errPacketNumberNotSet
- }
- if f.LeastUnacked > f.PacketNumber {
- return errLeastUnackedHigherThanPacketNumber
- }
-
- b.WriteByte(0x06)
- leastUnackedDelta := uint64(f.PacketNumber - f.LeastUnacked)
- switch f.PacketNumberLen {
- case protocol.PacketNumberLen1:
- b.WriteByte(uint8(leastUnackedDelta))
- case protocol.PacketNumberLen2:
- utils.BigEndian.WriteUint16(b, uint16(leastUnackedDelta))
- case protocol.PacketNumberLen4:
- utils.BigEndian.WriteUint32(b, uint32(leastUnackedDelta))
- case protocol.PacketNumberLen6:
- utils.BigEndian.WriteUint48(b, leastUnackedDelta&(1<<48-1))
- default:
- return errPacketNumberLenNotSet
- }
- return nil
-}
-
-// MinLength of a written frame
-func (f *StopWaitingFrame) MinLength(_ protocol.VersionNumber) protocol.ByteCount {
- return 1 + protocol.ByteCount(f.PacketNumberLen)
-}
-
-// ParseStopWaitingFrame parses a StopWaiting frame
-func ParseStopWaitingFrame(r *bytes.Reader, packetNumber protocol.PacketNumber, packetNumberLen protocol.PacketNumberLen, _ protocol.VersionNumber) (*StopWaitingFrame, error) {
- frame := &StopWaitingFrame{}
-
- // read the TypeByte
- if _, err := r.ReadByte(); err != nil {
- return nil, err
- }
-
- leastUnackedDelta, err := utils.BigEndian.ReadUintN(r, uint8(packetNumberLen))
- if err != nil {
- return nil, err
- }
- if leastUnackedDelta > uint64(packetNumber) {
- return nil, errors.New("invalid LeastUnackedDelta")
- }
- frame.LeastUnacked = protocol.PacketNumber(uint64(packetNumber) - leastUnackedDelta)
- return frame, nil
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/wire/stream_blocked_frame.go b/vendor/github.com/phuslu/quic-go/internal/wire/stream_blocked_frame.go
deleted file mode 100644
index 5d88e28..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/wire/stream_blocked_frame.go
+++ /dev/null
@@ -1,52 +0,0 @@
-package wire
-
-import (
- "bytes"
-
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/utils"
-)
-
-// A StreamBlockedFrame in QUIC
-type StreamBlockedFrame struct {
- StreamID protocol.StreamID
- Offset protocol.ByteCount
-}
-
-// ParseStreamBlockedFrame parses a STREAM_BLOCKED frame
-func ParseStreamBlockedFrame(r *bytes.Reader, _ protocol.VersionNumber) (*StreamBlockedFrame, error) {
- if _, err := r.ReadByte(); err != nil { // read the TypeByte
- return nil, err
- }
- sid, err := utils.ReadVarInt(r)
- if err != nil {
- return nil, err
- }
- offset, err := utils.ReadVarInt(r)
- if err != nil {
- return nil, err
- }
- return &StreamBlockedFrame{
- StreamID: protocol.StreamID(sid),
- Offset: protocol.ByteCount(offset),
- }, nil
-}
-
-// Write writes a STREAM_BLOCKED frame
-func (f *StreamBlockedFrame) Write(b *bytes.Buffer, version protocol.VersionNumber) error {
- if !version.UsesIETFFrameFormat() {
- return (&blockedFrameLegacy{StreamID: f.StreamID}).Write(b, version)
- }
- b.WriteByte(0x09)
- utils.WriteVarInt(b, uint64(f.StreamID))
- utils.WriteVarInt(b, uint64(f.Offset))
- return nil
-}
-
-// MinLength of a written frame
-func (f *StreamBlockedFrame) MinLength(version protocol.VersionNumber) protocol.ByteCount {
- if !version.UsesIETFFrameFormat() {
- return 1 + 4
- }
- return 1 + utils.VarIntLen(uint64(f.StreamID)) + utils.VarIntLen(uint64(f.Offset))
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/wire/stream_frame.go b/vendor/github.com/phuslu/quic-go/internal/wire/stream_frame.go
deleted file mode 100644
index c92d893..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/wire/stream_frame.go
+++ /dev/null
@@ -1,132 +0,0 @@
-package wire
-
-import (
- "bytes"
- "errors"
- "io"
-
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/utils"
- "github.com/phuslu/quic-go/qerr"
-)
-
-// A StreamFrame of QUIC
-type StreamFrame struct {
- StreamID protocol.StreamID
- FinBit bool
- DataLenPresent bool
- Offset protocol.ByteCount
- Data []byte
-}
-
-// ParseStreamFrame reads a STREAM frame
-func ParseStreamFrame(r *bytes.Reader, version protocol.VersionNumber) (*StreamFrame, error) {
- if !version.UsesIETFFrameFormat() {
- return parseLegacyStreamFrame(r, version)
- }
-
- frame := &StreamFrame{}
-
- typeByte, err := r.ReadByte()
- if err != nil {
- return nil, err
- }
-
- frame.FinBit = typeByte&0x1 > 0
- frame.DataLenPresent = typeByte&0x2 > 0
- hasOffset := typeByte&0x4 > 0
-
- streamID, err := utils.ReadVarInt(r)
- if err != nil {
- return nil, err
- }
- frame.StreamID = protocol.StreamID(streamID)
- if hasOffset {
- offset, err := utils.ReadVarInt(r)
- if err != nil {
- return nil, err
- }
- frame.Offset = protocol.ByteCount(offset)
- }
-
- var dataLen uint64
- if frame.DataLenPresent {
- var err error
- dataLen, err = utils.ReadVarInt(r)
- if err != nil {
- return nil, err
- }
- // shortcut to prevent the unneccessary allocation of dataLen bytes
- // if the dataLen is larger than the remaining length of the packet
- // reading the packet contents would result in EOF when attempting to READ
- if dataLen > uint64(r.Len()) {
- return nil, io.EOF
- }
- } else {
- // The rest of the packet is data
- dataLen = uint64(r.Len())
- }
- if dataLen != 0 {
- frame.Data = make([]byte, dataLen)
- if _, err := io.ReadFull(r, frame.Data); err != nil {
- // this should never happen, since we already checked the dataLen earlier
- return nil, err
- }
- }
- if frame.Offset+frame.DataLen() > protocol.MaxByteCount {
- return nil, qerr.Error(qerr.InvalidStreamData, "data overflows maximum offset")
- }
- if !frame.FinBit && frame.DataLen() == 0 {
- return nil, qerr.EmptyStreamFrameNoFin
- }
- return frame, nil
-}
-
-// Write writes a STREAM frame
-func (f *StreamFrame) Write(b *bytes.Buffer, version protocol.VersionNumber) error {
- if !version.UsesIETFFrameFormat() {
- return f.writeLegacy(b, version)
- }
-
- if len(f.Data) == 0 && !f.FinBit {
- return errors.New("StreamFrame: attempting to write empty frame without FIN")
- }
-
- typeByte := byte(0x10)
- if f.FinBit {
- typeByte ^= 0x1
- }
- hasOffset := f.Offset != 0
- if f.DataLenPresent {
- typeByte ^= 0x2
- }
- if hasOffset {
- typeByte ^= 0x4
- }
- b.WriteByte(typeByte)
- utils.WriteVarInt(b, uint64(f.StreamID))
- if hasOffset {
- utils.WriteVarInt(b, uint64(f.Offset))
- }
- if f.DataLenPresent {
- utils.WriteVarInt(b, uint64(f.DataLen()))
- }
- b.Write(f.Data)
- return nil
-}
-
-// MinLength returns the length of the header of a StreamFrame
-// the total length of the frame is frame.MinLength() + frame.DataLen()
-func (f *StreamFrame) MinLength(version protocol.VersionNumber) protocol.ByteCount {
- if !version.UsesIETFFrameFormat() {
- return f.minLengthLegacy(version)
- }
- length := 1 + utils.VarIntLen(uint64(f.StreamID))
- if f.Offset != 0 {
- length += utils.VarIntLen(uint64(f.Offset))
- }
- if f.DataLenPresent {
- length += utils.VarIntLen(uint64(f.DataLen()))
- }
- return length
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/wire/stream_frame_legacy.go b/vendor/github.com/phuslu/quic-go/internal/wire/stream_frame_legacy.go
deleted file mode 100644
index e712359..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/wire/stream_frame_legacy.go
+++ /dev/null
@@ -1,197 +0,0 @@
-package wire
-
-import (
- "bytes"
- "errors"
- "io"
-
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/utils"
- "github.com/phuslu/quic-go/qerr"
-)
-
-var (
- errInvalidStreamIDLen = errors.New("StreamFrame: Invalid StreamID length")
- errInvalidOffsetLen = errors.New("StreamFrame: Invalid offset length")
-)
-
-// parseLegacyStreamFrame reads a stream frame. The type byte must not have been read yet.
-func parseLegacyStreamFrame(r *bytes.Reader, _ protocol.VersionNumber) (*StreamFrame, error) {
- frame := &StreamFrame{}
-
- typeByte, err := r.ReadByte()
- if err != nil {
- return nil, err
- }
-
- frame.FinBit = typeByte&0x40 > 0
- frame.DataLenPresent = typeByte&0x20 > 0
- offsetLen := typeByte & 0x1c >> 2
- if offsetLen != 0 {
- offsetLen++
- }
- streamIDLen := typeByte&0x3 + 1
-
- sid, err := utils.BigEndian.ReadUintN(r, streamIDLen)
- if err != nil {
- return nil, err
- }
- frame.StreamID = protocol.StreamID(sid)
-
- offset, err := utils.BigEndian.ReadUintN(r, offsetLen)
- if err != nil {
- return nil, err
- }
- frame.Offset = protocol.ByteCount(offset)
-
- var dataLen uint16
- if frame.DataLenPresent {
- dataLen, err = utils.BigEndian.ReadUint16(r)
- if err != nil {
- return nil, err
- }
- }
-
- // shortcut to prevent the unneccessary allocation of dataLen bytes
- // if the dataLen is larger than the remaining length of the packet
- // reading the packet contents would result in EOF when attempting to READ
- if int(dataLen) > r.Len() {
- return nil, io.EOF
- }
-
- if !frame.DataLenPresent {
- // The rest of the packet is data
- dataLen = uint16(r.Len())
- }
- if dataLen != 0 {
- frame.Data = make([]byte, dataLen)
- if _, err := io.ReadFull(r, frame.Data); err != nil {
- // this should never happen, since we already checked the dataLen earlier
- return nil, err
- }
- }
-
- // MaxByteCount is the highest value that can be encoded with the IETF QUIC variable integer encoding (2^62-1).
- // Note that this value is smaller than the maximum value that could be encoded in the gQUIC STREAM frame (2^64-1).
- if frame.Offset+frame.DataLen() > protocol.MaxByteCount {
- return nil, qerr.Error(qerr.InvalidStreamData, "data overflows maximum offset")
- }
- if !frame.FinBit && frame.DataLen() == 0 {
- return nil, qerr.EmptyStreamFrameNoFin
- }
- return frame, nil
-}
-
-// writeLegacy writes a stream frame.
-func (f *StreamFrame) writeLegacy(b *bytes.Buffer, _ protocol.VersionNumber) error {
- if len(f.Data) == 0 && !f.FinBit {
- return errors.New("StreamFrame: attempting to write empty frame without FIN")
- }
-
- typeByte := uint8(0x80) // sets the leftmost bit to 1
- if f.FinBit {
- typeByte ^= 0x40
- }
- if f.DataLenPresent {
- typeByte ^= 0x20
- }
-
- offsetLength := f.getOffsetLength()
- if offsetLength > 0 {
- typeByte ^= (uint8(offsetLength) - 1) << 2
- }
-
- streamIDLen := f.calculateStreamIDLength()
- typeByte ^= streamIDLen - 1
-
- b.WriteByte(typeByte)
-
- switch streamIDLen {
- case 1:
- b.WriteByte(uint8(f.StreamID))
- case 2:
- utils.BigEndian.WriteUint16(b, uint16(f.StreamID))
- case 3:
- utils.BigEndian.WriteUint24(b, uint32(f.StreamID))
- case 4:
- utils.BigEndian.WriteUint32(b, uint32(f.StreamID))
- default:
- return errInvalidStreamIDLen
- }
-
- switch offsetLength {
- case 0:
- case 2:
- utils.BigEndian.WriteUint16(b, uint16(f.Offset))
- case 3:
- utils.BigEndian.WriteUint24(b, uint32(f.Offset))
- case 4:
- utils.BigEndian.WriteUint32(b, uint32(f.Offset))
- case 5:
- utils.BigEndian.WriteUint40(b, uint64(f.Offset))
- case 6:
- utils.BigEndian.WriteUint48(b, uint64(f.Offset))
- case 7:
- utils.BigEndian.WriteUint56(b, uint64(f.Offset))
- case 8:
- utils.BigEndian.WriteUint64(b, uint64(f.Offset))
- default:
- return errInvalidOffsetLen
- }
-
- if f.DataLenPresent {
- utils.BigEndian.WriteUint16(b, uint16(len(f.Data)))
- }
-
- b.Write(f.Data)
- return nil
-}
-
-func (f *StreamFrame) calculateStreamIDLength() uint8 {
- if f.StreamID < (1 << 8) {
- return 1
- } else if f.StreamID < (1 << 16) {
- return 2
- } else if f.StreamID < (1 << 24) {
- return 3
- }
- return 4
-}
-
-func (f *StreamFrame) getOffsetLength() protocol.ByteCount {
- if f.Offset == 0 {
- return 0
- }
- if f.Offset < (1 << 16) {
- return 2
- }
- if f.Offset < (1 << 24) {
- return 3
- }
- if f.Offset < (1 << 32) {
- return 4
- }
- if f.Offset < (1 << 40) {
- return 5
- }
- if f.Offset < (1 << 48) {
- return 6
- }
- if f.Offset < (1 << 56) {
- return 7
- }
- return 8
-}
-
-func (f *StreamFrame) minLengthLegacy(_ protocol.VersionNumber) protocol.ByteCount {
- length := protocol.ByteCount(1) + protocol.ByteCount(f.calculateStreamIDLength()) + f.getOffsetLength()
- if f.DataLenPresent {
- length += 2
- }
- return length
-}
-
-// DataLen gives the length of data in bytes
-func (f *StreamFrame) DataLen() protocol.ByteCount {
- return protocol.ByteCount(len(f.Data))
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/wire/stream_id_blocked_frame.go b/vendor/github.com/phuslu/quic-go/internal/wire/stream_id_blocked_frame.go
deleted file mode 100644
index cf0e372..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/wire/stream_id_blocked_frame.go
+++ /dev/null
@@ -1,37 +0,0 @@
-package wire
-
-import (
- "bytes"
-
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/utils"
-)
-
-// A StreamIDBlockedFrame is a STREAM_ID_BLOCKED frame
-type StreamIDBlockedFrame struct {
- StreamID protocol.StreamID
-}
-
-// ParseStreamIDBlockedFrame parses a STREAM_ID_BLOCKED frame
-func ParseStreamIDBlockedFrame(r *bytes.Reader, _ protocol.VersionNumber) (*StreamIDBlockedFrame, error) {
- if _, err := r.ReadByte(); err != nil {
- return nil, err
- }
- streamID, err := utils.ReadVarInt(r)
- if err != nil {
- return nil, err
- }
- return &StreamIDBlockedFrame{StreamID: protocol.StreamID(streamID)}, nil
-}
-
-func (f *StreamIDBlockedFrame) Write(b *bytes.Buffer, _ protocol.VersionNumber) error {
- typeByte := uint8(0x0a)
- b.WriteByte(typeByte)
- utils.WriteVarInt(b, uint64(f.StreamID))
- return nil
-}
-
-// MinLength of a written frame
-func (f *StreamIDBlockedFrame) MinLength(_ protocol.VersionNumber) protocol.ByteCount {
- return 1 + utils.VarIntLen(uint64(f.StreamID))
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/wire/version_negotiation.go b/vendor/github.com/phuslu/quic-go/internal/wire/version_negotiation.go
deleted file mode 100644
index 4953463..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/wire/version_negotiation.go
+++ /dev/null
@@ -1,59 +0,0 @@
-package wire
-
-import (
- "bytes"
- "crypto/rand"
-
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/utils"
-)
-
-// ComposeGQUICVersionNegotiation composes a Version Negotiation Packet for gQUIC
-func ComposeGQUICVersionNegotiation(connID protocol.ConnectionID, versions []protocol.VersionNumber) []byte {
- fullReply := &bytes.Buffer{}
- ph := Header{
- ConnectionID: connID,
- PacketNumber: 1,
- VersionFlag: true,
- IsVersionNegotiation: true,
- }
- if err := ph.writePublicHeader(fullReply, protocol.PerspectiveServer, protocol.VersionWhatever); err != nil {
- utils.Errorf("error composing version negotiation packet: %s", err.Error())
- return nil
- }
- writeVersions(fullReply, versions)
- return fullReply.Bytes()
-}
-
-// ComposeVersionNegotiation composes a Version Negotiation according to the IETF draft
-func ComposeVersionNegotiation(
- connID protocol.ConnectionID,
- pn protocol.PacketNumber,
- versions []protocol.VersionNumber,
-) []byte {
- fullReply := &bytes.Buffer{}
- r := make([]byte, 1)
- _, _ = rand.Read(r) // ignore the error here. It is not critical to have perfect random here.
- h := Header{
- IsLongHeader: true,
- Type: protocol.PacketType(r[0] | 0x80),
- ConnectionID: connID,
- PacketNumber: pn,
- Version: 0,
- IsVersionNegotiation: true,
- }
- if err := h.writeHeader(fullReply); err != nil {
- utils.Errorf("error composing version negotiation packet: %s", err.Error())
- return nil
- }
- writeVersions(fullReply, versions)
- return fullReply.Bytes()
-}
-
-// writeVersions writes the versions for a Version Negotiation Packet.
-// It inserts one reserved version number at a random position.
-func writeVersions(buf *bytes.Buffer, supported []protocol.VersionNumber) {
- for _, v := range protocol.GetGreasedVersions(supported) {
- utils.BigEndian.WriteUint32(buf, uint32(v))
- }
-}
diff --git a/vendor/github.com/phuslu/quic-go/internal/wire/window_update_frame.go b/vendor/github.com/phuslu/quic-go/internal/wire/window_update_frame.go
deleted file mode 100644
index 4aae986..0000000
--- a/vendor/github.com/phuslu/quic-go/internal/wire/window_update_frame.go
+++ /dev/null
@@ -1,45 +0,0 @@
-package wire
-
-import (
- "bytes"
-
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/utils"
-)
-
-type windowUpdateFrame struct {
- StreamID protocol.StreamID
- ByteOffset protocol.ByteCount
-}
-
-// ParseWindowUpdateFrame parses a WINDOW_UPDATE frame
-// The frame returned is
-// * a MAX_STREAM_DATA frame, if the WINDOW_UPDATE applies to a stream
-// * a MAX_DATA frame, if the WINDOW_UPDATE applies to the connection
-func ParseWindowUpdateFrame(r *bytes.Reader, _ protocol.VersionNumber) (Frame, error) {
- if _, err := r.ReadByte(); err != nil { // read the TypeByte
- return nil, err
- }
- streamID, err := utils.BigEndian.ReadUint32(r)
- if err != nil {
- return nil, err
- }
- offset, err := utils.BigEndian.ReadUint64(r)
- if err != nil {
- return nil, err
- }
- if streamID == 0 {
- return &MaxDataFrame{ByteOffset: protocol.ByteCount(offset)}, nil
- }
- return &MaxStreamDataFrame{
- StreamID: protocol.StreamID(streamID),
- ByteOffset: protocol.ByteCount(offset),
- }, nil
-}
-
-func (f *windowUpdateFrame) Write(b *bytes.Buffer, _ protocol.VersionNumber) error {
- b.WriteByte(0x4)
- utils.BigEndian.WriteUint32(b, uint32(f.StreamID))
- utils.BigEndian.WriteUint64(b, uint64(f.ByteOffset))
- return nil
-}
diff --git a/vendor/github.com/phuslu/quic-go/mint_utils.go b/vendor/github.com/phuslu/quic-go/mint_utils.go
deleted file mode 100644
index 5c9bc56..0000000
--- a/vendor/github.com/phuslu/quic-go/mint_utils.go
+++ /dev/null
@@ -1,150 +0,0 @@
-package quic
-
-import (
- "bytes"
- gocrypto "crypto"
- "crypto/tls"
- "crypto/x509"
- "errors"
- "io"
-
- "github.com/bifurcation/mint"
- "github.com/phuslu/quic-go/internal/crypto"
- "github.com/phuslu/quic-go/internal/handshake"
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/utils"
- "github.com/phuslu/quic-go/internal/wire"
-)
-
-type mintController struct {
- csc *handshake.CryptoStreamConn
- conn *mint.Conn
-}
-
-var _ handshake.MintTLS = &mintController{}
-
-func newMintController(
- csc *handshake.CryptoStreamConn,
- mconf *mint.Config,
- pers protocol.Perspective,
-) handshake.MintTLS {
- var conn *mint.Conn
- if pers == protocol.PerspectiveClient {
- conn = mint.Client(csc, mconf)
- } else {
- conn = mint.Server(csc, mconf)
- }
- return &mintController{
- csc: csc,
- conn: conn,
- }
-}
-
-func (mc *mintController) GetCipherSuite() mint.CipherSuiteParams {
- return mc.conn.State().CipherSuite
-}
-
-func (mc *mintController) ComputeExporter(label string, context []byte, keyLength int) ([]byte, error) {
- return mc.conn.ComputeExporter(label, context, keyLength)
-}
-
-func (mc *mintController) Handshake() mint.Alert {
- return mc.conn.Handshake()
-}
-
-func (mc *mintController) State() mint.State {
- return mc.conn.State().HandshakeState
-}
-
-func (mc *mintController) SetCryptoStream(stream io.ReadWriter) {
- mc.csc.SetStream(stream)
-}
-
-func (mc *mintController) SetExtensionHandler(h mint.AppExtensionHandler) error {
- return mc.conn.SetExtensionHandler(h)
-}
-
-func tlsToMintConfig(tlsConf *tls.Config, pers protocol.Perspective) (*mint.Config, error) {
- mconf := &mint.Config{
- NonBlocking: true,
- CipherSuites: []mint.CipherSuite{
- mint.TLS_AES_128_GCM_SHA256,
- mint.TLS_AES_256_GCM_SHA384,
- },
- }
- if tlsConf != nil {
- mconf.Certificates = make([]*mint.Certificate, len(tlsConf.Certificates))
- for i, certChain := range tlsConf.Certificates {
- mconf.Certificates[i] = &mint.Certificate{
- Chain: make([]*x509.Certificate, len(certChain.Certificate)),
- PrivateKey: certChain.PrivateKey.(gocrypto.Signer),
- }
- for j, cert := range certChain.Certificate {
- c, err := x509.ParseCertificate(cert)
- if err != nil {
- return nil, err
- }
- mconf.Certificates[i].Chain[j] = c
- }
- }
- }
- if err := mconf.Init(pers == protocol.PerspectiveClient); err != nil {
- return nil, err
- }
- return mconf, nil
-}
-
-// unpackInitialOrRetryPacket unpacks packets Initial and Retry packets
-// These packets must contain a STREAM_FRAME for the crypto stream, starting at offset 0.
-func unpackInitialPacket(aead crypto.AEAD, hdr *wire.Header, data []byte, version protocol.VersionNumber) (*wire.StreamFrame, error) {
- unpacker := &packetUnpacker{aead: &nullAEAD{aead}, version: version}
- packet, err := unpacker.Unpack(hdr.Raw, hdr, data)
- if err != nil {
- return nil, err
- }
- var frame *wire.StreamFrame
- for _, f := range packet.frames {
- var ok bool
- frame, ok = f.(*wire.StreamFrame)
- if ok {
- break
- }
- }
- if frame == nil {
- return nil, errors.New("Packet doesn't contain a STREAM_FRAME")
- }
- // We don't need a check for the stream ID here.
- // The packetUnpacker checks that there's no unencrypted stream data except for the crypto stream.
- if frame.Offset != 0 {
- return nil, errors.New("received stream data with non-zero offset")
- }
- if utils.Debug() {
- utils.Debugf("<- Reading packet 0x%x (%d bytes) for connection %x", hdr.PacketNumber, len(data)+len(hdr.Raw), hdr.ConnectionID)
- hdr.Log()
- wire.LogFrame(frame, false)
- }
- return frame, nil
-}
-
-// packUnencryptedPacket provides a low-overhead way to pack a packet.
-// It is supposed to be used in the early stages of the handshake, before a session (which owns a packetPacker) is available.
-func packUnencryptedPacket(aead crypto.AEAD, hdr *wire.Header, f wire.Frame, pers protocol.Perspective) ([]byte, error) {
- raw := getPacketBuffer()
- buffer := bytes.NewBuffer(raw)
- if err := hdr.Write(buffer, pers, hdr.Version); err != nil {
- return nil, err
- }
- payloadStartIndex := buffer.Len()
- if err := f.Write(buffer, hdr.Version); err != nil {
- return nil, err
- }
- raw = raw[0:buffer.Len()]
- _ = aead.Seal(raw[payloadStartIndex:payloadStartIndex], raw[payloadStartIndex:], hdr.PacketNumber, raw[:payloadStartIndex])
- raw = raw[0 : buffer.Len()+aead.Overhead()]
- if utils.Debug() {
- utils.Debugf("-> Sending packet 0x%x (%d bytes) for connection %x, %s", hdr.PacketNumber, len(raw), hdr.ConnectionID, protocol.EncryptionUnencrypted)
- hdr.Log()
- wire.LogFrame(f, true)
- }
- return raw, nil
-}
diff --git a/vendor/github.com/phuslu/quic-go/mockgen.go b/vendor/github.com/phuslu/quic-go/mockgen.go
deleted file mode 100644
index 3802a86..0000000
--- a/vendor/github.com/phuslu/quic-go/mockgen.go
+++ /dev/null
@@ -1,12 +0,0 @@
-package quic
-
-//go:generate sh -c "./mockgen_private.sh quic mock_stream_internal_test.go github.com/lucas-clemente/quic-go streamI StreamI"
-//go:generate sh -c "./mockgen_private.sh quic mock_receive_stream_internal_test.go github.com/lucas-clemente/quic-go receiveStreamI ReceiveStreamI"
-//go:generate sh -c "./mockgen_private.sh quic mock_send_stream_internal_test.go github.com/lucas-clemente/quic-go sendStreamI SendStreamI"
-//go:generate sh -c "./mockgen_private.sh quic mock_stream_sender_test.go github.com/lucas-clemente/quic-go streamSender StreamSender"
-//go:generate sh -c "./mockgen_private.sh quic mock_stream_getter_test.go github.com/lucas-clemente/quic-go streamGetter StreamGetter"
-//go:generate sh -c "./mockgen_private.sh quic mock_stream_frame_source_test.go github.com/lucas-clemente/quic-go streamFrameSource StreamFrameSource"
-//go:generate sh -c "./mockgen_private.sh quic mock_crypto_stream_test.go github.com/lucas-clemente/quic-go cryptoStreamI CryptoStream"
-//go:generate sh -c "./mockgen_private.sh quic mock_stream_manager_test.go github.com/lucas-clemente/quic-go streamManager StreamManager"
-//go:generate sh -c "sed -i '' 's/quic_go.//g' mock_stream_getter_test.go mock_stream_manager_test.go"
-//go:generate sh -c "goimports -w mock*_test.go"
diff --git a/vendor/github.com/phuslu/quic-go/mockgen_private.sh b/vendor/github.com/phuslu/quic-go/mockgen_private.sh
deleted file mode 100644
index 7fbe68d..0000000
--- a/vendor/github.com/phuslu/quic-go/mockgen_private.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash
-
-# Mockgen refuses to generate mocks private types.
-# This script copies the quic package to a temporary directory, and adds an public alias for the private type.
-# It then creates a mock for this public (alias) type.
-
-TEMP_DIR=$(mktemp -d)
-mkdir -p $TEMP_DIR/src/github.com/lucas-clemente/quic-go/
-
-# copy all .go files to a temporary directory
-# golang.org/x/crypto/curve25519/ uses Go compiler directives, which is confusing to mockgen
-rsync -r --exclude 'vendor/golang.org/x/crypto/curve25519/' --include='*.go' --include '*/' --exclude '*' $GOPATH/src/github.com/lucas-clemente/quic-go/ $TEMP_DIR/src/github.com/lucas-clemente/quic-go/
-echo "type $5 = $4" >> $TEMP_DIR/src/github.com/lucas-clemente/quic-go/interface.go
-
-export GOPATH="$TEMP_DIR:$GOPATH"
-
-mockgen -package $1 -self_package $1 -destination $2 $3 $5
-
-rm -r "$TEMP_DIR"
diff --git a/vendor/github.com/phuslu/quic-go/packet_number_generator.go b/vendor/github.com/phuslu/quic-go/packet_number_generator.go
deleted file mode 100644
index 77dcb91..0000000
--- a/vendor/github.com/phuslu/quic-go/packet_number_generator.go
+++ /dev/null
@@ -1,69 +0,0 @@
-package quic
-
-import (
- "crypto/rand"
- "math"
-
- "github.com/phuslu/quic-go/internal/protocol"
-)
-
-// The packetNumberGenerator generates the packet number for the next packet
-// it randomly skips a packet number every averagePeriod packets (on average)
-// it is guarantued to never skip two consecutive packet numbers
-type packetNumberGenerator struct {
- averagePeriod protocol.PacketNumber
-
- next protocol.PacketNumber
- nextToSkip protocol.PacketNumber
-}
-
-func newPacketNumberGenerator(initial, averagePeriod protocol.PacketNumber) *packetNumberGenerator {
- return &packetNumberGenerator{
- next: initial,
- averagePeriod: averagePeriod,
- }
-}
-
-func (p *packetNumberGenerator) Peek() protocol.PacketNumber {
- return p.next
-}
-
-func (p *packetNumberGenerator) Pop() protocol.PacketNumber {
- next := p.next
-
- // generate a new packet number for the next packet
- p.next++
-
- if p.next == p.nextToSkip {
- p.next++
- p.generateNewSkip()
- }
-
- return next
-}
-
-func (p *packetNumberGenerator) generateNewSkip() error {
- num, err := p.getRandomNumber()
- if err != nil {
- return err
- }
-
- skip := protocol.PacketNumber(num) * (p.averagePeriod - 1) / (math.MaxUint16 / 2)
- // make sure that there are never two consecutive packet numbers that are skipped
- p.nextToSkip = p.next + 2 + skip
-
- return nil
-}
-
-// getRandomNumber() generates a cryptographically secure random number between 0 and MaxUint16 (= 65535)
-// The expectation value is 65535/2
-func (p *packetNumberGenerator) getRandomNumber() (uint16, error) {
- b := make([]byte, 2)
- _, err := rand.Read(b)
- if err != nil {
- return 0, err
- }
-
- num := uint16(b[0])<<8 + uint16(b[1])
- return num, nil
-}
diff --git a/vendor/github.com/phuslu/quic-go/packet_packer.go b/vendor/github.com/phuslu/quic-go/packet_packer.go
deleted file mode 100644
index 879eef0..0000000
--- a/vendor/github.com/phuslu/quic-go/packet_packer.go
+++ /dev/null
@@ -1,398 +0,0 @@
-package quic
-
-import (
- "bytes"
- "errors"
- "fmt"
- "sync"
-
- "github.com/phuslu/quic-go/ackhandler"
- "github.com/phuslu/quic-go/internal/handshake"
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/wire"
-)
-
-type packedPacket struct {
- header *wire.Header
- raw []byte
- frames []wire.Frame
- encryptionLevel protocol.EncryptionLevel
-}
-
-type streamFrameSource interface {
- HasCryptoStreamData() bool
- PopCryptoStreamFrame(protocol.ByteCount) *wire.StreamFrame
- PopStreamFrames(protocol.ByteCount) []*wire.StreamFrame
-}
-
-type packetPacker struct {
- connectionID protocol.ConnectionID
- perspective protocol.Perspective
- version protocol.VersionNumber
- cryptoSetup handshake.CryptoSetup
-
- packetNumberGenerator *packetNumberGenerator
- streams streamFrameSource
-
- controlFrameMutex sync.Mutex
- controlFrames []wire.Frame
-
- stopWaiting *wire.StopWaitingFrame
- ackFrame *wire.AckFrame
- leastUnacked protocol.PacketNumber
- omitConnectionID bool
- hasSentPacket bool // has the packetPacker already sent a packet
- makeNextPacketRetransmittable bool
-}
-
-func newPacketPacker(connectionID protocol.ConnectionID,
- initialPacketNumber protocol.PacketNumber,
- cryptoSetup handshake.CryptoSetup,
- streamFramer streamFrameSource,
- perspective protocol.Perspective,
- version protocol.VersionNumber,
-) *packetPacker {
- return &packetPacker{
- cryptoSetup: cryptoSetup,
- connectionID: connectionID,
- perspective: perspective,
- version: version,
- streams: streamFramer,
- packetNumberGenerator: newPacketNumberGenerator(initialPacketNumber, protocol.SkipPacketAveragePeriodLength),
- }
-}
-
-// PackConnectionClose packs a packet that ONLY contains a ConnectionCloseFrame
-func (p *packetPacker) PackConnectionClose(ccf *wire.ConnectionCloseFrame) (*packedPacket, error) {
- frames := []wire.Frame{ccf}
- encLevel, sealer := p.cryptoSetup.GetSealer()
- header := p.getHeader(encLevel)
- raw, err := p.writeAndSealPacket(header, frames, sealer)
- return &packedPacket{
- header: header,
- raw: raw,
- frames: frames,
- encryptionLevel: encLevel,
- }, err
-}
-
-func (p *packetPacker) PackAckPacket() (*packedPacket, error) {
- if p.ackFrame == nil {
- return nil, errors.New("packet packer BUG: no ack frame queued")
- }
- encLevel, sealer := p.cryptoSetup.GetSealer()
- header := p.getHeader(encLevel)
- frames := []wire.Frame{p.ackFrame}
- if p.stopWaiting != nil { // a STOP_WAITING will only be queued when using gQUIC
- p.stopWaiting.PacketNumber = header.PacketNumber
- p.stopWaiting.PacketNumberLen = header.PacketNumberLen
- frames = append(frames, p.stopWaiting)
- p.stopWaiting = nil
- }
- p.ackFrame = nil
- raw, err := p.writeAndSealPacket(header, frames, sealer)
- return &packedPacket{
- header: header,
- raw: raw,
- frames: frames,
- encryptionLevel: encLevel,
- }, err
-}
-
-// PackHandshakeRetransmission retransmits a handshake packet, that was sent with less than forward-secure encryption
-func (p *packetPacker) PackHandshakeRetransmission(packet *ackhandler.Packet) (*packedPacket, error) {
- if packet.EncryptionLevel == protocol.EncryptionForwardSecure {
- return nil, errors.New("PacketPacker BUG: forward-secure encrypted handshake packets don't need special treatment")
- }
- sealer, err := p.cryptoSetup.GetSealerWithEncryptionLevel(packet.EncryptionLevel)
- if err != nil {
- return nil, err
- }
- header := p.getHeader(packet.EncryptionLevel)
- var frames []wire.Frame
- if !p.version.UsesIETFFrameFormat() { // for gQUIC: pack a STOP_WAITING first
- if p.stopWaiting == nil {
- return nil, errors.New("PacketPacker BUG: Handshake retransmissions must contain a STOP_WAITING frame")
- }
- swf := p.stopWaiting
- swf.PacketNumber = header.PacketNumber
- swf.PacketNumberLen = header.PacketNumberLen
- p.stopWaiting = nil
- frames = append([]wire.Frame{swf}, packet.Frames...)
- } else {
- frames = packet.Frames
- }
- raw, err := p.writeAndSealPacket(header, frames, sealer)
- return &packedPacket{
- header: header,
- raw: raw,
- frames: frames,
- encryptionLevel: packet.EncryptionLevel,
- }, err
-}
-
-// PackPacket packs a new packet
-// the other controlFrames are sent in the next packet, but might be queued and sent in the next packet if the packet would overflow MaxPacketSize otherwise
-func (p *packetPacker) PackPacket() (*packedPacket, error) {
- hasCryptoStreamFrame := p.streams.HasCryptoStreamData()
- // if this is the first packet to be send, make sure it contains stream data
- if !p.hasSentPacket && !hasCryptoStreamFrame {
- return nil, nil
- }
- if hasCryptoStreamFrame {
- return p.packCryptoPacket()
- }
-
- encLevel, sealer := p.cryptoSetup.GetSealer()
-
- header := p.getHeader(encLevel)
- headerLength, err := header.GetLength(p.perspective, p.version)
- if err != nil {
- return nil, err
- }
- if p.stopWaiting != nil {
- p.stopWaiting.PacketNumber = header.PacketNumber
- p.stopWaiting.PacketNumberLen = header.PacketNumberLen
- }
-
- maxSize := protocol.MaxPacketSize - protocol.ByteCount(sealer.Overhead()) - headerLength
- payloadFrames, err := p.composeNextPacket(maxSize, p.canSendData(encLevel))
- if err != nil {
- return nil, err
- }
-
- // Check if we have enough frames to send
- if len(payloadFrames) == 0 {
- return nil, nil
- }
- // Don't send out packets that only contain a StopWaitingFrame
- if len(payloadFrames) == 1 && p.stopWaiting != nil {
- return nil, nil
- }
- // check if this packet only contains an ACK and / or STOP_WAITING
- if !ackhandler.HasRetransmittableFrames(payloadFrames) {
- if p.makeNextPacketRetransmittable {
- payloadFrames = append(payloadFrames, &wire.PingFrame{})
- p.makeNextPacketRetransmittable = false
- }
- } else { // this packet already contains a retransmittable frame. No need to send a PING
- p.makeNextPacketRetransmittable = false
- }
- p.stopWaiting = nil
- p.ackFrame = nil
-
- raw, err := p.writeAndSealPacket(header, payloadFrames, sealer)
- if err != nil {
- return nil, err
- }
- return &packedPacket{
- header: header,
- raw: raw,
- frames: payloadFrames,
- encryptionLevel: encLevel,
- }, nil
-}
-
-func (p *packetPacker) packCryptoPacket() (*packedPacket, error) {
- encLevel, sealer := p.cryptoSetup.GetSealerForCryptoStream()
- header := p.getHeader(encLevel)
- headerLength, err := header.GetLength(p.perspective, p.version)
- if err != nil {
- return nil, err
- }
- maxLen := protocol.MaxPacketSize - protocol.ByteCount(sealer.Overhead()) - protocol.NonForwardSecurePacketSizeReduction - headerLength
- sf := p.streams.PopCryptoStreamFrame(maxLen)
- sf.DataLenPresent = false
- frames := []wire.Frame{sf}
- raw, err := p.writeAndSealPacket(header, frames, sealer)
- if err != nil {
- return nil, err
- }
- return &packedPacket{
- header: header,
- raw: raw,
- frames: frames,
- encryptionLevel: encLevel,
- }, nil
-}
-
-func (p *packetPacker) composeNextPacket(
- maxFrameSize protocol.ByteCount,
- canSendStreamFrames bool,
-) ([]wire.Frame, error) {
- var payloadLength protocol.ByteCount
- var payloadFrames []wire.Frame
-
- // STOP_WAITING and ACK will always fit
- if p.ackFrame != nil { // ACKs need to go first, so that the sentPacketHandler will recognize them
- payloadFrames = append(payloadFrames, p.ackFrame)
- l := p.ackFrame.MinLength(p.version)
- payloadLength += l
- }
- if p.stopWaiting != nil { // a STOP_WAITING will only be queued when using gQUIC
- payloadFrames = append(payloadFrames, p.stopWaiting)
- payloadLength += p.stopWaiting.MinLength(p.version)
- }
-
- p.controlFrameMutex.Lock()
- for len(p.controlFrames) > 0 {
- frame := p.controlFrames[len(p.controlFrames)-1]
- minLength := frame.MinLength(p.version)
- if payloadLength+minLength > maxFrameSize {
- break
- }
- payloadFrames = append(payloadFrames, frame)
- payloadLength += minLength
- p.controlFrames = p.controlFrames[:len(p.controlFrames)-1]
- }
- p.controlFrameMutex.Unlock()
-
- if payloadLength > maxFrameSize {
- return nil, fmt.Errorf("Packet Packer BUG: packet payload (%d) too large (%d)", payloadLength, maxFrameSize)
- }
-
- if !canSendStreamFrames {
- return payloadFrames, nil
- }
-
- // temporarily increase the maxFrameSize by the (minimum) length of the DataLen field
- // this leads to a properly sized packet in all cases, since we do all the packet length calculations with StreamFrames that have the DataLen set
- // however, for the last StreamFrame in the packet, we can omit the DataLen, thus yielding a packet of exactly the correct size
- // for gQUIC STREAM frames, DataLen is always 2 bytes
- // for IETF draft style STREAM frames, the length is encoded to either 1 or 2 bytes
- if p.version.UsesIETFFrameFormat() {
- maxFrameSize++
- } else {
- maxFrameSize += 2
- }
-
- fs := p.streams.PopStreamFrames(maxFrameSize - payloadLength)
- if len(fs) != 0 {
- fs[len(fs)-1].DataLenPresent = false
- }
-
- for _, f := range fs {
- payloadFrames = append(payloadFrames, f)
- }
- return payloadFrames, nil
-}
-
-func (p *packetPacker) QueueControlFrame(frame wire.Frame) {
- switch f := frame.(type) {
- case *wire.StopWaitingFrame:
- p.stopWaiting = f
- case *wire.AckFrame:
- p.ackFrame = f
- default:
- p.controlFrameMutex.Lock()
- p.controlFrames = append(p.controlFrames, f)
- p.controlFrameMutex.Unlock()
- }
-}
-
-func (p *packetPacker) getHeader(encLevel protocol.EncryptionLevel) *wire.Header {
- pnum := p.packetNumberGenerator.Peek()
- packetNumberLen := protocol.GetPacketNumberLengthForHeader(pnum, p.leastUnacked)
-
- header := &wire.Header{
- ConnectionID: p.connectionID,
- PacketNumber: pnum,
- PacketNumberLen: packetNumberLen,
- }
-
- if p.version.UsesTLS() && encLevel != protocol.EncryptionForwardSecure {
- header.PacketNumberLen = protocol.PacketNumberLen4
- header.IsLongHeader = true
- if !p.hasSentPacket && p.perspective == protocol.PerspectiveClient {
- header.Type = protocol.PacketTypeInitial
- } else {
- header.Type = protocol.PacketTypeHandshake
- }
- }
-
- if p.omitConnectionID && encLevel == protocol.EncryptionForwardSecure {
- header.OmitConnectionID = true
- }
- if !p.version.UsesTLS() {
- if p.perspective == protocol.PerspectiveServer && encLevel == protocol.EncryptionSecure {
- header.DiversificationNonce = p.cryptoSetup.DiversificationNonce()
- }
- if p.perspective == protocol.PerspectiveClient && encLevel != protocol.EncryptionForwardSecure {
- header.VersionFlag = true
- header.Version = p.version
- }
- } else {
- if encLevel != protocol.EncryptionForwardSecure {
- header.Version = p.version
- }
- }
- return header
-}
-
-func (p *packetPacker) writeAndSealPacket(
- header *wire.Header,
- payloadFrames []wire.Frame,
- sealer handshake.Sealer,
-) ([]byte, error) {
- raw := getPacketBuffer()
- buffer := bytes.NewBuffer(raw)
-
- if err := header.Write(buffer, p.perspective, p.version); err != nil {
- return nil, err
- }
- payloadStartIndex := buffer.Len()
-
- // the Initial packet needs to be padded, so the last STREAM frame must have the data length present
- if header.Type == protocol.PacketTypeInitial {
- lastFrame := payloadFrames[len(payloadFrames)-1]
- if sf, ok := lastFrame.(*wire.StreamFrame); ok {
- sf.DataLenPresent = true
- }
- }
- for _, frame := range payloadFrames {
- if err := frame.Write(buffer, p.version); err != nil {
- return nil, err
- }
- }
- // if this is an IETF QUIC Initial packet, we need to pad it to fulfill the minimum size requirement
- // in gQUIC, padding is handled in the CHLO
- if header.Type == protocol.PacketTypeInitial {
- paddingLen := protocol.MinInitialPacketSize - sealer.Overhead() - buffer.Len()
- if paddingLen > 0 {
- buffer.Write(bytes.Repeat([]byte{0}, paddingLen))
- }
- }
- if protocol.ByteCount(buffer.Len()+sealer.Overhead()) > protocol.MaxPacketSize {
- return nil, errors.New("PacketPacker BUG: packet too large")
- }
-
- raw = raw[0:buffer.Len()]
- _ = sealer.Seal(raw[payloadStartIndex:payloadStartIndex], raw[payloadStartIndex:], header.PacketNumber, raw[:payloadStartIndex])
- raw = raw[0 : buffer.Len()+sealer.Overhead()]
-
- num := p.packetNumberGenerator.Pop()
- if num != header.PacketNumber {
- return nil, errors.New("packetPacker BUG: Peeked and Popped packet numbers do not match")
- }
- p.hasSentPacket = true
- return raw, nil
-}
-
-func (p *packetPacker) canSendData(encLevel protocol.EncryptionLevel) bool {
- if p.perspective == protocol.PerspectiveClient {
- return encLevel >= protocol.EncryptionSecure
- }
- return encLevel == protocol.EncryptionForwardSecure
-}
-
-func (p *packetPacker) SetLeastUnacked(leastUnacked protocol.PacketNumber) {
- p.leastUnacked = leastUnacked
-}
-
-func (p *packetPacker) SetOmitConnectionID() {
- p.omitConnectionID = true
-}
-
-func (p *packetPacker) MakeNextPacketRetransmittable() {
- p.makeNextPacketRetransmittable = true
-}
diff --git a/vendor/github.com/phuslu/quic-go/packet_unpacker.go b/vendor/github.com/phuslu/quic-go/packet_unpacker.go
deleted file mode 100644
index f3d2c16..0000000
--- a/vendor/github.com/phuslu/quic-go/packet_unpacker.go
+++ /dev/null
@@ -1,200 +0,0 @@
-package quic
-
-import (
- "bytes"
- "fmt"
-
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/wire"
- "github.com/phuslu/quic-go/qerr"
-)
-
-type unpackedPacket struct {
- encryptionLevel protocol.EncryptionLevel
- frames []wire.Frame
-}
-
-type quicAEAD interface {
- Open(dst, src []byte, packetNumber protocol.PacketNumber, associatedData []byte) ([]byte, protocol.EncryptionLevel, error)
-}
-
-type packetUnpacker struct {
- version protocol.VersionNumber
- aead quicAEAD
-}
-
-func (u *packetUnpacker) Unpack(headerBinary []byte, hdr *wire.Header, data []byte) (*unpackedPacket, error) {
- buf := getPacketBuffer()
- defer putPacketBuffer(buf)
- decrypted, encryptionLevel, err := u.aead.Open(buf, data, hdr.PacketNumber, headerBinary)
- if err != nil {
- // Wrap err in quicError so that public reset is sent by session
- return nil, qerr.Error(qerr.DecryptionFailure, err.Error())
- }
- r := bytes.NewReader(decrypted)
-
- if r.Len() == 0 {
- return nil, qerr.MissingPayload
- }
-
- fs := make([]wire.Frame, 0, 2)
-
- // Read all frames in the packet
- for r.Len() > 0 {
- typeByte, _ := r.ReadByte()
- if typeByte == 0x0 { // PADDING frame
- continue
- }
- r.UnreadByte()
-
- frame, err := u.parseFrame(r, typeByte, hdr)
- if err != nil {
- return nil, err
- }
- if sf, ok := frame.(*wire.StreamFrame); ok {
- if sf.StreamID != u.version.CryptoStreamID() && encryptionLevel <= protocol.EncryptionUnencrypted {
- return nil, qerr.Error(qerr.UnencryptedStreamData, fmt.Sprintf("received unencrypted stream data on stream %d", sf.StreamID))
- }
- }
- if frame != nil {
- fs = append(fs, frame)
- }
- }
-
- return &unpackedPacket{
- encryptionLevel: encryptionLevel,
- frames: fs,
- }, nil
-}
-
-func (u *packetUnpacker) parseFrame(r *bytes.Reader, typeByte byte, hdr *wire.Header) (wire.Frame, error) {
- if u.version.UsesIETFFrameFormat() {
- return u.parseIETFFrame(r, typeByte, hdr)
- }
- return u.parseGQUICFrame(r, typeByte, hdr)
-}
-
-func (u *packetUnpacker) parseIETFFrame(r *bytes.Reader, typeByte byte, hdr *wire.Header) (wire.Frame, error) {
- var frame wire.Frame
- var err error
- if typeByte&0xf8 == 0x10 {
- frame, err = wire.ParseStreamFrame(r, u.version)
- if err != nil {
- err = qerr.Error(qerr.InvalidStreamData, err.Error())
- }
- return frame, err
- }
- // TODO: implement all IETF QUIC frame types
- switch typeByte {
- case 0x1:
- frame, err = wire.ParseRstStreamFrame(r, u.version)
- if err != nil {
- err = qerr.Error(qerr.InvalidRstStreamData, err.Error())
- }
- case 0x2:
- frame, err = wire.ParseConnectionCloseFrame(r, u.version)
- if err != nil {
- err = qerr.Error(qerr.InvalidConnectionCloseData, err.Error())
- }
- case 0x4:
- frame, err = wire.ParseMaxDataFrame(r, u.version)
- if err != nil {
- err = qerr.Error(qerr.InvalidWindowUpdateData, err.Error())
- }
- case 0x5:
- frame, err = wire.ParseMaxStreamDataFrame(r, u.version)
- if err != nil {
- err = qerr.Error(qerr.InvalidWindowUpdateData, err.Error())
- }
- case 0x6:
- frame, err = wire.ParseMaxStreamIDFrame(r, u.version)
- if err != nil {
- err = qerr.Error(qerr.InvalidFrameData, err.Error())
- }
- case 0x7:
- frame, err = wire.ParsePingFrame(r, u.version)
- case 0x8:
- frame, err = wire.ParseBlockedFrame(r, u.version)
- if err != nil {
- err = qerr.Error(qerr.InvalidBlockedData, err.Error())
- }
- case 0x9:
- frame, err = wire.ParseStreamBlockedFrame(r, u.version)
- if err != nil {
- err = qerr.Error(qerr.InvalidBlockedData, err.Error())
- }
- case 0xa:
- frame, err = wire.ParseStreamIDBlockedFrame(r, u.version)
- if err != nil {
- err = qerr.Error(qerr.InvalidFrameData, err.Error())
- }
- case 0xc:
- frame, err = wire.ParseStopSendingFrame(r, u.version)
- if err != nil {
- err = qerr.Error(qerr.InvalidFrameData, err.Error())
- }
- case 0xe:
- frame, err = wire.ParseAckFrame(r, u.version)
- if err != nil {
- err = qerr.Error(qerr.InvalidAckData, err.Error())
- }
- default:
- err = qerr.Error(qerr.InvalidFrameData, fmt.Sprintf("unknown type byte 0x%x", typeByte))
- }
- return frame, err
-}
-
-func (u *packetUnpacker) parseGQUICFrame(r *bytes.Reader, typeByte byte, hdr *wire.Header) (wire.Frame, error) {
- var frame wire.Frame
- var err error
- if typeByte&0x80 == 0x80 {
- frame, err = wire.ParseStreamFrame(r, u.version)
- if err != nil {
- err = qerr.Error(qerr.InvalidStreamData, err.Error())
- }
- return frame, err
- } else if typeByte&0xc0 == 0x40 {
- frame, err = wire.ParseAckFrame(r, u.version)
- if err != nil {
- err = qerr.Error(qerr.InvalidAckData, err.Error())
- }
- return frame, err
- }
- switch typeByte {
- case 0x1:
- frame, err = wire.ParseRstStreamFrame(r, u.version)
- if err != nil {
- err = qerr.Error(qerr.InvalidRstStreamData, err.Error())
- }
- case 0x2:
- frame, err = wire.ParseConnectionCloseFrame(r, u.version)
- if err != nil {
- err = qerr.Error(qerr.InvalidConnectionCloseData, err.Error())
- }
- case 0x3:
- frame, err = wire.ParseGoawayFrame(r, u.version)
- if err != nil {
- err = qerr.Error(qerr.InvalidGoawayData, err.Error())
- }
- case 0x4:
- frame, err = wire.ParseWindowUpdateFrame(r, u.version)
- if err != nil {
- err = qerr.Error(qerr.InvalidWindowUpdateData, err.Error())
- }
- case 0x5:
- frame, err = wire.ParseBlockedFrameLegacy(r, u.version)
- if err != nil {
- err = qerr.Error(qerr.InvalidBlockedData, err.Error())
- }
- case 0x6:
- frame, err = wire.ParseStopWaitingFrame(r, hdr.PacketNumber, hdr.PacketNumberLen, u.version)
- if err != nil {
- err = qerr.Error(qerr.InvalidStopWaitingData, err.Error())
- }
- case 0x7:
- frame, err = wire.ParsePingFrame(r, u.version)
- default:
- err = qerr.Error(qerr.InvalidFrameData, fmt.Sprintf("unknown type byte 0x%x", typeByte))
- }
- return frame, err
-}
diff --git a/vendor/github.com/phuslu/quic-go/qerr/error_codes.go b/vendor/github.com/phuslu/quic-go/qerr/error_codes.go
deleted file mode 100644
index f3e6dd9..0000000
--- a/vendor/github.com/phuslu/quic-go/qerr/error_codes.go
+++ /dev/null
@@ -1,193 +0,0 @@
-package qerr
-
-// The error codes defined by QUIC
-// Remember to run `go generate ./...` whenever the error codes change.
-//go:generate stringer -type=ErrorCode
-const (
- InternalError ErrorCode = 1
- // There were data frames after the a fin or reset.
- StreamDataAfterTermination ErrorCode = 2
- // Control frame is malformed.
- InvalidPacketHeader ErrorCode = 3
- // Frame data is malformed.
- InvalidFrameData ErrorCode = 4
- // The packet contained no payload.
- MissingPayload ErrorCode = 48
- // FEC data is malformed.
- InvalidFecData ErrorCode = 5
- // STREAM frame data is malformed.
- InvalidStreamData ErrorCode = 46
- // STREAM frame data overlaps with buffered data.
- OverlappingStreamData ErrorCode = 87
- // Received STREAM frame data is not encrypted.
- UnencryptedStreamData ErrorCode = 61
- // Attempt to send unencrypted STREAM frame.
- AttemptToSendUnencryptedStreamData ErrorCode = 88
- // FEC frame data is not encrypted.
- UnencryptedFecData ErrorCode = 77
- // RST_STREAM frame data is malformed.
- InvalidRstStreamData ErrorCode = 6
- // CONNECTION_CLOSE frame data is malformed.
- InvalidConnectionCloseData ErrorCode = 7
- // GOAWAY frame data is malformed.
- InvalidGoawayData ErrorCode = 8
- // WINDOW_UPDATE frame data is malformed.
- InvalidWindowUpdateData ErrorCode = 57
- // BLOCKED frame data is malformed.
- InvalidBlockedData ErrorCode = 58
- // STOP_WAITING frame data is malformed.
- InvalidStopWaitingData ErrorCode = 60
- // PATH_CLOSE frame data is malformed.
- InvalidPathCloseData ErrorCode = 78
- // ACK frame data is malformed.
- InvalidAckData ErrorCode = 9
-
- // Version negotiation packet is malformed.
- InvalidVersionNegotiationPacket ErrorCode = 10
- // Public RST packet is malformed.
- InvalidPublicRstPacket ErrorCode = 11
- // There was an error decrypting.
- DecryptionFailure ErrorCode = 12
- // There was an error encrypting.
- EncryptionFailure ErrorCode = 13
- // The packet exceeded kMaxPacketSize.
- PacketTooLarge ErrorCode = 14
- // The peer is going away. May be a client or server.
- PeerGoingAway ErrorCode = 16
- // A stream ID was invalid.
- InvalidStreamID ErrorCode = 17
- // A priority was invalid.
- InvalidPriority ErrorCode = 49
- // Too many streams already open.
- TooManyOpenStreams ErrorCode = 18
- // The peer created too many available streams.
- TooManyAvailableStreams ErrorCode = 76
- // Received public reset for this connection.
- PublicReset ErrorCode = 19
- // Invalid protocol version.
- InvalidVersion ErrorCode = 20
-
- // The Header ID for a stream was too far from the previous.
- InvalidHeaderID ErrorCode = 22
- // Negotiable parameter received during handshake had invalid value.
- InvalidNegotiatedValue ErrorCode = 23
- // There was an error decompressing data.
- DecompressionFailure ErrorCode = 24
- // The connection timed out due to no network activity.
- NetworkIdleTimeout ErrorCode = 25
- // The connection timed out waiting for the handshake to complete.
- HandshakeTimeout ErrorCode = 67
- // There was an error encountered migrating addresses.
- ErrorMigratingAddress ErrorCode = 26
- // There was an error encountered migrating port only.
- ErrorMigratingPort ErrorCode = 86
- // There was an error while writing to the socket.
- PacketWriteError ErrorCode = 27
- // There was an error while reading from the socket.
- PacketReadError ErrorCode = 51
- // We received a STREAM_FRAME with no data and no fin flag set.
- EmptyStreamFrameNoFin ErrorCode = 50
- // We received invalid data on the headers stream.
- InvalidHeadersStreamData ErrorCode = 56
- // Invalid data on the headers stream received because of decompression
- // failure.
- HeadersStreamDataDecompressFailure ErrorCode = 97
- // The peer received too much data, violating flow control.
- FlowControlReceivedTooMuchData ErrorCode = 59
- // The peer sent too much data, violating flow control.
- FlowControlSentTooMuchData ErrorCode = 63
- // The peer received an invalid flow control window.
- FlowControlInvalidWindow ErrorCode = 64
- // The connection has been IP pooled into an existing connection.
- ConnectionIPPooled ErrorCode = 62
- // The connection has too many outstanding sent packets.
- TooManyOutstandingSentPackets ErrorCode = 68
- // The connection has too many outstanding received packets.
- TooManyOutstandingReceivedPackets ErrorCode = 69
- // The quic connection has been cancelled.
- ConnectionCancelled ErrorCode = 70
- // Disabled QUIC because of high packet loss rate.
- BadPacketLossRate ErrorCode = 71
- // Disabled QUIC because of too many PUBLIC_RESETs post handshake.
- PublicResetsPostHandshake ErrorCode = 73
- // Disabled QUIC because of too many timeouts with streams open.
- TimeoutsWithOpenStreams ErrorCode = 74
- // Closed because we failed to serialize a packet.
- FailedToSerializePacket ErrorCode = 75
- // QUIC timed out after too many RTOs.
- TooManyRtos ErrorCode = 85
-
- // Crypto errors.
-
- // Hanshake failed.
- HandshakeFailed ErrorCode = 28
- // Handshake message contained out of order tags.
- CryptoTagsOutOfOrder ErrorCode = 29
- // Handshake message contained too many entries.
- CryptoTooManyEntries ErrorCode = 30
- // Handshake message contained an invalid value length.
- CryptoInvalidValueLength ErrorCode = 31
- // A crypto message was received after the handshake was complete.
- CryptoMessageAfterHandshakeComplete ErrorCode = 32
- // A crypto message was received with an illegal message tag.
- InvalidCryptoMessageType ErrorCode = 33
- // A crypto message was received with an illegal parameter.
- InvalidCryptoMessageParameter ErrorCode = 34
- // An invalid channel id signature was supplied.
- InvalidChannelIDSignature ErrorCode = 52
- // A crypto message was received with a mandatory parameter missing.
- CryptoMessageParameterNotFound ErrorCode = 35
- // A crypto message was received with a parameter that has no overlap
- // with the local parameter.
- CryptoMessageParameterNoOverlap ErrorCode = 36
- // A crypto message was received that contained a parameter with too few
- // values.
- CryptoMessageIndexNotFound ErrorCode = 37
- // An internal error occurred in crypto processing.
- CryptoInternalError ErrorCode = 38
- // A crypto handshake message specified an unsupported version.
- CryptoVersionNotSupported ErrorCode = 39
- // A crypto handshake message resulted in a stateless reject.
- CryptoHandshakeStatelessReject ErrorCode = 72
- // There was no intersection between the crypto primitives supported by the
- // peer and ourselves.
- CryptoNoSupport ErrorCode = 40
- // The server rejected our client hello messages too many times.
- CryptoTooManyRejects ErrorCode = 41
- // The client rejected the server's certificate chain or signature.
- ProofInvalid ErrorCode = 42
- // A crypto message was received with a duplicate tag.
- CryptoDuplicateTag ErrorCode = 43
- // A crypto message was received with the wrong encryption level (i.e. it
- // should have been encrypted but was not.)
- CryptoEncryptionLevelIncorrect ErrorCode = 44
- // The server config for a server has expired.
- CryptoServerConfigExpired ErrorCode = 45
- // We failed to setup the symmetric keys for a connection.
- CryptoSymmetricKeySetupFailed ErrorCode = 53
- // A handshake message arrived, but we are still validating the
- // previous handshake message.
- CryptoMessageWhileValidatingClientHello ErrorCode = 54
- // A server config update arrived before the handshake is complete.
- CryptoUpdateBeforeHandshakeComplete ErrorCode = 65
- // This connection involved a version negotiation which appears to have been
- // tampered with.
- VersionNegotiationMismatch ErrorCode = 55
-
- // Multipath is not enabled, but a packet with multipath flag on is received.
- BadMultipathFlag ErrorCode = 79
-
- // IP address changed causing connection close.
- IPAddressChanged ErrorCode = 80
-
- // Connection migration errors.
- // Network changed, but connection had no migratable streams.
- ConnectionMigrationNoMigratableStreams ErrorCode = 81
- // Connection changed networks too many times.
- ConnectionMigrationTooManyChanges ErrorCode = 82
- // Connection migration was attempted, but there was no new network to
- // migrate to.
- ConnectionMigrationNoNewNetwork ErrorCode = 83
- // Network changed, but connection had one or more non-migratable streams.
- ConnectionMigrationNonMigratableStream ErrorCode = 84
-)
diff --git a/vendor/github.com/phuslu/quic-go/qerr/errorcode_string.go b/vendor/github.com/phuslu/quic-go/qerr/errorcode_string.go
deleted file mode 100644
index 22d0c85..0000000
--- a/vendor/github.com/phuslu/quic-go/qerr/errorcode_string.go
+++ /dev/null
@@ -1,46 +0,0 @@
-// Code generated by "stringer -type=ErrorCode"; DO NOT EDIT.
-
-package qerr
-
-import "strconv"
-
-const (
- _ErrorCode_name_0 = "InternalErrorStreamDataAfterTerminationInvalidPacketHeaderInvalidFrameDataInvalidFecDataInvalidRstStreamDataInvalidConnectionCloseDataInvalidGoawayDataInvalidAckDataInvalidVersionNegotiationPacketInvalidPublicRstPacketDecryptionFailureEncryptionFailurePacketTooLarge"
- _ErrorCode_name_1 = "PeerGoingAwayInvalidStreamIDTooManyOpenStreamsPublicResetInvalidVersion"
- _ErrorCode_name_2 = "InvalidHeaderIDInvalidNegotiatedValueDecompressionFailureNetworkIdleTimeoutErrorMigratingAddressPacketWriteErrorHandshakeFailedCryptoTagsOutOfOrderCryptoTooManyEntriesCryptoInvalidValueLengthCryptoMessageAfterHandshakeCompleteInvalidCryptoMessageTypeInvalidCryptoMessageParameterCryptoMessageParameterNotFoundCryptoMessageParameterNoOverlapCryptoMessageIndexNotFoundCryptoInternalErrorCryptoVersionNotSupportedCryptoNoSupportCryptoTooManyRejectsProofInvalidCryptoDuplicateTagCryptoEncryptionLevelIncorrectCryptoServerConfigExpiredInvalidStreamData"
- _ErrorCode_name_3 = "MissingPayloadInvalidPriorityEmptyStreamFrameNoFinPacketReadErrorInvalidChannelIDSignatureCryptoSymmetricKeySetupFailedCryptoMessageWhileValidatingClientHelloVersionNegotiationMismatchInvalidHeadersStreamDataInvalidWindowUpdateDataInvalidBlockedDataFlowControlReceivedTooMuchDataInvalidStopWaitingDataUnencryptedStreamDataConnectionIPPooledFlowControlSentTooMuchDataFlowControlInvalidWindowCryptoUpdateBeforeHandshakeComplete"
- _ErrorCode_name_4 = "HandshakeTimeoutTooManyOutstandingSentPacketsTooManyOutstandingReceivedPacketsConnectionCancelledBadPacketLossRateCryptoHandshakeStatelessRejectPublicResetsPostHandshakeTimeoutsWithOpenStreamsFailedToSerializePacketTooManyAvailableStreamsUnencryptedFecDataInvalidPathCloseDataBadMultipathFlagIPAddressChangedConnectionMigrationNoMigratableStreamsConnectionMigrationTooManyChangesConnectionMigrationNoNewNetworkConnectionMigrationNonMigratableStreamTooManyRtosErrorMigratingPortOverlappingStreamDataAttemptToSendUnencryptedStreamData"
- _ErrorCode_name_5 = "HeadersStreamDataDecompressFailure"
-)
-
-var (
- _ErrorCode_index_0 = [...]uint16{0, 13, 39, 58, 74, 88, 108, 134, 151, 165, 196, 218, 235, 252, 266}
- _ErrorCode_index_1 = [...]uint8{0, 13, 28, 46, 57, 71}
- _ErrorCode_index_2 = [...]uint16{0, 15, 37, 57, 75, 96, 112, 127, 147, 167, 191, 226, 250, 279, 309, 340, 366, 385, 410, 425, 445, 457, 475, 505, 530, 547}
- _ErrorCode_index_3 = [...]uint16{0, 14, 29, 50, 65, 90, 119, 158, 184, 208, 231, 249, 279, 301, 322, 340, 366, 390, 425}
- _ErrorCode_index_4 = [...]uint16{0, 16, 45, 78, 97, 114, 144, 169, 192, 215, 238, 256, 276, 292, 308, 346, 379, 410, 448, 459, 477, 498, 532}
-)
-
-func (i ErrorCode) String() string {
- switch {
- case 1 <= i && i <= 14:
- i -= 1
- return _ErrorCode_name_0[_ErrorCode_index_0[i]:_ErrorCode_index_0[i+1]]
- case 16 <= i && i <= 20:
- i -= 16
- return _ErrorCode_name_1[_ErrorCode_index_1[i]:_ErrorCode_index_1[i+1]]
- case 22 <= i && i <= 46:
- i -= 22
- return _ErrorCode_name_2[_ErrorCode_index_2[i]:_ErrorCode_index_2[i+1]]
- case 48 <= i && i <= 65:
- i -= 48
- return _ErrorCode_name_3[_ErrorCode_index_3[i]:_ErrorCode_index_3[i+1]]
- case 67 <= i && i <= 88:
- i -= 67
- return _ErrorCode_name_4[_ErrorCode_index_4[i]:_ErrorCode_index_4[i+1]]
- case i == 97:
- return _ErrorCode_name_5
- default:
- return "ErrorCode(" + strconv.FormatInt(int64(i), 10) + ")"
- }
-}
diff --git a/vendor/github.com/phuslu/quic-go/qerr/quic_error.go b/vendor/github.com/phuslu/quic-go/qerr/quic_error.go
deleted file mode 100644
index 86be044..0000000
--- a/vendor/github.com/phuslu/quic-go/qerr/quic_error.go
+++ /dev/null
@@ -1,55 +0,0 @@
-package qerr
-
-import (
- "fmt"
-
- "github.com/phuslu/quic-go/internal/utils"
-)
-
-// ErrorCode can be used as a normal error without reason.
-type ErrorCode uint32
-
-func (e ErrorCode) Error() string {
- return e.String()
-}
-
-// A QuicError consists of an error code plus a error reason
-type QuicError struct {
- ErrorCode ErrorCode
- ErrorMessage string
-}
-
-// Error creates a new QuicError instance
-func Error(errorCode ErrorCode, errorMessage string) *QuicError {
- return &QuicError{
- ErrorCode: errorCode,
- ErrorMessage: errorMessage,
- }
-}
-
-func (e *QuicError) Error() string {
- return fmt.Sprintf("%s: %s", e.ErrorCode.String(), e.ErrorMessage)
-}
-
-func (e *QuicError) Timeout() bool {
- switch e.ErrorCode {
- case NetworkIdleTimeout,
- HandshakeTimeout,
- TimeoutsWithOpenStreams:
- return true
- }
- return false
-}
-
-// ToQuicError converts an arbitrary error to a QuicError. It leaves QuicErrors
-// unchanged, and properly handles `ErrorCode`s.
-func ToQuicError(err error) *QuicError {
- switch e := err.(type) {
- case *QuicError:
- return e
- case ErrorCode:
- return Error(e, "")
- }
- utils.Errorf("Internal error: %v", err)
- return Error(InternalError, err.Error())
-}
diff --git a/vendor/github.com/phuslu/quic-go/receive_stream.go b/vendor/github.com/phuslu/quic-go/receive_stream.go
deleted file mode 100644
index fbe650a..0000000
--- a/vendor/github.com/phuslu/quic-go/receive_stream.go
+++ /dev/null
@@ -1,284 +0,0 @@
-package quic
-
-import (
- "fmt"
- "io"
- "sync"
- "time"
-
- "github.com/phuslu/quic-go/internal/flowcontrol"
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/utils"
- "github.com/phuslu/quic-go/internal/wire"
-)
-
-type receiveStreamI interface {
- ReceiveStream
-
- handleStreamFrame(*wire.StreamFrame) error
- handleRstStreamFrame(*wire.RstStreamFrame) error
- closeForShutdown(error)
- getWindowUpdate() protocol.ByteCount
-}
-
-type receiveStream struct {
- mutex sync.Mutex
-
- streamID protocol.StreamID
-
- sender streamSender
-
- frameQueue *streamFrameSorter
- readPosInFrame int
- readOffset protocol.ByteCount
-
- closeForShutdownErr error
- cancelReadErr error
- resetRemotelyErr StreamError
-
- closedForShutdown bool // set when CloseForShutdown() is called
- finRead bool // set once we read a frame with a FinBit
- canceledRead bool // set when CancelRead() is called
- resetRemotely bool // set when HandleRstStreamFrame() is called
-
- readChan chan struct{}
- readDeadline time.Time
-
- flowController flowcontrol.StreamFlowController
- version protocol.VersionNumber
-}
-
-var _ ReceiveStream = &receiveStream{}
-var _ receiveStreamI = &receiveStream{}
-
-func newReceiveStream(
- streamID protocol.StreamID,
- sender streamSender,
- flowController flowcontrol.StreamFlowController,
-) *receiveStream {
- return &receiveStream{
- streamID: streamID,
- sender: sender,
- flowController: flowController,
- frameQueue: newStreamFrameSorter(),
- readChan: make(chan struct{}, 1),
- }
-}
-
-func (s *receiveStream) StreamID() protocol.StreamID {
- return s.streamID
-}
-
-// Read implements io.Reader. It is not thread safe!
-func (s *receiveStream) Read(p []byte) (int, error) {
- s.mutex.Lock()
- defer s.mutex.Unlock()
-
- if s.finRead {
- return 0, io.EOF
- }
- if s.canceledRead {
- return 0, s.cancelReadErr
- }
- if s.resetRemotely {
- return 0, s.resetRemotelyErr
- }
- if s.closedForShutdown {
- return 0, s.closeForShutdownErr
- }
-
- bytesRead := 0
- for bytesRead < len(p) {
- frame := s.frameQueue.Head()
- if frame == nil && bytesRead > 0 {
- return bytesRead, s.closeForShutdownErr
- }
-
- for {
- // Stop waiting on errors
- if s.closedForShutdown {
- return bytesRead, s.closeForShutdownErr
- }
- if s.canceledRead {
- return bytesRead, s.cancelReadErr
- }
- if s.resetRemotely {
- return bytesRead, s.resetRemotelyErr
- }
-
- deadline := s.readDeadline
- if !deadline.IsZero() && !time.Now().Before(deadline) {
- return bytesRead, errDeadline
- }
-
- if frame != nil {
- s.readPosInFrame = int(s.readOffset - frame.Offset)
- break
- }
-
- s.mutex.Unlock()
- if deadline.IsZero() {
- <-s.readChan
- } else {
- select {
- case <-s.readChan:
- case <-time.After(deadline.Sub(time.Now())):
- }
- }
- s.mutex.Lock()
- frame = s.frameQueue.Head()
- }
-
- if bytesRead > len(p) {
- return bytesRead, fmt.Errorf("BUG: bytesRead (%d) > len(p) (%d) in stream.Read", bytesRead, len(p))
- }
- if s.readPosInFrame > int(frame.DataLen()) {
- return bytesRead, fmt.Errorf("BUG: readPosInFrame (%d) > frame.DataLen (%d) in stream.Read", s.readPosInFrame, frame.DataLen())
- }
-
- s.mutex.Unlock()
-
- copy(p[bytesRead:], frame.Data[s.readPosInFrame:])
- m := utils.Min(len(p)-bytesRead, int(frame.DataLen())-s.readPosInFrame)
- s.readPosInFrame += m
- bytesRead += m
- s.readOffset += protocol.ByteCount(m)
-
- s.mutex.Lock()
- // when a RST_STREAM was received, the was already informed about the final byteOffset for this stream
- if !s.resetRemotely {
- s.flowController.AddBytesRead(protocol.ByteCount(m))
- }
- // this call triggers the flow controller to increase the flow control window, if necessary
- if s.flowController.HasWindowUpdate() {
- s.sender.onHasWindowUpdate(s.streamID)
- }
-
- if s.readPosInFrame >= int(frame.DataLen()) {
- s.frameQueue.Pop()
- s.finRead = frame.FinBit
- if frame.FinBit {
- s.sender.onStreamCompleted(s.streamID)
- return bytesRead, io.EOF
- }
- }
- }
- return bytesRead, nil
-}
-
-func (s *receiveStream) CancelRead(errorCode protocol.ApplicationErrorCode) error {
- s.mutex.Lock()
- defer s.mutex.Unlock()
-
- if s.finRead {
- return nil
- }
- if s.canceledRead {
- return nil
- }
- s.canceledRead = true
- s.cancelReadErr = fmt.Errorf("Read on stream %d canceled with error code %d", s.streamID, errorCode)
- s.signalRead()
- if s.version.UsesIETFFrameFormat() {
- s.sender.queueControlFrame(&wire.StopSendingFrame{
- StreamID: s.streamID,
- ErrorCode: errorCode,
- })
- }
- return nil
-}
-
-func (s *receiveStream) handleStreamFrame(frame *wire.StreamFrame) error {
- maxOffset := frame.Offset + frame.DataLen()
- if err := s.flowController.UpdateHighestReceived(maxOffset, frame.FinBit); err != nil {
- return err
- }
-
- s.mutex.Lock()
- defer s.mutex.Unlock()
- if err := s.frameQueue.Push(frame); err != nil && err != errDuplicateStreamData {
- return err
- }
- s.signalRead()
- return nil
-}
-
-func (s *receiveStream) handleRstStreamFrame(frame *wire.RstStreamFrame) error {
- s.mutex.Lock()
- defer s.mutex.Unlock()
-
- if s.closedForShutdown {
- return nil
- }
- if err := s.flowController.UpdateHighestReceived(frame.ByteOffset, true); err != nil {
- return err
- }
- // In gQUIC, error code 0 has a special meaning.
- // The peer will reliably continue transmitting, but is not interested in reading from the stream.
- // We should therefore just continue reading from the stream, until we encounter the FIN bit.
- if !s.version.UsesIETFFrameFormat() && frame.ErrorCode == 0 {
- return nil
- }
-
- // ignore duplicate RST_STREAM frames for this stream (after checking their final offset)
- if s.resetRemotely {
- return nil
- }
- s.resetRemotely = true
- s.resetRemotelyErr = streamCanceledError{
- errorCode: frame.ErrorCode,
- error: fmt.Errorf("Stream %d was reset with error code %d", s.streamID, frame.ErrorCode),
- }
- s.signalRead()
- s.sender.onStreamCompleted(s.streamID)
- return nil
-}
-
-func (s *receiveStream) CloseRemote(offset protocol.ByteCount) {
- s.handleStreamFrame(&wire.StreamFrame{FinBit: true, Offset: offset})
-}
-
-func (s *receiveStream) onClose(offset protocol.ByteCount) {
- if s.canceledRead && !s.version.UsesIETFFrameFormat() {
- s.sender.queueControlFrame(&wire.RstStreamFrame{
- StreamID: s.streamID,
- ByteOffset: offset,
- ErrorCode: 0,
- })
- }
-}
-
-func (s *receiveStream) SetReadDeadline(t time.Time) error {
- s.mutex.Lock()
- oldDeadline := s.readDeadline
- s.readDeadline = t
- s.mutex.Unlock()
- // if the new deadline is before the currently set deadline, wake up Read()
- if t.Before(oldDeadline) {
- s.signalRead()
- }
- return nil
-}
-
-// CloseForShutdown closes a stream abruptly.
-// It makes Read unblock (and return the error) immediately.
-// The peer will NOT be informed about this: the stream is closed without sending a FIN or RST.
-func (s *receiveStream) closeForShutdown(err error) {
- s.mutex.Lock()
- s.closedForShutdown = true
- s.closeForShutdownErr = err
- s.mutex.Unlock()
- s.signalRead()
-}
-
-func (s *receiveStream) getWindowUpdate() protocol.ByteCount {
- return s.flowController.GetWindowUpdate()
-}
-
-// signalRead performs a non-blocking send on the readChan
-func (s *receiveStream) signalRead() {
- select {
- case s.readChan <- struct{}{}:
- default:
- }
-}
diff --git a/vendor/github.com/phuslu/quic-go/send_stream.go b/vendor/github.com/phuslu/quic-go/send_stream.go
deleted file mode 100644
index 7a0ef8a..0000000
--- a/vendor/github.com/phuslu/quic-go/send_stream.go
+++ /dev/null
@@ -1,313 +0,0 @@
-package quic
-
-import (
- "context"
- "fmt"
- "sync"
- "time"
-
- "github.com/phuslu/quic-go/internal/flowcontrol"
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/utils"
- "github.com/phuslu/quic-go/internal/wire"
-)
-
-type sendStreamI interface {
- SendStream
- handleStopSendingFrame(*wire.StopSendingFrame)
- popStreamFrame(maxBytes protocol.ByteCount) (*wire.StreamFrame, bool)
- closeForShutdown(error)
- handleMaxStreamDataFrame(*wire.MaxStreamDataFrame)
-}
-
-type sendStream struct {
- mutex sync.Mutex
-
- ctx context.Context
- ctxCancel context.CancelFunc
-
- streamID protocol.StreamID
- sender streamSender
-
- writeOffset protocol.ByteCount
-
- cancelWriteErr error
- closeForShutdownErr error
-
- closedForShutdown bool // set when CloseForShutdown() is called
- finishedWriting bool // set once Close() is called
- canceledWrite bool // set when CancelWrite() is called, or a STOP_SENDING frame is received
- finSent bool // set when a STREAM_FRAME with FIN bit has b
-
- dataForWriting []byte
- writeChan chan struct{}
- writeDeadline time.Time
-
- flowController flowcontrol.StreamFlowController
-
- version protocol.VersionNumber
-}
-
-var _ SendStream = &sendStream{}
-var _ sendStreamI = &sendStream{}
-
-func newSendStream(
- streamID protocol.StreamID,
- sender streamSender,
- flowController flowcontrol.StreamFlowController,
- version protocol.VersionNumber,
-) *sendStream {
- s := &sendStream{
- streamID: streamID,
- sender: sender,
- flowController: flowController,
- writeChan: make(chan struct{}, 1),
- version: version,
- }
- s.ctx, s.ctxCancel = context.WithCancel(context.Background())
- return s
-}
-
-func (s *sendStream) StreamID() protocol.StreamID {
- return s.streamID // same for receiveStream and sendStream
-}
-
-func (s *sendStream) Write(p []byte) (int, error) {
- s.mutex.Lock()
- defer s.mutex.Unlock()
-
- if s.finishedWriting {
- return 0, fmt.Errorf("write on closed stream %d", s.streamID)
- }
- if s.canceledWrite {
- return 0, s.cancelWriteErr
- }
- if s.closeForShutdownErr != nil {
- return 0, s.closeForShutdownErr
- }
- if !s.writeDeadline.IsZero() && !time.Now().Before(s.writeDeadline) {
- return 0, errDeadline
- }
- if len(p) == 0 {
- return 0, nil
- }
-
- s.dataForWriting = make([]byte, len(p))
- copy(s.dataForWriting, p)
- s.sender.onHasStreamData(s.streamID)
-
- var bytesWritten int
- var err error
- for {
- bytesWritten = len(p) - len(s.dataForWriting)
- deadline := s.writeDeadline
- if !deadline.IsZero() && !time.Now().Before(deadline) {
- s.dataForWriting = nil
- err = errDeadline
- break
- }
- if s.dataForWriting == nil || s.canceledWrite || s.closedForShutdown {
- break
- }
-
- s.mutex.Unlock()
- if deadline.IsZero() {
- <-s.writeChan
- } else {
- select {
- case <-s.writeChan:
- case <-time.After(deadline.Sub(time.Now())):
- }
- }
- s.mutex.Lock()
- }
-
- if s.closeForShutdownErr != nil {
- err = s.closeForShutdownErr
- } else if s.cancelWriteErr != nil {
- err = s.cancelWriteErr
- }
- return bytesWritten, err
-}
-
-// popStreamFrame returns the next STREAM frame that is supposed to be sent on this stream
-// maxBytes is the maximum length this frame (including frame header) will have.
-func (s *sendStream) popStreamFrame(maxBytes protocol.ByteCount) (*wire.StreamFrame, bool /* has more data to send */) {
- s.mutex.Lock()
- defer s.mutex.Unlock()
-
- if s.closeForShutdownErr != nil {
- return nil, false
- }
-
- frame := &wire.StreamFrame{
- StreamID: s.streamID,
- Offset: s.writeOffset,
- DataLenPresent: true,
- }
- frameLen := frame.MinLength(s.version)
- if frameLen >= maxBytes { // a STREAM frame must have at least one byte of data
- return nil, s.dataForWriting != nil
- }
- frame.Data, frame.FinBit = s.getDataForWriting(maxBytes - frameLen)
- if len(frame.Data) == 0 && !frame.FinBit {
- // this can happen if:
- // - popStreamFrame is called but there's no data for writing
- // - there's data for writing, but the stream is stream-level flow control blocked
- // - there's data for writing, but the stream is connection-level flow control blocked
- if s.dataForWriting == nil {
- return nil, false
- }
- isBlocked, _ := s.flowController.IsBlocked()
- return nil, !isBlocked
- }
- if frame.FinBit {
- s.finSent = true
- s.sender.onStreamCompleted(s.streamID)
- } else if s.streamID != s.version.CryptoStreamID() { // TODO(#657): Flow control for the crypto stream
- if isBlocked, offset := s.flowController.IsBlocked(); isBlocked {
- s.sender.queueControlFrame(&wire.StreamBlockedFrame{
- StreamID: s.streamID,
- Offset: offset,
- })
- return frame, false
- }
- }
- return frame, s.dataForWriting != nil
-}
-
-func (s *sendStream) getDataForWriting(maxBytes protocol.ByteCount) ([]byte, bool /* should send FIN */) {
- if s.dataForWriting == nil {
- return nil, s.finishedWriting && !s.finSent
- }
-
- // TODO(#657): Flow control for the crypto stream
- if s.streamID != s.version.CryptoStreamID() {
- maxBytes = utils.MinByteCount(maxBytes, s.flowController.SendWindowSize())
- }
- if maxBytes == 0 {
- return nil, false
- }
-
- var ret []byte
- if protocol.ByteCount(len(s.dataForWriting)) > maxBytes {
- ret = s.dataForWriting[:maxBytes]
- s.dataForWriting = s.dataForWriting[maxBytes:]
- } else {
- ret = s.dataForWriting
- s.dataForWriting = nil
- s.signalWrite()
- }
- s.writeOffset += protocol.ByteCount(len(ret))
- s.flowController.AddBytesSent(protocol.ByteCount(len(ret)))
- return ret, s.finishedWriting && s.dataForWriting == nil && !s.finSent
-}
-
-func (s *sendStream) Close() error {
- s.mutex.Lock()
- defer s.mutex.Unlock()
-
- if s.canceledWrite {
- return fmt.Errorf("Close called for canceled stream %d", s.streamID)
- }
- s.finishedWriting = true
- s.sender.onHasStreamData(s.streamID) // need to send the FIN
- s.ctxCancel()
- return nil
-}
-
-func (s *sendStream) CancelWrite(errorCode protocol.ApplicationErrorCode) error {
- s.mutex.Lock()
- defer s.mutex.Unlock()
-
- return s.cancelWriteImpl(errorCode, fmt.Errorf("Write on stream %d canceled with error code %d", s.streamID, errorCode))
-}
-
-// must be called after locking the mutex
-func (s *sendStream) cancelWriteImpl(errorCode protocol.ApplicationErrorCode, writeErr error) error {
- if s.canceledWrite {
- return nil
- }
- if s.finishedWriting {
- return fmt.Errorf("CancelWrite for closed stream %d", s.streamID)
- }
- s.canceledWrite = true
- s.cancelWriteErr = writeErr
- s.signalWrite()
- s.sender.queueControlFrame(&wire.RstStreamFrame{
- StreamID: s.streamID,
- ByteOffset: s.writeOffset,
- ErrorCode: errorCode,
- })
- // TODO(#991): cancel retransmissions for this stream
- s.ctxCancel()
- s.sender.onStreamCompleted(s.streamID)
- return nil
-}
-
-func (s *sendStream) handleStopSendingFrame(frame *wire.StopSendingFrame) {
- s.mutex.Lock()
- defer s.mutex.Unlock()
- s.handleStopSendingFrameImpl(frame)
-}
-
-func (s *sendStream) handleMaxStreamDataFrame(frame *wire.MaxStreamDataFrame) {
- s.flowController.UpdateSendWindow(frame.ByteOffset)
- s.mutex.Lock()
- if s.dataForWriting != nil {
- s.sender.onHasStreamData(s.streamID)
- }
- s.mutex.Unlock()
-}
-
-// must be called after locking the mutex
-func (s *sendStream) handleStopSendingFrameImpl(frame *wire.StopSendingFrame) {
- writeErr := streamCanceledError{
- errorCode: frame.ErrorCode,
- error: fmt.Errorf("Stream %d was reset with error code %d", s.streamID, frame.ErrorCode),
- }
- errorCode := errorCodeStopping
- if !s.version.UsesIETFFrameFormat() {
- errorCode = errorCodeStoppingGQUIC
- }
- s.cancelWriteImpl(errorCode, writeErr)
-}
-
-func (s *sendStream) Context() context.Context {
- return s.ctx
-}
-
-func (s *sendStream) SetWriteDeadline(t time.Time) error {
- s.mutex.Lock()
- oldDeadline := s.writeDeadline
- s.writeDeadline = t
- s.mutex.Unlock()
- if t.Before(oldDeadline) {
- s.signalWrite()
- }
- return nil
-}
-
-// CloseForShutdown closes a stream abruptly.
-// It makes Write unblock (and return the error) immediately.
-// The peer will NOT be informed about this: the stream is closed without sending a FIN or RST.
-func (s *sendStream) closeForShutdown(err error) {
- s.mutex.Lock()
- s.closedForShutdown = true
- s.closeForShutdownErr = err
- s.mutex.Unlock()
- s.signalWrite()
- s.ctxCancel()
-}
-
-func (s *sendStream) getWriteOffset() protocol.ByteCount {
- return s.writeOffset
-}
-
-// signalWrite performs a non-blocking send on the writeChan
-func (s *sendStream) signalWrite() {
- select {
- case s.writeChan <- struct{}{}:
- default:
- }
-}
diff --git a/vendor/github.com/phuslu/quic-go/server.go b/vendor/github.com/phuslu/quic-go/server.go
deleted file mode 100644
index 3c57bb9..0000000
--- a/vendor/github.com/phuslu/quic-go/server.go
+++ /dev/null
@@ -1,411 +0,0 @@
-package quic
-
-import (
- "bytes"
- "crypto/tls"
- "errors"
- "net"
- "sync"
- "time"
-
- "github.com/phuslu/quic-go/internal/crypto"
- "github.com/phuslu/quic-go/internal/handshake"
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/utils"
- "github.com/phuslu/quic-go/internal/wire"
- "github.com/phuslu/quic-go/qerr"
-)
-
-// packetHandler handles packets
-type packetHandler interface {
- Session
- getCryptoStream() cryptoStreamI
- handshakeStatus() <-chan error
- handlePacket(*receivedPacket)
- GetVersion() protocol.VersionNumber
- run() error
- closeRemote(error)
-}
-
-// A Listener of QUIC
-type server struct {
- tlsConf *tls.Config
- config *Config
-
- conn net.PacketConn
-
- supportsTLS bool
- serverTLS *serverTLS
-
- certChain crypto.CertChain
- scfg *handshake.ServerConfig
-
- sessionsMutex sync.RWMutex
- sessions map[protocol.ConnectionID]packetHandler
- closed bool
-
- serverError error
- sessionQueue chan Session
- errorChan chan struct{}
-
- // set as members, so they can be set in the tests
- newSession func(conn connection, v protocol.VersionNumber, connectionID protocol.ConnectionID, sCfg *handshake.ServerConfig, tlsConf *tls.Config, config *Config) (packetHandler, error)
- deleteClosedSessionsAfter time.Duration
-}
-
-var _ Listener = &server{}
-
-// ListenAddr creates a QUIC server listening on a given address.
-// The listener is not active until Serve() is called.
-// The tls.Config must not be nil, the quic.Config may be nil.
-func ListenAddr(addr string, tlsConf *tls.Config, config *Config) (Listener, error) {
- udpAddr, err := net.ResolveUDPAddr("udp", addr)
- if err != nil {
- return nil, err
- }
- conn, err := net.ListenUDP("udp", udpAddr)
- if err != nil {
- return nil, err
- }
- return Listen(conn, tlsConf, config)
-}
-
-// Listen listens for QUIC connections on a given net.PacketConn.
-// The listener is not active until Serve() is called.
-// The tls.Config must not be nil, the quic.Config may be nil.
-func Listen(conn net.PacketConn, tlsConf *tls.Config, config *Config) (Listener, error) {
- certChain := crypto.NewCertChain(tlsConf)
- kex, err := crypto.NewCurve25519KEX()
- if err != nil {
- return nil, err
- }
- scfg, err := handshake.NewServerConfig(kex, certChain)
- if err != nil {
- return nil, err
- }
- config = populateServerConfig(config)
-
- // check if any of the supported versions supports TLS
- var supportsTLS bool
- for _, v := range config.Versions {
- if v.UsesTLS() {
- supportsTLS = true
- break
- }
- }
-
- s := &server{
- conn: conn,
- tlsConf: tlsConf,
- config: config,
- certChain: certChain,
- scfg: scfg,
- sessions: map[protocol.ConnectionID]packetHandler{},
- newSession: newSession,
- deleteClosedSessionsAfter: protocol.ClosedSessionDeleteTimeout,
- sessionQueue: make(chan Session, 5),
- errorChan: make(chan struct{}),
- supportsTLS: supportsTLS,
- }
- if supportsTLS {
- if err := s.setupTLS(); err != nil {
- return nil, err
- }
- }
- go s.serve()
- utils.Debugf("Listening for %s connections on %s", conn.LocalAddr().Network(), conn.LocalAddr().String())
- return s, nil
-}
-
-func (s *server) setupTLS() error {
- cookieHandler, err := handshake.NewCookieHandler(s.config.AcceptCookie)
- if err != nil {
- return err
- }
- serverTLS, sessionChan, err := newServerTLS(s.conn, s.config, cookieHandler, s.tlsConf)
- if err != nil {
- return err
- }
- s.serverTLS = serverTLS
- // handle TLS connection establishment statelessly
- go func() {
- for {
- select {
- case <-s.errorChan:
- return
- case sess := <-sessionChan:
- // TODO: think about what to do with connection ID collisions
- connID := sess.(*session).connectionID
- s.sessionsMutex.Lock()
- s.sessions[connID] = sess
- s.sessionsMutex.Unlock()
- s.runHandshakeAndSession(sess, connID)
- }
- }
- }()
- return nil
-}
-
-var defaultAcceptCookie = func(clientAddr net.Addr, cookie *Cookie) bool {
- if cookie == nil {
- return false
- }
- if time.Now().After(cookie.SentTime.Add(protocol.CookieExpiryTime)) {
- return false
- }
- var sourceAddr string
- if udpAddr, ok := clientAddr.(*net.UDPAddr); ok {
- sourceAddr = udpAddr.IP.String()
- } else {
- sourceAddr = clientAddr.String()
- }
- return sourceAddr == cookie.RemoteAddr
-}
-
-// populateServerConfig populates fields in the quic.Config with their default values, if none are set
-// it may be called with nil
-func populateServerConfig(config *Config) *Config {
- if config == nil {
- config = &Config{}
- }
- versions := config.Versions
- if len(versions) == 0 {
- versions = protocol.SupportedVersions
- }
-
- vsa := defaultAcceptCookie
- if config.AcceptCookie != nil {
- vsa = config.AcceptCookie
- }
-
- handshakeTimeout := protocol.DefaultHandshakeTimeout
- if config.HandshakeTimeout != 0 {
- handshakeTimeout = config.HandshakeTimeout
- }
- idleTimeout := protocol.DefaultIdleTimeout
- if config.IdleTimeout != 0 {
- idleTimeout = config.IdleTimeout
- }
-
- maxReceiveStreamFlowControlWindow := config.MaxReceiveStreamFlowControlWindow
- if maxReceiveStreamFlowControlWindow == 0 {
- maxReceiveStreamFlowControlWindow = protocol.DefaultMaxReceiveStreamFlowControlWindowServer
- }
- maxReceiveConnectionFlowControlWindow := config.MaxReceiveConnectionFlowControlWindow
- if maxReceiveConnectionFlowControlWindow == 0 {
- maxReceiveConnectionFlowControlWindow = protocol.DefaultMaxReceiveConnectionFlowControlWindowServer
- }
-
- return &Config{
- Versions: versions,
- HandshakeTimeout: handshakeTimeout,
- IdleTimeout: idleTimeout,
- AcceptCookie: vsa,
- KeepAlive: config.KeepAlive,
- MaxReceiveStreamFlowControlWindow: maxReceiveStreamFlowControlWindow,
- MaxReceiveConnectionFlowControlWindow: maxReceiveConnectionFlowControlWindow,
- }
-}
-
-// serve listens on an existing PacketConn
-func (s *server) serve() {
- for {
- data := getPacketBuffer()
- data = data[:protocol.MaxReceivePacketSize]
- // The packet size should not exceed protocol.MaxReceivePacketSize bytes
- // If it does, we only read a truncated packet, which will then end up undecryptable
- n, remoteAddr, err := s.conn.ReadFrom(data)
- if err != nil {
- s.serverError = err
- close(s.errorChan)
- _ = s.Close()
- return
- }
- data = data[:n]
- if err := s.handlePacket(s.conn, remoteAddr, data); err != nil {
- utils.Errorf("error handling packet: %s", err.Error())
- }
- }
-}
-
-// Accept returns newly openend sessions
-func (s *server) Accept() (Session, error) {
- var sess Session
- select {
- case sess = <-s.sessionQueue:
- return sess, nil
- case <-s.errorChan:
- return nil, s.serverError
- }
-}
-
-// Close the server
-func (s *server) Close() error {
- s.sessionsMutex.Lock()
- if s.closed {
- s.sessionsMutex.Unlock()
- return nil
- }
- s.closed = true
-
- var wg sync.WaitGroup
- for _, session := range s.sessions {
- if session != nil {
- wg.Add(1)
- go func(sess packetHandler) {
- // session.Close() blocks until the CONNECTION_CLOSE has been sent and the run-loop has stopped
- _ = sess.Close(nil)
- wg.Done()
- }(session)
- }
- }
- s.sessionsMutex.Unlock()
- wg.Wait()
-
- err := s.conn.Close()
- <-s.errorChan // wait for serve() to return
- return err
-}
-
-// Addr returns the server's network address
-func (s *server) Addr() net.Addr {
- return s.conn.LocalAddr()
-}
-
-func (s *server) handlePacket(pconn net.PacketConn, remoteAddr net.Addr, packet []byte) error {
- rcvTime := time.Now()
-
- r := bytes.NewReader(packet)
- hdr, err := wire.ParseHeaderSentByClient(r)
- if err != nil {
- return qerr.Error(qerr.InvalidPacketHeader, err.Error())
- }
- hdr.Raw = packet[:len(packet)-r.Len()]
- packetData := packet[len(packet)-r.Len():]
- connID := hdr.ConnectionID
-
- if hdr.Type == protocol.PacketTypeInitial {
- if s.supportsTLS {
- go s.serverTLS.HandleInitial(remoteAddr, hdr, packetData)
- }
- return nil
- }
-
- s.sessionsMutex.RLock()
- session, sessionKnown := s.sessions[connID]
- s.sessionsMutex.RUnlock()
-
- if sessionKnown && session == nil {
- // Late packet for closed session
- return nil
- }
-
- // ignore all Public Reset packets
- if hdr.ResetFlag {
- if sessionKnown {
- var pr *wire.PublicReset
- pr, err = wire.ParsePublicReset(r)
- if err != nil {
- utils.Infof("Received a Public Reset for connection %x. An error occurred parsing the packet.")
- } else {
- utils.Infof("Received a Public Reset for connection %x, rejected packet number: 0x%x.", hdr.ConnectionID, pr.RejectedPacketNumber)
- }
- } else {
- utils.Infof("Received Public Reset for unknown connection %x.", hdr.ConnectionID)
- }
- return nil
- }
-
- // If we don't have a session for this connection, and this packet cannot open a new connection, send a Public Reset
- // This should only happen after a server restart, when we still receive packets for connections that we lost the state for.
- // TODO(#943): implement sending of IETF draft style stateless resets
- if !sessionKnown && (!hdr.VersionFlag && hdr.Type != protocol.PacketTypeInitial) {
- _, err = pconn.WriteTo(wire.WritePublicReset(connID, 0, 0), remoteAddr)
- return err
- }
-
- // a session is only created once the client sent a supported version
- // if we receive a packet for a connection that already has session, it's probably an old packet that was sent by the client before the version was negotiated
- // it is safe to drop it
- if sessionKnown && hdr.VersionFlag && !protocol.IsSupportedVersion(s.config.Versions, hdr.Version) {
- return nil
- }
-
- // send a Version Negotiation Packet if the client is speaking a different protocol version
- // since the client send a Public Header (only gQUIC has a Version Flag), we need to send a gQUIC Version Negotiation Packet
- if hdr.VersionFlag && !protocol.IsSupportedVersion(s.config.Versions, hdr.Version) {
- // drop packets that are too small to be valid first packets
- if len(packet) < protocol.MinClientHelloSize+len(hdr.Raw) {
- return errors.New("dropping small packet with unknown version")
- }
- utils.Infof("Client offered version %s, sending VersionNegotiationPacket", hdr.Version)
- if _, err := pconn.WriteTo(wire.ComposeGQUICVersionNegotiation(hdr.ConnectionID, s.config.Versions), remoteAddr); err != nil {
- return err
- }
- }
-
- // This is (potentially) a Client Hello.
- // Make sure it has the minimum required size before spending any more ressources on it.
- if !sessionKnown && len(packet) < protocol.MinClientHelloSize+len(hdr.Raw) {
- return errors.New("dropping small packet for unknown connection")
- }
-
- if !sessionKnown {
- version := hdr.Version
- if !protocol.IsSupportedVersion(s.config.Versions, version) {
- return errors.New("Server BUG: negotiated version not supported")
- }
-
- utils.Infof("Serving new connection: %x, version %s from %v", hdr.ConnectionID, version, remoteAddr)
- session, err = s.newSession(
- &conn{pconn: pconn, currentAddr: remoteAddr},
- version,
- hdr.ConnectionID,
- s.scfg,
- s.tlsConf,
- s.config,
- )
- if err != nil {
- return err
- }
- s.sessionsMutex.Lock()
- s.sessions[connID] = session
- s.sessionsMutex.Unlock()
-
- s.runHandshakeAndSession(session, connID)
- }
- session.handlePacket(&receivedPacket{
- remoteAddr: remoteAddr,
- header: hdr,
- data: packetData,
- rcvTime: rcvTime,
- })
- return nil
-}
-
-func (s *server) runHandshakeAndSession(session packetHandler, connID protocol.ConnectionID) {
- go func() {
- _ = session.run()
- // session.run() returns as soon as the session is closed
- s.removeConnection(connID)
- }()
-
- go func() {
- if err := <-session.handshakeStatus(); err != nil {
- return
- }
- s.sessionQueue <- session
- }()
-}
-
-func (s *server) removeConnection(id protocol.ConnectionID) {
- s.sessionsMutex.Lock()
- s.sessions[id] = nil
- s.sessionsMutex.Unlock()
-
- time.AfterFunc(s.deleteClosedSessionsAfter, func() {
- s.sessionsMutex.Lock()
- delete(s.sessions, id)
- s.sessionsMutex.Unlock()
- })
-}
diff --git a/vendor/github.com/phuslu/quic-go/server_tls.go b/vendor/github.com/phuslu/quic-go/server_tls.go
deleted file mode 100644
index 1e587f1..0000000
--- a/vendor/github.com/phuslu/quic-go/server_tls.go
+++ /dev/null
@@ -1,214 +0,0 @@
-package quic
-
-import (
- "crypto/tls"
- "errors"
- "fmt"
- "net"
-
- "github.com/bifurcation/mint"
- "github.com/phuslu/quic-go/internal/crypto"
- "github.com/phuslu/quic-go/internal/handshake"
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/utils"
- "github.com/phuslu/quic-go/internal/wire"
- "github.com/phuslu/quic-go/qerr"
-)
-
-type nullAEAD struct {
- aead crypto.AEAD
-}
-
-var _ quicAEAD = &nullAEAD{}
-
-func (n *nullAEAD) Open(dst, src []byte, packetNumber protocol.PacketNumber, associatedData []byte) ([]byte, protocol.EncryptionLevel, error) {
- data, err := n.aead.Open(dst, src, packetNumber, associatedData)
- return data, protocol.EncryptionUnencrypted, err
-}
-
-type serverTLS struct {
- conn net.PacketConn
- config *Config
- supportedVersions []protocol.VersionNumber
- mintConf *mint.Config
- cookieProtector mint.CookieProtector
- params *handshake.TransportParameters
- newMintConn func(*handshake.CryptoStreamConn, protocol.VersionNumber) (handshake.MintTLS, <-chan handshake.TransportParameters, error)
-
- sessionChan chan<- packetHandler
-}
-
-func newServerTLS(
- conn net.PacketConn,
- config *Config,
- cookieHandler *handshake.CookieHandler,
- tlsConf *tls.Config,
-) (*serverTLS, <-chan packetHandler, error) {
- mconf, err := tlsToMintConfig(tlsConf, protocol.PerspectiveServer)
- if err != nil {
- return nil, nil, err
- }
- mconf.RequireCookie = true
- cs, err := mint.NewDefaultCookieProtector()
- if err != nil {
- return nil, nil, err
- }
- mconf.CookieProtector = cs
- mconf.CookieHandler = cookieHandler
-
- sessionChan := make(chan packetHandler)
- s := &serverTLS{
- conn: conn,
- config: config,
- supportedVersions: config.Versions,
- mintConf: mconf,
- sessionChan: sessionChan,
- params: &handshake.TransportParameters{
- StreamFlowControlWindow: protocol.ReceiveStreamFlowControlWindow,
- ConnectionFlowControlWindow: protocol.ReceiveConnectionFlowControlWindow,
- MaxStreams: protocol.MaxIncomingStreams,
- IdleTimeout: config.IdleTimeout,
- },
- }
- s.newMintConn = s.newMintConnImpl
- return s, sessionChan, nil
-}
-
-func (s *serverTLS) HandleInitial(remoteAddr net.Addr, hdr *wire.Header, data []byte) {
- utils.Debugf("Received a Packet. Handling it statelessly.")
- sess, err := s.handleInitialImpl(remoteAddr, hdr, data)
- if err != nil {
- utils.Errorf("Error occured handling initial packet: %s", err)
- return
- }
- if sess == nil { // a stateless reset was done
- return
- }
- s.sessionChan <- sess
-}
-
-// will be set to s.newMintConn by the constructor
-func (s *serverTLS) newMintConnImpl(bc *handshake.CryptoStreamConn, v protocol.VersionNumber) (handshake.MintTLS, <-chan handshake.TransportParameters, error) {
- conn := mint.Server(bc, s.mintConf)
- extHandler := handshake.NewExtensionHandlerServer(s.params, s.config.Versions, v)
- if err := conn.SetExtensionHandler(extHandler); err != nil {
- return nil, nil, err
- }
- tls := newMintController(bc, s.mintConf, protocol.PerspectiveServer)
- tls.SetExtensionHandler(extHandler)
- return tls, extHandler.GetPeerParams(), nil
-}
-
-func (s *serverTLS) sendConnectionClose(remoteAddr net.Addr, clientHdr *wire.Header, aead crypto.AEAD, closeErr error) error {
- ccf := &wire.ConnectionCloseFrame{
- ErrorCode: qerr.HandshakeFailed,
- ReasonPhrase: closeErr.Error(),
- }
- replyHdr := &wire.Header{
- IsLongHeader: true,
- Type: protocol.PacketTypeHandshake,
- ConnectionID: clientHdr.ConnectionID, // echo the client's connection ID
- PacketNumber: 1, // random packet number
- Version: clientHdr.Version,
- }
- data, err := packUnencryptedPacket(aead, replyHdr, ccf, protocol.PerspectiveServer)
- if err != nil {
- return err
- }
- _, err = s.conn.WriteTo(data, remoteAddr)
- return err
-}
-
-func (s *serverTLS) handleInitialImpl(remoteAddr net.Addr, hdr *wire.Header, data []byte) (packetHandler, error) {
- if len(hdr.Raw)+len(data) < protocol.MinInitialPacketSize {
- return nil, errors.New("dropping too small Initial packet")
- }
- // check version, if not matching send VNP
- if !protocol.IsSupportedVersion(s.supportedVersions, hdr.Version) {
- utils.Debugf("Client offered version %s, sending VersionNegotiationPacket", hdr.Version)
- _, err := s.conn.WriteTo(wire.ComposeVersionNegotiation(hdr.ConnectionID, hdr.PacketNumber, s.supportedVersions), remoteAddr)
- return nil, err
- }
-
- // unpack packet and check stream frame contents
- aead, err := crypto.NewNullAEAD(protocol.PerspectiveServer, hdr.ConnectionID, hdr.Version)
- if err != nil {
- return nil, err
- }
- frame, err := unpackInitialPacket(aead, hdr, data, hdr.Version)
- if err != nil {
- utils.Debugf("Error unpacking initial packet: %s", err)
- return nil, nil
- }
- sess, err := s.handleUnpackedInitial(remoteAddr, hdr, frame, aead)
- if err != nil {
- if ccerr := s.sendConnectionClose(remoteAddr, hdr, aead, err); ccerr != nil {
- utils.Debugf("Error sending CONNECTION_CLOSE: ", ccerr)
- }
- return nil, err
- }
- return sess, nil
-}
-
-func (s *serverTLS) handleUnpackedInitial(remoteAddr net.Addr, hdr *wire.Header, frame *wire.StreamFrame, aead crypto.AEAD) (packetHandler, error) {
- version := hdr.Version
- bc := handshake.NewCryptoStreamConn(remoteAddr)
- bc.AddDataForReading(frame.Data)
- tls, paramsChan, err := s.newMintConn(bc, version)
- if err != nil {
- return nil, err
- }
- alert := tls.Handshake()
- if alert == mint.AlertStatelessRetry {
- // the HelloRetryRequest was written to the bufferConn
- // Take that data and write send a Retry packet
- replyHdr := &wire.Header{
- IsLongHeader: true,
- Type: protocol.PacketTypeRetry,
- ConnectionID: hdr.ConnectionID, // echo the client's connection ID
- PacketNumber: hdr.PacketNumber, // echo the client's packet number
- Version: version,
- }
- f := &wire.StreamFrame{
- StreamID: version.CryptoStreamID(),
- Data: bc.GetDataForWriting(),
- }
- data, err := packUnencryptedPacket(aead, replyHdr, f, protocol.PerspectiveServer)
- if err != nil {
- return nil, err
- }
- _, err = s.conn.WriteTo(data, remoteAddr)
- return nil, err
- }
- if alert != mint.AlertNoAlert {
- return nil, alert
- }
- if tls.State() != mint.StateServerNegotiated {
- return nil, fmt.Errorf("Expected mint state to be %s, got %s", mint.StateServerNegotiated, tls.State())
- }
- if alert := tls.Handshake(); alert != mint.AlertNoAlert {
- return nil, alert
- }
- if tls.State() != mint.StateServerWaitFlight2 {
- return nil, fmt.Errorf("Expected mint state to be %s, got %s", mint.StateServerWaitFlight2, tls.State())
- }
- params := <-paramsChan
- sess, err := newTLSServerSession(
- &conn{pconn: s.conn, currentAddr: remoteAddr},
- hdr.ConnectionID, // TODO: we can use a server-chosen connection ID here
- protocol.PacketNumber(1), // TODO: use a random packet number here
- s.config,
- tls,
- bc,
- aead,
- ¶ms,
- version,
- )
- if err != nil {
- return nil, err
- }
- cs := sess.getCryptoStream()
- cs.setReadOffset(frame.DataLen())
- bc.SetStream(cs)
- return sess, nil
-}
diff --git a/vendor/github.com/phuslu/quic-go/session.go b/vendor/github.com/phuslu/quic-go/session.go
deleted file mode 100644
index 7f02758..0000000
--- a/vendor/github.com/phuslu/quic-go/session.go
+++ /dev/null
@@ -1,1017 +0,0 @@
-package quic
-
-import (
- "context"
- "crypto/tls"
- "errors"
- "net"
- "sync"
- "time"
-
- "github.com/phuslu/quic-go/ackhandler"
- "github.com/phuslu/quic-go/congestion"
- "github.com/phuslu/quic-go/internal/crypto"
- "github.com/phuslu/quic-go/internal/flowcontrol"
- "github.com/phuslu/quic-go/internal/handshake"
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/utils"
- "github.com/phuslu/quic-go/internal/wire"
- "github.com/phuslu/quic-go/qerr"
-)
-
-type unpacker interface {
- Unpack(headerBinary []byte, hdr *wire.Header, data []byte) (*unpackedPacket, error)
-}
-
-type streamGetter interface {
- GetOrOpenReceiveStream(protocol.StreamID) (receiveStreamI, error)
- GetOrOpenSendStream(protocol.StreamID) (sendStreamI, error)
-}
-
-type streamManager interface {
- GetOrOpenStream(protocol.StreamID) (streamI, error)
- GetOrOpenSendStream(protocol.StreamID) (sendStreamI, error)
- GetOrOpenReceiveStream(protocol.StreamID) (receiveStreamI, error)
- OpenStream() (Stream, error)
- OpenStreamSync() (Stream, error)
- AcceptStream() (Stream, error)
- DeleteStream(protocol.StreamID) error
- UpdateLimits(*handshake.TransportParameters)
- CloseWithError(error)
-}
-
-type receivedPacket struct {
- remoteAddr net.Addr
- header *wire.Header
- data []byte
- rcvTime time.Time
-}
-
-var (
- newCryptoSetup = handshake.NewCryptoSetup
- newCryptoSetupClient = handshake.NewCryptoSetupClient
-)
-
-type closeError struct {
- err error
- remote bool
-}
-
-// A Session is a QUIC session
-type session struct {
- connectionID protocol.ConnectionID
- perspective protocol.Perspective
- version protocol.VersionNumber
- config *Config
-
- conn connection
-
- streamsMap streamManager
- cryptoStream cryptoStreamI
-
- rttStats *congestion.RTTStats
-
- sentPacketHandler ackhandler.SentPacketHandler
- receivedPacketHandler ackhandler.ReceivedPacketHandler
- streamFramer *streamFramer
- windowUpdateQueue *windowUpdateQueue
- connFlowController flowcontrol.ConnectionFlowController
-
- unpacker unpacker
- packer *packetPacker
-
- cryptoSetup handshake.CryptoSetup
-
- receivedPackets chan *receivedPacket
- sendingScheduled chan struct{}
- // closeChan is used to notify the run loop that it should terminate.
- closeChan chan closeError
- closeOnce sync.Once
-
- ctx context.Context
- ctxCancel context.CancelFunc
-
- // when we receive too many undecryptable packets during the handshake, we send a Public reset
- // but only after a time of protocol.PublicResetTimeout has passed
- undecryptablePackets []*receivedPacket
- receivedTooManyUndecrytablePacketsTime time.Time
-
- // this channel is passed to the CryptoSetup and receives the transport parameters, as soon as the peer sends them
- paramsChan <-chan handshake.TransportParameters
- // the handshakeEvent channel is passed to the CryptoSetup.
- // It receives when it makes sense to try decrypting undecryptable packets.
- handshakeEvent <-chan struct{}
- // handshakeChan is returned by handshakeStatus.
- // It receives any error that might occur during the handshake.
- // It is closed when the handshake is complete.
- handshakeChan chan error
- handshakeComplete bool
-
- lastRcvdPacketNumber protocol.PacketNumber
- // Used to calculate the next packet number from the truncated wire
- // representation, and sent back in public reset packets
- largestRcvdPacketNumber protocol.PacketNumber
-
- sessionCreationTime time.Time
- lastNetworkActivityTime time.Time
-
- peerParams *handshake.TransportParameters
-
- timer *utils.Timer
- // keepAlivePingSent stores whether a Ping frame was sent to the peer or not
- // it is reset as soon as we receive a packet from the peer
- keepAlivePingSent bool
-
- connectionState *tls.ConnectionState
-}
-
-var _ Session = &session{}
-var _ streamSender = &session{}
-
-// newSession makes a new session
-func newSession(
- conn connection,
- v protocol.VersionNumber,
- connectionID protocol.ConnectionID,
- scfg *handshake.ServerConfig,
- tlsConf *tls.Config,
- config *Config,
-) (packetHandler, error) {
- paramsChan := make(chan handshake.TransportParameters)
- handshakeEvent := make(chan struct{}, 1)
- s := &session{
- conn: conn,
- connectionID: connectionID,
- perspective: protocol.PerspectiveServer,
- version: v,
- config: config,
- handshakeEvent: handshakeEvent,
- paramsChan: paramsChan,
- }
- s.preSetup()
- transportParams := &handshake.TransportParameters{
- StreamFlowControlWindow: protocol.ReceiveStreamFlowControlWindow,
- ConnectionFlowControlWindow: protocol.ReceiveConnectionFlowControlWindow,
- MaxStreams: protocol.MaxIncomingStreams,
- IdleTimeout: s.config.IdleTimeout,
- }
- cs, err := newCryptoSetup(
- s.cryptoStream,
- s.connectionID,
- s.conn.RemoteAddr(),
- s.version,
- scfg,
- transportParams,
- s.config.Versions,
- s.config.AcceptCookie,
- paramsChan,
- handshakeEvent,
- )
- if err != nil {
- return nil, err
- }
- s.cryptoSetup = cs
- return s, s.postSetup(1)
-}
-
-// declare this as a variable, so that we can it mock it in the tests
-var newClientSession = func(
- conn connection,
- hostname string,
- v protocol.VersionNumber,
- connectionID protocol.ConnectionID,
- tlsConf *tls.Config,
- config *Config,
- initialVersion protocol.VersionNumber,
- negotiatedVersions []protocol.VersionNumber, // needed for validation of the GQUIC version negotiaton
-) (packetHandler, error) {
- paramsChan := make(chan handshake.TransportParameters)
- handshakeEvent := make(chan struct{}, 1)
- s := &session{
- conn: conn,
- connectionID: connectionID,
- perspective: protocol.PerspectiveClient,
- version: v,
- config: config,
- handshakeEvent: handshakeEvent,
- paramsChan: paramsChan,
- }
- s.preSetup()
- transportParams := &handshake.TransportParameters{
- StreamFlowControlWindow: protocol.ReceiveStreamFlowControlWindow,
- ConnectionFlowControlWindow: protocol.ReceiveConnectionFlowControlWindow,
- MaxStreams: protocol.MaxIncomingStreams,
- IdleTimeout: s.config.IdleTimeout,
- OmitConnectionID: s.config.RequestConnectionIDOmission,
- }
- cs, err := newCryptoSetupClient(
- s.cryptoStream,
- hostname,
- s.connectionID,
- s.version,
- tlsConf,
- transportParams,
- paramsChan,
- handshakeEvent,
- initialVersion,
- negotiatedVersions,
- )
- if err != nil {
- return nil, err
- }
- s.cryptoSetup = cs
- return s, s.postSetup(1)
-}
-
-func newTLSServerSession(
- conn connection,
- connectionID protocol.ConnectionID,
- initialPacketNumber protocol.PacketNumber,
- config *Config,
- tls handshake.MintTLS,
- cryptoStreamConn *handshake.CryptoStreamConn,
- nullAEAD crypto.AEAD,
- peerParams *handshake.TransportParameters,
- v protocol.VersionNumber,
-) (packetHandler, error) {
- handshakeEvent := make(chan struct{}, 1)
- s := &session{
- conn: conn,
- config: config,
- connectionID: connectionID,
- perspective: protocol.PerspectiveServer,
- version: v,
- handshakeEvent: handshakeEvent,
- }
- s.preSetup()
- s.cryptoSetup = handshake.NewCryptoSetupTLSServer(
- tls,
- cryptoStreamConn,
- nullAEAD,
- handshakeEvent,
- v,
- )
- if err := s.postSetup(initialPacketNumber); err != nil {
- return nil, err
- }
- s.peerParams = peerParams
- s.processTransportParameters(peerParams)
- s.unpacker = &packetUnpacker{aead: s.cryptoSetup, version: s.version}
- return s, nil
-}
-
-// declare this as a variable, such that we can it mock it in the tests
-var newTLSClientSession = func(
- conn connection,
- hostname string,
- v protocol.VersionNumber,
- connectionID protocol.ConnectionID,
- config *Config,
- tls handshake.MintTLS,
- paramsChan <-chan handshake.TransportParameters,
- initialPacketNumber protocol.PacketNumber,
-) (packetHandler, error) {
- handshakeEvent := make(chan struct{}, 1)
- s := &session{
- conn: conn,
- config: config,
- connectionID: connectionID,
- perspective: protocol.PerspectiveClient,
- version: v,
- handshakeEvent: handshakeEvent,
- paramsChan: paramsChan,
- }
- s.preSetup()
- tls.SetCryptoStream(s.cryptoStream)
- cs, err := handshake.NewCryptoSetupTLSClient(
- s.cryptoStream,
- s.connectionID,
- hostname,
- handshakeEvent,
- tls,
- v,
- )
- if err != nil {
- return nil, err
- }
- s.cryptoSetup = cs
- return s, s.postSetup(initialPacketNumber)
-}
-
-func (s *session) preSetup() {
- s.rttStats = &congestion.RTTStats{}
- s.connFlowController = flowcontrol.NewConnectionFlowController(
- protocol.ReceiveConnectionFlowControlWindow,
- protocol.ByteCount(s.config.MaxReceiveConnectionFlowControlWindow),
- s.rttStats,
- )
- s.cryptoStream = s.newCryptoStream()
-}
-
-func (s *session) postSetup(initialPacketNumber protocol.PacketNumber) error {
- s.handshakeChan = make(chan error, 1)
- s.receivedPackets = make(chan *receivedPacket, protocol.MaxSessionUnprocessedPackets)
- s.closeChan = make(chan closeError, 1)
- s.sendingScheduled = make(chan struct{}, 1)
- s.undecryptablePackets = make([]*receivedPacket, 0, protocol.MaxUndecryptablePackets)
- s.ctx, s.ctxCancel = context.WithCancel(context.Background())
-
- s.timer = utils.NewTimer()
- now := time.Now()
- s.lastNetworkActivityTime = now
- s.sessionCreationTime = now
-
- s.sentPacketHandler = ackhandler.NewSentPacketHandler(s.rttStats)
- s.receivedPacketHandler = ackhandler.NewReceivedPacketHandler(s.version)
-
- if s.version.UsesTLS() {
- s.streamsMap = newStreamsMap(s.newStream, s.perspective)
- } else {
- s.streamsMap = newStreamsMapLegacy(s.newStream, s.perspective)
- }
- s.streamFramer = newStreamFramer(s.cryptoStream, s.streamsMap, s.version)
- s.packer = newPacketPacker(s.connectionID,
- initialPacketNumber,
- s.cryptoSetup,
- s.streamFramer,
- s.perspective,
- s.version,
- )
- s.windowUpdateQueue = newWindowUpdateQueue(s.streamsMap, s.cryptoStream, s.packer.QueueControlFrame)
- s.unpacker = &packetUnpacker{aead: s.cryptoSetup, version: s.version}
- return nil
-}
-
-// run the session main loop
-func (s *session) run() error {
- defer s.ctxCancel()
-
- go func() {
- cs, err := s.cryptoSetup.HandleCryptoStream()
- s.connectionState = cs
- if err != nil {
- s.Close(err)
- }
- }()
-
- var closeErr closeError
- handshakeEvent := s.handshakeEvent
-
-runLoop:
- for {
- // Close immediately if requested
- select {
- case closeErr = <-s.closeChan:
- break runLoop
- default:
- }
-
- s.maybeResetTimer()
-
- select {
- case closeErr = <-s.closeChan:
- break runLoop
- case <-s.timer.Chan():
- s.timer.SetRead()
- // We do all the interesting stuff after the switch statement, so
- // nothing to see here.
- case <-s.sendingScheduled:
- // We do all the interesting stuff after the switch statement, so
- // nothing to see here.
- case p := <-s.receivedPackets:
- err := s.handlePacketImpl(p)
- if err != nil {
- if qErr, ok := err.(*qerr.QuicError); ok && qErr.ErrorCode == qerr.DecryptionFailure {
- s.tryQueueingUndecryptablePacket(p)
- continue
- }
- s.closeLocal(err)
- continue
- }
- // This is a bit unclean, but works properly, since the packet always
- // begins with the public header and we never copy it.
- putPacketBuffer(p.header.Raw)
- case p := <-s.paramsChan:
- s.processTransportParameters(&p)
- case _, ok := <-handshakeEvent:
- if !ok { // the aeadChanged chan was closed. This means that the handshake is completed.
- s.handshakeComplete = true
- handshakeEvent = nil // prevent this case from ever being selected again
- s.sentPacketHandler.SetHandshakeComplete()
- if !s.version.UsesTLS() && s.perspective == protocol.PerspectiveClient {
- // In gQUIC, there's no equivalent to the Finished message in TLS
- // The server knows that the handshake is complete when it receives the first forward-secure packet sent by the client.
- // We need to make sure that the client actually sends such a packet.
- s.packer.QueueControlFrame(&wire.PingFrame{})
- }
- close(s.handshakeChan)
- } else {
- s.tryDecryptingQueuedPackets()
- }
- }
-
- now := time.Now()
- if timeout := s.sentPacketHandler.GetAlarmTimeout(); !timeout.IsZero() && timeout.Before(now) {
- // This could cause packets to be retransmitted, so check it before trying
- // to send packets.
- s.sentPacketHandler.OnAlarm()
- }
-
- if s.config.KeepAlive && s.handshakeComplete && time.Since(s.lastNetworkActivityTime) >= s.peerParams.IdleTimeout/2 {
- // send the PING frame since there is no activity in the session
- s.packer.QueueControlFrame(&wire.PingFrame{})
- s.keepAlivePingSent = true
- }
-
- sendingAllowed := s.sentPacketHandler.SendingAllowed()
- if !sendingAllowed { // if congestion limited, at least try sending an ACK frame
- if err := s.maybeSendAckOnlyPacket(); err != nil {
- s.closeLocal(err)
- }
- } else {
- // repeatedly try sending until we don't have any more data, or run out of the congestion window
- for sendingAllowed {
- sentPacket, err := s.sendPacket()
- if err != nil {
- s.closeLocal(err)
- break
- }
- if !sentPacket {
- break
- }
- sendingAllowed = s.sentPacketHandler.SendingAllowed()
- }
- }
-
- if !s.receivedTooManyUndecrytablePacketsTime.IsZero() && s.receivedTooManyUndecrytablePacketsTime.Add(protocol.PublicResetTimeout).Before(now) && len(s.undecryptablePackets) != 0 {
- s.closeLocal(qerr.Error(qerr.DecryptionFailure, "too many undecryptable packets received"))
- }
- if !s.handshakeComplete && now.Sub(s.sessionCreationTime) >= s.config.HandshakeTimeout {
- s.closeLocal(qerr.Error(qerr.HandshakeTimeout, "Crypto handshake did not complete in time."))
- }
- if s.handshakeComplete && now.Sub(s.lastNetworkActivityTime) >= s.config.IdleTimeout {
- s.closeLocal(qerr.Error(qerr.NetworkIdleTimeout, "No recent network activity."))
- }
- }
-
- // only send the error the handshakeChan when the handshake is not completed yet
- // otherwise this chan will already be closed
- if !s.handshakeComplete {
- s.handshakeChan <- closeErr.err
- }
- s.handleCloseError(closeErr)
- return closeErr.err
-}
-
-func (s *session) Context() context.Context {
- return s.ctx
-}
-
-func (s *session) maybeResetTimer() {
- var deadline time.Time
- if s.config.KeepAlive && s.handshakeComplete && !s.keepAlivePingSent {
- deadline = s.lastNetworkActivityTime.Add(s.peerParams.IdleTimeout / 2)
- } else {
- deadline = s.lastNetworkActivityTime.Add(s.config.IdleTimeout)
- }
-
- if ackAlarm := s.receivedPacketHandler.GetAlarmTimeout(); !ackAlarm.IsZero() {
- deadline = utils.MinTime(deadline, ackAlarm)
- }
- if lossTime := s.sentPacketHandler.GetAlarmTimeout(); !lossTime.IsZero() {
- deadline = utils.MinTime(deadline, lossTime)
- }
- if !s.handshakeComplete {
- handshakeDeadline := s.sessionCreationTime.Add(s.config.HandshakeTimeout)
- deadline = utils.MinTime(deadline, handshakeDeadline)
- }
- if !s.receivedTooManyUndecrytablePacketsTime.IsZero() {
- deadline = utils.MinTime(deadline, s.receivedTooManyUndecrytablePacketsTime.Add(protocol.PublicResetTimeout))
- }
-
- s.timer.Reset(deadline)
-}
-
-func (s *session) handlePacketImpl(p *receivedPacket) error {
- if s.perspective == protocol.PerspectiveClient {
- diversificationNonce := p.header.DiversificationNonce
- if len(diversificationNonce) > 0 {
- s.cryptoSetup.SetDiversificationNonce(diversificationNonce)
- }
- }
-
- if p.rcvTime.IsZero() {
- // To simplify testing
- p.rcvTime = time.Now()
- }
-
- s.lastNetworkActivityTime = p.rcvTime
- s.keepAlivePingSent = false
- hdr := p.header
- data := p.data
-
- // Calculate packet number
- hdr.PacketNumber = protocol.InferPacketNumber(
- hdr.PacketNumberLen,
- s.largestRcvdPacketNumber,
- hdr.PacketNumber,
- )
-
- packet, err := s.unpacker.Unpack(hdr.Raw, hdr, data)
- if utils.Debug() {
- if err != nil {
- utils.Debugf("<- Reading packet 0x%x (%d bytes) for connection %x", hdr.PacketNumber, len(data)+len(hdr.Raw), hdr.ConnectionID)
- } else {
- utils.Debugf("<- Reading packet 0x%x (%d bytes) for connection %x, %s", hdr.PacketNumber, len(data)+len(hdr.Raw), hdr.ConnectionID, packet.encryptionLevel)
- }
- hdr.Log()
- }
- // if the decryption failed, this might be a packet sent by an attacker
- if err != nil {
- return err
- }
-
- s.lastRcvdPacketNumber = hdr.PacketNumber
- // Only do this after decrypting, so we are sure the packet is not attacker-controlled
- s.largestRcvdPacketNumber = utils.MaxPacketNumber(s.largestRcvdPacketNumber, hdr.PacketNumber)
-
- isRetransmittable := ackhandler.HasRetransmittableFrames(packet.frames)
- if err = s.receivedPacketHandler.ReceivedPacket(hdr.PacketNumber, isRetransmittable); err != nil {
- return err
- }
-
- return s.handleFrames(packet.frames, packet.encryptionLevel)
-}
-
-func (s *session) handleFrames(fs []wire.Frame, encLevel protocol.EncryptionLevel) error {
- for _, ff := range fs {
- var err error
- wire.LogFrame(ff, false)
- switch frame := ff.(type) {
- case *wire.StreamFrame:
- err = s.handleStreamFrame(frame)
- case *wire.AckFrame:
- err = s.handleAckFrame(frame, encLevel)
- case *wire.ConnectionCloseFrame:
- s.closeRemote(qerr.Error(frame.ErrorCode, frame.ReasonPhrase))
- case *wire.GoawayFrame:
- err = errors.New("unimplemented: handling GOAWAY frames")
- case *wire.StopWaitingFrame: // ignore STOP_WAITINGs
- case *wire.RstStreamFrame:
- err = s.handleRstStreamFrame(frame)
- case *wire.MaxDataFrame:
- s.handleMaxDataFrame(frame)
- case *wire.MaxStreamDataFrame:
- err = s.handleMaxStreamDataFrame(frame)
- case *wire.BlockedFrame:
- case *wire.StreamBlockedFrame:
- case *wire.StopSendingFrame:
- err = s.handleStopSendingFrame(frame)
- case *wire.PingFrame:
- default:
- return errors.New("Session BUG: unexpected frame type")
- }
-
- if err != nil {
- switch err {
- case ackhandler.ErrDuplicateOrOutOfOrderAck:
- // Can happen e.g. when packets thought missing arrive late
- default:
- return err
- }
- }
- }
- return nil
-}
-
-// handlePacket is called by the server with a new packet
-func (s *session) handlePacket(p *receivedPacket) {
- // Discard packets once the amount of queued packets is larger than
- // the channel size, protocol.MaxSessionUnprocessedPackets
- select {
- case s.receivedPackets <- p:
- default:
- }
-}
-
-func (s *session) handleStreamFrame(frame *wire.StreamFrame) error {
- if frame.StreamID == s.version.CryptoStreamID() {
- if frame.FinBit {
- return errors.New("Received STREAM frame with FIN bit for the crypto stream")
- }
- return s.cryptoStream.handleStreamFrame(frame)
- }
- str, err := s.streamsMap.GetOrOpenReceiveStream(frame.StreamID)
- if err != nil {
- return err
- }
- if str == nil {
- // Stream is closed and already garbage collected
- // ignore this StreamFrame
- return nil
- }
- return str.handleStreamFrame(frame)
-}
-
-func (s *session) handleMaxDataFrame(frame *wire.MaxDataFrame) {
- s.connFlowController.UpdateSendWindow(frame.ByteOffset)
-}
-
-func (s *session) handleMaxStreamDataFrame(frame *wire.MaxStreamDataFrame) error {
- if frame.StreamID == s.version.CryptoStreamID() {
- s.cryptoStream.handleMaxStreamDataFrame(frame)
- return nil
- }
- str, err := s.streamsMap.GetOrOpenSendStream(frame.StreamID)
- if err != nil {
- return err
- }
- if str == nil {
- // stream is closed and already garbage collected
- return nil
- }
- str.handleMaxStreamDataFrame(frame)
- return nil
-}
-
-func (s *session) handleRstStreamFrame(frame *wire.RstStreamFrame) error {
- if frame.StreamID == s.version.CryptoStreamID() {
- return errors.New("Received RST_STREAM frame for the crypto stream")
- }
- str, err := s.streamsMap.GetOrOpenReceiveStream(frame.StreamID)
- if err != nil {
- return err
- }
- if str == nil {
- // stream is closed and already garbage collected
- return nil
- }
- return str.handleRstStreamFrame(frame)
-}
-
-func (s *session) handleStopSendingFrame(frame *wire.StopSendingFrame) error {
- if frame.StreamID == s.version.CryptoStreamID() {
- return errors.New("Received a STOP_SENDING frame for the crypto stream")
- }
- str, err := s.streamsMap.GetOrOpenSendStream(frame.StreamID)
- if err != nil {
- return err
- }
- if str == nil {
- // stream is closed and already garbage collected
- return nil
- }
- str.handleStopSendingFrame(frame)
- return nil
-}
-
-func (s *session) handleAckFrame(frame *wire.AckFrame, encLevel protocol.EncryptionLevel) error {
- if err := s.sentPacketHandler.ReceivedAck(frame, s.lastRcvdPacketNumber, encLevel, s.lastNetworkActivityTime); err != nil {
- return err
- }
- s.receivedPacketHandler.IgnoreBelow(s.sentPacketHandler.GetLowestPacketNotConfirmedAcked())
- return nil
-}
-
-func (s *session) closeLocal(e error) {
- s.closeOnce.Do(func() {
- s.closeChan <- closeError{err: e, remote: false}
- })
-}
-
-func (s *session) closeRemote(e error) {
- s.closeOnce.Do(func() {
- s.closeChan <- closeError{err: e, remote: true}
- })
-}
-
-// Close the connection. If err is nil it will be set to qerr.PeerGoingAway.
-// It waits until the run loop has stopped before returning
-func (s *session) Close(e error) error {
- s.closeLocal(e)
- <-s.ctx.Done()
- return nil
-}
-
-func (s *session) handleCloseError(closeErr closeError) error {
- if closeErr.err == nil {
- closeErr.err = qerr.PeerGoingAway
- }
-
- var quicErr *qerr.QuicError
- var ok bool
- if quicErr, ok = closeErr.err.(*qerr.QuicError); !ok {
- quicErr = qerr.ToQuicError(closeErr.err)
- }
- // Don't log 'normal' reasons
- if quicErr.ErrorCode == qerr.PeerGoingAway || quicErr.ErrorCode == qerr.NetworkIdleTimeout {
- utils.Infof("Closing connection %x", s.connectionID)
- } else {
- utils.Errorf("Closing session with error: %s", closeErr.err.Error())
- }
-
- s.cryptoStream.closeForShutdown(quicErr)
- s.streamsMap.CloseWithError(quicErr)
-
- if closeErr.err == errCloseSessionForNewVersion || closeErr.err == handshake.ErrCloseSessionForRetry {
- return nil
- }
-
- // If this is a remote close we're done here
- if closeErr.remote {
- return nil
- }
-
- if quicErr.ErrorCode == qerr.DecryptionFailure ||
- quicErr == handshake.ErrHOLExperiment ||
- quicErr == handshake.ErrNSTPExperiment {
- return s.sendPublicReset(s.lastRcvdPacketNumber)
- }
- return s.sendConnectionClose(quicErr)
-}
-
-func (s *session) processTransportParameters(params *handshake.TransportParameters) {
- s.peerParams = params
- s.streamsMap.UpdateLimits(params)
- if params.OmitConnectionID {
- s.packer.SetOmitConnectionID()
- }
- s.connFlowController.UpdateSendWindow(params.ConnectionFlowControlWindow)
- // the crypto stream is the only open stream at this moment
- // so we don't need to update stream flow control windows
-}
-
-func (s *session) maybeSendAckOnlyPacket() error {
- ack := s.receivedPacketHandler.GetAckFrame()
- if ack == nil {
- return nil
- }
- s.packer.QueueControlFrame(ack)
-
- if !s.version.UsesIETFFrameFormat() { // for gQUIC, maybe add a STOP_WAITING
- if swf := s.sentPacketHandler.GetStopWaitingFrame(false); swf != nil {
- s.packer.QueueControlFrame(swf)
- }
- }
- packet, err := s.packer.PackAckPacket()
- if err != nil {
- return err
- }
- return s.sendPackedPacket(packet)
-}
-
-func (s *session) sendPacket() (bool, error) {
- s.packer.SetLeastUnacked(s.sentPacketHandler.GetLeastUnacked())
-
- if offset := s.connFlowController.GetWindowUpdate(); offset != 0 {
- s.packer.QueueControlFrame(&wire.MaxDataFrame{ByteOffset: offset})
- }
- if isBlocked, offset := s.connFlowController.IsNewlyBlocked(); isBlocked {
- s.packer.QueueControlFrame(&wire.BlockedFrame{Offset: offset})
- }
- s.windowUpdateQueue.QueueAll()
-
- ack := s.receivedPacketHandler.GetAckFrame()
- if ack != nil {
- s.packer.QueueControlFrame(ack)
- }
-
- // check for retransmissions first
- for {
- retransmitPacket := s.sentPacketHandler.DequeuePacketForRetransmission()
- if retransmitPacket == nil {
- break
- }
-
- // retransmit handshake packets
- if retransmitPacket.EncryptionLevel != protocol.EncryptionForwardSecure {
- utils.Debugf("\tDequeueing handshake retransmission for packet 0x%x", retransmitPacket.PacketNumber)
- if !s.version.UsesIETFFrameFormat() {
- s.packer.QueueControlFrame(s.sentPacketHandler.GetStopWaitingFrame(true))
- }
- packet, err := s.packer.PackHandshakeRetransmission(retransmitPacket)
- if err != nil {
- return false, err
- }
- if err := s.sendPackedPacket(packet); err != nil {
- return false, err
- }
- return true, nil
- }
-
- // queue all retransmittable frames sent in forward-secure packets
- utils.Debugf("\tDequeueing retransmission for packet 0x%x", retransmitPacket.PacketNumber)
- // resend the frames that were in the packet
- for _, frame := range retransmitPacket.GetFramesForRetransmission() {
- // TODO: only retransmit WINDOW_UPDATEs if they actually enlarge the window
- switch f := frame.(type) {
- case *wire.StreamFrame:
- s.streamFramer.AddFrameForRetransmission(f)
- default:
- s.packer.QueueControlFrame(frame)
- }
- }
- }
-
- hasRetransmission := s.streamFramer.HasFramesForRetransmission()
- if !s.version.UsesIETFFrameFormat() && (ack != nil || hasRetransmission) {
- if swf := s.sentPacketHandler.GetStopWaitingFrame(hasRetransmission); swf != nil {
- s.packer.QueueControlFrame(swf)
- }
- }
- // add a retransmittable frame
- if s.sentPacketHandler.ShouldSendRetransmittablePacket() {
- s.packer.MakeNextPacketRetransmittable()
- }
- packet, err := s.packer.PackPacket()
- if err != nil || packet == nil {
- return false, err
- }
- if err := s.sendPackedPacket(packet); err != nil {
- return false, err
- }
- return true, nil
-}
-
-func (s *session) sendPackedPacket(packet *packedPacket) error {
- defer putPacketBuffer(packet.raw)
- err := s.sentPacketHandler.SentPacket(&ackhandler.Packet{
- PacketNumber: packet.header.PacketNumber,
- Frames: packet.frames,
- Length: protocol.ByteCount(len(packet.raw)),
- EncryptionLevel: packet.encryptionLevel,
- })
- if err != nil {
- return err
- }
- s.logPacket(packet)
- return s.conn.Write(packet.raw)
-}
-
-func (s *session) sendConnectionClose(quicErr *qerr.QuicError) error {
- s.packer.SetLeastUnacked(s.sentPacketHandler.GetLeastUnacked())
- packet, err := s.packer.PackConnectionClose(&wire.ConnectionCloseFrame{
- ErrorCode: quicErr.ErrorCode,
- ReasonPhrase: quicErr.ErrorMessage,
- })
- if err != nil {
- return err
- }
- s.logPacket(packet)
- return s.conn.Write(packet.raw)
-}
-
-func (s *session) logPacket(packet *packedPacket) {
- if !utils.Debug() {
- // We don't need to allocate the slices for calling the format functions
- return
- }
- utils.Debugf("-> Sending packet 0x%x (%d bytes) for connection %x, %s", packet.header.PacketNumber, len(packet.raw), s.connectionID, packet.encryptionLevel)
- packet.header.Log()
- for _, frame := range packet.frames {
- wire.LogFrame(frame, true)
- }
-}
-
-// GetOrOpenStream either returns an existing stream, a newly opened stream, or nil if a stream with the provided ID is already closed.
-// Newly opened streams should only originate from the client. To open a stream from the server, OpenStream should be used.
-func (s *session) GetOrOpenStream(id protocol.StreamID) (Stream, error) {
- str, err := s.streamsMap.GetOrOpenStream(id)
- if str != nil {
- return str, err
- }
- // make sure to return an actual nil value here, not an Stream with value nil
- return str, err
-}
-
-// AcceptStream returns the next stream openend by the peer
-func (s *session) AcceptStream() (Stream, error) {
- return s.streamsMap.AcceptStream()
-}
-
-// OpenStream opens a stream
-func (s *session) OpenStream() (Stream, error) {
- return s.streamsMap.OpenStream()
-}
-
-func (s *session) OpenStreamSync() (Stream, error) {
- return s.streamsMap.OpenStreamSync()
-}
-
-func (s *session) newStream(id protocol.StreamID) streamI {
- var initialSendWindow protocol.ByteCount
- if s.peerParams != nil {
- initialSendWindow = s.peerParams.StreamFlowControlWindow
- }
- flowController := flowcontrol.NewStreamFlowController(
- id,
- s.version.StreamContributesToConnectionFlowControl(id),
- s.connFlowController,
- protocol.ReceiveStreamFlowControlWindow,
- protocol.ByteCount(s.config.MaxReceiveStreamFlowControlWindow),
- initialSendWindow,
- s.rttStats,
- )
- str := newStream(id, s, flowController, s.version)
- str.laddr = s.LocalAddr()
- str.raddr = s.RemoteAddr()
- return str
-}
-
-func (s *session) newCryptoStream() cryptoStreamI {
- id := s.version.CryptoStreamID()
- flowController := flowcontrol.NewStreamFlowController(
- id,
- s.version.StreamContributesToConnectionFlowControl(id),
- s.connFlowController,
- protocol.ReceiveStreamFlowControlWindow,
- protocol.ByteCount(s.config.MaxReceiveStreamFlowControlWindow),
- 0,
- s.rttStats,
- )
- return newCryptoStream(s, flowController, s.version)
-}
-
-func (s *session) sendPublicReset(rejectedPacketNumber protocol.PacketNumber) error {
- utils.Infof("Sending public reset for connection %x, packet number %d", s.connectionID, rejectedPacketNumber)
- return s.conn.Write(wire.WritePublicReset(s.connectionID, rejectedPacketNumber, 0))
-}
-
-// scheduleSending signals that we have data for sending
-func (s *session) scheduleSending() {
- select {
- case s.sendingScheduled <- struct{}{}:
- default:
- }
-}
-
-func (s *session) tryQueueingUndecryptablePacket(p *receivedPacket) {
- if s.handshakeComplete {
- utils.Debugf("Received undecryptable packet from %s after the handshake: %#v, %d bytes data", p.remoteAddr.String(), p.header, len(p.data))
- return
- }
- if len(s.undecryptablePackets)+1 > protocol.MaxUndecryptablePackets {
- // if this is the first time the undecryptablePackets runs full, start the timer to send a Public Reset
- if s.receivedTooManyUndecrytablePacketsTime.IsZero() {
- s.receivedTooManyUndecrytablePacketsTime = time.Now()
- s.maybeResetTimer()
- }
- utils.Infof("Dropping undecrytable packet 0x%x (undecryptable packet queue full)", p.header.PacketNumber)
- return
- }
- utils.Infof("Queueing packet 0x%x for later decryption", p.header.PacketNumber)
- s.undecryptablePackets = append(s.undecryptablePackets, p)
-}
-
-func (s *session) tryDecryptingQueuedPackets() {
- for _, p := range s.undecryptablePackets {
- s.handlePacket(p)
- }
- s.undecryptablePackets = s.undecryptablePackets[:0]
-}
-
-func (s *session) queueControlFrame(f wire.Frame) {
- s.packer.QueueControlFrame(f)
- s.scheduleSending()
-}
-
-func (s *session) onHasWindowUpdate(id protocol.StreamID) {
- s.windowUpdateQueue.Add(id)
- s.scheduleSending()
-}
-
-func (s *session) onHasStreamData(id protocol.StreamID) {
- s.streamFramer.AddActiveStream(id)
- s.scheduleSending()
-}
-
-func (s *session) onStreamCompleted(id protocol.StreamID) {
- if err := s.streamsMap.DeleteStream(id); err != nil {
- s.Close(err)
- }
-}
-
-func (s *session) LocalAddr() net.Addr {
- return s.conn.LocalAddr()
-}
-
-// RemoteAddr returns the net.Addr of the client
-func (s *session) RemoteAddr() net.Addr {
- return s.conn.RemoteAddr()
-}
-
-func (s *session) handshakeStatus() <-chan error {
- return s.handshakeChan
-}
-
-func (s *session) getCryptoStream() cryptoStreamI {
- return s.cryptoStream
-}
-
-func (s *session) GetVersion() protocol.VersionNumber {
- return s.version
-}
-
-func (s *session) ConnectionState() *tls.ConnectionState {
- return s.cryptoSetup.ConnectionState()
-}
diff --git a/vendor/github.com/phuslu/quic-go/stream.go b/vendor/github.com/phuslu/quic-go/stream.go
deleted file mode 100644
index 5d4d0a0..0000000
--- a/vendor/github.com/phuslu/quic-go/stream.go
+++ /dev/null
@@ -1,188 +0,0 @@
-package quic
-
-import (
- "net"
- "sync"
- "time"
-
- "github.com/phuslu/quic-go/internal/flowcontrol"
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/wire"
-)
-
-const (
- errorCodeStopping protocol.ApplicationErrorCode = 0
- errorCodeStoppingGQUIC protocol.ApplicationErrorCode = 7
-)
-
-// The streamSender is notified by the stream about various events.
-type streamSender interface {
- queueControlFrame(wire.Frame)
- onHasWindowUpdate(protocol.StreamID)
- onHasStreamData(protocol.StreamID)
- onStreamCompleted(protocol.StreamID)
-}
-
-// Each of the both stream halves gets its own uniStreamSender.
-// This is necessary in order to keep track when both halves have been completed.
-type uniStreamSender struct {
- streamSender
- onStreamCompletedImpl func()
-}
-
-func (s *uniStreamSender) queueControlFrame(f wire.Frame) {
- s.streamSender.queueControlFrame(f)
-}
-
-func (s *uniStreamSender) onHasWindowUpdate(id protocol.StreamID) {
- s.streamSender.onHasWindowUpdate(id)
-}
-
-func (s *uniStreamSender) onHasStreamData(id protocol.StreamID) {
- s.streamSender.onHasStreamData(id)
-}
-
-func (s *uniStreamSender) onStreamCompleted(protocol.StreamID) {
- s.onStreamCompletedImpl()
-}
-
-var _ streamSender = &uniStreamSender{}
-
-type streamI interface {
- Stream
- closeForShutdown(error)
- // for receiving
- handleStreamFrame(*wire.StreamFrame) error
- handleRstStreamFrame(*wire.RstStreamFrame) error
- getWindowUpdate() protocol.ByteCount
- // for sending
- handleStopSendingFrame(*wire.StopSendingFrame)
- popStreamFrame(maxBytes protocol.ByteCount) (*wire.StreamFrame, bool)
- handleMaxStreamDataFrame(*wire.MaxStreamDataFrame)
-}
-
-var _ receiveStreamI = (streamI)(nil)
-var _ sendStreamI = (streamI)(nil)
-
-// A Stream assembles the data from StreamFrames and provides a super-convenient Read-Interface
-//
-// Read() and Write() may be called concurrently, but multiple calls to Read() or Write() individually must be synchronized manually.
-type stream struct {
- receiveStream
- sendStream
-
- completedMutex sync.Mutex
- sender streamSender
- receiveStreamCompleted bool
- sendStreamCompleted bool
-
- version protocol.VersionNumber
-
- laddr net.Addr
- raddr net.Addr
-}
-
-func (s *stream) LocalAddr() net.Addr { return s.laddr }
-func (s *stream) RemoteAddr() net.Addr { return s.raddr }
-
-var _ net.Conn = &stream{}
-
-var _ Stream = &stream{}
-
-type deadlineError struct{}
-
-func (deadlineError) Error() string { return "deadline exceeded" }
-func (deadlineError) Temporary() bool { return true }
-func (deadlineError) Timeout() bool { return true }
-
-var errDeadline net.Error = &deadlineError{}
-
-type streamCanceledError struct {
- error
- errorCode protocol.ApplicationErrorCode
-}
-
-func (streamCanceledError) Canceled() bool { return true }
-func (e streamCanceledError) ErrorCode() protocol.ApplicationErrorCode { return e.errorCode }
-
-var _ StreamError = &streamCanceledError{}
-
-// newStream creates a new Stream
-func newStream(streamID protocol.StreamID,
- sender streamSender,
- flowController flowcontrol.StreamFlowController,
- version protocol.VersionNumber,
-) *stream {
- s := &stream{sender: sender}
- senderForSendStream := &uniStreamSender{
- streamSender: sender,
- onStreamCompletedImpl: func() {
- s.completedMutex.Lock()
- s.sendStreamCompleted = true
- s.checkIfCompleted()
- s.completedMutex.Unlock()
- },
- }
- s.sendStream = *newSendStream(streamID, senderForSendStream, flowController, version)
- senderForReceiveStream := &uniStreamSender{
- streamSender: sender,
- onStreamCompletedImpl: func() {
- s.completedMutex.Lock()
- s.receiveStreamCompleted = true
- s.checkIfCompleted()
- s.completedMutex.Unlock()
- },
- }
- s.receiveStream = *newReceiveStream(streamID, senderForReceiveStream, flowController)
- return s
-}
-
-// need to define StreamID() here, since both receiveStream and readStream have a StreamID()
-func (s *stream) StreamID() protocol.StreamID {
- // the result is same for receiveStream and sendStream
- return s.sendStream.StreamID()
-}
-
-func (s *stream) Close() error {
- if err := s.sendStream.Close(); err != nil {
- return err
- }
- // in gQUIC, we need to send a RST_STREAM with the final offset if CancelRead() was called
- s.receiveStream.onClose(s.sendStream.getWriteOffset())
- return nil
-}
-
-func (s *stream) SetDeadline(t time.Time) error {
- _ = s.SetReadDeadline(t) // SetReadDeadline never errors
- _ = s.SetWriteDeadline(t) // SetWriteDeadline never errors
- return nil
-}
-
-// CloseForShutdown closes a stream abruptly.
-// It makes Read and Write unblock (and return the error) immediately.
-// The peer will NOT be informed about this: the stream is closed without sending a FIN or RST.
-func (s *stream) closeForShutdown(err error) {
- s.sendStream.closeForShutdown(err)
- s.receiveStream.closeForShutdown(err)
-}
-
-func (s *stream) handleRstStreamFrame(frame *wire.RstStreamFrame) error {
- if err := s.receiveStream.handleRstStreamFrame(frame); err != nil {
- return err
- }
- if !s.version.UsesIETFFrameFormat() {
- s.handleStopSendingFrame(&wire.StopSendingFrame{
- StreamID: s.StreamID(),
- ErrorCode: frame.ErrorCode,
- })
- }
- return nil
-}
-
-// checkIfCompleted is called from the uniStreamSender, when one of the stream halves is completed.
-// It makes sure that the onStreamCompleted callback is only called if both receive and send side have completed.
-func (s *stream) checkIfCompleted() {
- if s.sendStreamCompleted && s.receiveStreamCompleted {
- s.sender.onStreamCompleted(s.StreamID())
- }
-}
diff --git a/vendor/github.com/phuslu/quic-go/stream_frame_sorter.go b/vendor/github.com/phuslu/quic-go/stream_frame_sorter.go
deleted file mode 100644
index de2871f..0000000
--- a/vendor/github.com/phuslu/quic-go/stream_frame_sorter.go
+++ /dev/null
@@ -1,161 +0,0 @@
-package quic
-
-import (
- "errors"
-
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/utils"
- "github.com/phuslu/quic-go/internal/wire"
-)
-
-type streamFrameSorter struct {
- queuedFrames map[protocol.ByteCount]*wire.StreamFrame
- readPosition protocol.ByteCount
- gaps *utils.ByteIntervalList
-}
-
-var (
- errTooManyGapsInReceivedStreamData = errors.New("Too many gaps in received StreamFrame data")
- errDuplicateStreamData = errors.New("Duplicate Stream Data")
- errEmptyStreamData = errors.New("Stream Data empty")
-)
-
-func newStreamFrameSorter() *streamFrameSorter {
- s := streamFrameSorter{
- gaps: utils.NewByteIntervalList(),
- queuedFrames: make(map[protocol.ByteCount]*wire.StreamFrame),
- }
- s.gaps.PushFront(utils.ByteInterval{Start: 0, End: protocol.MaxByteCount})
- return &s
-}
-
-func (s *streamFrameSorter) Push(frame *wire.StreamFrame) error {
- if frame.DataLen() == 0 {
- if frame.FinBit {
- s.queuedFrames[frame.Offset] = frame
- return nil
- }
- return errEmptyStreamData
- }
-
- var wasCut bool
- if oldFrame, ok := s.queuedFrames[frame.Offset]; ok {
- if frame.DataLen() <= oldFrame.DataLen() {
- return errDuplicateStreamData
- }
- frame.Data = frame.Data[oldFrame.DataLen():]
- frame.Offset += oldFrame.DataLen()
- wasCut = true
- }
-
- start := frame.Offset
- end := frame.Offset + frame.DataLen()
-
- // skip all gaps that are before this stream frame
- var gap *utils.ByteIntervalElement
- for gap = s.gaps.Front(); gap != nil; gap = gap.Next() {
- // the frame is a duplicate. Ignore it
- if end <= gap.Value.Start {
- return errDuplicateStreamData
- }
- if end > gap.Value.Start && start <= gap.Value.End {
- break
- }
- }
-
- if gap == nil {
- return errors.New("StreamFrameSorter BUG: no gap found")
- }
-
- if start < gap.Value.Start {
- add := gap.Value.Start - start
- frame.Offset += add
- start += add
- frame.Data = frame.Data[add:]
- wasCut = true
- }
-
- // find the highest gaps whose Start lies before the end of the frame
- endGap := gap
- for end >= endGap.Value.End {
- nextEndGap := endGap.Next()
- if nextEndGap == nil {
- return errors.New("StreamFrameSorter BUG: no end gap found")
- }
- if endGap != gap {
- s.gaps.Remove(endGap)
- }
- if end <= nextEndGap.Value.Start {
- break
- }
- // delete queued frames completely covered by the current frame
- delete(s.queuedFrames, endGap.Value.End)
- endGap = nextEndGap
- }
-
- if end > endGap.Value.End {
- cutLen := end - endGap.Value.End
- len := frame.DataLen() - cutLen
- end -= cutLen
- frame.Data = frame.Data[:len]
- wasCut = true
- }
-
- if start == gap.Value.Start {
- if end >= gap.Value.End {
- // the frame completely fills this gap
- // delete the gap
- s.gaps.Remove(gap)
- }
- if end < endGap.Value.End {
- // the frame covers the beginning of the gap
- // adjust the Start value to shrink the gap
- endGap.Value.Start = end
- }
- } else if end == endGap.Value.End {
- // the frame covers the end of the gap
- // adjust the End value to shrink the gap
- gap.Value.End = start
- } else {
- if gap == endGap {
- // the frame lies within the current gap, splitting it into two
- // insert a new gap and adjust the current one
- intv := utils.ByteInterval{Start: end, End: gap.Value.End}
- s.gaps.InsertAfter(intv, gap)
- gap.Value.End = start
- } else {
- gap.Value.End = start
- endGap.Value.Start = end
- }
- }
-
- if s.gaps.Len() > protocol.MaxStreamFrameSorterGaps {
- return errTooManyGapsInReceivedStreamData
- }
-
- if wasCut {
- data := make([]byte, frame.DataLen())
- copy(data, frame.Data)
- frame.Data = data
- }
-
- s.queuedFrames[frame.Offset] = frame
- return nil
-}
-
-func (s *streamFrameSorter) Pop() *wire.StreamFrame {
- frame := s.Head()
- if frame != nil {
- s.readPosition += frame.DataLen()
- delete(s.queuedFrames, frame.Offset)
- }
- return frame
-}
-
-func (s *streamFrameSorter) Head() *wire.StreamFrame {
- frame, ok := s.queuedFrames[s.readPosition]
- if ok {
- return frame
- }
- return nil
-}
diff --git a/vendor/github.com/phuslu/quic-go/stream_framer.go b/vendor/github.com/phuslu/quic-go/stream_framer.go
deleted file mode 100644
index c489889..0000000
--- a/vendor/github.com/phuslu/quic-go/stream_framer.go
+++ /dev/null
@@ -1,155 +0,0 @@
-package quic
-
-import (
- "sync"
-
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/wire"
-)
-
-type streamFramer struct {
- streamGetter streamGetter
- cryptoStream cryptoStreamI
- version protocol.VersionNumber
-
- retransmissionQueue []*wire.StreamFrame
-
- streamQueueMutex sync.Mutex
- activeStreams map[protocol.StreamID]struct{}
- streamQueue []protocol.StreamID
- hasCryptoStreamData bool
-}
-
-func newStreamFramer(
- cryptoStream cryptoStreamI,
- streamGetter streamGetter,
- v protocol.VersionNumber,
-) *streamFramer {
- return &streamFramer{
- streamGetter: streamGetter,
- cryptoStream: cryptoStream,
- activeStreams: make(map[protocol.StreamID]struct{}),
- version: v,
- }
-}
-
-func (f *streamFramer) AddFrameForRetransmission(frame *wire.StreamFrame) {
- f.retransmissionQueue = append(f.retransmissionQueue, frame)
-}
-
-func (f *streamFramer) AddActiveStream(id protocol.StreamID) {
- if id == f.version.CryptoStreamID() { // the crypto stream is handled separately
- f.streamQueueMutex.Lock()
- f.hasCryptoStreamData = true
- f.streamQueueMutex.Unlock()
- return
- }
- f.streamQueueMutex.Lock()
- if _, ok := f.activeStreams[id]; !ok {
- f.streamQueue = append(f.streamQueue, id)
- f.activeStreams[id] = struct{}{}
- }
- f.streamQueueMutex.Unlock()
-}
-
-func (f *streamFramer) PopStreamFrames(maxLen protocol.ByteCount) []*wire.StreamFrame {
- fs, currentLen := f.maybePopFramesForRetransmission(maxLen)
- return append(fs, f.maybePopNormalFrames(maxLen-currentLen)...)
-}
-
-func (f *streamFramer) HasFramesForRetransmission() bool {
- return len(f.retransmissionQueue) > 0
-}
-
-func (f *streamFramer) HasCryptoStreamData() bool {
- f.streamQueueMutex.Lock()
- hasCryptoStreamData := f.hasCryptoStreamData
- f.streamQueueMutex.Unlock()
- return hasCryptoStreamData
-}
-
-func (f *streamFramer) PopCryptoStreamFrame(maxLen protocol.ByteCount) *wire.StreamFrame {
- f.streamQueueMutex.Lock()
- frame, hasMoreData := f.cryptoStream.popStreamFrame(maxLen)
- f.hasCryptoStreamData = hasMoreData
- f.streamQueueMutex.Unlock()
- return frame
-}
-
-func (f *streamFramer) maybePopFramesForRetransmission(maxTotalLen protocol.ByteCount) (res []*wire.StreamFrame, currentLen protocol.ByteCount) {
- for len(f.retransmissionQueue) > 0 {
- frame := f.retransmissionQueue[0]
- frame.DataLenPresent = true
-
- frameHeaderLen := frame.MinLength(f.version) // can never error
- maxLen := maxTotalLen - currentLen
- if frameHeaderLen+frame.DataLen() > maxLen && maxLen < protocol.MinStreamFrameSize {
- break
- }
-
- splitFrame := maybeSplitOffFrame(frame, maxLen-frameHeaderLen)
- if splitFrame != nil { // StreamFrame was split
- res = append(res, splitFrame)
- currentLen += frameHeaderLen + splitFrame.DataLen()
- break
- }
-
- f.retransmissionQueue = f.retransmissionQueue[1:]
- res = append(res, frame)
- currentLen += frameHeaderLen + frame.DataLen()
- }
- return
-}
-
-func (f *streamFramer) maybePopNormalFrames(maxTotalLen protocol.ByteCount) []*wire.StreamFrame {
- var currentLen protocol.ByteCount
- var frames []*wire.StreamFrame
- f.streamQueueMutex.Lock()
- // pop STREAM frames, until less than MinStreamFrameSize bytes are left in the packet
- numActiveStreams := len(f.streamQueue)
- for i := 0; i < numActiveStreams; i++ {
- if maxTotalLen-currentLen < protocol.MinStreamFrameSize {
- break
- }
- id := f.streamQueue[0]
- f.streamQueue = f.streamQueue[1:]
- str, err := f.streamGetter.GetOrOpenSendStream(id)
- if err != nil { // can happen if the stream completed after it said it had data
- delete(f.activeStreams, id)
- continue
- }
- frame, hasMoreData := str.popStreamFrame(maxTotalLen - currentLen)
- if hasMoreData { // put the stream back in the queue (at the end)
- f.streamQueue = append(f.streamQueue, id)
- } else { // no more data to send. Stream is not active any more
- delete(f.activeStreams, id)
- }
- if frame == nil { // can happen if the receiveStream was canceled after it said it had data
- continue
- }
- frames = append(frames, frame)
- currentLen += frame.MinLength(f.version) + frame.DataLen()
- }
- f.streamQueueMutex.Unlock()
- return frames
-}
-
-// maybeSplitOffFrame removes the first n bytes and returns them as a separate frame. If n >= len(frame), nil is returned and nothing is modified.
-func maybeSplitOffFrame(frame *wire.StreamFrame, n protocol.ByteCount) *wire.StreamFrame {
- if n >= frame.DataLen() {
- return nil
- }
-
- defer func() {
- frame.Data = frame.Data[n:]
- frame.Offset += n
- }()
-
- return &wire.StreamFrame{
- FinBit: false,
- StreamID: frame.StreamID,
- Offset: frame.Offset,
- Data: frame.Data[:n],
- DataLenPresent: frame.DataLenPresent,
- }
-}
diff --git a/vendor/github.com/phuslu/quic-go/streams_map.go b/vendor/github.com/phuslu/quic-go/streams_map.go
deleted file mode 100644
index 13bb300..0000000
--- a/vendor/github.com/phuslu/quic-go/streams_map.go
+++ /dev/null
@@ -1,236 +0,0 @@
-package quic
-
-import (
- "errors"
- "fmt"
- "sync"
-
- "github.com/phuslu/quic-go/internal/handshake"
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/wire"
- "github.com/phuslu/quic-go/qerr"
-)
-
-type streamsMap struct {
- mutex sync.RWMutex
-
- perspective protocol.Perspective
-
- streams map[protocol.StreamID]streamI
-
- nextStreamToOpen protocol.StreamID // StreamID of the next Stream that will be returned by OpenStream()
- highestStreamOpenedByPeer protocol.StreamID
- nextStreamOrErrCond sync.Cond
- openStreamOrErrCond sync.Cond
-
- closeErr error
- nextStreamToAccept protocol.StreamID
-
- newStream newStreamLambda
-}
-
-var _ streamManager = &streamsMap{}
-
-type newStreamLambda func(protocol.StreamID) streamI
-
-var errMapAccess = errors.New("streamsMap: Error accessing the streams map")
-
-func newStreamsMap(newStream newStreamLambda, pers protocol.Perspective) streamManager {
- sm := streamsMap{
- perspective: pers,
- streams: make(map[protocol.StreamID]streamI),
- newStream: newStream,
- }
- sm.nextStreamOrErrCond.L = &sm.mutex
- sm.openStreamOrErrCond.L = &sm.mutex
-
- nextClientInitiatedStream := protocol.StreamID(1)
- nextServerInitiatedStream := protocol.StreamID(2)
- if pers == protocol.PerspectiveServer {
- sm.nextStreamToOpen = nextServerInitiatedStream
- sm.nextStreamToAccept = nextClientInitiatedStream
- } else {
- sm.nextStreamToOpen = nextClientInitiatedStream
- sm.nextStreamToAccept = nextServerInitiatedStream
- }
- return &sm
-}
-
-// getStreamPerspective says which side should initiate a stream
-func (m *streamsMap) streamInitiatedBy(id protocol.StreamID) protocol.Perspective {
- if id%2 == 0 {
- return protocol.PerspectiveServer
- }
- return protocol.PerspectiveClient
-}
-
-func (m *streamsMap) nextStreamID(id protocol.StreamID) protocol.StreamID {
- if m.perspective == protocol.PerspectiveServer && id == 0 {
- return 1
- }
- return id + 2
-}
-
-func (m *streamsMap) GetOrOpenReceiveStream(id protocol.StreamID) (receiveStreamI, error) {
- // every bidirectional stream is also a receive stream
- return m.GetOrOpenStream(id)
-}
-
-func (m *streamsMap) GetOrOpenSendStream(id protocol.StreamID) (sendStreamI, error) {
- // every bidirectional stream is also a send stream
- return m.GetOrOpenStream(id)
-}
-
-// GetOrOpenStream either returns an existing stream, a newly opened stream, or nil if a stream with the provided ID is already closed.
-// Newly opened streams should only originate from the client. To open a stream from the server, OpenStream should be used.
-func (m *streamsMap) GetOrOpenStream(id protocol.StreamID) (streamI, error) {
- m.mutex.RLock()
- s, ok := m.streams[id]
- m.mutex.RUnlock()
- if ok {
- return s, nil
- }
-
- // ... we don't have an existing stream
- m.mutex.Lock()
- defer m.mutex.Unlock()
- // We need to check whether another invocation has already created a stream (between RUnlock() and Lock()).
- s, ok = m.streams[id]
- if ok {
- return s, nil
- }
-
- if m.perspective == m.streamInitiatedBy(id) {
- if id <= m.nextStreamToOpen { // this is a stream opened by us. Must have been closed already
- return nil, nil
- }
- return nil, qerr.Error(qerr.InvalidStreamID, fmt.Sprintf("peer attempted to open stream %d", id))
- }
- if id <= m.highestStreamOpenedByPeer { // this is a peer-initiated stream that doesn't exist anymore. Must have been closed already
- return nil, nil
- }
-
- for sid := m.nextStreamID(m.highestStreamOpenedByPeer); sid <= id; sid = m.nextStreamID(sid) {
- if _, err := m.openRemoteStream(sid); err != nil {
- return nil, err
- }
- }
-
- m.nextStreamOrErrCond.Broadcast()
- return m.streams[id], nil
-}
-
-func (m *streamsMap) openRemoteStream(id protocol.StreamID) (streamI, error) {
- if id+protocol.MaxNewStreamIDDelta < m.highestStreamOpenedByPeer {
- return nil, qerr.Error(qerr.InvalidStreamID, fmt.Sprintf("attempted to open stream %d, which is a lot smaller than the highest opened stream, %d", id, m.highestStreamOpenedByPeer))
- }
- if id > m.highestStreamOpenedByPeer {
- m.highestStreamOpenedByPeer = id
- }
- s := m.newStream(id)
- m.putStream(s)
- return s, nil
-}
-
-func (m *streamsMap) openStreamImpl() (streamI, error) {
- s := m.newStream(m.nextStreamToOpen)
- m.putStream(s)
- m.nextStreamToOpen = m.nextStreamID(m.nextStreamToOpen)
- return s, nil
-}
-
-// OpenStream opens the next available stream
-func (m *streamsMap) OpenStream() (Stream, error) {
- m.mutex.Lock()
- defer m.mutex.Unlock()
-
- if m.closeErr != nil {
- return nil, m.closeErr
- }
- return m.openStreamImpl()
-}
-
-func (m *streamsMap) OpenStreamSync() (Stream, error) {
- m.mutex.Lock()
- defer m.mutex.Unlock()
-
- for {
- if m.closeErr != nil {
- return nil, m.closeErr
- }
- str, err := m.openStreamImpl()
- if err == nil {
- return str, err
- }
- if err != nil && err != qerr.TooManyOpenStreams {
- return nil, err
- }
- m.openStreamOrErrCond.Wait()
- }
-}
-
-// AcceptStream returns the next stream opened by the peer
-// it blocks until a new stream is opened
-func (m *streamsMap) AcceptStream() (Stream, error) {
- m.mutex.Lock()
- defer m.mutex.Unlock()
- var str streamI
- for {
- var ok bool
- if m.closeErr != nil {
- return nil, m.closeErr
- }
- str, ok = m.streams[m.nextStreamToAccept]
- if ok {
- break
- }
- m.nextStreamOrErrCond.Wait()
- }
- m.nextStreamToAccept += 2
- return str, nil
-}
-
-func (m *streamsMap) DeleteStream(id protocol.StreamID) error {
- m.mutex.Lock()
- defer m.mutex.Unlock()
- _, ok := m.streams[id]
- if !ok {
- return errMapAccess
- }
- delete(m.streams, id)
- m.openStreamOrErrCond.Signal()
- return nil
-}
-
-func (m *streamsMap) putStream(s streamI) error {
- id := s.StreamID()
- if _, ok := m.streams[id]; ok {
- return fmt.Errorf("a stream with ID %d already exists", id)
- }
- m.streams[id] = s
- return nil
-}
-
-func (m *streamsMap) CloseWithError(err error) {
- m.mutex.Lock()
- defer m.mutex.Unlock()
- m.closeErr = err
- m.nextStreamOrErrCond.Broadcast()
- m.openStreamOrErrCond.Broadcast()
- for _, s := range m.streams {
- s.closeForShutdown(err)
- }
-}
-
-// TODO(#952): this won't be needed when gQUIC supports stateless handshakes
-func (m *streamsMap) UpdateLimits(params *handshake.TransportParameters) {
- m.mutex.Lock()
- for id, str := range m.streams {
- str.handleMaxStreamDataFrame(&wire.MaxStreamDataFrame{
- StreamID: id,
- ByteOffset: params.StreamFlowControlWindow,
- })
- }
- m.mutex.Unlock()
- m.openStreamOrErrCond.Broadcast()
-}
diff --git a/vendor/github.com/phuslu/quic-go/streams_map_legacy.go b/vendor/github.com/phuslu/quic-go/streams_map_legacy.go
deleted file mode 100644
index 80d8cc2..0000000
--- a/vendor/github.com/phuslu/quic-go/streams_map_legacy.go
+++ /dev/null
@@ -1,257 +0,0 @@
-package quic
-
-import (
- "fmt"
- "sync"
-
- "github.com/phuslu/quic-go/internal/handshake"
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/utils"
- "github.com/phuslu/quic-go/internal/wire"
- "github.com/phuslu/quic-go/qerr"
-)
-
-type streamsMapLegacy struct {
- mutex sync.RWMutex
-
- perspective protocol.Perspective
-
- streams map[protocol.StreamID]streamI
-
- nextStreamToOpen protocol.StreamID // StreamID of the next Stream that will be returned by OpenStream()
- highestStreamOpenedByPeer protocol.StreamID
- nextStreamOrErrCond sync.Cond
- openStreamOrErrCond sync.Cond
-
- closeErr error
- nextStreamToAccept protocol.StreamID
-
- newStream newStreamLambda
-
- numOutgoingStreams uint32
- numIncomingStreams uint32
- maxIncomingStreams uint32
- maxOutgoingStreams uint32
-}
-
-var _ streamManager = &streamsMapLegacy{}
-
-func newStreamsMapLegacy(newStream newStreamLambda, pers protocol.Perspective) streamManager {
- // add some tolerance to the maximum incoming streams value
- maxStreams := uint32(protocol.MaxIncomingStreams)
- maxIncomingStreams := utils.MaxUint32(
- maxStreams+protocol.MaxStreamsMinimumIncrement,
- uint32(float64(maxStreams)*float64(protocol.MaxStreamsMultiplier)),
- )
- sm := streamsMapLegacy{
- perspective: pers,
- streams: make(map[protocol.StreamID]streamI),
- newStream: newStream,
- maxIncomingStreams: maxIncomingStreams,
- }
- sm.nextStreamOrErrCond.L = &sm.mutex
- sm.openStreamOrErrCond.L = &sm.mutex
-
- nextServerInitiatedStream := protocol.StreamID(2)
- nextClientInitiatedStream := protocol.StreamID(3)
- if pers == protocol.PerspectiveServer {
- sm.highestStreamOpenedByPeer = 1
- }
- if pers == protocol.PerspectiveServer {
- sm.nextStreamToOpen = nextServerInitiatedStream
- sm.nextStreamToAccept = nextClientInitiatedStream
- } else {
- sm.nextStreamToOpen = nextClientInitiatedStream
- sm.nextStreamToAccept = nextServerInitiatedStream
- }
- return &sm
-}
-
-// getStreamPerspective says which side should initiate a stream
-func (m *streamsMapLegacy) streamInitiatedBy(id protocol.StreamID) protocol.Perspective {
- if id%2 == 0 {
- return protocol.PerspectiveServer
- }
- return protocol.PerspectiveClient
-}
-
-func (m *streamsMapLegacy) GetOrOpenReceiveStream(id protocol.StreamID) (receiveStreamI, error) {
- // every bidirectional stream is also a receive stream
- return m.GetOrOpenStream(id)
-}
-
-func (m *streamsMapLegacy) GetOrOpenSendStream(id protocol.StreamID) (sendStreamI, error) {
- // every bidirectional stream is also a send stream
- return m.GetOrOpenStream(id)
-}
-
-// GetOrOpenStream either returns an existing stream, a newly opened stream, or nil if a stream with the provided ID is already closed.
-// Newly opened streams should only originate from the client. To open a stream from the server, OpenStream should be used.
-func (m *streamsMapLegacy) GetOrOpenStream(id protocol.StreamID) (streamI, error) {
- m.mutex.RLock()
- s, ok := m.streams[id]
- m.mutex.RUnlock()
- if ok {
- return s, nil
- }
-
- // ... we don't have an existing stream
- m.mutex.Lock()
- defer m.mutex.Unlock()
- // We need to check whether another invocation has already created a stream (between RUnlock() and Lock()).
- s, ok = m.streams[id]
- if ok {
- return s, nil
- }
-
- if m.perspective == m.streamInitiatedBy(id) {
- if id <= m.nextStreamToOpen { // this is a stream opened by us. Must have been closed already
- return nil, nil
- }
- return nil, qerr.Error(qerr.InvalidStreamID, fmt.Sprintf("peer attempted to open stream %d", id))
- }
- if id <= m.highestStreamOpenedByPeer { // this is a peer-initiated stream that doesn't exist anymore. Must have been closed already
- return nil, nil
- }
-
- for sid := m.highestStreamOpenedByPeer + 2; sid <= id; sid += 2 {
- if _, err := m.openRemoteStream(sid); err != nil {
- return nil, err
- }
- }
-
- m.nextStreamOrErrCond.Broadcast()
- return m.streams[id], nil
-}
-
-func (m *streamsMapLegacy) openRemoteStream(id protocol.StreamID) (streamI, error) {
- if m.numIncomingStreams >= m.maxIncomingStreams {
- return nil, qerr.TooManyOpenStreams
- }
- if id+protocol.MaxNewStreamIDDelta < m.highestStreamOpenedByPeer {
- return nil, qerr.Error(qerr.InvalidStreamID, fmt.Sprintf("attempted to open stream %d, which is a lot smaller than the highest opened stream, %d", id, m.highestStreamOpenedByPeer))
- }
-
- m.numIncomingStreams++
- if id > m.highestStreamOpenedByPeer {
- m.highestStreamOpenedByPeer = id
- }
-
- s := m.newStream(id)
- m.putStream(s)
- return s, nil
-}
-
-func (m *streamsMapLegacy) openStreamImpl() (streamI, error) {
- if m.numOutgoingStreams >= m.maxOutgoingStreams {
- return nil, qerr.TooManyOpenStreams
- }
-
- m.numOutgoingStreams++
- s := m.newStream(m.nextStreamToOpen)
- m.putStream(s)
- m.nextStreamToOpen += 2
- return s, nil
-}
-
-// OpenStream opens the next available stream
-func (m *streamsMapLegacy) OpenStream() (Stream, error) {
- m.mutex.Lock()
- defer m.mutex.Unlock()
-
- if m.closeErr != nil {
- return nil, m.closeErr
- }
- return m.openStreamImpl()
-}
-
-func (m *streamsMapLegacy) OpenStreamSync() (Stream, error) {
- m.mutex.Lock()
- defer m.mutex.Unlock()
-
- for {
- if m.closeErr != nil {
- return nil, m.closeErr
- }
- str, err := m.openStreamImpl()
- if err == nil {
- return str, err
- }
- if err != nil && err != qerr.TooManyOpenStreams {
- return nil, err
- }
- m.openStreamOrErrCond.Wait()
- }
-}
-
-// AcceptStream returns the next stream opened by the peer
-// it blocks until a new stream is opened
-func (m *streamsMapLegacy) AcceptStream() (Stream, error) {
- m.mutex.Lock()
- defer m.mutex.Unlock()
- var str streamI
- for {
- var ok bool
- if m.closeErr != nil {
- return nil, m.closeErr
- }
- str, ok = m.streams[m.nextStreamToAccept]
- if ok {
- break
- }
- m.nextStreamOrErrCond.Wait()
- }
- m.nextStreamToAccept += 2
- return str, nil
-}
-
-func (m *streamsMapLegacy) DeleteStream(id protocol.StreamID) error {
- m.mutex.Lock()
- defer m.mutex.Unlock()
- _, ok := m.streams[id]
- if !ok {
- return errMapAccess
- }
- delete(m.streams, id)
- if m.streamInitiatedBy(id) == m.perspective {
- m.numOutgoingStreams--
- } else {
- m.numIncomingStreams--
- }
- m.openStreamOrErrCond.Signal()
- return nil
-}
-
-func (m *streamsMapLegacy) putStream(s streamI) error {
- id := s.StreamID()
- if _, ok := m.streams[id]; ok {
- return fmt.Errorf("a stream with ID %d already exists", id)
- }
- m.streams[id] = s
- return nil
-}
-
-func (m *streamsMapLegacy) CloseWithError(err error) {
- m.mutex.Lock()
- defer m.mutex.Unlock()
- m.closeErr = err
- m.nextStreamOrErrCond.Broadcast()
- m.openStreamOrErrCond.Broadcast()
- for _, s := range m.streams {
- s.closeForShutdown(err)
- }
-}
-
-// TODO(#952): this won't be needed when gQUIC supports stateless handshakes
-func (m *streamsMapLegacy) UpdateLimits(params *handshake.TransportParameters) {
- m.mutex.Lock()
- m.maxOutgoingStreams = params.MaxStreams
- for id, str := range m.streams {
- str.handleMaxStreamDataFrame(&wire.MaxStreamDataFrame{
- StreamID: id,
- ByteOffset: params.StreamFlowControlWindow,
- })
- }
- m.mutex.Unlock()
- m.openStreamOrErrCond.Broadcast()
-}
diff --git a/vendor/github.com/phuslu/quic-go/window_update_queue.go b/vendor/github.com/phuslu/quic-go/window_update_queue.go
deleted file mode 100644
index 9bf3c18..0000000
--- a/vendor/github.com/phuslu/quic-go/window_update_queue.go
+++ /dev/null
@@ -1,57 +0,0 @@
-package quic
-
-import (
- "sync"
-
- "github.com/phuslu/quic-go/internal/protocol"
- "github.com/phuslu/quic-go/internal/wire"
-)
-
-type windowUpdateQueue struct {
- mutex sync.Mutex
-
- queue map[protocol.StreamID]bool // used as a set
- callback func(wire.Frame)
- cryptoStream cryptoStreamI
- streamGetter streamGetter
-}
-
-func newWindowUpdateQueue(streamGetter streamGetter, cryptoStream cryptoStreamI, cb func(wire.Frame)) *windowUpdateQueue {
- return &windowUpdateQueue{
- queue: make(map[protocol.StreamID]bool),
- streamGetter: streamGetter,
- cryptoStream: cryptoStream,
- callback: cb,
- }
-}
-
-func (q *windowUpdateQueue) Add(id protocol.StreamID) {
- q.mutex.Lock()
- q.queue[id] = true
- q.mutex.Unlock()
-}
-
-func (q *windowUpdateQueue) QueueAll() {
- q.mutex.Lock()
- var offset protocol.ByteCount
- for id := range q.queue {
- if id == q.cryptoStream.StreamID() {
- offset = q.cryptoStream.getWindowUpdate()
- } else {
- str, err := q.streamGetter.GetOrOpenReceiveStream(id)
- if err != nil || str == nil { // the stream can be nil if it was completed before dequeing the window update
- continue
- }
- offset = str.getWindowUpdate()
- }
- if offset == 0 { // can happen if we received a final offset, right after queueing the window update
- continue
- }
- q.callback(&wire.MaxStreamDataFrame{
- StreamID: id,
- ByteOffset: offset,
- })
- delete(q.queue, id)
- }
- q.mutex.Unlock()
-}