http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/ocsp/ocsp.go
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/ocsp/ocsp.go 
b/cli/vendor/golang.org/x/crypto/ocsp/ocsp.go
deleted file mode 100644
index ea61cf4..0000000
--- a/cli/vendor/golang.org/x/crypto/ocsp/ocsp.go
+++ /dev/null
@@ -1,673 +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 ocsp parses OCSP responses as specified in RFC 2560. OCSP responses
-// are signed messages attesting to the validity of a certificate for a small
-// period of time. This is used to manage revocation for X.509 certificates.
-package ocsp // import "golang.org/x/crypto/ocsp"
-
-import (
-       "crypto"
-       "crypto/ecdsa"
-       "crypto/elliptic"
-       "crypto/rand"
-       "crypto/rsa"
-       "crypto/sha1"
-       "crypto/x509"
-       "crypto/x509/pkix"
-       "encoding/asn1"
-       "errors"
-       "math/big"
-       "strconv"
-       "time"
-)
-
-var idPKIXOCSPBasic = asn1.ObjectIdentifier([]int{1, 3, 6, 1, 5, 5, 7, 48, 1, 
1})
-
-// ResponseStatus contains the result of an OCSP request. See
-// https://tools.ietf.org/html/rfc6960#section-2.3
-type ResponseStatus int
-
-const (
-       Success           ResponseStatus = 0
-       Malformed         ResponseStatus = 1
-       InternalError     ResponseStatus = 2
-       TryLater          ResponseStatus = 3
-       // Status code four is ununsed in OCSP. See
-       // https://tools.ietf.org/html/rfc6960#section-4.2.1
-       SignatureRequired ResponseStatus = 5
-       Unauthorized      ResponseStatus = 6
-)
-
-func (r ResponseStatus) String() string {
-       switch r {
-       case Success:
-               return "success"
-       case Malformed:
-               return "malformed"
-       case InternalError:
-               return "internal error"
-       case TryLater:
-               return "try later"
-       case SignatureRequired:
-               return "signature required"
-       case Unauthorized:
-               return "unauthorized"
-       default:
-               return "unknown OCSP status: " + strconv.Itoa(int(r))
-       }
-}
-
-// ResponseError is an error that may be returned by ParseResponse to indicate
-// that the response itself is an error, not just that its indicating that a
-// certificate is revoked, unknown, etc.
-type ResponseError struct {
-       Status ResponseStatus
-}
-
-func (r ResponseError) Error() string {
-       return "ocsp: error from server: " + r.Status.String()
-}
-
-// These are internal structures that reflect the ASN.1 structure of an OCSP
-// response. See RFC 2560, section 4.2.
-
-type certID struct {
-       HashAlgorithm pkix.AlgorithmIdentifier
-       NameHash      []byte
-       IssuerKeyHash []byte
-       SerialNumber  *big.Int
-}
-
-// https://tools.ietf.org/html/rfc2560#section-4.1.1
-type ocspRequest struct {
-       TBSRequest tbsRequest
-}
-
-type tbsRequest struct {
-       Version       int              
`asn1:"explicit,tag:0,default:0,optional"`
-       RequestorName pkix.RDNSequence `asn1:"explicit,tag:1,optional"`
-       RequestList   []request
-}
-
-type request struct {
-       Cert certID
-}
-
-type responseASN1 struct {
-       Status   asn1.Enumerated
-       Response responseBytes `asn1:"explicit,tag:0,optional"`
-}
-
-type responseBytes struct {
-       ResponseType asn1.ObjectIdentifier
-       Response     []byte
-}
-
-type basicResponse struct {
-       TBSResponseData    responseData
-       SignatureAlgorithm pkix.AlgorithmIdentifier
-       Signature          asn1.BitString
-       Certificates       []asn1.RawValue `asn1:"explicit,tag:0,optional"`
-}
-
-type responseData struct {
-       Raw              asn1.RawContent
-       Version          int           
`asn1:"optional,default:1,explicit,tag:0"`
-       RawResponderName asn1.RawValue `asn1:"optional,explicit,tag:1"`
-       KeyHash          []byte        `asn1:"optional,explicit,tag:2"`
-       ProducedAt       time.Time     `asn1:"generalized"`
-       Responses        []singleResponse
-}
-
-type singleResponse struct {
-       CertID           certID
-       Good             asn1.Flag        `asn1:"tag:0,optional"`
-       Revoked          revokedInfo      `asn1:"tag:1,optional"`
-       Unknown          asn1.Flag        `asn1:"tag:2,optional"`
-       ThisUpdate       time.Time        `asn1:"generalized"`
-       NextUpdate       time.Time        
`asn1:"generalized,explicit,tag:0,optional"`
-       SingleExtensions []pkix.Extension `asn1:"explicit,tag:1,optional"`
-}
-
-type revokedInfo struct {
-       RevocationTime time.Time       `asn1:"generalized"`
-       Reason         asn1.Enumerated `asn1:"explicit,tag:0,optional"`
-}
-
-var (
-       oidSignatureMD2WithRSA      = asn1.ObjectIdentifier{1, 2, 840, 113549, 
1, 1, 2}
-       oidSignatureMD5WithRSA      = asn1.ObjectIdentifier{1, 2, 840, 113549, 
1, 1, 4}
-       oidSignatureSHA1WithRSA     = asn1.ObjectIdentifier{1, 2, 840, 113549, 
1, 1, 5}
-       oidSignatureSHA256WithRSA   = asn1.ObjectIdentifier{1, 2, 840, 113549, 
1, 1, 11}
-       oidSignatureSHA384WithRSA   = asn1.ObjectIdentifier{1, 2, 840, 113549, 
1, 1, 12}
-       oidSignatureSHA512WithRSA   = asn1.ObjectIdentifier{1, 2, 840, 113549, 
1, 1, 13}
-       oidSignatureDSAWithSHA1     = asn1.ObjectIdentifier{1, 2, 840, 10040, 
4, 3}
-       oidSignatureDSAWithSHA256   = asn1.ObjectIdentifier{2, 16, 840, 1, 101, 
4, 3, 2}
-       oidSignatureECDSAWithSHA1   = asn1.ObjectIdentifier{1, 2, 840, 10045, 
4, 1}
-       oidSignatureECDSAWithSHA256 = asn1.ObjectIdentifier{1, 2, 840, 10045, 
4, 3, 2}
-       oidSignatureECDSAWithSHA384 = asn1.ObjectIdentifier{1, 2, 840, 10045, 
4, 3, 3}
-       oidSignatureECDSAWithSHA512 = asn1.ObjectIdentifier{1, 2, 840, 10045, 
4, 3, 4}
-)
-
-var hashOIDs = map[crypto.Hash]asn1.ObjectIdentifier{
-       crypto.SHA1:   asn1.ObjectIdentifier([]int{1, 3, 14, 3, 2, 26}),
-       crypto.SHA256: asn1.ObjectIdentifier([]int{2, 16, 840, 1, 101, 3, 4, 2, 
1}),
-       crypto.SHA384: asn1.ObjectIdentifier([]int{2, 16, 840, 1, 101, 3, 4, 2, 
2}),
-       crypto.SHA512: asn1.ObjectIdentifier([]int{2, 16, 840, 1, 101, 3, 4, 2, 
3}),
-}
-
-// TODO(rlb): This is also from crypto/x509, so same comment as AGL's below
-var signatureAlgorithmDetails = []struct {
-       algo       x509.SignatureAlgorithm
-       oid        asn1.ObjectIdentifier
-       pubKeyAlgo x509.PublicKeyAlgorithm
-       hash       crypto.Hash
-}{
-       {x509.MD2WithRSA, oidSignatureMD2WithRSA, x509.RSA, crypto.Hash(0) /* 
no value for MD2 */},
-       {x509.MD5WithRSA, oidSignatureMD5WithRSA, x509.RSA, crypto.MD5},
-       {x509.SHA1WithRSA, oidSignatureSHA1WithRSA, x509.RSA, crypto.SHA1},
-       {x509.SHA256WithRSA, oidSignatureSHA256WithRSA, x509.RSA, 
crypto.SHA256},
-       {x509.SHA384WithRSA, oidSignatureSHA384WithRSA, x509.RSA, 
crypto.SHA384},
-       {x509.SHA512WithRSA, oidSignatureSHA512WithRSA, x509.RSA, 
crypto.SHA512},
-       {x509.DSAWithSHA1, oidSignatureDSAWithSHA1, x509.DSA, crypto.SHA1},
-       {x509.DSAWithSHA256, oidSignatureDSAWithSHA256, x509.DSA, 
crypto.SHA256},
-       {x509.ECDSAWithSHA1, oidSignatureECDSAWithSHA1, x509.ECDSA, 
crypto.SHA1},
-       {x509.ECDSAWithSHA256, oidSignatureECDSAWithSHA256, x509.ECDSA, 
crypto.SHA256},
-       {x509.ECDSAWithSHA384, oidSignatureECDSAWithSHA384, x509.ECDSA, 
crypto.SHA384},
-       {x509.ECDSAWithSHA512, oidSignatureECDSAWithSHA512, x509.ECDSA, 
crypto.SHA512},
-}
-
-// TODO(rlb): This is also from crypto/x509, so same comment as AGL's below
-func signingParamsForPublicKey(pub interface{}, requestedSigAlgo 
x509.SignatureAlgorithm) (hashFunc crypto.Hash, sigAlgo 
pkix.AlgorithmIdentifier, err error) {
-       var pubType x509.PublicKeyAlgorithm
-
-       switch pub := pub.(type) {
-       case *rsa.PublicKey:
-               pubType = x509.RSA
-               hashFunc = crypto.SHA256
-               sigAlgo.Algorithm = oidSignatureSHA256WithRSA
-               sigAlgo.Parameters = asn1.RawValue{
-                       Tag: 5,
-               }
-
-       case *ecdsa.PublicKey:
-               pubType = x509.ECDSA
-
-               switch pub.Curve {
-               case elliptic.P224(), elliptic.P256():
-                       hashFunc = crypto.SHA256
-                       sigAlgo.Algorithm = oidSignatureECDSAWithSHA256
-               case elliptic.P384():
-                       hashFunc = crypto.SHA384
-                       sigAlgo.Algorithm = oidSignatureECDSAWithSHA384
-               case elliptic.P521():
-                       hashFunc = crypto.SHA512
-                       sigAlgo.Algorithm = oidSignatureECDSAWithSHA512
-               default:
-                       err = errors.New("x509: unknown elliptic curve")
-               }
-
-       default:
-               err = errors.New("x509: only RSA and ECDSA keys supported")
-       }
-
-       if err != nil {
-               return
-       }
-
-       if requestedSigAlgo == 0 {
-               return
-       }
-
-       found := false
-       for _, details := range signatureAlgorithmDetails {
-               if details.algo == requestedSigAlgo {
-                       if details.pubKeyAlgo != pubType {
-                               err = errors.New("x509: requested 
SignatureAlgorithm does not match private key type")
-                               return
-                       }
-                       sigAlgo.Algorithm, hashFunc = details.oid, details.hash
-                       if hashFunc == 0 {
-                               err = errors.New("x509: cannot sign with hash 
function requested")
-                               return
-                       }
-                       found = true
-                       break
-               }
-       }
-
-       if !found {
-               err = errors.New("x509: unknown SignatureAlgorithm")
-       }
-
-       return
-}
-
-// TODO(agl): this is taken from crypto/x509 and so should probably be exported
-// from crypto/x509 or crypto/x509/pkix.
-func getSignatureAlgorithmFromOID(oid asn1.ObjectIdentifier) 
x509.SignatureAlgorithm {
-       for _, details := range signatureAlgorithmDetails {
-               if oid.Equal(details.oid) {
-                       return details.algo
-               }
-       }
-       return x509.UnknownSignatureAlgorithm
-}
-
-// TODO(rlb): This is not taken from crypto/x509, but it's of the same general 
form.
-func getHashAlgorithmFromOID(target asn1.ObjectIdentifier) crypto.Hash {
-       for hash, oid := range hashOIDs {
-               if oid.Equal(target) {
-                       return hash
-               }
-       }
-       return crypto.Hash(0)
-}
-
-// This is the exposed reflection of the internal OCSP structures.
-
-// The status values that can be expressed in OCSP.  See RFC 6960.
-const (
-       // Good means that the certificate is valid.
-       Good = iota
-       // Revoked means that the certificate has been deliberately revoked.
-       Revoked
-       // Unknown means that the OCSP responder doesn't know about the 
certificate.
-       Unknown
-       // ServerFailed is unused and was never used (see
-       // https://go-review.googlesource.com/#/c/18944). ParseResponse will
-       // return a ResponseError when an error response is parsed.
-       ServerFailed
-)
-
-// The enumerated reasons for revoking a certificate.  See RFC 5280.
-const (
-       Unspecified          = iota
-       KeyCompromise        = iota
-       CACompromise         = iota
-       AffiliationChanged   = iota
-       Superseded           = iota
-       CessationOfOperation = iota
-       CertificateHold      = iota
-       _                    = iota
-       RemoveFromCRL        = iota
-       PrivilegeWithdrawn   = iota
-       AACompromise         = iota
-)
-
-// Request represents an OCSP request. See RFC 6960.
-type Request struct {
-       HashAlgorithm  crypto.Hash
-       IssuerNameHash []byte
-       IssuerKeyHash  []byte
-       SerialNumber   *big.Int
-}
-
-// Response represents an OCSP response containing a single SingleResponse. See
-// RFC 6960.
-type Response struct {
-       // Status is one of {Good, Revoked, Unknown}
-       Status                                        int
-       SerialNumber                                  *big.Int
-       ProducedAt, ThisUpdate, NextUpdate, RevokedAt time.Time
-       RevocationReason                              int
-       Certificate                                   *x509.Certificate
-       // TBSResponseData contains the raw bytes of the signed response. If
-       // Certificate is nil then this can be used to verify Signature.
-       TBSResponseData    []byte
-       Signature          []byte
-       SignatureAlgorithm x509.SignatureAlgorithm
-
-       // Extensions contains raw X.509 extensions from the singleExtensions 
field
-       // of the OCSP response. When parsing certificates, this can be used to
-       // extract non-critical extensions that are not parsed by this package. 
When
-       // marshaling OCSP responses, the Extensions field is ignored, see
-       // ExtraExtensions.
-       Extensions []pkix.Extension
-
-       // ExtraExtensions contains extensions to be copied, raw, into any 
marshaled
-       // OCSP response (in the singleExtensions field). Values override any
-       // extensions that would otherwise be produced based on the other 
fields. The
-       // ExtraExtensions field is not populated when parsing certificates, see
-       // Extensions.
-       ExtraExtensions []pkix.Extension
-}
-
-// These are pre-serialized error responses for the various non-success codes
-// defined by OCSP. The Unauthorized code in particular can be used by an OCSP
-// responder that supports only pre-signed responses as a response to requests
-// for certificates with unknown status. See RFC 5019.
-var (
-       MalformedRequestErrorResponse = []byte{0x30, 0x03, 0x0A, 0x01, 0x01}
-       InternalErrorErrorResponse    = []byte{0x30, 0x03, 0x0A, 0x01, 0x02}
-       TryLaterErrorResponse         = []byte{0x30, 0x03, 0x0A, 0x01, 0x03}
-       SigRequredErrorResponse       = []byte{0x30, 0x03, 0x0A, 0x01, 0x05}
-       UnauthorizedErrorResponse     = []byte{0x30, 0x03, 0x0A, 0x01, 0x06}
-)
-
-// CheckSignatureFrom checks that the signature in resp is a valid signature
-// from issuer. This should only be used if resp.Certificate is nil. Otherwise,
-// the OCSP response contained an intermediate certificate that created the
-// signature. That signature is checked by ParseResponse and only
-// resp.Certificate remains to be validated.
-func (resp *Response) CheckSignatureFrom(issuer *x509.Certificate) error {
-       return issuer.CheckSignature(resp.SignatureAlgorithm, 
resp.TBSResponseData, resp.Signature)
-}
-
-// ParseError results from an invalid OCSP response.
-type ParseError string
-
-func (p ParseError) Error() string {
-       return string(p)
-}
-
-// ParseRequest parses an OCSP request in DER form. It only supports
-// requests for a single certificate. Signed requests are not supported.
-// If a request includes a signature, it will result in a ParseError.
-func ParseRequest(bytes []byte) (*Request, error) {
-       var req ocspRequest
-       rest, err := asn1.Unmarshal(bytes, &req)
-       if err != nil {
-               return nil, err
-       }
-       if len(rest) > 0 {
-               return nil, ParseError("trailing data in OCSP request")
-       }
-
-       if len(req.TBSRequest.RequestList) == 0 {
-               return nil, ParseError("OCSP request contains no request body")
-       }
-       innerRequest := req.TBSRequest.RequestList[0]
-
-       hashFunc := 
getHashAlgorithmFromOID(innerRequest.Cert.HashAlgorithm.Algorithm)
-       if hashFunc == crypto.Hash(0) {
-               return nil, ParseError("OCSP request uses unknown hash 
function")
-       }
-
-       return &Request{
-               HashAlgorithm:  hashFunc,
-               IssuerNameHash: innerRequest.Cert.NameHash,
-               IssuerKeyHash:  innerRequest.Cert.IssuerKeyHash,
-               SerialNumber:   innerRequest.Cert.SerialNumber,
-       }, nil
-}
-
-// ParseResponse parses an OCSP response in DER form. It only supports
-// responses for a single certificate. If the response contains a certificate
-// then the signature over the response is checked. If issuer is not nil then
-// it will be used to validate the signature or embedded certificate.
-//
-// Invalid signatures or parse failures will result in a ParseError. Error
-// responses will result in a ResponseError.
-func ParseResponse(bytes []byte, issuer *x509.Certificate) (*Response, error) {
-       var resp responseASN1
-       rest, err := asn1.Unmarshal(bytes, &resp)
-       if err != nil {
-               return nil, err
-       }
-       if len(rest) > 0 {
-               return nil, ParseError("trailing data in OCSP response")
-       }
-
-       if status := ResponseStatus(resp.Status); status != Success {
-               return nil, ResponseError{status}
-       }
-
-       if !resp.Response.ResponseType.Equal(idPKIXOCSPBasic) {
-               return nil, ParseError("bad OCSP response type")
-       }
-
-       var basicResp basicResponse
-       rest, err = asn1.Unmarshal(resp.Response.Response, &basicResp)
-       if err != nil {
-               return nil, err
-       }
-
-       if len(basicResp.Certificates) > 1 {
-               return nil, ParseError("OCSP response contains bad number of 
certificates")
-       }
-
-       if len(basicResp.TBSResponseData.Responses) != 1 {
-               return nil, ParseError("OCSP response contains bad number of 
responses")
-       }
-
-       ret := &Response{
-               TBSResponseData:    basicResp.TBSResponseData.Raw,
-               Signature:          basicResp.Signature.RightAlign(),
-               SignatureAlgorithm: 
getSignatureAlgorithmFromOID(basicResp.SignatureAlgorithm.Algorithm),
-       }
-
-       if len(basicResp.Certificates) > 0 {
-               ret.Certificate, err = 
x509.ParseCertificate(basicResp.Certificates[0].FullBytes)
-               if err != nil {
-                       return nil, err
-               }
-
-               if err := ret.CheckSignatureFrom(ret.Certificate); err != nil {
-                       return nil, ParseError("bad OCSP signature")
-               }
-
-               if issuer != nil {
-                       if err := 
issuer.CheckSignature(ret.Certificate.SignatureAlgorithm, 
ret.Certificate.RawTBSCertificate, ret.Certificate.Signature); err != nil {
-                               return nil, ParseError("bad signature on 
embedded certificate")
-                       }
-               }
-       } else if issuer != nil {
-               if err := ret.CheckSignatureFrom(issuer); err != nil {
-                       return nil, ParseError("bad OCSP signature")
-               }
-       }
-
-       r := basicResp.TBSResponseData.Responses[0]
-
-       for _, ext := range r.SingleExtensions {
-               if ext.Critical {
-                       return nil, ParseError("unsupported critical extension")
-               }
-       }
-       ret.Extensions = r.SingleExtensions
-
-       ret.SerialNumber = r.CertID.SerialNumber
-
-       switch {
-       case bool(r.Good):
-               ret.Status = Good
-       case bool(r.Unknown):
-               ret.Status = Unknown
-       default:
-               ret.Status = Revoked
-               ret.RevokedAt = r.Revoked.RevocationTime
-               ret.RevocationReason = int(r.Revoked.Reason)
-       }
-
-       ret.ProducedAt = basicResp.TBSResponseData.ProducedAt
-       ret.ThisUpdate = r.ThisUpdate
-       ret.NextUpdate = r.NextUpdate
-
-       return ret, nil
-}
-
-// RequestOptions contains options for constructing OCSP requests.
-type RequestOptions struct {
-       // Hash contains the hash function that should be used when
-       // constructing the OCSP request. If zero, SHA-1 will be used.
-       Hash crypto.Hash
-}
-
-func (opts *RequestOptions) hash() crypto.Hash {
-       if opts == nil || opts.Hash == 0 {
-               // SHA-1 is nearly universally used in OCSP.
-               return crypto.SHA1
-       }
-       return opts.Hash
-}
-
-// CreateRequest returns a DER-encoded, OCSP request for the status of cert. If
-// opts is nil then sensible defaults are used.
-func CreateRequest(cert, issuer *x509.Certificate, opts *RequestOptions) 
([]byte, error) {
-       hashFunc := opts.hash()
-
-       // OCSP seems to be the only place where these raw hash identifiers are
-       // used. I took the following from
-       // http://msdn.microsoft.com/en-us/library/ff635603.aspx
-       var hashOID asn1.ObjectIdentifier
-       hashOID, ok := hashOIDs[hashFunc]
-       if !ok {
-               return nil, x509.ErrUnsupportedAlgorithm
-       }
-
-       if !hashFunc.Available() {
-               return nil, x509.ErrUnsupportedAlgorithm
-       }
-       h := opts.hash().New()
-
-       var publicKeyInfo struct {
-               Algorithm pkix.AlgorithmIdentifier
-               PublicKey asn1.BitString
-       }
-       if _, err := asn1.Unmarshal(issuer.RawSubjectPublicKeyInfo, 
&publicKeyInfo); err != nil {
-               return nil, err
-       }
-
-       h.Write(publicKeyInfo.PublicKey.RightAlign())
-       issuerKeyHash := h.Sum(nil)
-
-       h.Reset()
-       h.Write(issuer.RawSubject)
-       issuerNameHash := h.Sum(nil)
-
-       return asn1.Marshal(ocspRequest{
-               tbsRequest{
-                       Version: 0,
-                       RequestList: []request{
-                               {
-                                       Cert: certID{
-                                               pkix.AlgorithmIdentifier{
-                                                       Algorithm:  hashOID,
-                                                       Parameters: 
asn1.RawValue{Tag: 5 /* ASN.1 NULL */},
-                                               },
-                                               issuerNameHash,
-                                               issuerKeyHash,
-                                               cert.SerialNumber,
-                                       },
-                               },
-                       },
-               },
-       })
-}
-
-// CreateResponse returns a DER-encoded OCSP response with the specified 
contents.
-// The fields in the response are populated as follows:
-//
-// The responder cert is used to populate the ResponderName field, and the 
certificate
-// itself is provided alongside the OCSP response signature.
-//
-// The issuer cert is used to puplate the IssuerNameHash and IssuerKeyHash 
fields.
-// (SHA-1 is used for the hash function; this is not configurable.)
-//
-// The template is used to populate the SerialNumber, RevocationStatus, 
RevokedAt,
-// RevocationReason, ThisUpdate, and NextUpdate fields.
-//
-// The ProducedAt date is automatically set to the current date, to the 
nearest minute.
-func CreateResponse(issuer, responderCert *x509.Certificate, template 
Response, priv crypto.Signer) ([]byte, error) {
-       var publicKeyInfo struct {
-               Algorithm pkix.AlgorithmIdentifier
-               PublicKey asn1.BitString
-       }
-       if _, err := asn1.Unmarshal(issuer.RawSubjectPublicKeyInfo, 
&publicKeyInfo); err != nil {
-               return nil, err
-       }
-
-       h := sha1.New()
-       h.Write(publicKeyInfo.PublicKey.RightAlign())
-       issuerKeyHash := h.Sum(nil)
-
-       h.Reset()
-       h.Write(issuer.RawSubject)
-       issuerNameHash := h.Sum(nil)
-
-       innerResponse := singleResponse{
-               CertID: certID{
-                       HashAlgorithm: pkix.AlgorithmIdentifier{
-                               Algorithm:  hashOIDs[crypto.SHA1],
-                               Parameters: asn1.RawValue{Tag: 5 /* ASN.1 NULL 
*/},
-                       },
-                       NameHash:      issuerNameHash,
-                       IssuerKeyHash: issuerKeyHash,
-                       SerialNumber:  template.SerialNumber,
-               },
-               ThisUpdate:       template.ThisUpdate.UTC(),
-               NextUpdate:       template.NextUpdate.UTC(),
-               SingleExtensions: template.ExtraExtensions,
-       }
-
-       switch template.Status {
-       case Good:
-               innerResponse.Good = true
-       case Unknown:
-               innerResponse.Unknown = true
-       case Revoked:
-               innerResponse.Revoked = revokedInfo{
-                       RevocationTime: template.RevokedAt.UTC(),
-                       Reason:         
asn1.Enumerated(template.RevocationReason),
-               }
-       }
-
-       responderName := asn1.RawValue{
-               Class:      2, // context-specific
-               Tag:        1, // explicit tag
-               IsCompound: true,
-               Bytes:      responderCert.RawSubject,
-       }
-       tbsResponseData := responseData{
-               Version:          0,
-               RawResponderName: responderName,
-               ProducedAt:       time.Now().Truncate(time.Minute).UTC(),
-               Responses:        []singleResponse{innerResponse},
-       }
-
-       tbsResponseDataDER, err := asn1.Marshal(tbsResponseData)
-       if err != nil {
-               return nil, err
-       }
-
-       hashFunc, signatureAlgorithm, err := 
signingParamsForPublicKey(priv.Public(), template.SignatureAlgorithm)
-       if err != nil {
-               return nil, err
-       }
-
-       responseHash := hashFunc.New()
-       responseHash.Write(tbsResponseDataDER)
-       signature, err := priv.Sign(rand.Reader, responseHash.Sum(nil), 
hashFunc)
-       if err != nil {
-               return nil, err
-       }
-
-       response := basicResponse{
-               TBSResponseData:    tbsResponseData,
-               SignatureAlgorithm: signatureAlgorithm,
-               Signature: asn1.BitString{
-                       Bytes:     signature,
-                       BitLength: 8 * len(signature),
-               },
-       }
-       if template.Certificate != nil {
-               response.Certificates = []asn1.RawValue{
-                       asn1.RawValue{FullBytes: template.Certificate.Raw},
-               }
-       }
-       responseDER, err := asn1.Marshal(response)
-       if err != nil {
-               return nil, err
-       }
-
-       return asn1.Marshal(responseASN1{
-               Status: asn1.Enumerated(Success),
-               Response: responseBytes{
-                       ResponseType: idPKIXOCSPBasic,
-                       Response:     responseDER,
-               },
-       })
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/ocsp/ocsp_test.go
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/ocsp/ocsp_test.go 
b/cli/vendor/golang.org/x/crypto/ocsp/ocsp_test.go
deleted file mode 100644
index 3386849..0000000
--- a/cli/vendor/golang.org/x/crypto/ocsp/ocsp_test.go
+++ /dev/null
@@ -1,584 +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 ocsp
-
-import (
-       "bytes"
-       "crypto"
-       "crypto/sha1"
-       "crypto/x509"
-       "crypto/x509/pkix"
-       "encoding/asn1"
-       "encoding/hex"
-       "math/big"
-       "reflect"
-       "testing"
-       "time"
-)
-
-func TestOCSPDecode(t *testing.T) {
-       responseBytes, _ := hex.DecodeString(ocspResponseHex)
-       resp, err := ParseResponse(responseBytes, nil)
-       if err != nil {
-               t.Error(err)
-       }
-
-       expected := Response{
-               Status:           Good,
-               SerialNumber:     big.NewInt(0x1d0fa),
-               RevocationReason: Unspecified,
-               ThisUpdate:       time.Date(2010, 7, 7, 15, 1, 5, 0, time.UTC),
-               NextUpdate:       time.Date(2010, 7, 7, 18, 35, 17, 0, 
time.UTC),
-       }
-
-       if !reflect.DeepEqual(resp.ThisUpdate, expected.ThisUpdate) {
-               t.Errorf("resp.ThisUpdate: got %d, want %d", resp.ThisUpdate, 
expected.ThisUpdate)
-       }
-
-       if !reflect.DeepEqual(resp.NextUpdate, expected.NextUpdate) {
-               t.Errorf("resp.NextUpdate: got %d, want %d", resp.NextUpdate, 
expected.NextUpdate)
-       }
-
-       if resp.Status != expected.Status {
-               t.Errorf("resp.Status: got %d, want %d", resp.Status, 
expected.Status)
-       }
-
-       if resp.SerialNumber.Cmp(expected.SerialNumber) != 0 {
-               t.Errorf("resp.SerialNumber: got %x, want %x", 
resp.SerialNumber, expected.SerialNumber)
-       }
-
-       if resp.RevocationReason != expected.RevocationReason {
-               t.Errorf("resp.RevocationReason: got %d, want %d", 
resp.RevocationReason, expected.RevocationReason)
-       }
-}
-
-func TestOCSPDecodeWithoutCert(t *testing.T) {
-       responseBytes, _ := hex.DecodeString(ocspResponseWithoutCertHex)
-       _, err := ParseResponse(responseBytes, nil)
-       if err != nil {
-               t.Error(err)
-       }
-}
-
-func TestOCSPDecodeWithExtensions(t *testing.T) {
-       responseBytes, _ := 
hex.DecodeString(ocspResponseWithCriticalExtensionHex)
-       _, err := ParseResponse(responseBytes, nil)
-       if err == nil {
-               t.Error(err)
-       }
-
-       responseBytes, _ = hex.DecodeString(ocspResponseWithExtensionHex)
-       response, err := ParseResponse(responseBytes, nil)
-       if err != nil {
-               t.Fatal(err)
-       }
-
-       if len(response.Extensions) != 1 {
-               t.Errorf("len(response.Extensions): got %v, want %v", 
len(response.Extensions), 1)
-       }
-
-       extensionBytes := response.Extensions[0].Value
-       expectedBytes, _ := hex.DecodeString(ocspExtensionValueHex)
-       if !bytes.Equal(extensionBytes, expectedBytes) {
-               t.Errorf("response.Extensions[0]: got %x, want %x", 
extensionBytes, expectedBytes)
-       }
-}
-
-func TestOCSPSignature(t *testing.T) {
-       issuerCert, _ := hex.DecodeString(startComHex)
-       issuer, err := x509.ParseCertificate(issuerCert)
-       if err != nil {
-               t.Fatal(err)
-       }
-
-       response, _ := hex.DecodeString(ocspResponseHex)
-       if _, err := ParseResponse(response, issuer); err != nil {
-               t.Error(err)
-       }
-}
-
-func TestOCSPRequest(t *testing.T) {
-       leafCert, _ := hex.DecodeString(leafCertHex)
-       cert, err := x509.ParseCertificate(leafCert)
-       if err != nil {
-               t.Fatal(err)
-       }
-
-       issuerCert, _ := hex.DecodeString(issuerCertHex)
-       issuer, err := x509.ParseCertificate(issuerCert)
-       if err != nil {
-               t.Fatal(err)
-       }
-
-       request, err := CreateRequest(cert, issuer, nil)
-       if err != nil {
-               t.Fatal(err)
-       }
-
-       expectedBytes, _ := hex.DecodeString(ocspRequestHex)
-       if !bytes.Equal(request, expectedBytes) {
-               t.Errorf("request: got %x, wanted %x", request, expectedBytes)
-       }
-
-       decodedRequest, err := ParseRequest(expectedBytes)
-       if err != nil {
-               t.Fatal(err)
-       }
-
-       if decodedRequest.HashAlgorithm != crypto.SHA1 {
-               t.Errorf("request.HashAlgorithm: got %v, want %v", 
decodedRequest.HashAlgorithm, crypto.SHA1)
-       }
-
-       var publicKeyInfo struct {
-               Algorithm pkix.AlgorithmIdentifier
-               PublicKey asn1.BitString
-       }
-       _, err = asn1.Unmarshal(issuer.RawSubjectPublicKeyInfo, &publicKeyInfo)
-       if err != nil {
-               t.Fatal(err)
-       }
-
-       h := sha1.New()
-       h.Write(publicKeyInfo.PublicKey.RightAlign())
-       issuerKeyHash := h.Sum(nil)
-
-       h.Reset()
-       h.Write(issuer.RawSubject)
-       issuerNameHash := h.Sum(nil)
-
-       if got := decodedRequest.IssuerKeyHash; !bytes.Equal(got, 
issuerKeyHash) {
-               t.Errorf("request.IssuerKeyHash: got %x, want %x", got, 
issuerKeyHash)
-       }
-
-       if got := decodedRequest.IssuerNameHash; !bytes.Equal(got, 
issuerNameHash) {
-               t.Errorf("request.IssuerKeyHash: got %x, want %x", got, 
issuerNameHash)
-       }
-
-       if got := decodedRequest.SerialNumber; got.Cmp(cert.SerialNumber) != 0 {
-               t.Errorf("request.SerialNumber: got %x, want %x", got, 
cert.SerialNumber)
-       }
-}
-
-func TestOCSPResponse(t *testing.T) {
-       leafCert, _ := hex.DecodeString(leafCertHex)
-       leaf, err := x509.ParseCertificate(leafCert)
-       if err != nil {
-               t.Fatal(err)
-       }
-
-       issuerCert, _ := hex.DecodeString(issuerCertHex)
-       issuer, err := x509.ParseCertificate(issuerCert)
-       if err != nil {
-               t.Fatal(err)
-       }
-
-       responderCert, _ := hex.DecodeString(responderCertHex)
-       responder, err := x509.ParseCertificate(responderCert)
-       if err != nil {
-               t.Fatal(err)
-       }
-
-       responderPrivateKeyDER, _ := hex.DecodeString(responderPrivateKeyHex)
-       responderPrivateKey, err := 
x509.ParsePKCS1PrivateKey(responderPrivateKeyDER)
-       if err != nil {
-               t.Fatal(err)
-       }
-
-       extensionBytes, _ := hex.DecodeString(ocspExtensionValueHex)
-       extensions := []pkix.Extension{
-               pkix.Extension{
-                       Id:       ocspExtensionOID,
-                       Critical: false,
-                       Value:    extensionBytes,
-               },
-       }
-
-       producedAt := time.Now().Truncate(time.Minute)
-       thisUpdate := time.Date(2010, 7, 7, 15, 1, 5, 0, time.UTC)
-       nextUpdate := time.Date(2010, 7, 7, 18, 35, 17, 0, time.UTC)
-       template := Response{
-               Status:           Revoked,
-               SerialNumber:     leaf.SerialNumber,
-               ThisUpdate:       thisUpdate,
-               NextUpdate:       nextUpdate,
-               RevokedAt:        thisUpdate,
-               RevocationReason: KeyCompromise,
-               Certificate:      responder,
-               ExtraExtensions:  extensions,
-       }
-
-       responseBytes, err := CreateResponse(issuer, responder, template, 
responderPrivateKey)
-       if err != nil {
-               t.Fatal(err)
-       }
-
-       resp, err := ParseResponse(responseBytes, nil)
-       if err != nil {
-               t.Fatal(err)
-       }
-
-       if !reflect.DeepEqual(resp.ThisUpdate, template.ThisUpdate) {
-               t.Errorf("resp.ThisUpdate: got %d, want %d", resp.ThisUpdate, 
template.ThisUpdate)
-       }
-
-       if !reflect.DeepEqual(resp.NextUpdate, template.NextUpdate) {
-               t.Errorf("resp.NextUpdate: got %d, want %d", resp.NextUpdate, 
template.NextUpdate)
-       }
-
-       if !reflect.DeepEqual(resp.RevokedAt, template.RevokedAt) {
-               t.Errorf("resp.RevokedAt: got %d, want %d", resp.RevokedAt, 
template.RevokedAt)
-       }
-
-       if !reflect.DeepEqual(resp.Extensions, template.ExtraExtensions) {
-               t.Errorf("resp.Extensions: got %v, want %v", resp.Extensions, 
template.ExtraExtensions)
-       }
-
-       if !resp.ProducedAt.Equal(producedAt) {
-               t.Errorf("resp.ProducedAt: got %d, want %d", resp.ProducedAt, 
producedAt)
-       }
-
-       if resp.Status != template.Status {
-               t.Errorf("resp.Status: got %d, want %d", resp.Status, 
template.Status)
-       }
-
-       if resp.SerialNumber.Cmp(template.SerialNumber) != 0 {
-               t.Errorf("resp.SerialNumber: got %x, want %x", 
resp.SerialNumber, template.SerialNumber)
-       }
-
-       if resp.RevocationReason != template.RevocationReason {
-               t.Errorf("resp.RevocationReason: got %d, want %d", 
resp.RevocationReason, template.RevocationReason)
-       }
-}
-
-func TestErrorResponse(t *testing.T) {
-       responseBytes, _ := hex.DecodeString(errorResponseHex)
-       _, err := ParseResponse(responseBytes, nil)
-
-       respErr, ok := err.(ResponseError)
-       if !ok {
-               t.Fatalf("expected ResponseError from ParseResponse but got 
%#v", err)
-       }
-       if respErr.Status != Malformed {
-               t.Fatalf("expected Malformed status from ParseResponse but got 
%d", respErr.Status)
-       }
-}
-
-// This OCSP response was taken from Thawte's public OCSP responder.
-// To recreate:
-//   $ openssl s_client -tls1 -showcerts -servername www.google.com -connect 
www.google.com:443
-// Copy and paste the first certificate into /tmp/cert.crt and the second into
-// /tmp/intermediate.crt
-//   $ openssl ocsp -issuer /tmp/intermediate.crt -cert /tmp/cert.crt -url 
http://ocsp.thawte.com -resp_text -respout /tmp/ocsp.der
-// Then hex encode the result:
-//   $ python -c 'print file("/tmp/ocsp.der", "r").read().encode("hex")'
-
-const ocspResponseHex = 
"308206bc0a0100a08206b5308206b106092b0601050507300101048206a23082069e3081" +
-       
"c9a14e304c310b300906035504061302494c31163014060355040a130d5374617274436f" +
-       
"6d204c74642e312530230603550403131c5374617274436f6d20436c6173732031204f43" +
-       
"5350205369676e6572180f32303130303730373137333531375a30663064303c30090605" +
-       
"2b0e03021a050004146568874f40750f016a3475625e1f5c93e5a26d580414eb4234d098" +
-       
"b0ab9ff41b6b08f7cc642eef0e2c45020301d0fa8000180f323031303037303731353031" +
-       
"30355aa011180f32303130303730373138333531375a300d06092a864886f70d01010505" +
-       
"000382010100ab557ff070d1d7cebbb5f0ec91a15c3fed22eb2e1b8244f1b84545f013a4" +
-       
"fb46214c5e3fbfbebb8a56acc2b9db19f68fd3c3201046b3824d5ba689f99864328710cb" +
-       
"467195eb37d84f539e49f859316b32964dc3e47e36814ce94d6c56dd02733b1d0802f7ff" +
-       
"4eebdbbd2927dcf580f16cbc290f91e81b53cb365e7223f1d6e20a88ea064104875e0145" +
-       
"672b20fc14829d51ca122f5f5d77d3ad6c83889c55c7dc43680ba2fe3cef8b05dbcabdc0" +
-       
"d3e09aaf9725597f8c858c2fa38c0d6aed2e6318194420dd1a1137445d13e1c97ab47896" +
-       
"17a4e08925f46f867b72e3a4dc1f08cb870b2b0717f7207faa0ac512e628a029aba7457a" +
-       
"e63dcf3281e2162d9349a08204ba308204b6308204b23082039aa003020102020101300d" +
-       
"06092a864886f70d010105050030818c310b300906035504061302494c31163014060355" +
-       
"040a130d5374617274436f6d204c74642e312b3029060355040b13225365637572652044" +
-       
"69676974616c204365727469666963617465205369676e696e6731383036060355040313" +
-       
"2f5374617274436f6d20436c6173732031205072696d61727920496e7465726d65646961" +
-       
"746520536572766572204341301e170d3037313032353030323330365a170d3132313032" +
-       
"333030323330365a304c310b300906035504061302494c31163014060355040a130d5374" +
-       
"617274436f6d204c74642e312530230603550403131c5374617274436f6d20436c617373" +
-       
"2031204f435350205369676e657230820122300d06092a864886f70d0101010500038201" +
-       
"0f003082010a0282010100b9561b4c45318717178084e96e178df2255e18ed8d8ecc7c2b" +
-       
"7b51a6c1c2e6bf0aa3603066f132fe10ae97b50e99fa24b83fc53dd2777496387d14e1c3" +
-       
"a9b6a4933e2ac12413d085570a95b8147414a0bc007c7bcf222446ef7f1a156d7ea1c577" +
-       
"fc5f0facdfd42eb0f5974990cb2f5cefebceef4d1bdc7ae5c1075c5a99a93171f2b0845b" +
-       
"4ff0864e973fcfe32f9d7511ff87a3e943410c90a4493a306b6944359340a9ca96f02b66" +
-       
"ce67f028df2980a6aaee8d5d5d452b8b0eb93f923cc1e23fcccbdbe7ffcb114d08fa7a6a" +
-       
"3c404f825d1a0e715935cf623a8c7b59670014ed0622f6089a9447a7a19010f7fe58f841" +
-       
"29a2765ea367824d1c3bb2fda308530203010001a382015c30820158300c0603551d1301" +
-       
"01ff04023000300b0603551d0f0404030203a8301e0603551d250417301506082b060105" +
-       
"0507030906092b0601050507300105301d0603551d0e0416041445e0a36695414c5dd449" +
-       
"bc00e33cdcdbd2343e173081a80603551d230481a030819d8014eb4234d098b0ab9ff41b" +
-       
"6b08f7cc642eef0e2c45a18181a47f307d310b300906035504061302494c311630140603" +
-       
"55040a130d5374617274436f6d204c74642e312b3029060355040b132253656375726520" +
-       
"4469676974616c204365727469666963617465205369676e696e67312930270603550403" +
-       
"13205374617274436f6d2043657274696669636174696f6e20417574686f726974798201" +
-       
"0a30230603551d12041c301a8618687474703a2f2f7777772e737461727473736c2e636f" +
-       
"6d2f302c06096086480186f842010d041f161d5374617274436f6d205265766f63617469" +
-       
"6f6e20417574686f72697479300d06092a864886f70d01010505000382010100182d2215" +
-       
"8f0fc0291324fa8574c49bb8ff2835085adcbf7b7fc4191c397ab6951328253fffe1e5ec" +
-       
"2a7da0d50fca1a404e6968481366939e666c0a6209073eca57973e2fefa9ed1718e8176f" +
-       
"1d85527ff522c08db702e3b2b180f1cbff05d98128252cf0f450f7dd2772f4188047f19d" +
-       
"c85317366f94bc52d60f453a550af58e308aaab00ced33040b62bf37f5b1ab2a4f7f0f80" +
-       
"f763bf4d707bc8841d7ad9385ee2a4244469260b6f2bf085977af9074796048ecc2f9d48" +
-       
"a1d24ce16e41a9941568fec5b42771e118f16c106a54ccc339a4b02166445a167902e75e" +
-       
"6d8620b0825dcd18a069b90fd851d10fa8effd409deec02860d26d8d833f304b10669b42"
-
-const startComHex = 
"308206343082041ca003020102020118300d06092a864886f70d0101050500307d310b30" +
-       
"0906035504061302494c31163014060355040a130d5374617274436f6d204c74642e312b" +
-       
"3029060355040b1322536563757265204469676974616c20436572746966696361746520" +
-       
"5369676e696e6731293027060355040313205374617274436f6d20436572746966696361" +
-       
"74696f6e20417574686f72697479301e170d3037313032343230353431375a170d313731" +
-       
"3032343230353431375a30818c310b300906035504061302494c31163014060355040a13" +
-       
"0d5374617274436f6d204c74642e312b3029060355040b13225365637572652044696769" +
-       
"74616c204365727469666963617465205369676e696e67313830360603550403132f5374" +
-       
"617274436f6d20436c6173732031205072696d61727920496e7465726d65646961746520" +
-       
"53657276657220434130820122300d06092a864886f70d01010105000382010f00308201" +
-       
"0a0282010100b689c6acef09527807ac9263d0f44418188480561f91aee187fa3250b4d3" +
-       
"4706f0e6075f700e10f71dc0ce103634855a0f92ac83c6ac58523fba38e8fce7a724e240" +
-       
"a60876c0926e9e2a6d4d3f6e61200adb59ded27d63b33e46fefa215118d7cd30a6ed076e" +
-       
"3b7087b4f9faebee823c056f92f7a4dc0a301e9373fe07cad75f809d225852ae06da8b87" +
-       
"2369b0e42ad8ea83d2bdf371db705a280faf5a387045123f304dcd3baf17e50fcba0a95d" +
-       
"48aab16150cb34cd3c5cc30be810c08c9bf0030362feb26c3e720eee1c432ac9480e5739" +
-       
"c43121c810c12c87fe5495521f523c31129b7fe7c0a0a559d5e28f3ef0d5a8e1d77031a9" +
-       
"c4b3cfaf6d532f06f4a70203010001a38201ad308201a9300f0603551d130101ff040530" +
-       
"030101ff300e0603551d0f0101ff040403020106301d0603551d0e04160414eb4234d098" +
-       
"b0ab9ff41b6b08f7cc642eef0e2c45301f0603551d230418301680144e0bef1aa4405ba5" +
-       
"17698730ca346843d041aef2306606082b06010505070101045a3058302706082b060105" +
-       
"05073001861b687474703a2f2f6f6373702e737461727473736c2e636f6d2f6361302d06" +
-       
"082b060105050730028621687474703a2f2f7777772e737461727473736c2e636f6d2f73" +
-       
"667363612e637274305b0603551d1f045430523027a025a0238621687474703a2f2f7777" +
-       
"772e737461727473736c2e636f6d2f73667363612e63726c3027a025a023862168747470" +
-       
"3a2f2f63726c2e737461727473736c2e636f6d2f73667363612e63726c3081800603551d" +
-       
"20047930773075060b2b0601040181b5370102013066302e06082b060105050702011622" +
-       
"687474703a2f2f7777772e737461727473736c2e636f6d2f706f6c6963792e7064663034" +
-       
"06082b060105050702011628687474703a2f2f7777772e737461727473736c2e636f6d2f" +
-       
"696e7465726d6564696174652e706466300d06092a864886f70d01010505000382020100" +
-       
"2109493ea5886ee00b8b48da314d8ff75657a2e1d36257e9b556f38545753be5501f048b" +
-       
"e6a05a3ee700ae85d0fbff200364cbad02e1c69172f8a34dd6dee8cc3fa18aa2e37c37a7" +
-       
"c64f8f35d6f4d66e067bdd21d9cf56ffcb302249fe8904f385e5aaf1e71fe875904dddf9" +
-       
"46f74234f745580c110d84b0c6da5d3ef9019ee7e1da5595be741c7bfc4d144fac7e5547" +
-       
"7d7bf4a50d491e95e8f712c1ccff76a62547d0f37535be97b75816ebaa5c786fec5330af" +
-       
"ea044dcca902e3f0b60412f630b1113d904e5664d7dc3c435f7339ef4baf87ebf6fe6888" +
-       
"4472ead207c669b0c1a18bef1749d761b145485f3b2021e95bb2ccf4d7e931f50b15613b" +
-       
"7a94e3ebd9bc7f94ae6ae3626296a8647cb887f399327e92a252bebbf865cfc9f230fc8b" +
-       
"c1c2a696d75f89e15c3480f58f47072fb491bfb1a27e5f4b5ad05b9f248605515a690365" +
-       
"434971c5e06f94346bf61bd8a9b04c7e53eb8f48dfca33b548fa364a1a53a6330cd089cd" +
-       
"4915cd89313c90c072d7654b52358a461144b93d8e2865a63e799e5c084429adb035112e" +
-       
"214eb8d2e7103e5d8483b3c3c2e4d2c6fd094b7409ddf1b3d3193e800da20b19f038e7c5" +
-       
"c2afe223db61e29d5c6e2089492e236ab262c145b49faf8ba7f1223bf87de290d07a19fb" +
-       
"4a4ce3d27d5f4a8303ed27d6239e6b8db459a2d9ef6c8229dd75193c3f4c108defbb7527" +
-       "d2ae83a7a8ce5ba7"
-
-const ocspResponseWithoutCertHex = 
"308201d40a0100a08201cd308201c906092b0601050507300101048201ba3082" +
-       
"01b630819fa2160414884451ff502a695e2d88f421bad90cf2cecbea7c180f3230313330" +
-       
"3631383037323434335a30743072304a300906052b0e03021a0500041448b60d38238df8" +
-       
"456e4ee5843ea394111802979f0414884451ff502a695e2d88f421bad90cf2cecbea7c02" +
-       
"1100f78b13b946fc9635d8ab49de9d2148218000180f3230313330363138303732343433" +
-       
"5aa011180f32303133303632323037323434335a300d06092a864886f70d010105050003" +
-       
"82010100103e18b3d297a5e7a6c07a4fc52ac46a15c0eba96f3be17f0ffe84de5b8c8e05" +
-       
"5a8f577586a849dc4abd6440eb6fedde4622451e2823c1cbf3558b4e8184959c9fe96eff" +
-       
"8bc5f95866c58c6d087519faabfdae37e11d9874f1bc0db292208f645dd848185e4dd38b" +
-       
"6a8547dfa7b74d514a8470015719064d35476b95bebb03d4d2845c5ca15202d2784878f2" +
-       
"0f904c24f09736f044609e9c271381713400e563023d212db422236440c6f377bbf24b2b" +
-       
"9e7dec8698e36a8df68b7592ad3489fb2937afb90eb85d2aa96b81c94c25057dbd4759d9" +
-       
"20a1a65c7f0b6427a224b3c98edd96b9b61f706099951188b0289555ad30a216fb774651" +
-       "5a35fca2e054dfa8"
-
-// PKIX nonce extension
-var ocspExtensionOID = asn1.ObjectIdentifier{1, 3, 6, 1, 5, 5, 7, 48, 1, 2}
-var ocspExtensionValueHex = "0403000000"
-
-const ocspResponseWithCriticalExtensionHex = 
"308204fe0a0100a08204f7308204f306092b0601050507300101048204e4308204e03081" +
-       
"dba003020100a11b3019311730150603550403130e4f43535020526573706f6e64657218" +
-       
"0f32303136303130343137303130305a3081a53081a23049300906052b0e03021a050004" +
-       
"14c0fe0278fc99188891b3f212e9c7e1b21ab7bfc004140dfc1df0a9e0f01ce7f2b21317" +
-       
"7e6f8d157cd4f60210017f77deb3bcbb235d44ccc7dba62e72a116180f32303130303730" +
-       
"373135303130355aa0030a0101180f32303130303730373135303130355aa011180f3230" +
-       
"3130303730373138333531375aa1193017301506092b06010505073001020101ff040504" +
-       
"03000000300d06092a864886f70d01010b0500038201010031c730ca60a7a0d92d8e4010" +
-       
"911b469de95b4d27e89de6537552436237967694f76f701cf6b45c932bd308bca4a8d092" +
-       
"5c604ba94796903091d9e6c000178e72c1f0a24a277dd262835af5d17d3f9d7869606c9f" +
-       
"e7c8e708a41645699895beee38bfa63bb46296683761c5d1d65439b8ab868dc3017c9eeb" +
-       
"b70b82dbf3a31c55b457d48bb9e82b335ed49f445042eaf606b06a3e0639824924c89c63" +
-       
"eccddfe85e6694314138b2536f5e15e07085d0f6e26d4b2f8244bab0d70de07283ac6384" +
-       
"a0501fc3dea7cf0adfd4c7f34871080900e252ddc403e3f0265f2a704af905d3727504ed" +
-       
"28f3214a219d898a022463c78439799ca81c8cbafdbcec34ea937cd6a08202ea308202e6" +
-       
"308202e2308201caa003020102020101300d06092a864886f70d01010b05003019311730" +
-       
"150603550403130e4f43535020526573706f6e646572301e170d31353031333031353530" +
-       
"33335a170d3136303133303135353033335a3019311730150603550403130e4f43535020" +
-       
"526573706f6e64657230820122300d06092a864886f70d01010105000382010f00308201" +
-       
"0a0282010100e8155f2d3e6f2e8d14c62a788bd462f9f844e7a6977c83ef1099f0f6616e" +
-       
"c5265b56f356e62c5400f0b06a2e7945a82752c636df32a895152d6074df1701dc6ccfbc" +
-       
"bec75a70bd2b55ae2be7e6cad3b5fd4cd5b7790ab401a436d3f5f346074ffde8a99d5b72" +
-       
"3350f0a112076614b12ef79c78991b119453445acf2416ab0046b540db14c9fc0f27b898" +
-       
"9ad0f63aa4b8aefc91aa8a72160c36307c60fec78a93d3fddf4259902aa77e7332971c7d" +
-       
"285b6a04f648993c6922a3e9da9adf5f81508c3228791843e5d49f24db2f1290bafd97e6" +
-       
"55b1049a199f652cd603c4fafa330c390b0da78fbbc67e8fa021cbd74eb96222b12ace31" +
-       
"a77dcf920334dc94581b0203010001a3353033300e0603551d0f0101ff04040302078030" +
-       
"130603551d25040c300a06082b06010505070309300c0603551d130101ff04023000300d" +
-       
"06092a864886f70d01010b05000382010100718012761b5063e18f0dc44644d8e6ab8612" +
-       
"31c15fd5357805425d82aec1de85bf6d3e30fce205e3e3b8b795bbe52e40a439286d2288" +
-       
"9064f4aeeb150359b9425f1da51b3a5c939018555d13ac42c565a0603786a919328f3267" +
-       
"09dce52c22ad958ecb7873b9771d1148b1c4be2efe80ba868919fc9f68b6090c2f33c156" +
-       
"d67156e42766a50b5d51e79637b7e58af74c2a951b1e642fa7741fec982cc937de37eff5" +
-       
"9e2005d5939bfc031589ca143e6e8ab83f40ee08cc20a6b4a95a318352c28d18528dcaf9" +
-       
"66705de17afa19d6e8ae91ddf33179d16ebb6ac2c69cae8373d408ebf8c55308be6c04d9" +
-       "3a25439a94299a65a709756c7a3e568be049d5c38839"
-
-const ocspResponseWithExtensionHex = 
"308204fb0a0100a08204f4308204f006092b0601050507300101048204e1308204dd3081" +
-       
"d8a003020100a11b3019311730150603550403130e4f43535020526573706f6e64657218" +
-       
"0f32303136303130343136353930305a3081a230819f3049300906052b0e03021a050004" +
-       
"14c0fe0278fc99188891b3f212e9c7e1b21ab7bfc004140dfc1df0a9e0f01ce7f2b21317" +
-       
"7e6f8d157cd4f60210017f77deb3bcbb235d44ccc7dba62e72a116180f32303130303730" +
-       
"373135303130355aa0030a0101180f32303130303730373135303130355aa011180f3230" +
-       
"3130303730373138333531375aa1163014301206092b0601050507300102040504030000" +
-       
"00300d06092a864886f70d01010b05000382010100c09a33e0b2324c852421bb83f85ac9" +
-       
"9113f5426012bd2d2279a8166e9241d18a33c870894250622ffc7ed0c4601b16d624f90b" +
-       
"779265442cdb6868cf40ab304ab4b66e7315ed02cf663b1601d1d4751772b31bc299db23" +
-       
"9aebac78ed6797c06ed815a7a8d18d63cfbb609cafb47ec2e89e37db255216eb09307848" +
-       
"d01be0a3e943653c78212b96ff524b74c9ec456b17cdfb950cc97645c577b2e09ff41dde" +
-       
"b03afb3adaa381cc0f7c1d95663ef22a0f72f2c45613ae8e2b2d1efc96e8463c7d1d8a1d" +
-       
"7e3b35df8fe73a301fc3f804b942b2b3afa337ff105fc1462b7b1c1d75eb4566c8665e59" +
-       
"f80393b0adbf8004ff6c3327ed34f007cb4a3348a7d55e06e3a08202ea308202e6308202" +
-       
"e2308201caa003020102020101300d06092a864886f70d01010b05003019311730150603" +
-       
"550403130e4f43535020526573706f6e646572301e170d3135303133303135353033335a" +
-       
"170d3136303133303135353033335a3019311730150603550403130e4f43535020526573" +
-       
"706f6e64657230820122300d06092a864886f70d01010105000382010f003082010a0282" +
-       
"010100e8155f2d3e6f2e8d14c62a788bd462f9f844e7a6977c83ef1099f0f6616ec5265b" +
-       
"56f356e62c5400f0b06a2e7945a82752c636df32a895152d6074df1701dc6ccfbcbec75a" +
-       
"70bd2b55ae2be7e6cad3b5fd4cd5b7790ab401a436d3f5f346074ffde8a99d5b723350f0" +
-       
"a112076614b12ef79c78991b119453445acf2416ab0046b540db14c9fc0f27b8989ad0f6" +
-       
"3aa4b8aefc91aa8a72160c36307c60fec78a93d3fddf4259902aa77e7332971c7d285b6a" +
-       
"04f648993c6922a3e9da9adf5f81508c3228791843e5d49f24db2f1290bafd97e655b104" +
-       
"9a199f652cd603c4fafa330c390b0da78fbbc67e8fa021cbd74eb96222b12ace31a77dcf" +
-       
"920334dc94581b0203010001a3353033300e0603551d0f0101ff04040302078030130603" +
-       
"551d25040c300a06082b06010505070309300c0603551d130101ff04023000300d06092a" +
-       
"864886f70d01010b05000382010100718012761b5063e18f0dc44644d8e6ab861231c15f" +
-       
"d5357805425d82aec1de85bf6d3e30fce205e3e3b8b795bbe52e40a439286d22889064f4" +
-       
"aeeb150359b9425f1da51b3a5c939018555d13ac42c565a0603786a919328f326709dce5" +
-       
"2c22ad958ecb7873b9771d1148b1c4be2efe80ba868919fc9f68b6090c2f33c156d67156" +
-       
"e42766a50b5d51e79637b7e58af74c2a951b1e642fa7741fec982cc937de37eff59e2005" +
-       
"d5939bfc031589ca143e6e8ab83f40ee08cc20a6b4a95a318352c28d18528dcaf966705d" +
-       
"e17afa19d6e8ae91ddf33179d16ebb6ac2c69cae8373d408ebf8c55308be6c04d93a2543" +
-       "9a94299a65a709756c7a3e568be049d5c38839"
-
-const ocspRequestHex = 
"3051304f304d304b3049300906052b0e03021a05000414c0fe0278fc99188891b3f212e9" +
-       
"c7e1b21ab7bfc004140dfc1df0a9e0f01ce7f2b213177e6f8d157cd4f60210017f77deb3" +
-       "bcbb235d44ccc7dba62e72"
-
-const leafCertHex = 
"308203c830820331a0030201020210017f77deb3bcbb235d44ccc7dba62e72300d06092a" +
-       
"864886f70d01010505003081ba311f301d060355040a1316566572695369676e20547275" +
-       
"7374204e6574776f726b31173015060355040b130e566572695369676e2c20496e632e31" +
-       
"333031060355040b132a566572695369676e20496e7465726e6174696f6e616c20536572" +
-       
"766572204341202d20436c617373203331493047060355040b13407777772e7665726973" +
-       
"69676e2e636f6d2f43505320496e636f72702e6279205265662e204c494142494c495459" +
-       
"204c54442e286329393720566572695369676e301e170d3132303632313030303030305a" +
-       
"170d3133313233313233353935395a3068310b3009060355040613025553311330110603" +
-       
"550408130a43616c69666f726e6961311230100603550407130950616c6f20416c746f31" +
-       
"173015060355040a130e46616365626f6f6b2c20496e632e311730150603550403140e2a" +
-       
"2e66616365626f6f6b2e636f6d30819f300d06092a864886f70d010101050003818d0030" +
-       
"818902818100ae94b171e2deccc1693e051063240102e0689ae83c39b6b3e74b97d48d7b" +
-       
"23689100b0b496ee62f0e6d356bcf4aa0f50643402f5d1766aa972835a7564723f39bbef" +
-       
"5290ded9bcdbf9d3d55dfad23aa03dc604c54d29cf1d4b3bdbd1a809cfae47b44c7eae17" +
-       
"c5109bee24a9cf4a8d911bb0fd0415ae4c3f430aa12a557e2ae10203010001a382011e30" +
-       
"82011a30090603551d130402300030440603551d20043d303b3039060b6086480186f845" +
-       
"01071703302a302806082b06010505070201161c68747470733a2f2f7777772e76657269" +
-       
"7369676e2e636f6d2f727061303c0603551d1f043530333031a02fa02d862b687474703a" +
-       
"2f2f535652496e746c2d63726c2e766572697369676e2e636f6d2f535652496e746c2e63" +
-       
"726c301d0603551d250416301406082b0601050507030106082b06010505070302300b06" +
-       
"03551d0f0404030205a0303406082b0601050507010104283026302406082b0601050507" +
-       
"30018618687474703a2f2f6f6373702e766572697369676e2e636f6d30270603551d1104" +
-       
"20301e820e2a2e66616365626f6f6b2e636f6d820c66616365626f6f6b2e636f6d300d06" +
-       
"092a864886f70d0101050500038181005b6c2b75f8ed30aa51aad36aba595e555141951f" +
-       
"81a53b447910ac1f76ff78fc2781616b58f3122afc1c87010425e9ed43df1a7ba6498060" +
-       
"67e2688af03db58c7df4ee03309a6afc247ccb134dc33e54c6bc1d5133a532a73273b1d7" +
-       
"9cadc08e7e1a83116d34523340b0305427a21742827c98916698ee7eaf8c3bdd71700817"
-
-const issuerCertHex = 
"30820383308202eca003020102021046fcebbab4d02f0f926098233f93078f300d06092a" +
-       
"864886f70d0101050500305f310b300906035504061302555331173015060355040a130e" +
-       
"566572695369676e2c20496e632e31373035060355040b132e436c617373203320507562" +
-       
"6c6963205072696d6172792043657274696669636174696f6e20417574686f7269747930" +
-       
"1e170d3937303431373030303030305a170d3136313032343233353935395a3081ba311f" +
-       
"301d060355040a1316566572695369676e205472757374204e6574776f726b3117301506" +
-       
"0355040b130e566572695369676e2c20496e632e31333031060355040b132a5665726953" +
-       
"69676e20496e7465726e6174696f6e616c20536572766572204341202d20436c61737320" +
-       
"3331493047060355040b13407777772e766572697369676e2e636f6d2f43505320496e63" +
-       
"6f72702e6279205265662e204c494142494c495459204c54442e28632939372056657269" +
-       
"5369676e30819f300d06092a864886f70d010101050003818d0030818902818100d88280" +
-       
"e8d619027d1f85183925a2652be1bfd405d3bce6363baaf04c6c5bb6e7aa3c734555b2f1" +
-       
"bdea9742ed9a340a15d4a95cf54025ddd907c132b2756cc4cabba3fe56277143aa63f530" +
-       
"3e9328e5faf1093bf3b74d4e39f75c495ab8c11dd3b28afe70309542cbfe2b518b5a3c3a" +
-       
"f9224f90b202a7539c4f34e7ab04b27b6f0203010001a381e33081e0300f0603551d1304" +
-       
"0830060101ff02010030440603551d20043d303b3039060b6086480186f8450107010130" +
-       
"2a302806082b06010505070201161c68747470733a2f2f7777772e766572697369676e2e" +
-       
"636f6d2f43505330340603551d25042d302b06082b0601050507030106082b0601050507" +
-       
"030206096086480186f8420401060a6086480186f845010801300b0603551d0f04040302" +
-       
"0106301106096086480186f842010104040302010630310603551d1f042a30283026a024" +
-       
"a0228620687474703a2f2f63726c2e766572697369676e2e636f6d2f706361332e63726c" +
-       
"300d06092a864886f70d010105050003818100408e4997968a73dd8e4def3e61b7caa062" +
-       
"adf40e0abb753de26ed82cc7bff4b98c369bcaa2d09c724639f6a682036511c4bcbf2da6" +
-       
"f5d93b0ab598fab378b91ef22b4c62d5fdb27a1ddf33fd73f9a5d82d8c2aead1fcb028b6" +
-       
"e94948134b838a1b487b24f738de6f4154b8ab576b06dfc7a2d4a9f6f136628088f28b75" +
-       "d68071"
-
-// Key and certificate for the OCSP responder were not taken from the Thawte
-// responder, since CreateResponse requires that we have the private key.
-// Instead, they were generated randomly.
-const responderPrivateKeyHex = 
"308204a40201000282010100e8155f2d3e6f2e8d14c62a788bd462f9f844e7a6977c83ef" +
-       
"1099f0f6616ec5265b56f356e62c5400f0b06a2e7945a82752c636df32a895152d6074df" +
-       
"1701dc6ccfbcbec75a70bd2b55ae2be7e6cad3b5fd4cd5b7790ab401a436d3f5f346074f" +
-       
"fde8a99d5b723350f0a112076614b12ef79c78991b119453445acf2416ab0046b540db14" +
-       
"c9fc0f27b8989ad0f63aa4b8aefc91aa8a72160c36307c60fec78a93d3fddf4259902aa7" +
-       
"7e7332971c7d285b6a04f648993c6922a3e9da9adf5f81508c3228791843e5d49f24db2f" +
-       
"1290bafd97e655b1049a199f652cd603c4fafa330c390b0da78fbbc67e8fa021cbd74eb9" +
-       
"6222b12ace31a77dcf920334dc94581b02030100010282010100bcf0b93d7238bda329a8" +
-       
"72e7149f61bcb37c154330ccb3f42a85c9002c2e2bdea039d77d8581cd19bed94078794e" +
-       
"56293d601547fc4bf6a2f9002fe5772b92b21b254403b403585e3130cc99ccf08f0ef81a" +
-       
"575b38f597ba4660448b54f44bfbb97072b5a2bf043bfeca828cf7741d13698e3f38162b" +
-       
"679faa646b82abd9a72c5c7d722c5fc577a76d2c2daac588accad18516d1bbad10b0dfa2" +
-       
"05cfe246b59e28608a43942e1b71b0c80498075121de5b900d727c31c42c78cf1db5c0aa" +
-       
"5b491e10ea4ed5c0962aaf2ae025dd81fa4ce490d9d6b4a4465411d8e542fc88617e5695" +
-       
"1aa4fc8ea166f2b4d0eb89ef17f2b206bd5f1014bf8fe0e71fe62f2cccf102818100f2dc" +
-       
"ddf878d553286daad68bac4070a82ffec3dc4666a2750f47879eec913f91836f1d976b60" +
-       
"daf9356e078446dafab5bd2e489e5d64f8572ba24a4ba4f3729b5e106c4dd831cc2497a7" +
-       
"e6c7507df05cb64aeb1bbc81c1e340d58b5964cf39cff84ea30c29ec5d3f005ee1362698" +
-       
"07395037955955655292c3e85f6187fa1f9502818100f4a33c102630840705f8c778a47b" +
-       
"87e8da31e68809af981ac5e5999cf1551685d761cdf0d6520361b99aebd5777a940fa64d" +
-       
"327c09fa63746fbb3247ec73a86edf115f1fe5c83598db803881ade71c33c6e956118345" +
-       
"497b98b5e07bb5be75971465ec78f2f9467e1b74956ca9d4c7c3e314e742a72d8b33889c" +
-       
"6c093a466cef0281801d3df0d02124766dd0be98349b19eb36a508c4e679e793ba0a8bef" +
-       
"4d786888c1e9947078b1ea28938716677b4ad8c5052af12eb73ac194915264a913709a0b" +
-       
"7b9f98d4a18edd781a13d49899f91c20dbd8eb2e61d991ba19b5cdc08893f5cb9d39e5a6" +
-       
"0629ea16d426244673b1b3ee72bd30e41fac8395acac40077403de5efd028180050731dd" +
-       
"d71b1a2b96c8d538ba90bb6b62c8b1c74c03aae9a9f59d21a7a82b0d572ef06fa9c807bf" +
-       
"c373d6b30d809c7871df96510c577421d9860c7383fda0919ece19996b3ca13562159193" +
-       
"c0c246471e287f975e8e57034e5136aaf44254e2650def3d51292474c515b1588969112e" +
-       
"0a85cc77073e9d64d2c2fc497844284b02818100d71d63eabf416cf677401ebf965f8314" +
-       
"120b568a57dd3bd9116c629c40dc0c6948bab3a13cc544c31c7da40e76132ef5dd3f7534" +
-       
"45a635930c74326ae3df0edd1bfb1523e3aa259873ac7cf1ac31151ec8f37b528c275622" +
-       
"48f99b8bed59fd4da2576aa6ee20d93a684900bf907e80c66d6e2261ae15e55284b4ed9d" +
-       "6bdaa059"
-
-const responderCertHex = 
"308202e2308201caa003020102020101300d06092a864886f70d01010b05003019311730" +
-       
"150603550403130e4f43535020526573706f6e646572301e170d31353031333031353530" +
-       
"33335a170d3136303133303135353033335a3019311730150603550403130e4f43535020" +
-       
"526573706f6e64657230820122300d06092a864886f70d01010105000382010f00308201" +
-       
"0a0282010100e8155f2d3e6f2e8d14c62a788bd462f9f844e7a6977c83ef1099f0f6616e" +
-       
"c5265b56f356e62c5400f0b06a2e7945a82752c636df32a895152d6074df1701dc6ccfbc" +
-       
"bec75a70bd2b55ae2be7e6cad3b5fd4cd5b7790ab401a436d3f5f346074ffde8a99d5b72" +
-       
"3350f0a112076614b12ef79c78991b119453445acf2416ab0046b540db14c9fc0f27b898" +
-       
"9ad0f63aa4b8aefc91aa8a72160c36307c60fec78a93d3fddf4259902aa77e7332971c7d" +
-       
"285b6a04f648993c6922a3e9da9adf5f81508c3228791843e5d49f24db2f1290bafd97e6" +
-       
"55b1049a199f652cd603c4fafa330c390b0da78fbbc67e8fa021cbd74eb96222b12ace31" +
-       
"a77dcf920334dc94581b0203010001a3353033300e0603551d0f0101ff04040302078030" +
-       
"130603551d25040c300a06082b06010505070309300c0603551d130101ff04023000300d" +
-       
"06092a864886f70d01010b05000382010100718012761b5063e18f0dc44644d8e6ab8612" +
-       
"31c15fd5357805425d82aec1de85bf6d3e30fce205e3e3b8b795bbe52e40a439286d2288" +
-       
"9064f4aeeb150359b9425f1da51b3a5c939018555d13ac42c565a0603786a919328f3267" +
-       
"09dce52c22ad958ecb7873b9771d1148b1c4be2efe80ba868919fc9f68b6090c2f33c156" +
-       
"d67156e42766a50b5d51e79637b7e58af74c2a951b1e642fa7741fec982cc937de37eff5" +
-       
"9e2005d5939bfc031589ca143e6e8ab83f40ee08cc20a6b4a95a318352c28d18528dcaf9" +
-       
"66705de17afa19d6e8ae91ddf33179d16ebb6ac2c69cae8373d408ebf8c55308be6c04d9" +
-       "3a25439a94299a65a709756c7a3e568be049d5c38839"
-
-const errorResponseHex = "30030a0101"

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/openpgp/armor/armor.go
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/openpgp/armor/armor.go 
b/cli/vendor/golang.org/x/crypto/openpgp/armor/armor.go
deleted file mode 100644
index 592d186..0000000
--- a/cli/vendor/golang.org/x/crypto/openpgp/armor/armor.go
+++ /dev/null
@@ -1,219 +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 armor implements OpenPGP ASCII Armor, see RFC 4880. OpenPGP Armor is
-// very similar to PEM except that it has an additional CRC checksum.
-package armor // import "golang.org/x/crypto/openpgp/armor"
-
-import (
-       "bufio"
-       "bytes"
-       "encoding/base64"
-       "golang.org/x/crypto/openpgp/errors"
-       "io"
-)
-
-// A Block represents an OpenPGP armored structure.
-//
-// The encoded form is:
-//    -----BEGIN Type-----
-//    Headers
-//
-//    base64-encoded Bytes
-//    '=' base64 encoded checksum
-//    -----END Type-----
-// where Headers is a possibly empty sequence of Key: Value lines.
-//
-// Since the armored data can be very large, this package presents a streaming
-// interface.
-type Block struct {
-       Type    string            // The type, taken from the preamble (i.e. 
"PGP SIGNATURE").
-       Header  map[string]string // Optional headers.
-       Body    io.Reader         // A Reader from which the contents can be 
read
-       lReader lineReader
-       oReader openpgpReader
-}
-
-var ArmorCorrupt error = errors.StructuralError("armor invalid")
-
-const crc24Init = 0xb704ce
-const crc24Poly = 0x1864cfb
-const crc24Mask = 0xffffff
-
-// crc24 calculates the OpenPGP checksum as specified in RFC 4880, section 6.1
-func crc24(crc uint32, d []byte) uint32 {
-       for _, b := range d {
-               crc ^= uint32(b) << 16
-               for i := 0; i < 8; i++ {
-                       crc <<= 1
-                       if crc&0x1000000 != 0 {
-                               crc ^= crc24Poly
-                       }
-               }
-       }
-       return crc
-}
-
-var armorStart = []byte("-----BEGIN ")
-var armorEnd = []byte("-----END ")
-var armorEndOfLine = []byte("-----")
-
-// lineReader wraps a line based reader. It watches for the end of an armor
-// block and records the expected CRC value.
-type lineReader struct {
-       in  *bufio.Reader
-       buf []byte
-       eof bool
-       crc uint32
-}
-
-func (l *lineReader) Read(p []byte) (n int, err error) {
-       if l.eof {
-               return 0, io.EOF
-       }
-
-       if len(l.buf) > 0 {
-               n = copy(p, l.buf)
-               l.buf = l.buf[n:]
-               return
-       }
-
-       line, isPrefix, err := l.in.ReadLine()
-       if err != nil {
-               return
-       }
-       if isPrefix {
-               return 0, ArmorCorrupt
-       }
-
-       if len(line) == 5 && line[0] == '=' {
-               // This is the checksum line
-               var expectedBytes [3]byte
-               var m int
-               m, err = base64.StdEncoding.Decode(expectedBytes[0:], line[1:])
-               if m != 3 || err != nil {
-                       return
-               }
-               l.crc = uint32(expectedBytes[0])<<16 |
-                       uint32(expectedBytes[1])<<8 |
-                       uint32(expectedBytes[2])
-
-               line, _, err = l.in.ReadLine()
-               if err != nil && err != io.EOF {
-                       return
-               }
-               if !bytes.HasPrefix(line, armorEnd) {
-                       return 0, ArmorCorrupt
-               }
-
-               l.eof = true
-               return 0, io.EOF
-       }
-
-       if len(line) > 96 {
-               return 0, ArmorCorrupt
-       }
-
-       n = copy(p, line)
-       bytesToSave := len(line) - n
-       if bytesToSave > 0 {
-               if cap(l.buf) < bytesToSave {
-                       l.buf = make([]byte, 0, bytesToSave)
-               }
-               l.buf = l.buf[0:bytesToSave]
-               copy(l.buf, line[n:])
-       }
-
-       return
-}
-
-// openpgpReader passes Read calls to the underlying base64 decoder, but keeps
-// a running CRC of the resulting data and checks the CRC against the value
-// found by the lineReader at EOF.
-type openpgpReader struct {
-       lReader    *lineReader
-       b64Reader  io.Reader
-       currentCRC uint32
-}
-
-func (r *openpgpReader) Read(p []byte) (n int, err error) {
-       n, err = r.b64Reader.Read(p)
-       r.currentCRC = crc24(r.currentCRC, p[:n])
-
-       if err == io.EOF {
-               if r.lReader.crc != uint32(r.currentCRC&crc24Mask) {
-                       return 0, ArmorCorrupt
-               }
-       }
-
-       return
-}
-
-// Decode reads a PGP armored block from the given Reader. It will ignore
-// leading garbage. If it doesn't find a block, it will return nil, io.EOF. The
-// given Reader is not usable after calling this function: an arbitrary amount
-// of data may have been read past the end of the block.
-func Decode(in io.Reader) (p *Block, err error) {
-       r := bufio.NewReaderSize(in, 100)
-       var line []byte
-       ignoreNext := false
-
-TryNextBlock:
-       p = nil
-
-       // Skip leading garbage
-       for {
-               ignoreThis := ignoreNext
-               line, ignoreNext, err = r.ReadLine()
-               if err != nil {
-                       return
-               }
-               if ignoreNext || ignoreThis {
-                       continue
-               }
-               line = bytes.TrimSpace(line)
-               if len(line) > len(armorStart)+len(armorEndOfLine) && 
bytes.HasPrefix(line, armorStart) {
-                       break
-               }
-       }
-
-       p = new(Block)
-       p.Type = string(line[len(armorStart) : len(line)-len(armorEndOfLine)])
-       p.Header = make(map[string]string)
-       nextIsContinuation := false
-       var lastKey string
-
-       // Read headers
-       for {
-               isContinuation := nextIsContinuation
-               line, nextIsContinuation, err = r.ReadLine()
-               if err != nil {
-                       p = nil
-                       return
-               }
-               if isContinuation {
-                       p.Header[lastKey] += string(line)
-                       continue
-               }
-               line = bytes.TrimSpace(line)
-               if len(line) == 0 {
-                       break
-               }
-
-               i := bytes.Index(line, []byte(": "))
-               if i == -1 {
-                       goto TryNextBlock
-               }
-               lastKey = string(line[:i])
-               p.Header[lastKey] = string(line[i+2:])
-       }
-
-       p.lReader.in = r
-       p.oReader.currentCRC = crc24Init
-       p.oReader.lReader = &p.lReader
-       p.oReader.b64Reader = base64.NewDecoder(base64.StdEncoding, &p.lReader)
-       p.Body = &p.oReader
-
-       return
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/openpgp/armor/armor_test.go
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/openpgp/armor/armor_test.go 
b/cli/vendor/golang.org/x/crypto/openpgp/armor/armor_test.go
deleted file mode 100644
index 9334e94..0000000
--- a/cli/vendor/golang.org/x/crypto/openpgp/armor/armor_test.go
+++ /dev/null
@@ -1,95 +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 armor
-
-import (
-       "bytes"
-       "hash/adler32"
-       "io/ioutil"
-       "testing"
-)
-
-func TestDecodeEncode(t *testing.T) {
-       buf := bytes.NewBuffer([]byte(armorExample1))
-       result, err := Decode(buf)
-       if err != nil {
-               t.Error(err)
-       }
-       expectedType := "PGP SIGNATURE"
-       if result.Type != expectedType {
-               t.Errorf("result.Type: got:%s want:%s", result.Type, 
expectedType)
-       }
-       if len(result.Header) != 1 {
-               t.Errorf("len(result.Header): got:%d want:1", 
len(result.Header))
-       }
-       v, ok := result.Header["Version"]
-       if !ok || v != "GnuPG v1.4.10 (GNU/Linux)" {
-               t.Errorf("result.Header: got:%#v", result.Header)
-       }
-
-       contents, err := ioutil.ReadAll(result.Body)
-       if err != nil {
-               t.Error(err)
-       }
-
-       if adler32.Checksum(contents) != 0x27b144be {
-               t.Errorf("contents: got: %x", contents)
-       }
-
-       buf = bytes.NewBuffer(nil)
-       w, err := Encode(buf, result.Type, result.Header)
-       if err != nil {
-               t.Error(err)
-       }
-       _, err = w.Write(contents)
-       if err != nil {
-               t.Error(err)
-       }
-       w.Close()
-
-       if !bytes.Equal(buf.Bytes(), []byte(armorExample1)) {
-               t.Errorf("got: %s\nwant: %s", string(buf.Bytes()), 
armorExample1)
-       }
-}
-
-func TestLongHeader(t *testing.T) {
-       buf := bytes.NewBuffer([]byte(armorLongLine))
-       result, err := Decode(buf)
-       if err != nil {
-               t.Error(err)
-               return
-       }
-       value, ok := result.Header["Version"]
-       if !ok {
-               t.Errorf("missing Version header")
-       }
-       if value != longValueExpected {
-               t.Errorf("got: %s want: %s", value, longValueExpected)
-       }
-}
-
-const armorExample1 = `-----BEGIN PGP SIGNATURE-----
-Version: GnuPG v1.4.10 (GNU/Linux)
-
-iJwEAAECAAYFAk1Fv/0ACgkQo01+GMIMMbsYTwQAiAw+QAaNfY6WBdplZ/uMAccm
-4g+81QPmTSGHnetSb6WBiY13kVzK4HQiZH8JSkmmroMLuGeJwsRTEL4wbjRyUKEt
-p1xwUZDECs234F1xiG5enc5SGlRtP7foLBz9lOsjx+LEcA4sTl5/2eZR9zyFZqWW
-TxRjs+fJCIFuo71xb1g=
-=/teI
------END PGP SIGNATURE-----`
-
-const armorLongLine = `-----BEGIN PGP SIGNATURE-----
-Version: 
0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz
-
-iQEcBAABAgAGBQJMtFESAAoJEKsQXJGvOPsVj40H/1WW6jaMXv4BW+1ueDSMDwM8
-kx1fLOXbVM5/Kn5LStZNt1jWWnpxdz7eq3uiqeCQjmqUoRde3YbB2EMnnwRbAhpp
-cacnAvy9ZQ78OTxUdNW1mhX5bS6q1MTEJnl+DcyigD70HG/yNNQD7sOPMdYQw0TA
-byQBwmLwmTsuZsrYqB68QyLHI+DUugn+kX6Hd2WDB62DKa2suoIUIHQQCd/ofwB3
-WfCYInXQKKOSxu2YOg2Eb4kLNhSMc1i9uKUWAH+sdgJh7NBgdoE4MaNtBFkHXRvv
-okWuf3+xA9ksp1npSY/mDvgHijmjvtpRDe6iUeqfCn8N9u9CBg8geANgaG8+QA4=
-=wfQG
------END PGP SIGNATURE-----`
-
-const longValueExpected = 
"0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz"

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/openpgp/armor/encode.go
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/openpgp/armor/encode.go 
b/cli/vendor/golang.org/x/crypto/openpgp/armor/encode.go
deleted file mode 100644
index 6f07582..0000000
--- a/cli/vendor/golang.org/x/crypto/openpgp/armor/encode.go
+++ /dev/null
@@ -1,160 +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 armor
-
-import (
-       "encoding/base64"
-       "io"
-)
-
-var armorHeaderSep = []byte(": ")
-var blockEnd = []byte("\n=")
-var newline = []byte("\n")
-var armorEndOfLineOut = []byte("-----\n")
-
-// writeSlices writes its arguments to the given Writer.
-func writeSlices(out io.Writer, slices ...[]byte) (err error) {
-       for _, s := range slices {
-               _, err = out.Write(s)
-               if err != nil {
-                       return err
-               }
-       }
-       return
-}
-
-// lineBreaker breaks data across several lines, all of the same byte length
-// (except possibly the last). Lines are broken with a single '\n'.
-type lineBreaker struct {
-       lineLength  int
-       line        []byte
-       used        int
-       out         io.Writer
-       haveWritten bool
-}
-
-func newLineBreaker(out io.Writer, lineLength int) *lineBreaker {
-       return &lineBreaker{
-               lineLength: lineLength,
-               line:       make([]byte, lineLength),
-               used:       0,
-               out:        out,
-       }
-}
-
-func (l *lineBreaker) Write(b []byte) (n int, err error) {
-       n = len(b)
-
-       if n == 0 {
-               return
-       }
-
-       if l.used == 0 && l.haveWritten {
-               _, err = l.out.Write([]byte{'\n'})
-               if err != nil {
-                       return
-               }
-       }
-
-       if l.used+len(b) < l.lineLength {
-               l.used += copy(l.line[l.used:], b)
-               return
-       }
-
-       l.haveWritten = true
-       _, err = l.out.Write(l.line[0:l.used])
-       if err != nil {
-               return
-       }
-       excess := l.lineLength - l.used
-       l.used = 0
-
-       _, err = l.out.Write(b[0:excess])
-       if err != nil {
-               return
-       }
-
-       _, err = l.Write(b[excess:])
-       return
-}
-
-func (l *lineBreaker) Close() (err error) {
-       if l.used > 0 {
-               _, err = l.out.Write(l.line[0:l.used])
-               if err != nil {
-                       return
-               }
-       }
-
-       return
-}
-
-// encoding keeps track of a running CRC24 over the data which has been written
-// to it and outputs a OpenPGP checksum when closed, followed by an armor
-// trailer.
-//
-// It's built into a stack of io.Writers:
-//    encoding -> base64 encoder -> lineBreaker -> out
-type encoding struct {
-       out       io.Writer
-       breaker   *lineBreaker
-       b64       io.WriteCloser
-       crc       uint32
-       blockType []byte
-}
-
-func (e *encoding) Write(data []byte) (n int, err error) {
-       e.crc = crc24(e.crc, data)
-       return e.b64.Write(data)
-}
-
-func (e *encoding) Close() (err error) {
-       err = e.b64.Close()
-       if err != nil {
-               return
-       }
-       e.breaker.Close()
-
-       var checksumBytes [3]byte
-       checksumBytes[0] = byte(e.crc >> 16)
-       checksumBytes[1] = byte(e.crc >> 8)
-       checksumBytes[2] = byte(e.crc)
-
-       var b64ChecksumBytes [4]byte
-       base64.StdEncoding.Encode(b64ChecksumBytes[:], checksumBytes[:])
-
-       return writeSlices(e.out, blockEnd, b64ChecksumBytes[:], newline, 
armorEnd, e.blockType, armorEndOfLine)
-}
-
-// Encode returns a WriteCloser which will encode the data written to it in
-// OpenPGP armor.
-func Encode(out io.Writer, blockType string, headers map[string]string) (w 
io.WriteCloser, err error) {
-       bType := []byte(blockType)
-       err = writeSlices(out, armorStart, bType, armorEndOfLineOut)
-       if err != nil {
-               return
-       }
-
-       for k, v := range headers {
-               err = writeSlices(out, []byte(k), armorHeaderSep, []byte(v), 
newline)
-               if err != nil {
-                       return
-               }
-       }
-
-       _, err = out.Write(newline)
-       if err != nil {
-               return
-       }
-
-       e := &encoding{
-               out:       out,
-               breaker:   newLineBreaker(out, 64),
-               crc:       crc24Init,
-               blockType: bType,
-       }
-       e.b64 = base64.NewEncoder(base64.StdEncoding, e.breaker)
-       return e, nil
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/openpgp/canonical_text.go
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/openpgp/canonical_text.go 
b/cli/vendor/golang.org/x/crypto/openpgp/canonical_text.go
deleted file mode 100644
index e601e38..0000000
--- a/cli/vendor/golang.org/x/crypto/openpgp/canonical_text.go
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright 2011 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package openpgp
-
-import "hash"
-
-// NewCanonicalTextHash reformats text written to it into the canonical
-// form and then applies the hash h.  See RFC 4880, section 5.2.1.
-func NewCanonicalTextHash(h hash.Hash) hash.Hash {
-       return &canonicalTextHash{h, 0}
-}
-
-type canonicalTextHash struct {
-       h hash.Hash
-       s int
-}
-
-var newline = []byte{'\r', '\n'}
-
-func (cth *canonicalTextHash) Write(buf []byte) (int, error) {
-       start := 0
-
-       for i, c := range buf {
-               switch cth.s {
-               case 0:
-                       if c == '\r' {
-                               cth.s = 1
-                       } else if c == '\n' {
-                               cth.h.Write(buf[start:i])
-                               cth.h.Write(newline)
-                               start = i + 1
-                       }
-               case 1:
-                       cth.s = 0
-               }
-       }
-
-       cth.h.Write(buf[start:])
-       return len(buf), nil
-}
-
-func (cth *canonicalTextHash) Sum(in []byte) []byte {
-       return cth.h.Sum(in)
-}
-
-func (cth *canonicalTextHash) Reset() {
-       cth.h.Reset()
-       cth.s = 0
-}
-
-func (cth *canonicalTextHash) Size() int {
-       return cth.h.Size()
-}
-
-func (cth *canonicalTextHash) BlockSize() int {
-       return cth.h.BlockSize()
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/openpgp/canonical_text_test.go
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/openpgp/canonical_text_test.go 
b/cli/vendor/golang.org/x/crypto/openpgp/canonical_text_test.go
deleted file mode 100644
index 8f3ba2a..0000000
--- a/cli/vendor/golang.org/x/crypto/openpgp/canonical_text_test.go
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2011 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package openpgp
-
-import (
-       "bytes"
-       "testing"
-)
-
-type recordingHash struct {
-       buf *bytes.Buffer
-}
-
-func (r recordingHash) Write(b []byte) (n int, err error) {
-       return r.buf.Write(b)
-}
-
-func (r recordingHash) Sum(in []byte) []byte {
-       return append(in, r.buf.Bytes()...)
-}
-
-func (r recordingHash) Reset() {
-       panic("shouldn't be called")
-}
-
-func (r recordingHash) Size() int {
-       panic("shouldn't be called")
-}
-
-func (r recordingHash) BlockSize() int {
-       panic("shouldn't be called")
-}
-
-func testCanonicalText(t *testing.T, input, expected string) {
-       r := recordingHash{bytes.NewBuffer(nil)}
-       c := NewCanonicalTextHash(r)
-       c.Write([]byte(input))
-       result := c.Sum(nil)
-       if expected != string(result) {
-               t.Errorf("input: %x got: %x want: %x", input, result, expected)
-       }
-}
-
-func TestCanonicalText(t *testing.T) {
-       testCanonicalText(t, "foo\n", "foo\r\n")
-       testCanonicalText(t, "foo", "foo")
-       testCanonicalText(t, "foo\r\n", "foo\r\n")
-       testCanonicalText(t, "foo\r\nbar", "foo\r\nbar")
-       testCanonicalText(t, "foo\r\nbar\n\n", "foo\r\nbar\r\n\r\n")
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/openpgp/clearsign/clearsign.go
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/openpgp/clearsign/clearsign.go 
b/cli/vendor/golang.org/x/crypto/openpgp/clearsign/clearsign.go
deleted file mode 100644
index 6454d22..0000000
--- a/cli/vendor/golang.org/x/crypto/openpgp/clearsign/clearsign.go
+++ /dev/null
@@ -1,372 +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 clearsign generates and processes OpenPGP, clear-signed data. See
-// RFC 4880, section 7.
-//
-// Clearsigned messages are cryptographically signed, but the contents of the
-// message are kept in plaintext so that it can be read without special tools.
-package clearsign // import "golang.org/x/crypto/openpgp/clearsign"
-
-import (
-       "bufio"
-       "bytes"
-       "crypto"
-       "hash"
-       "io"
-       "net/textproto"
-       "strconv"
-
-       "golang.org/x/crypto/openpgp/armor"
-       "golang.org/x/crypto/openpgp/errors"
-       "golang.org/x/crypto/openpgp/packet"
-)
-
-// A Block represents a clearsigned message. A signature on a Block can
-// be checked by passing Bytes into openpgp.CheckDetachedSignature.
-type Block struct {
-       Headers          textproto.MIMEHeader // Optional message headers
-       Plaintext        []byte               // The original message text
-       Bytes            []byte               // The signed message
-       ArmoredSignature *armor.Block         // The signature block
-}
-
-// start is the marker which denotes the beginning of a clearsigned message.
-var start = []byte("\n-----BEGIN PGP SIGNED MESSAGE-----")
-
-// dashEscape is prefixed to any lines that begin with a hyphen so that they
-// can't be confused with endText.
-var dashEscape = []byte("- ")
-
-// endText is a marker which denotes the end of the message and the start of
-// an armored signature.
-var endText = []byte("-----BEGIN PGP SIGNATURE-----")
-
-// end is a marker which denotes the end of the armored signature.
-var end = []byte("\n-----END PGP SIGNATURE-----")
-
-var crlf = []byte("\r\n")
-var lf = byte('\n')
-
-// getLine returns the first \r\n or \n delineated line from the given byte
-// array. The line does not include the \r\n or \n. The remainder of the byte
-// array (also not including the new line bytes) is also returned and this will
-// always be smaller than the original argument.
-func getLine(data []byte) (line, rest []byte) {
-       i := bytes.Index(data, []byte{'\n'})
-       var j int
-       if i < 0 {
-               i = len(data)
-               j = i
-       } else {
-               j = i + 1
-               if i > 0 && data[i-1] == '\r' {
-                       i--
-               }
-       }
-       return data[0:i], data[j:]
-}
-
-// Decode finds the first clearsigned message in data and returns it, as well
-// as the suffix of data which remains after the message.
-func Decode(data []byte) (b *Block, rest []byte) {
-       // start begins with a newline. However, at the very beginning of
-       // the byte array, we'll accept the start string without it.
-       rest = data
-       if bytes.HasPrefix(data, start[1:]) {
-               rest = rest[len(start)-1:]
-       } else if i := bytes.Index(data, start); i >= 0 {
-               rest = rest[i+len(start):]
-       } else {
-               return nil, data
-       }
-
-       // Consume the start line.
-       _, rest = getLine(rest)
-
-       var line []byte
-       b = &Block{
-               Headers: make(textproto.MIMEHeader),
-       }
-
-       // Next come a series of header lines.
-       for {
-               // This loop terminates because getLine's second result is
-               // always smaller than its argument.
-               if len(rest) == 0 {
-                       return nil, data
-               }
-               // An empty line marks the end of the headers.
-               if line, rest = getLine(rest); len(line) == 0 {
-                       break
-               }
-
-               i := bytes.Index(line, []byte{':'})
-               if i == -1 {
-                       return nil, data
-               }
-
-               key, val := line[0:i], line[i+1:]
-               key = bytes.TrimSpace(key)
-               val = bytes.TrimSpace(val)
-               b.Headers.Add(string(key), string(val))
-       }
-
-       firstLine := true
-       for {
-               start := rest
-
-               line, rest = getLine(rest)
-               if bytes.Equal(line, endText) {
-                       // Back up to the start of the line because armor 
expects to see the
-                       // header line.
-                       rest = start
-                       break
-               }
-
-               // The final CRLF isn't included in the hash so we don't write 
it until
-               // we've seen the next line.
-               if firstLine {
-                       firstLine = false
-               } else {
-                       b.Bytes = append(b.Bytes, crlf...)
-               }
-
-               if bytes.HasPrefix(line, dashEscape) {
-                       line = line[2:]
-               }
-               line = bytes.TrimRight(line, " \t")
-               b.Bytes = append(b.Bytes, line...)
-
-               b.Plaintext = append(b.Plaintext, line...)
-               b.Plaintext = append(b.Plaintext, lf)
-       }
-
-       // We want to find the extent of the armored data (including any 
newlines at
-       // the end).
-       i := bytes.Index(rest, end)
-       if i == -1 {
-               return nil, data
-       }
-       i += len(end)
-       for i < len(rest) && (rest[i] == '\r' || rest[i] == '\n') {
-               i++
-       }
-       armored := rest[:i]
-       rest = rest[i:]
-
-       var err error
-       b.ArmoredSignature, err = armor.Decode(bytes.NewBuffer(armored))
-       if err != nil {
-               return nil, data
-       }
-
-       return b, rest
-}
-
-// A dashEscaper is an io.WriteCloser which processes the body of a 
clear-signed
-// message. The clear-signed message is written to buffered and a hash, 
suitable
-// for signing, is maintained in h.
-//
-// When closed, an armored signature is created and written to complete the
-// message.
-type dashEscaper struct {
-       buffered *bufio.Writer
-       h        hash.Hash
-       hashType crypto.Hash
-
-       atBeginningOfLine bool
-       isFirstLine       bool
-
-       whitespace []byte
-       byteBuf    []byte // a one byte buffer to save allocations
-
-       privateKey *packet.PrivateKey
-       config     *packet.Config
-}
-
-func (d *dashEscaper) Write(data []byte) (n int, err error) {
-       for _, b := range data {
-               d.byteBuf[0] = b
-
-               if d.atBeginningOfLine {
-                       // The final CRLF isn't included in the hash so we have 
to wait
-                       // until this point (the start of the next line) before 
writing it.
-                       if !d.isFirstLine {
-                               d.h.Write(crlf)
-                       }
-                       d.isFirstLine = false
-               }
-
-               // Any whitespace at the end of the line has to be removed so we
-               // buffer it until we find out whether there's more on this 
line.
-               if b == ' ' || b == '\t' || b == '\r' {
-                       d.whitespace = append(d.whitespace, b)
-                       d.atBeginningOfLine = false
-                       continue
-               }
-
-               if d.atBeginningOfLine {
-                       // At the beginning of a line, hyphens have to be 
escaped.
-                       if b == '-' {
-                               // The signature isn't calculated over the 
dash-escaped text so
-                               // the escape is only written to buffered.
-                               if _, err = d.buffered.Write(dashEscape); err 
!= nil {
-                                       return
-                               }
-                               d.h.Write(d.byteBuf)
-                               d.atBeginningOfLine = false
-                       } else if b == '\n' {
-                               // Nothing to do because we delay writing CRLF 
to the hash.
-                       } else {
-                               d.h.Write(d.byteBuf)
-                               d.atBeginningOfLine = false
-                       }
-                       if err = d.buffered.WriteByte(b); err != nil {
-                               return
-                       }
-               } else {
-                       if b == '\n' {
-                               // We got a raw \n. Drop any trailing 
whitespace and write a
-                               // CRLF.
-                               d.whitespace = d.whitespace[:0]
-                               // We delay writing CRLF to the hash until the 
start of the
-                               // next line.
-                               if err = d.buffered.WriteByte(b); err != nil {
-                                       return
-                               }
-                               d.atBeginningOfLine = true
-                       } else {
-                               // Any buffered whitespace wasn't at the end of 
the line so
-                               // we need to write it out.
-                               if len(d.whitespace) > 0 {
-                                       d.h.Write(d.whitespace)
-                                       if _, err = 
d.buffered.Write(d.whitespace); err != nil {
-                                               return
-                                       }
-                                       d.whitespace = d.whitespace[:0]
-                               }
-                               d.h.Write(d.byteBuf)
-                               if err = d.buffered.WriteByte(b); err != nil {
-                                       return
-                               }
-                       }
-               }
-       }
-
-       n = len(data)
-       return
-}
-
-func (d *dashEscaper) Close() (err error) {
-       if !d.atBeginningOfLine {
-               if err = d.buffered.WriteByte(lf); err != nil {
-                       return
-               }
-       }
-       sig := new(packet.Signature)
-       sig.SigType = packet.SigTypeText
-       sig.PubKeyAlgo = d.privateKey.PubKeyAlgo
-       sig.Hash = d.hashType
-       sig.CreationTime = d.config.Now()
-       sig.IssuerKeyId = &d.privateKey.KeyId
-
-       if err = sig.Sign(d.h, d.privateKey, d.config); err != nil {
-               return
-       }
-
-       out, err := armor.Encode(d.buffered, "PGP SIGNATURE", nil)
-       if err != nil {
-               return
-       }
-
-       if err = sig.Serialize(out); err != nil {
-               return
-       }
-       if err = out.Close(); err != nil {
-               return
-       }
-       if err = d.buffered.Flush(); err != nil {
-               return
-       }
-       return
-}
-
-// Encode returns a WriteCloser which will clear-sign a message with privateKey
-// and write it to w. If config is nil, sensible defaults are used.
-func Encode(w io.Writer, privateKey *packet.PrivateKey, config *packet.Config) 
(plaintext io.WriteCloser, err error) {
-       if privateKey.Encrypted {
-               return nil, errors.InvalidArgumentError("signing key is 
encrypted")
-       }
-
-       hashType := config.Hash()
-       name := nameOfHash(hashType)
-       if len(name) == 0 {
-               return nil, errors.UnsupportedError("unknown hash type: " + 
strconv.Itoa(int(hashType)))
-       }
-
-       if !hashType.Available() {
-               return nil, errors.UnsupportedError("unsupported hash type: " + 
strconv.Itoa(int(hashType)))
-       }
-       h := hashType.New()
-
-       buffered := bufio.NewWriter(w)
-       // start has a \n at the beginning that we don't want here.
-       if _, err = buffered.Write(start[1:]); err != nil {
-               return
-       }
-       if err = buffered.WriteByte(lf); err != nil {
-               return
-       }
-       if _, err = buffered.WriteString("Hash: "); err != nil {
-               return
-       }
-       if _, err = buffered.WriteString(name); err != nil {
-               return
-       }
-       if err = buffered.WriteByte(lf); err != nil {
-               return
-       }
-       if err = buffered.WriteByte(lf); err != nil {
-               return
-       }
-
-       plaintext = &dashEscaper{
-               buffered: buffered,
-               h:        h,
-               hashType: hashType,
-
-               atBeginningOfLine: true,
-               isFirstLine:       true,
-
-               byteBuf: make([]byte, 1),
-
-               privateKey: privateKey,
-               config:     config,
-       }
-
-       return
-}
-
-// nameOfHash returns the OpenPGP name for the given hash, or the empty string
-// if the name isn't known. See RFC 4880, section 9.4.
-func nameOfHash(h crypto.Hash) string {
-       switch h {
-       case crypto.MD5:
-               return "MD5"
-       case crypto.SHA1:
-               return "SHA1"
-       case crypto.RIPEMD160:
-               return "RIPEMD160"
-       case crypto.SHA224:
-               return "SHA224"
-       case crypto.SHA256:
-               return "SHA256"
-       case crypto.SHA384:
-               return "SHA384"
-       case crypto.SHA512:
-               return "SHA512"
-       }
-       return ""
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/openpgp/clearsign/clearsign_test.go
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/openpgp/clearsign/clearsign_test.go 
b/cli/vendor/golang.org/x/crypto/openpgp/clearsign/clearsign_test.go
deleted file mode 100644
index 406377c..0000000
--- a/cli/vendor/golang.org/x/crypto/openpgp/clearsign/clearsign_test.go
+++ /dev/null
@@ -1,197 +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 clearsign
-
-import (
-       "bytes"
-       "golang.org/x/crypto/openpgp"
-       "testing"
-)
-
-func testParse(t *testing.T, input []byte, expected, expectedPlaintext string) 
{
-       b, rest := Decode(input)
-       if b == nil {
-               t.Fatal("failed to decode clearsign message")
-       }
-       if !bytes.Equal(rest, []byte("trailing")) {
-               t.Errorf("unexpected remaining bytes returned: %s", 
string(rest))
-       }
-       if b.ArmoredSignature.Type != "PGP SIGNATURE" {
-               t.Errorf("bad armor type, got:%s, want:PGP SIGNATURE", 
b.ArmoredSignature.Type)
-       }
-       if !bytes.Equal(b.Bytes, []byte(expected)) {
-               t.Errorf("bad body, got:%x want:%x", b.Bytes, expected)
-       }
-
-       if !bytes.Equal(b.Plaintext, []byte(expectedPlaintext)) {
-               t.Errorf("bad plaintext, got:%x want:%x", b.Plaintext, 
expectedPlaintext)
-       }
-
-       keyring, err := 
openpgp.ReadArmoredKeyRing(bytes.NewBufferString(signingKey))
-       if err != nil {
-               t.Errorf("failed to parse public key: %s", err)
-       }
-
-       if _, err := openpgp.CheckDetachedSignature(keyring, 
bytes.NewBuffer(b.Bytes), b.ArmoredSignature.Body); err != nil {
-               t.Errorf("failed to check signature: %s", err)
-       }
-}
-
-func TestParse(t *testing.T) {
-       testParse(t, clearsignInput, "Hello world\r\nline 2", "Hello 
world\nline 2\n")
-       testParse(t, clearsignInput2, "\r\n\r\n(This message has a couple of 
blank lines at the start and end.)\r\n\r\n", "\n\n(This message has a couple of 
blank lines at the start and end.)\n\n\n")
-}
-
-func TestParseWithNoNewlineAtEnd(t *testing.T) {
-       input := clearsignInput
-       input = input[:len(input)-len("trailing")-1]
-       b, rest := Decode(input)
-       if b == nil {
-               t.Fatal("failed to decode clearsign message")
-       }
-       if len(rest) > 0 {
-               t.Errorf("unexpected remaining bytes returned: %s", 
string(rest))
-       }
-}
-
-var signingTests = []struct {
-       in, signed, plaintext string
-}{
-       {"", "", ""},
-       {"a", "a", "a\n"},
-       {"a\n", "a", "a\n"},
-       {"-a\n", "-a", "-a\n"},
-       {"--a\nb", "--a\r\nb", "--a\nb\n"},
-       // leading whitespace
-       {" a\n", " a", " a\n"},
-       {"  a\n", "  a", "  a\n"},
-       // trailing whitespace (should be stripped)
-       {"a \n", "a", "a\n"},
-       {"a ", "a", "a\n"},
-       // whitespace-only lines (should be stripped)
-       {"  \n", "", "\n"},
-       {"  ", "", "\n"},
-       {"a\n  \n  \nb\n", "a\r\n\r\n\r\nb", "a\n\n\nb\n"},
-}
-
-func TestSigning(t *testing.T) {
-       keyring, err := 
openpgp.ReadArmoredKeyRing(bytes.NewBufferString(signingKey))
-       if err != nil {
-               t.Errorf("failed to parse public key: %s", err)
-       }
-
-       for i, test := range signingTests {
-               var buf bytes.Buffer
-
-               plaintext, err := Encode(&buf, keyring[0].PrivateKey, nil)
-               if err != nil {
-                       t.Errorf("#%d: error from Encode: %s", i, err)
-                       continue
-               }
-               if _, err := plaintext.Write([]byte(test.in)); err != nil {
-                       t.Errorf("#%d: error from Write: %s", i, err)
-                       continue
-               }
-               if err := plaintext.Close(); err != nil {
-                       t.Fatalf("#%d: error from Close: %s", i, err)
-                       continue
-               }
-
-               b, _ := Decode(buf.Bytes())
-               if b == nil {
-                       t.Errorf("#%d: failed to decode clearsign message", i)
-                       continue
-               }
-               if !bytes.Equal(b.Bytes, []byte(test.signed)) {
-                       t.Errorf("#%d: bad result, got:%x, want:%x", i, 
b.Bytes, test.signed)
-                       continue
-               }
-               if !bytes.Equal(b.Plaintext, []byte(test.plaintext)) {
-                       t.Errorf("#%d: bad result, got:%x, want:%x", i, 
b.Plaintext, test.plaintext)
-                       continue
-               }
-
-               if _, err := openpgp.CheckDetachedSignature(keyring, 
bytes.NewBuffer(b.Bytes), b.ArmoredSignature.Body); err != nil {
-                       t.Errorf("#%d: failed to check signature: %s", i, err)
-               }
-       }
-}
-
-var clearsignInput = []byte(`
-;lasjlkfdsa
-
------BEGIN PGP SIGNED MESSAGE-----
-Hash: SHA1
-
-Hello world
-line 2
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v1.4.10 (GNU/Linux)
-
-iJwEAQECAAYFAk8kMuEACgkQO9o98PRieSpMsAQAhmY/vwmNpflrPgmfWsYhk5O8
-pjnBUzZwqTDoDeINjZEoPDSpQAHGhjFjgaDx/Gj4fAl0dM4D0wuUEBb6QOrwflog
-2A2k9kfSOMOtk0IH/H5VuFN1Mie9L/erYXjTQIptv9t9J7NoRBMU0QOOaFU0JaO9
-MyTpno24AjIAGb+mH1U=
-=hIJ6
------END PGP SIGNATURE-----
-trailing`)
-
-var clearsignInput2 = []byte(`
-asdlfkjasdlkfjsadf
-
------BEGIN PGP SIGNED MESSAGE-----
-Hash: SHA256
-
-
-
-(This message has a couple of blank lines at the start and end.)
-
-
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v1.4.11 (GNU/Linux)
-
-iJwEAQEIAAYFAlPpSREACgkQO9o98PRieSpZTAP+M8QUoCt/7Rf3YbXPcdzIL32v
-pt1I+cMNeopzfLy0u4ioEFi8s5VkwpL1AFmirvgViCwlf82inoRxzZRiW05JQ5LI
-ESEzeCoy2LIdRCQ2hcrG8pIUPzUO4TqO5D/dMbdHwNH4h5nNmGJUAEG6FpURlPm+
-qZg6BaTvOxepqOxnhVU=
-=e+C6
------END PGP SIGNATURE-----
-
-trailing`)
-
-var signingKey = `-----BEGIN PGP PRIVATE KEY BLOCK-----
-Version: GnuPG v1.4.10 (GNU/Linux)
-
-lQHYBE2rFNoBBADFwqWQIW/DSqcB4yCQqnAFTJ27qS5AnB46ccAdw3u4Greeu3Bp
-idpoHdjULy7zSKlwR1EA873dO/k/e11Ml3dlAFUinWeejWaK2ugFP6JjiieSsrKn
-vWNicdCS4HTWn0X4sjl0ZiAygw6GNhqEQ3cpLeL0g8E9hnYzJKQ0LWJa0QARAQAB
-AAP/TB81EIo2VYNmTq0pK1ZXwUpxCrvAAIG3hwKjEzHcbQznsjNvPUihZ+NZQ6+X
-0HCfPAdPkGDCLCb6NavcSW+iNnLTrdDnSI6+3BbIONqWWdRDYJhqZCkqmG6zqSfL
-IdkJgCw94taUg5BWP/AAeQrhzjChvpMQTVKQL5mnuZbUCeMCAN5qrYMP2S9iKdnk
-VANIFj7656ARKt/nf4CBzxcpHTyB8+d2CtPDKCmlJP6vL8t58Jmih+kHJMvC0dzn
-gr5f5+sCAOOe5gt9e0am7AvQWhdbHVfJU0TQJx+m2OiCJAqGTB1nvtBLHdJnfdC9
-TnXXQ6ZXibqLyBies/xeY2sCKL5qtTMCAKnX9+9d/5yQxRyrQUHt1NYhaXZnJbHx
-q4ytu0eWz+5i68IYUSK69jJ1NWPM0T6SkqpB3KCAIv68VFm9PxqG1KmhSrQIVGVz
-dCBLZXmIuAQTAQIAIgUCTasU2gIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AA
-CgkQO9o98PRieSoLhgQAkLEZex02Qt7vGhZzMwuN0R22w3VwyYyjBx+fM3JFETy1
-ut4xcLJoJfIaF5ZS38UplgakHG0FQ+b49i8dMij0aZmDqGxrew1m4kBfjXw9B/v+
-eIqpODryb6cOSwyQFH0lQkXC040pjq9YqDsO5w0WYNXYKDnzRV0p4H1pweo2VDid
-AdgETasU2gEEAN46UPeWRqKHvA99arOxee38fBt2CI08iiWyI8T3J6ivtFGixSqV
-bRcPxYO/qLpVe5l84Nb3X71GfVXlc9hyv7CD6tcowL59hg1E/DC5ydI8K8iEpUmK
-/UnHdIY5h8/kqgGxkY/T/hgp5fRQgW1ZoZxLajVlMRZ8W4tFtT0DeA+JABEBAAEA
-A/0bE1jaaZKj6ndqcw86jd+QtD1SF+Cf21CWRNeLKnUds4FRRvclzTyUMuWPkUeX
-TaNNsUOFqBsf6QQ2oHUBBK4VCHffHCW4ZEX2cd6umz7mpHW6XzN4DECEzOVksXtc
-lUC1j4UB91DC/RNQqwX1IV2QLSwssVotPMPqhOi0ZLNY7wIA3n7DWKInxYZZ4K+6
-rQ+POsz6brEoRHwr8x6XlHenq1Oki855pSa1yXIARoTrSJkBtn5oI+f8AzrnN0BN
-oyeQAwIA/7E++3HDi5aweWrViiul9cd3rcsS0dEnksPhvS0ozCJiHsq/6GFmy7J8
-QSHZPteedBnZyNp5jR+H7cIfVN3KgwH/Skq4PsuPhDq5TKK6i8Pc1WW8MA6DXTdU
-nLkX7RGmMwjC0DBf7KWAlPjFaONAX3a8ndnz//fy1q7u2l9AZwrj1qa1iJ8EGAEC
-AAkFAk2rFNoCGwwACgkQO9o98PRieSo2/QP/WTzr4ioINVsvN1akKuekmEMI3LAp
-BfHwatufxxP1U+3Si/6YIk7kuPB9Hs+pRqCXzbvPRrI8NHZBmc8qIGthishdCYad
-AHcVnXjtxrULkQFGbGvhKURLvS9WnzD/m1K2zzwxzkPTzT9/Yf06O6Mal5AdugPL
-VrM0m72/jnpKo04=
-=zNCn
------END PGP PRIVATE KEY BLOCK-----
-`

Reply via email to