http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/openpgp/packet/opaque.go
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/openpgp/packet/opaque.go 
b/cli/vendor/golang.org/x/crypto/openpgp/packet/opaque.go
deleted file mode 100644
index 456d807..0000000
--- a/cli/vendor/golang.org/x/crypto/openpgp/packet/opaque.go
+++ /dev/null
@@ -1,162 +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 packet
-
-import (
-       "bytes"
-       "io"
-       "io/ioutil"
-
-       "golang.org/x/crypto/openpgp/errors"
-)
-
-// OpaquePacket represents an OpenPGP packet as raw, unparsed data. This is
-// useful for splitting and storing the original packet contents separately,
-// handling unsupported packet types or accessing parts of the packet not yet
-// implemented by this package.
-type OpaquePacket struct {
-       // Packet type
-       Tag uint8
-       // Reason why the packet was parsed opaquely
-       Reason error
-       // Binary contents of the packet data
-       Contents []byte
-}
-
-func (op *OpaquePacket) parse(r io.Reader) (err error) {
-       op.Contents, err = ioutil.ReadAll(r)
-       return
-}
-
-// Serialize marshals the packet to a writer in its original form, including
-// the packet header.
-func (op *OpaquePacket) Serialize(w io.Writer) (err error) {
-       err = serializeHeader(w, packetType(op.Tag), len(op.Contents))
-       if err == nil {
-               _, err = w.Write(op.Contents)
-       }
-       return
-}
-
-// Parse attempts to parse the opaque contents into a structure supported by
-// this package. If the packet is not known then the result will be another
-// OpaquePacket.
-func (op *OpaquePacket) Parse() (p Packet, err error) {
-       hdr := bytes.NewBuffer(nil)
-       err = serializeHeader(hdr, packetType(op.Tag), len(op.Contents))
-       if err != nil {
-               op.Reason = err
-               return op, err
-       }
-       p, err = Read(io.MultiReader(hdr, bytes.NewBuffer(op.Contents)))
-       if err != nil {
-               op.Reason = err
-               p = op
-       }
-       return
-}
-
-// OpaqueReader reads OpaquePackets from an io.Reader.
-type OpaqueReader struct {
-       r io.Reader
-}
-
-func NewOpaqueReader(r io.Reader) *OpaqueReader {
-       return &OpaqueReader{r: r}
-}
-
-// Read the next OpaquePacket.
-func (or *OpaqueReader) Next() (op *OpaquePacket, err error) {
-       tag, _, contents, err := readHeader(or.r)
-       if err != nil {
-               return
-       }
-       op = &OpaquePacket{Tag: uint8(tag), Reason: err}
-       err = op.parse(contents)
-       if err != nil {
-               consumeAll(contents)
-       }
-       return
-}
-
-// OpaqueSubpacket represents an unparsed OpenPGP subpacket,
-// as found in signature and user attribute packets.
-type OpaqueSubpacket struct {
-       SubType  uint8
-       Contents []byte
-}
-
-// OpaqueSubpackets extracts opaque, unparsed OpenPGP subpackets from
-// their byte representation.
-func OpaqueSubpackets(contents []byte) (result []*OpaqueSubpacket, err error) {
-       var (
-               subHeaderLen int
-               subPacket    *OpaqueSubpacket
-       )
-       for len(contents) > 0 {
-               subHeaderLen, subPacket, err = nextSubpacket(contents)
-               if err != nil {
-                       break
-               }
-               result = append(result, subPacket)
-               contents = contents[subHeaderLen+len(subPacket.Contents):]
-       }
-       return
-}
-
-func nextSubpacket(contents []byte) (subHeaderLen int, subPacket 
*OpaqueSubpacket, err error) {
-       // RFC 4880, section 5.2.3.1
-       var subLen uint32
-       if len(contents) < 1 {
-               goto Truncated
-       }
-       subPacket = &OpaqueSubpacket{}
-       switch {
-       case contents[0] < 192:
-               subHeaderLen = 2 // 1 length byte, 1 subtype byte
-               if len(contents) < subHeaderLen {
-                       goto Truncated
-               }
-               subLen = uint32(contents[0])
-               contents = contents[1:]
-       case contents[0] < 255:
-               subHeaderLen = 3 // 2 length bytes, 1 subtype
-               if len(contents) < subHeaderLen {
-                       goto Truncated
-               }
-               subLen = uint32(contents[0]-192)<<8 + uint32(contents[1]) + 192
-               contents = contents[2:]
-       default:
-               subHeaderLen = 6 // 5 length bytes, 1 subtype
-               if len(contents) < subHeaderLen {
-                       goto Truncated
-               }
-               subLen = uint32(contents[1])<<24 |
-                       uint32(contents[2])<<16 |
-                       uint32(contents[3])<<8 |
-                       uint32(contents[4])
-               contents = contents[5:]
-       }
-       if subLen > uint32(len(contents)) || subLen == 0 {
-               goto Truncated
-       }
-       subPacket.SubType = contents[0]
-       subPacket.Contents = contents[1:subLen]
-       return
-Truncated:
-       err = errors.StructuralError("subpacket truncated")
-       return
-}
-
-func (osp *OpaqueSubpacket) Serialize(w io.Writer) (err error) {
-       buf := make([]byte, 6)
-       n := serializeSubpacketLength(buf, len(osp.Contents)+1)
-       buf[n] = osp.SubType
-       if _, err = w.Write(buf[:n+1]); err != nil {
-               return
-       }
-       _, err = w.Write(osp.Contents)
-       return
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/openpgp/packet/opaque_test.go
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/openpgp/packet/opaque_test.go 
b/cli/vendor/golang.org/x/crypto/openpgp/packet/opaque_test.go
deleted file mode 100644
index f27bbfe..0000000
--- a/cli/vendor/golang.org/x/crypto/openpgp/packet/opaque_test.go
+++ /dev/null
@@ -1,67 +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 packet
-
-import (
-       "bytes"
-       "encoding/hex"
-       "io"
-       "testing"
-)
-
-// Test packet.Read error handling in OpaquePacket.Parse,
-// which attempts to re-read an OpaquePacket as a supported
-// Packet type.
-func TestOpaqueParseReason(t *testing.T) {
-       buf, err := hex.DecodeString(UnsupportedKeyHex)
-       if err != nil {
-               t.Fatal(err)
-       }
-       or := NewOpaqueReader(bytes.NewBuffer(buf))
-       count := 0
-       badPackets := 0
-       var uid *UserId
-       for {
-               op, err := or.Next()
-               if err == io.EOF {
-                       break
-               } else if err != nil {
-                       t.Errorf("#%d: opaque read error: %v", count, err)
-                       break
-               }
-               // try to parse opaque packet
-               p, err := op.Parse()
-               switch pkt := p.(type) {
-               case *UserId:
-                       uid = pkt
-               case *OpaquePacket:
-                       // If an OpaquePacket can't re-parse, packet.Read
-                       // certainly had its reasons.
-                       if pkt.Reason == nil {
-                               t.Errorf("#%d: opaque packet, no reason", count)
-                       } else {
-                               badPackets++
-                       }
-               }
-               count++
-       }
-
-       const expectedBad = 3
-       // Test post-conditions, make sure we actually parsed packets as 
expected.
-       if badPackets != expectedBad {
-               t.Errorf("unexpected # unparseable packets: %d (want %d)", 
badPackets, expectedBad)
-       }
-       if uid == nil {
-               t.Errorf("failed to find expected UID in unsupported keyring")
-       } else if uid.Id != "Armin M. Warda <wa...@nephilim.ruhr.de>" {
-               t.Errorf("unexpected UID: %v", uid.Id)
-       }
-}
-
-// This key material has public key and signature packet versions modified to
-// an unsupported value (1), so that trying to parse the OpaquePacket to
-// a typed packet will get an error. It also contains a GnuPG trust packet.
-// (Created with: od -An -t x1 pubring.gpg | xargs | sed 's/ //g')
-const UnsupportedKeyHex = 
`988d012e7a18a20000010400d6ac00d92b89c1f4396c243abb9b76d2e9673ad63483291fed88e22b82e255e441c078c6abbbf7d2d195e50b62eeaa915b85b0ec20c225ce2c64c167cacb6e711daf2e45da4a8356a059b8160e3b3628ac0dd8437b31f06d53d6e8ea4214d4a26406a6b63e1001406ef23e0bb3069fac9a99a91f77dfafd5de0f188a5da5e3c9000511b42741726d696e204d2e205761726461203c7761726461406e657068696c696d2e727568722e64653e8900950105102e8936c705d1eb399e58489901013f0e03ff5a0c4f421e34fcfa388129166420c08cd76987bcdec6f01bd0271459a85cc22048820dd4e44ac2c7d23908d540f54facf1b36b0d9c20488781ce9dca856531e76e2e846826e9951338020a03a09b57aa5faa82e9267458bd76105399885ac35af7dc1cbb6aaed7c39e1039f3b5beda2c0e916bd38560509bab81235d1a0ead83b0020000`

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/openpgp/packet/packet.go
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/openpgp/packet/packet.go 
b/cli/vendor/golang.org/x/crypto/openpgp/packet/packet.go
deleted file mode 100644
index e2bde11..0000000
--- a/cli/vendor/golang.org/x/crypto/openpgp/packet/packet.go
+++ /dev/null
@@ -1,539 +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 packet implements parsing and serialization of OpenPGP packets, as
-// specified in RFC 4880.
-package packet // import "golang.org/x/crypto/openpgp/packet"
-
-import (
-       "bufio"
-       "crypto/aes"
-       "crypto/cipher"
-       "crypto/des"
-       "golang.org/x/crypto/cast5"
-       "golang.org/x/crypto/openpgp/errors"
-       "io"
-       "math/big"
-)
-
-// readFull is the same as io.ReadFull except that reading zero bytes returns
-// ErrUnexpectedEOF rather than EOF.
-func readFull(r io.Reader, buf []byte) (n int, err error) {
-       n, err = io.ReadFull(r, buf)
-       if err == io.EOF {
-               err = io.ErrUnexpectedEOF
-       }
-       return
-}
-
-// readLength reads an OpenPGP length from r. See RFC 4880, section 4.2.2.
-func readLength(r io.Reader) (length int64, isPartial bool, err error) {
-       var buf [4]byte
-       _, err = readFull(r, buf[:1])
-       if err != nil {
-               return
-       }
-       switch {
-       case buf[0] < 192:
-               length = int64(buf[0])
-       case buf[0] < 224:
-               length = int64(buf[0]-192) << 8
-               _, err = readFull(r, buf[0:1])
-               if err != nil {
-                       return
-               }
-               length += int64(buf[0]) + 192
-       case buf[0] < 255:
-               length = int64(1) << (buf[0] & 0x1f)
-               isPartial = true
-       default:
-               _, err = readFull(r, buf[0:4])
-               if err != nil {
-                       return
-               }
-               length = int64(buf[0])<<24 |
-                       int64(buf[1])<<16 |
-                       int64(buf[2])<<8 |
-                       int64(buf[3])
-       }
-       return
-}
-
-// partialLengthReader wraps an io.Reader and handles OpenPGP partial lengths.
-// The continuation lengths are parsed and removed from the stream and EOF is
-// returned at the end of the packet. See RFC 4880, section 4.2.2.4.
-type partialLengthReader struct {
-       r         io.Reader
-       remaining int64
-       isPartial bool
-}
-
-func (r *partialLengthReader) Read(p []byte) (n int, err error) {
-       for r.remaining == 0 {
-               if !r.isPartial {
-                       return 0, io.EOF
-               }
-               r.remaining, r.isPartial, err = readLength(r.r)
-               if err != nil {
-                       return 0, err
-               }
-       }
-
-       toRead := int64(len(p))
-       if toRead > r.remaining {
-               toRead = r.remaining
-       }
-
-       n, err = r.r.Read(p[:int(toRead)])
-       r.remaining -= int64(n)
-       if n < int(toRead) && err == io.EOF {
-               err = io.ErrUnexpectedEOF
-       }
-       return
-}
-
-// partialLengthWriter writes a stream of data using OpenPGP partial lengths.
-// See RFC 4880, section 4.2.2.4.
-type partialLengthWriter struct {
-       w          io.WriteCloser
-       lengthByte [1]byte
-}
-
-func (w *partialLengthWriter) Write(p []byte) (n int, err error) {
-       for len(p) > 0 {
-               for power := uint(14); power < 32; power-- {
-                       l := 1 << power
-                       if len(p) >= l {
-                               w.lengthByte[0] = 224 + uint8(power)
-                               _, err = w.w.Write(w.lengthByte[:])
-                               if err != nil {
-                                       return
-                               }
-                               var m int
-                               m, err = w.w.Write(p[:l])
-                               n += m
-                               if err != nil {
-                                       return
-                               }
-                               p = p[l:]
-                               break
-                       }
-               }
-       }
-       return
-}
-
-func (w *partialLengthWriter) Close() error {
-       w.lengthByte[0] = 0
-       _, err := w.w.Write(w.lengthByte[:])
-       if err != nil {
-               return err
-       }
-       return w.w.Close()
-}
-
-// A spanReader is an io.LimitReader, but it returns ErrUnexpectedEOF if the
-// underlying Reader returns EOF before the limit has been reached.
-type spanReader struct {
-       r io.Reader
-       n int64
-}
-
-func (l *spanReader) Read(p []byte) (n int, err error) {
-       if l.n <= 0 {
-               return 0, io.EOF
-       }
-       if int64(len(p)) > l.n {
-               p = p[0:l.n]
-       }
-       n, err = l.r.Read(p)
-       l.n -= int64(n)
-       if l.n > 0 && err == io.EOF {
-               err = io.ErrUnexpectedEOF
-       }
-       return
-}
-
-// readHeader parses a packet header and returns an io.Reader which will return
-// the contents of the packet. See RFC 4880, section 4.2.
-func readHeader(r io.Reader) (tag packetType, length int64, contents 
io.Reader, err error) {
-       var buf [4]byte
-       _, err = io.ReadFull(r, buf[:1])
-       if err != nil {
-               return
-       }
-       if buf[0]&0x80 == 0 {
-               err = errors.StructuralError("tag byte does not have MSB set")
-               return
-       }
-       if buf[0]&0x40 == 0 {
-               // Old format packet
-               tag = packetType((buf[0] & 0x3f) >> 2)
-               lengthType := buf[0] & 3
-               if lengthType == 3 {
-                       length = -1
-                       contents = r
-                       return
-               }
-               lengthBytes := 1 << lengthType
-               _, err = readFull(r, buf[0:lengthBytes])
-               if err != nil {
-                       return
-               }
-               for i := 0; i < lengthBytes; i++ {
-                       length <<= 8
-                       length |= int64(buf[i])
-               }
-               contents = &spanReader{r, length}
-               return
-       }
-
-       // New format packet
-       tag = packetType(buf[0] & 0x3f)
-       length, isPartial, err := readLength(r)
-       if err != nil {
-               return
-       }
-       if isPartial {
-               contents = &partialLengthReader{
-                       remaining: length,
-                       isPartial: true,
-                       r:         r,
-               }
-               length = -1
-       } else {
-               contents = &spanReader{r, length}
-       }
-       return
-}
-
-// serializeHeader writes an OpenPGP packet header to w. See RFC 4880, section
-// 4.2.
-func serializeHeader(w io.Writer, ptype packetType, length int) (err error) {
-       var buf [6]byte
-       var n int
-
-       buf[0] = 0x80 | 0x40 | byte(ptype)
-       if length < 192 {
-               buf[1] = byte(length)
-               n = 2
-       } else if length < 8384 {
-               length -= 192
-               buf[1] = 192 + byte(length>>8)
-               buf[2] = byte(length)
-               n = 3
-       } else {
-               buf[1] = 255
-               buf[2] = byte(length >> 24)
-               buf[3] = byte(length >> 16)
-               buf[4] = byte(length >> 8)
-               buf[5] = byte(length)
-               n = 6
-       }
-
-       _, err = w.Write(buf[:n])
-       return
-}
-
-// serializeStreamHeader writes an OpenPGP packet header to w where the
-// length of the packet is unknown. It returns a io.WriteCloser which can be
-// used to write the contents of the packet. See RFC 4880, section 4.2.
-func serializeStreamHeader(w io.WriteCloser, ptype packetType) (out 
io.WriteCloser, err error) {
-       var buf [1]byte
-       buf[0] = 0x80 | 0x40 | byte(ptype)
-       _, err = w.Write(buf[:])
-       if err != nil {
-               return
-       }
-       out = &partialLengthWriter{w: w}
-       return
-}
-
-// Packet represents an OpenPGP packet. Users are expected to try casting
-// instances of this interface to specific packet types.
-type Packet interface {
-       parse(io.Reader) error
-}
-
-// consumeAll reads from the given Reader until error, returning the number of
-// bytes read.
-func consumeAll(r io.Reader) (n int64, err error) {
-       var m int
-       var buf [1024]byte
-
-       for {
-               m, err = r.Read(buf[:])
-               n += int64(m)
-               if err == io.EOF {
-                       err = nil
-                       return
-               }
-               if err != nil {
-                       return
-               }
-       }
-
-       panic("unreachable")
-}
-
-// packetType represents the numeric ids of the different OpenPGP packet 
types. See
-// 
http://www.iana.org/assignments/pgp-parameters/pgp-parameters.xhtml#pgp-parameters-2
-type packetType uint8
-
-const (
-       packetTypeEncryptedKey              packetType = 1
-       packetTypeSignature                 packetType = 2
-       packetTypeSymmetricKeyEncrypted     packetType = 3
-       packetTypeOnePassSignature          packetType = 4
-       packetTypePrivateKey                packetType = 5
-       packetTypePublicKey                 packetType = 6
-       packetTypePrivateSubkey             packetType = 7
-       packetTypeCompressed                packetType = 8
-       packetTypeSymmetricallyEncrypted    packetType = 9
-       packetTypeLiteralData               packetType = 11
-       packetTypeUserId                    packetType = 13
-       packetTypePublicSubkey              packetType = 14
-       packetTypeUserAttribute             packetType = 17
-       packetTypeSymmetricallyEncryptedMDC packetType = 18
-)
-
-// peekVersion detects the version of a public key packet about to
-// be read. A bufio.Reader at the original position of the io.Reader
-// is returned.
-func peekVersion(r io.Reader) (bufr *bufio.Reader, ver byte, err error) {
-       bufr = bufio.NewReader(r)
-       var verBuf []byte
-       if verBuf, err = bufr.Peek(1); err != nil {
-               return
-       }
-       ver = verBuf[0]
-       return
-}
-
-// Read reads a single OpenPGP packet from the given io.Reader. If there is an
-// error parsing a packet, the whole packet is consumed from the input.
-func Read(r io.Reader) (p Packet, err error) {
-       tag, _, contents, err := readHeader(r)
-       if err != nil {
-               return
-       }
-
-       switch tag {
-       case packetTypeEncryptedKey:
-               p = new(EncryptedKey)
-       case packetTypeSignature:
-               var version byte
-               // Detect signature version
-               if contents, version, err = peekVersion(contents); err != nil {
-                       return
-               }
-               if version < 4 {
-                       p = new(SignatureV3)
-               } else {
-                       p = new(Signature)
-               }
-       case packetTypeSymmetricKeyEncrypted:
-               p = new(SymmetricKeyEncrypted)
-       case packetTypeOnePassSignature:
-               p = new(OnePassSignature)
-       case packetTypePrivateKey, packetTypePrivateSubkey:
-               pk := new(PrivateKey)
-               if tag == packetTypePrivateSubkey {
-                       pk.IsSubkey = true
-               }
-               p = pk
-       case packetTypePublicKey, packetTypePublicSubkey:
-               var version byte
-               if contents, version, err = peekVersion(contents); err != nil {
-                       return
-               }
-               isSubkey := tag == packetTypePublicSubkey
-               if version < 4 {
-                       p = &PublicKeyV3{IsSubkey: isSubkey}
-               } else {
-                       p = &PublicKey{IsSubkey: isSubkey}
-               }
-       case packetTypeCompressed:
-               p = new(Compressed)
-       case packetTypeSymmetricallyEncrypted:
-               p = new(SymmetricallyEncrypted)
-       case packetTypeLiteralData:
-               p = new(LiteralData)
-       case packetTypeUserId:
-               p = new(UserId)
-       case packetTypeUserAttribute:
-               p = new(UserAttribute)
-       case packetTypeSymmetricallyEncryptedMDC:
-               se := new(SymmetricallyEncrypted)
-               se.MDC = true
-               p = se
-       default:
-               err = errors.UnknownPacketTypeError(tag)
-       }
-       if p != nil {
-               err = p.parse(contents)
-       }
-       if err != nil {
-               consumeAll(contents)
-       }
-       return
-}
-
-// SignatureType represents the different semantic meanings of an OpenPGP
-// signature. See RFC 4880, section 5.2.1.
-type SignatureType uint8
-
-const (
-       SigTypeBinary            SignatureType = 0
-       SigTypeText                            = 1
-       SigTypeGenericCert                     = 0x10
-       SigTypePersonaCert                     = 0x11
-       SigTypeCasualCert                      = 0x12
-       SigTypePositiveCert                    = 0x13
-       SigTypeSubkeyBinding                   = 0x18
-       SigTypePrimaryKeyBinding               = 0x19
-       SigTypeDirectSignature                 = 0x1F
-       SigTypeKeyRevocation                   = 0x20
-       SigTypeSubkeyRevocation                = 0x28
-)
-
-// PublicKeyAlgorithm represents the different public key system specified for
-// OpenPGP. See
-// 
http://www.iana.org/assignments/pgp-parameters/pgp-parameters.xhtml#pgp-parameters-12
-type PublicKeyAlgorithm uint8
-
-const (
-       PubKeyAlgoRSA            PublicKeyAlgorithm = 1
-       PubKeyAlgoRSAEncryptOnly PublicKeyAlgorithm = 2
-       PubKeyAlgoRSASignOnly    PublicKeyAlgorithm = 3
-       PubKeyAlgoElGamal        PublicKeyAlgorithm = 16
-       PubKeyAlgoDSA            PublicKeyAlgorithm = 17
-       // RFC 6637, Section 5.
-       PubKeyAlgoECDH  PublicKeyAlgorithm = 18
-       PubKeyAlgoECDSA PublicKeyAlgorithm = 19
-)
-
-// CanEncrypt returns true if it's possible to encrypt a message to a public
-// key of the given type.
-func (pka PublicKeyAlgorithm) CanEncrypt() bool {
-       switch pka {
-       case PubKeyAlgoRSA, PubKeyAlgoRSAEncryptOnly, PubKeyAlgoElGamal:
-               return true
-       }
-       return false
-}
-
-// CanSign returns true if it's possible for a public key of the given type to
-// sign a message.
-func (pka PublicKeyAlgorithm) CanSign() bool {
-       switch pka {
-       case PubKeyAlgoRSA, PubKeyAlgoRSASignOnly, PubKeyAlgoDSA, 
PubKeyAlgoECDSA:
-               return true
-       }
-       return false
-}
-
-// CipherFunction represents the different block ciphers specified for 
OpenPGP. See
-// 
http://www.iana.org/assignments/pgp-parameters/pgp-parameters.xhtml#pgp-parameters-13
-type CipherFunction uint8
-
-const (
-       Cipher3DES   CipherFunction = 2
-       CipherCAST5  CipherFunction = 3
-       CipherAES128 CipherFunction = 7
-       CipherAES192 CipherFunction = 8
-       CipherAES256 CipherFunction = 9
-)
-
-// KeySize returns the key size, in bytes, of cipher.
-func (cipher CipherFunction) KeySize() int {
-       switch cipher {
-       case Cipher3DES:
-               return 24
-       case CipherCAST5:
-               return cast5.KeySize
-       case CipherAES128:
-               return 16
-       case CipherAES192:
-               return 24
-       case CipherAES256:
-               return 32
-       }
-       return 0
-}
-
-// blockSize returns the block size, in bytes, of cipher.
-func (cipher CipherFunction) blockSize() int {
-       switch cipher {
-       case Cipher3DES:
-               return des.BlockSize
-       case CipherCAST5:
-               return 8
-       case CipherAES128, CipherAES192, CipherAES256:
-               return 16
-       }
-       return 0
-}
-
-// new returns a fresh instance of the given cipher.
-func (cipher CipherFunction) new(key []byte) (block cipher.Block) {
-       switch cipher {
-       case Cipher3DES:
-               block, _ = des.NewTripleDESCipher(key)
-       case CipherCAST5:
-               block, _ = cast5.NewCipher(key)
-       case CipherAES128, CipherAES192, CipherAES256:
-               block, _ = aes.NewCipher(key)
-       }
-       return
-}
-
-// readMPI reads a big integer from r. The bit length returned is the bit
-// length that was specified in r. This is preserved so that the integer can be
-// reserialized exactly.
-func readMPI(r io.Reader) (mpi []byte, bitLength uint16, err error) {
-       var buf [2]byte
-       _, err = readFull(r, buf[0:])
-       if err != nil {
-               return
-       }
-       bitLength = uint16(buf[0])<<8 | uint16(buf[1])
-       numBytes := (int(bitLength) + 7) / 8
-       mpi = make([]byte, numBytes)
-       _, err = readFull(r, mpi)
-       return
-}
-
-// mpiLength returns the length of the given *big.Int when serialized as an
-// MPI.
-func mpiLength(n *big.Int) (mpiLengthInBytes int) {
-       mpiLengthInBytes = 2 /* MPI length */
-       mpiLengthInBytes += (n.BitLen() + 7) / 8
-       return
-}
-
-// writeMPI serializes a big integer to w.
-func writeMPI(w io.Writer, bitLength uint16, mpiBytes []byte) (err error) {
-       _, err = w.Write([]byte{byte(bitLength >> 8), byte(bitLength)})
-       if err == nil {
-               _, err = w.Write(mpiBytes)
-       }
-       return
-}
-
-// writeBig serializes a *big.Int to w.
-func writeBig(w io.Writer, i *big.Int) error {
-       return writeMPI(w, uint16(i.BitLen()), i.Bytes())
-}
-
-// CompressionAlgo Represents the different compression algorithms
-// supported by OpenPGP (except for BZIP2, which is not currently
-// supported). See Section 9.3 of RFC 4880.
-type CompressionAlgo uint8
-
-const (
-       CompressionNone CompressionAlgo = 0
-       CompressionZIP  CompressionAlgo = 1
-       CompressionZLIB CompressionAlgo = 2
-)

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/openpgp/packet/packet_test.go
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/openpgp/packet/packet_test.go 
b/cli/vendor/golang.org/x/crypto/openpgp/packet/packet_test.go
deleted file mode 100644
index 1dab5c3..0000000
--- a/cli/vendor/golang.org/x/crypto/openpgp/packet/packet_test.go
+++ /dev/null
@@ -1,255 +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 packet
-
-import (
-       "bytes"
-       "encoding/hex"
-       "fmt"
-       "golang.org/x/crypto/openpgp/errors"
-       "io"
-       "io/ioutil"
-       "testing"
-)
-
-func TestReadFull(t *testing.T) {
-       var out [4]byte
-
-       b := bytes.NewBufferString("foo")
-       n, err := readFull(b, out[:3])
-       if n != 3 || err != nil {
-               t.Errorf("full read failed n:%d err:%s", n, err)
-       }
-
-       b = bytes.NewBufferString("foo")
-       n, err = readFull(b, out[:4])
-       if n != 3 || err != io.ErrUnexpectedEOF {
-               t.Errorf("partial read failed n:%d err:%s", n, err)
-       }
-
-       b = bytes.NewBuffer(nil)
-       n, err = readFull(b, out[:3])
-       if n != 0 || err != io.ErrUnexpectedEOF {
-               t.Errorf("empty read failed n:%d err:%s", n, err)
-       }
-}
-
-func readerFromHex(s string) io.Reader {
-       data, err := hex.DecodeString(s)
-       if err != nil {
-               panic("readerFromHex: bad input")
-       }
-       return bytes.NewBuffer(data)
-}
-
-var readLengthTests = []struct {
-       hexInput  string
-       length    int64
-       isPartial bool
-       err       error
-}{
-       {"", 0, false, io.ErrUnexpectedEOF},
-       {"1f", 31, false, nil},
-       {"c0", 0, false, io.ErrUnexpectedEOF},
-       {"c101", 256 + 1 + 192, false, nil},
-       {"e0", 1, true, nil},
-       {"e1", 2, true, nil},
-       {"e2", 4, true, nil},
-       {"ff", 0, false, io.ErrUnexpectedEOF},
-       {"ff00", 0, false, io.ErrUnexpectedEOF},
-       {"ff0000", 0, false, io.ErrUnexpectedEOF},
-       {"ff000000", 0, false, io.ErrUnexpectedEOF},
-       {"ff00000000", 0, false, nil},
-       {"ff01020304", 16909060, false, nil},
-}
-
-func TestReadLength(t *testing.T) {
-       for i, test := range readLengthTests {
-               length, isPartial, err := 
readLength(readerFromHex(test.hexInput))
-               if test.err != nil {
-                       if err != test.err {
-                               t.Errorf("%d: expected different error got:%s 
want:%s", i, err, test.err)
-                       }
-                       continue
-               }
-               if err != nil {
-                       t.Errorf("%d: unexpected error: %s", i, err)
-                       continue
-               }
-               if length != test.length || isPartial != test.isPartial {
-                       t.Errorf("%d: bad result got:(%d,%t) want:(%d,%t)", i, 
length, isPartial, test.length, test.isPartial)
-               }
-       }
-}
-
-var partialLengthReaderTests = []struct {
-       hexInput  string
-       err       error
-       hexOutput string
-}{
-       {"e0", io.ErrUnexpectedEOF, ""},
-       {"e001", io.ErrUnexpectedEOF, ""},
-       {"e0010102", nil, "0102"},
-       {"ff00000000", nil, ""},
-       {"e10102e1030400", nil, "01020304"},
-       {"e101", io.ErrUnexpectedEOF, ""},
-}
-
-func TestPartialLengthReader(t *testing.T) {
-       for i, test := range partialLengthReaderTests {
-               r := &partialLengthReader{readerFromHex(test.hexInput), 0, true}
-               out, err := ioutil.ReadAll(r)
-               if test.err != nil {
-                       if err != test.err {
-                               t.Errorf("%d: expected different error got:%s 
want:%s", i, err, test.err)
-                       }
-                       continue
-               }
-               if err != nil {
-                       t.Errorf("%d: unexpected error: %s", i, err)
-                       continue
-               }
-
-               got := fmt.Sprintf("%x", out)
-               if got != test.hexOutput {
-                       t.Errorf("%d: got:%s want:%s", i, test.hexOutput, got)
-               }
-       }
-}
-
-var readHeaderTests = []struct {
-       hexInput        string
-       structuralError bool
-       unexpectedEOF   bool
-       tag             int
-       length          int64
-       hexOutput       string
-}{
-       {"", false, false, 0, 0, ""},
-       {"7f", true, false, 0, 0, ""},
-
-       // Old format headers
-       {"80", false, true, 0, 0, ""},
-       {"8001", false, true, 0, 1, ""},
-       {"800102", false, false, 0, 1, "02"},
-       {"81000102", false, false, 0, 1, "02"},
-       {"820000000102", false, false, 0, 1, "02"},
-       {"860000000102", false, false, 1, 1, "02"},
-       {"83010203", false, false, 0, -1, "010203"},
-
-       // New format headers
-       {"c0", false, true, 0, 0, ""},
-       {"c000", false, false, 0, 0, ""},
-       {"c00102", false, false, 0, 1, "02"},
-       {"c0020203", false, false, 0, 2, "0203"},
-       {"c00202", false, true, 0, 2, ""},
-       {"c3020203", false, false, 3, 2, "0203"},
-}
-
-func TestReadHeader(t *testing.T) {
-       for i, test := range readHeaderTests {
-               tag, length, contents, err := 
readHeader(readerFromHex(test.hexInput))
-               if test.structuralError {
-                       if _, ok := err.(errors.StructuralError); ok {
-                               continue
-                       }
-                       t.Errorf("%d: expected StructuralError, got:%s", i, err)
-                       continue
-               }
-               if err != nil {
-                       if len(test.hexInput) == 0 && err == io.EOF {
-                               continue
-                       }
-                       if !test.unexpectedEOF || err != io.ErrUnexpectedEOF {
-                               t.Errorf("%d: unexpected error from readHeader: 
%s", i, err)
-                       }
-                       continue
-               }
-               if int(tag) != test.tag || length != test.length {
-                       t.Errorf("%d: got:(%d,%d) want:(%d,%d)", i, int(tag), 
length, test.tag, test.length)
-                       continue
-               }
-
-               body, err := ioutil.ReadAll(contents)
-               if err != nil {
-                       if !test.unexpectedEOF || err != io.ErrUnexpectedEOF {
-                               t.Errorf("%d: unexpected error from contents: 
%s", i, err)
-                       }
-                       continue
-               }
-               if test.unexpectedEOF {
-                       t.Errorf("%d: expected ErrUnexpectedEOF from contents 
but got no error", i)
-                       continue
-               }
-               got := fmt.Sprintf("%x", body)
-               if got != test.hexOutput {
-                       t.Errorf("%d: got:%s want:%s", i, got, test.hexOutput)
-               }
-       }
-}
-
-func TestSerializeHeader(t *testing.T) {
-       tag := packetTypePublicKey
-       lengths := []int{0, 1, 2, 64, 192, 193, 8000, 8384, 8385, 10000}
-
-       for _, length := range lengths {
-               buf := bytes.NewBuffer(nil)
-               serializeHeader(buf, tag, length)
-               tag2, length2, _, err := readHeader(buf)
-               if err != nil {
-                       t.Errorf("length %d, err: %s", length, err)
-               }
-               if tag2 != tag {
-                       t.Errorf("length %d, tag incorrect (got %d, want %d)", 
length, tag2, tag)
-               }
-               if int(length2) != length {
-                       t.Errorf("length %d, length incorrect (got %d)", 
length, length2)
-               }
-       }
-}
-
-func TestPartialLengths(t *testing.T) {
-       buf := bytes.NewBuffer(nil)
-       w := new(partialLengthWriter)
-       w.w = noOpCloser{buf}
-
-       const maxChunkSize = 64
-
-       var b [maxChunkSize]byte
-       var n uint8
-       for l := 1; l <= maxChunkSize; l++ {
-               for i := 0; i < l; i++ {
-                       b[i] = n
-                       n++
-               }
-               m, err := w.Write(b[:l])
-               if m != l {
-                       t.Errorf("short write got: %d want: %d", m, l)
-               }
-               if err != nil {
-                       t.Errorf("error from write: %s", err)
-               }
-       }
-       w.Close()
-
-       want := (maxChunkSize * (maxChunkSize + 1)) / 2
-       copyBuf := bytes.NewBuffer(nil)
-       r := &partialLengthReader{buf, 0, true}
-       m, err := io.Copy(copyBuf, r)
-       if m != int64(want) {
-               t.Errorf("short copy got: %d want: %d", m, want)
-       }
-       if err != nil {
-               t.Errorf("error from copy: %s", err)
-       }
-
-       copyBytes := copyBuf.Bytes()
-       for i := 0; i < want; i++ {
-               if copyBytes[i] != uint8(i) {
-                       t.Errorf("bad pattern in copy at %d", i)
-                       break
-               }
-       }
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/openpgp/packet/private_key.go
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/openpgp/packet/private_key.go 
b/cli/vendor/golang.org/x/crypto/openpgp/packet/private_key.go
deleted file mode 100644
index 740a27d..0000000
--- a/cli/vendor/golang.org/x/crypto/openpgp/packet/private_key.go
+++ /dev/null
@@ -1,326 +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 packet
-
-import (
-       "bytes"
-       "crypto/cipher"
-       "crypto/dsa"
-       "crypto/rsa"
-       "crypto/sha1"
-       "golang.org/x/crypto/openpgp/elgamal"
-       "golang.org/x/crypto/openpgp/errors"
-       "golang.org/x/crypto/openpgp/s2k"
-       "io"
-       "io/ioutil"
-       "math/big"
-       "strconv"
-       "time"
-)
-
-// PrivateKey represents a possibly encrypted private key. See RFC 4880,
-// section 5.5.3.
-type PrivateKey struct {
-       PublicKey
-       Encrypted     bool // if true then the private key is unavailable until 
Decrypt has been called.
-       encryptedData []byte
-       cipher        CipherFunction
-       s2k           func(out, in []byte)
-       PrivateKey    interface{} // An *rsa.PrivateKey or *dsa.PrivateKey.
-       sha1Checksum  bool
-       iv            []byte
-}
-
-func NewRSAPrivateKey(currentTime time.Time, priv *rsa.PrivateKey) *PrivateKey 
{
-       pk := new(PrivateKey)
-       pk.PublicKey = *NewRSAPublicKey(currentTime, &priv.PublicKey)
-       pk.PrivateKey = priv
-       return pk
-}
-
-func NewDSAPrivateKey(currentTime time.Time, priv *dsa.PrivateKey) *PrivateKey 
{
-       pk := new(PrivateKey)
-       pk.PublicKey = *NewDSAPublicKey(currentTime, &priv.PublicKey)
-       pk.PrivateKey = priv
-       return pk
-}
-
-func NewElGamalPrivateKey(currentTime time.Time, priv *elgamal.PrivateKey) 
*PrivateKey {
-       pk := new(PrivateKey)
-       pk.PublicKey = *NewElGamalPublicKey(currentTime, &priv.PublicKey)
-       pk.PrivateKey = priv
-       return pk
-}
-
-func (pk *PrivateKey) parse(r io.Reader) (err error) {
-       err = (&pk.PublicKey).parse(r)
-       if err != nil {
-               return
-       }
-       var buf [1]byte
-       _, err = readFull(r, buf[:])
-       if err != nil {
-               return
-       }
-
-       s2kType := buf[0]
-
-       switch s2kType {
-       case 0:
-               pk.s2k = nil
-               pk.Encrypted = false
-       case 254, 255:
-               _, err = readFull(r, buf[:])
-               if err != nil {
-                       return
-               }
-               pk.cipher = CipherFunction(buf[0])
-               pk.Encrypted = true
-               pk.s2k, err = s2k.Parse(r)
-               if err != nil {
-                       return
-               }
-               if s2kType == 254 {
-                       pk.sha1Checksum = true
-               }
-       default:
-               return errors.UnsupportedError("deprecated s2k function in 
private key")
-       }
-
-       if pk.Encrypted {
-               blockSize := pk.cipher.blockSize()
-               if blockSize == 0 {
-                       return errors.UnsupportedError("unsupported cipher in 
private key: " + strconv.Itoa(int(pk.cipher)))
-               }
-               pk.iv = make([]byte, blockSize)
-               _, err = readFull(r, pk.iv)
-               if err != nil {
-                       return
-               }
-       }
-
-       pk.encryptedData, err = ioutil.ReadAll(r)
-       if err != nil {
-               return
-       }
-
-       if !pk.Encrypted {
-               return pk.parsePrivateKey(pk.encryptedData)
-       }
-
-       return
-}
-
-func mod64kHash(d []byte) uint16 {
-       var h uint16
-       for _, b := range d {
-               h += uint16(b)
-       }
-       return h
-}
-
-func (pk *PrivateKey) Serialize(w io.Writer) (err error) {
-       // TODO(agl): support encrypted private keys
-       buf := bytes.NewBuffer(nil)
-       err = pk.PublicKey.serializeWithoutHeaders(buf)
-       if err != nil {
-               return
-       }
-       buf.WriteByte(0 /* no encryption */)
-
-       privateKeyBuf := bytes.NewBuffer(nil)
-
-       switch priv := pk.PrivateKey.(type) {
-       case *rsa.PrivateKey:
-               err = serializeRSAPrivateKey(privateKeyBuf, priv)
-       case *dsa.PrivateKey:
-               err = serializeDSAPrivateKey(privateKeyBuf, priv)
-       case *elgamal.PrivateKey:
-               err = serializeElGamalPrivateKey(privateKeyBuf, priv)
-       default:
-               err = errors.InvalidArgumentError("unknown private key type")
-       }
-       if err != nil {
-               return
-       }
-
-       ptype := packetTypePrivateKey
-       contents := buf.Bytes()
-       privateKeyBytes := privateKeyBuf.Bytes()
-       if pk.IsSubkey {
-               ptype = packetTypePrivateSubkey
-       }
-       err = serializeHeader(w, ptype, len(contents)+len(privateKeyBytes)+2)
-       if err != nil {
-               return
-       }
-       _, err = w.Write(contents)
-       if err != nil {
-               return
-       }
-       _, err = w.Write(privateKeyBytes)
-       if err != nil {
-               return
-       }
-
-       checksum := mod64kHash(privateKeyBytes)
-       var checksumBytes [2]byte
-       checksumBytes[0] = byte(checksum >> 8)
-       checksumBytes[1] = byte(checksum)
-       _, err = w.Write(checksumBytes[:])
-
-       return
-}
-
-func serializeRSAPrivateKey(w io.Writer, priv *rsa.PrivateKey) error {
-       err := writeBig(w, priv.D)
-       if err != nil {
-               return err
-       }
-       err = writeBig(w, priv.Primes[1])
-       if err != nil {
-               return err
-       }
-       err = writeBig(w, priv.Primes[0])
-       if err != nil {
-               return err
-       }
-       return writeBig(w, priv.Precomputed.Qinv)
-}
-
-func serializeDSAPrivateKey(w io.Writer, priv *dsa.PrivateKey) error {
-       return writeBig(w, priv.X)
-}
-
-func serializeElGamalPrivateKey(w io.Writer, priv *elgamal.PrivateKey) error {
-       return writeBig(w, priv.X)
-}
-
-// Decrypt decrypts an encrypted private key using a passphrase.
-func (pk *PrivateKey) Decrypt(passphrase []byte) error {
-       if !pk.Encrypted {
-               return nil
-       }
-
-       key := make([]byte, pk.cipher.KeySize())
-       pk.s2k(key, passphrase)
-       block := pk.cipher.new(key)
-       cfb := cipher.NewCFBDecrypter(block, pk.iv)
-
-       data := make([]byte, len(pk.encryptedData))
-       cfb.XORKeyStream(data, pk.encryptedData)
-
-       if pk.sha1Checksum {
-               if len(data) < sha1.Size {
-                       return errors.StructuralError("truncated private key 
data")
-               }
-               h := sha1.New()
-               h.Write(data[:len(data)-sha1.Size])
-               sum := h.Sum(nil)
-               if !bytes.Equal(sum, data[len(data)-sha1.Size:]) {
-                       return errors.StructuralError("private key checksum 
failure")
-               }
-               data = data[:len(data)-sha1.Size]
-       } else {
-               if len(data) < 2 {
-                       return errors.StructuralError("truncated private key 
data")
-               }
-               var sum uint16
-               for i := 0; i < len(data)-2; i++ {
-                       sum += uint16(data[i])
-               }
-               if data[len(data)-2] != uint8(sum>>8) ||
-                       data[len(data)-1] != uint8(sum) {
-                       return errors.StructuralError("private key checksum 
failure")
-               }
-               data = data[:len(data)-2]
-       }
-
-       return pk.parsePrivateKey(data)
-}
-
-func (pk *PrivateKey) parsePrivateKey(data []byte) (err error) {
-       switch pk.PublicKey.PubKeyAlgo {
-       case PubKeyAlgoRSA, PubKeyAlgoRSASignOnly, PubKeyAlgoRSAEncryptOnly:
-               return pk.parseRSAPrivateKey(data)
-       case PubKeyAlgoDSA:
-               return pk.parseDSAPrivateKey(data)
-       case PubKeyAlgoElGamal:
-               return pk.parseElGamalPrivateKey(data)
-       }
-       panic("impossible")
-}
-
-func (pk *PrivateKey) parseRSAPrivateKey(data []byte) (err error) {
-       rsaPub := pk.PublicKey.PublicKey.(*rsa.PublicKey)
-       rsaPriv := new(rsa.PrivateKey)
-       rsaPriv.PublicKey = *rsaPub
-
-       buf := bytes.NewBuffer(data)
-       d, _, err := readMPI(buf)
-       if err != nil {
-               return
-       }
-       p, _, err := readMPI(buf)
-       if err != nil {
-               return
-       }
-       q, _, err := readMPI(buf)
-       if err != nil {
-               return
-       }
-
-       rsaPriv.D = new(big.Int).SetBytes(d)
-       rsaPriv.Primes = make([]*big.Int, 2)
-       rsaPriv.Primes[0] = new(big.Int).SetBytes(p)
-       rsaPriv.Primes[1] = new(big.Int).SetBytes(q)
-       if err := rsaPriv.Validate(); err != nil {
-               return err
-       }
-       rsaPriv.Precompute()
-       pk.PrivateKey = rsaPriv
-       pk.Encrypted = false
-       pk.encryptedData = nil
-
-       return nil
-}
-
-func (pk *PrivateKey) parseDSAPrivateKey(data []byte) (err error) {
-       dsaPub := pk.PublicKey.PublicKey.(*dsa.PublicKey)
-       dsaPriv := new(dsa.PrivateKey)
-       dsaPriv.PublicKey = *dsaPub
-
-       buf := bytes.NewBuffer(data)
-       x, _, err := readMPI(buf)
-       if err != nil {
-               return
-       }
-
-       dsaPriv.X = new(big.Int).SetBytes(x)
-       pk.PrivateKey = dsaPriv
-       pk.Encrypted = false
-       pk.encryptedData = nil
-
-       return nil
-}
-
-func (pk *PrivateKey) parseElGamalPrivateKey(data []byte) (err error) {
-       pub := pk.PublicKey.PublicKey.(*elgamal.PublicKey)
-       priv := new(elgamal.PrivateKey)
-       priv.PublicKey = *pub
-
-       buf := bytes.NewBuffer(data)
-       x, _, err := readMPI(buf)
-       if err != nil {
-               return
-       }
-
-       priv.X = new(big.Int).SetBytes(x)
-       pk.PrivateKey = priv
-       pk.Encrypted = false
-       pk.encryptedData = nil
-
-       return nil
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/openpgp/packet/private_key_test.go
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/openpgp/packet/private_key_test.go 
b/cli/vendor/golang.org/x/crypto/openpgp/packet/private_key_test.go
deleted file mode 100644
index 25c8931..0000000
--- a/cli/vendor/golang.org/x/crypto/openpgp/packet/private_key_test.go
+++ /dev/null
@@ -1,69 +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 packet
-
-import (
-       "testing"
-       "time"
-)
-
-var privateKeyTests = []struct {
-       privateKeyHex string
-       creationTime  time.Time
-}{
-       {
-               privKeyRSAHex,
-               time.Unix(0x4cc349a8, 0),
-       },
-       {
-               privKeyElGamalHex,
-               time.Unix(0x4df9ee1a, 0),
-       },
-}
-
-func TestPrivateKeyRead(t *testing.T) {
-       for i, test := range privateKeyTests {
-               packet, err := Read(readerFromHex(test.privateKeyHex))
-               if err != nil {
-                       t.Errorf("#%d: failed to parse: %s", i, err)
-                       continue
-               }
-
-               privKey := packet.(*PrivateKey)
-
-               if !privKey.Encrypted {
-                       t.Errorf("#%d: private key isn't encrypted", i)
-                       continue
-               }
-
-               err = privKey.Decrypt([]byte("wrong password"))
-               if err == nil {
-                       t.Errorf("#%d: decrypted with incorrect key", i)
-                       continue
-               }
-
-               err = privKey.Decrypt([]byte("testing"))
-               if err != nil {
-                       t.Errorf("#%d: failed to decrypt: %s", i, err)
-                       continue
-               }
-
-               if !privKey.CreationTime.Equal(test.creationTime) || 
privKey.Encrypted {
-                       t.Errorf("#%d: bad result, got: %#v", i, privKey)
-               }
-       }
-}
-
-func TestIssue11505(t *testing.T) {
-       // parsing a rsa private key with p or q == 1 used to panic due to a 
divide by zero
-       _, _ = 
Read(readerFromHex("9c3004303030300100000011303030000000000000010130303030303030303030303030303030303030303030303030303030303030303030303030303030303030"))
-}
-
-// Generated with `gpg --export-secret-keys "Test Key 2"`
-const privKeyRSAHex = 
"9501fe044cc349a8010400b70ca0010e98c090008d45d1ee8f9113bd5861fd57b88bacb7c68658747663f1e1a3b5a98f32fda6472373c024b97359cd2efc88ff60f77751adfbf6af5e615e6a1408cfad8bf0cea30b0d5f53aa27ad59089ba9b15b7ebc2777a25d7b436144027e3bcd203909f147d0e332b240cf63d3395f5dfe0df0a6c04e8655af7eacdf0011010001fe0303024a252e7d475fd445607de39a265472aa74a9320ba2dac395faa687e9e0336aeb7e9a7397e511b5afd9dc84557c80ac0f3d4d7bfec5ae16f20d41c8c84a04552a33870b930420e230e179564f6d19bb153145e76c33ae993886c388832b0fa042ddda7f133924f3854481533e0ede31d51278c0519b29abc3bf53da673e13e3e1214b52413d179d7f66deee35cac8eacb060f78379d70ef4af8607e68131ff529439668fc39c9ce6dfef8a5ac234d234802cbfb749a26107db26406213ae5c06d4673253a3cbee1fcbae58d6ab77e38d6e2c0e7c6317c48e054edadb5a40d0d48acb44643d998139a8a66bb820be1f3f80185bc777d14b5954b60effe2448a036d565c6bc0b915fcea518acdd20ab07bc1529f561c58cd044f723109b93f6fd99f876ff891d64306b5d08f48bab59f38695e9109c4dec34013ba3153488ce070268381ba923ee1eb77125b36afcb4347ec3478c
 8f2735b06ef17351d872e577fa95d0c397c88c71b59629a36aec"
-
-// Generated by `gpg --export-secret-keys` followed by a manual extraction of
-// the ElGamal subkey from the packets.
-const privKeyElGamalHex = 
"9d0157044df9ee1a100400eb8e136a58ec39b582629cdadf830bc64e0a94ed8103ca8bb247b27b11b46d1d25297ef4bcc3071785ba0c0bedfe89eabc5287fcc0edf81ab5896c1c8e4b20d27d79813c7aede75320b33eaeeaa586edc00fd1036c10133e6ba0ff277245d0d59d04b2b3421b7244aca5f4a8d870c6f1c1fbff9e1c26699a860b9504f35ca1d700030503fd1ededd3b840795be6d9ccbe3c51ee42e2f39233c432b831ddd9c4e72b7025a819317e47bf94f9ee316d7273b05d5fcf2999c3a681f519b1234bbfa6d359b4752bd9c3f77d6b6456cde152464763414ca130f4e91d91041432f90620fec0e6d6b5116076c2985d5aeaae13be492b9b329efcaf7ee25120159a0a30cd976b42d7afe030302dae7eb80db744d4960c4df930d57e87fe81412eaace9f900e6c839817a614ddb75ba6603b9417c33ea7b6c93967dfa2bcff3fa3c74a5ce2c962db65b03aece14c96cbd0038fc"

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/openpgp/packet/public_key.go
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/openpgp/packet/public_key.go 
b/cli/vendor/golang.org/x/crypto/openpgp/packet/public_key.go
deleted file mode 100644
index 37a6472..0000000
--- a/cli/vendor/golang.org/x/crypto/openpgp/packet/public_key.go
+++ /dev/null
@@ -1,724 +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 packet
-
-import (
-       "bytes"
-       "crypto"
-       "crypto/dsa"
-       "crypto/ecdsa"
-       "crypto/elliptic"
-       "crypto/rsa"
-       "crypto/sha1"
-       _ "crypto/sha256"
-       _ "crypto/sha512"
-       "encoding/binary"
-       "fmt"
-       "hash"
-       "io"
-       "math/big"
-       "strconv"
-       "time"
-
-       "golang.org/x/crypto/openpgp/elgamal"
-       "golang.org/x/crypto/openpgp/errors"
-)
-
-var (
-       // NIST curve P-256
-       oidCurveP256 []byte = []byte{0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 
0x07}
-       // NIST curve P-384
-       oidCurveP384 []byte = []byte{0x2B, 0x81, 0x04, 0x00, 0x22}
-       // NIST curve P-521
-       oidCurveP521 []byte = []byte{0x2B, 0x81, 0x04, 0x00, 0x23}
-)
-
-const maxOIDLength = 8
-
-// ecdsaKey stores the algorithm-specific fields for ECDSA keys.
-// as defined in RFC 6637, Section 9.
-type ecdsaKey struct {
-       // oid contains the OID byte sequence identifying the elliptic curve 
used
-       oid []byte
-       // p contains the elliptic curve point that represents the public key
-       p parsedMPI
-}
-
-// parseOID reads the OID for the curve as defined in RFC 6637, Section 9.
-func parseOID(r io.Reader) (oid []byte, err error) {
-       buf := make([]byte, maxOIDLength)
-       if _, err = readFull(r, buf[:1]); err != nil {
-               return
-       }
-       oidLen := buf[0]
-       if int(oidLen) > len(buf) {
-               err = errors.UnsupportedError("invalid oid length: " + 
strconv.Itoa(int(oidLen)))
-               return
-       }
-       oid = buf[:oidLen]
-       _, err = readFull(r, oid)
-       return
-}
-
-func (f *ecdsaKey) parse(r io.Reader) (err error) {
-       if f.oid, err = parseOID(r); err != nil {
-               return err
-       }
-       f.p.bytes, f.p.bitLength, err = readMPI(r)
-       return
-}
-
-func (f *ecdsaKey) serialize(w io.Writer) (err error) {
-       buf := make([]byte, maxOIDLength+1)
-       buf[0] = byte(len(f.oid))
-       copy(buf[1:], f.oid)
-       if _, err = w.Write(buf[:len(f.oid)+1]); err != nil {
-               return
-       }
-       return writeMPIs(w, f.p)
-}
-
-func (f *ecdsaKey) newECDSA() (*ecdsa.PublicKey, error) {
-       var c elliptic.Curve
-       if bytes.Equal(f.oid, oidCurveP256) {
-               c = elliptic.P256()
-       } else if bytes.Equal(f.oid, oidCurveP384) {
-               c = elliptic.P384()
-       } else if bytes.Equal(f.oid, oidCurveP521) {
-               c = elliptic.P521()
-       } else {
-               return nil, errors.UnsupportedError(fmt.Sprintf("unsupported 
oid: %x", f.oid))
-       }
-       x, y := elliptic.Unmarshal(c, f.p.bytes)
-       if x == nil {
-               return nil, errors.UnsupportedError("failed to parse EC point")
-       }
-       return &ecdsa.PublicKey{Curve: c, X: x, Y: y}, nil
-}
-
-func (f *ecdsaKey) byteLen() int {
-       return 1 + len(f.oid) + 2 + len(f.p.bytes)
-}
-
-type kdfHashFunction byte
-type kdfAlgorithm byte
-
-// ecdhKdf stores key derivation function parameters
-// used for ECDH encryption. See RFC 6637, Section 9.
-type ecdhKdf struct {
-       KdfHash kdfHashFunction
-       KdfAlgo kdfAlgorithm
-}
-
-func (f *ecdhKdf) parse(r io.Reader) (err error) {
-       buf := make([]byte, 1)
-       if _, err = readFull(r, buf); err != nil {
-               return
-       }
-       kdfLen := int(buf[0])
-       if kdfLen < 3 {
-               return errors.UnsupportedError("Unsupported ECDH KDF length: " 
+ strconv.Itoa(kdfLen))
-       }
-       buf = make([]byte, kdfLen)
-       if _, err = readFull(r, buf); err != nil {
-               return
-       }
-       reserved := int(buf[0])
-       f.KdfHash = kdfHashFunction(buf[1])
-       f.KdfAlgo = kdfAlgorithm(buf[2])
-       if reserved != 0x01 {
-               return errors.UnsupportedError("Unsupported KDF reserved field: 
" + strconv.Itoa(reserved))
-       }
-       return
-}
-
-func (f *ecdhKdf) serialize(w io.Writer) (err error) {
-       buf := make([]byte, 4)
-       // See RFC 6637, Section 9, Algorithm-Specific Fields for ECDH keys.
-       buf[0] = byte(0x03) // Length of the following fields
-       buf[1] = byte(0x01) // Reserved for future extensions, must be 1 for now
-       buf[2] = byte(f.KdfHash)
-       buf[3] = byte(f.KdfAlgo)
-       _, err = w.Write(buf[:])
-       return
-}
-
-func (f *ecdhKdf) byteLen() int {
-       return 4
-}
-
-// PublicKey represents an OpenPGP public key. See RFC 4880, section 5.5.2.
-type PublicKey struct {
-       CreationTime time.Time
-       PubKeyAlgo   PublicKeyAlgorithm
-       PublicKey    interface{} // *rsa.PublicKey, *dsa.PublicKey or 
*ecdsa.PublicKey
-       Fingerprint  [20]byte
-       KeyId        uint64
-       IsSubkey     bool
-
-       n, e, p, q, g, y parsedMPI
-
-       // RFC 6637 fields
-       ec   *ecdsaKey
-       ecdh *ecdhKdf
-}
-
-// signingKey provides a convenient abstraction over signature verification
-// for v3 and v4 public keys.
-type signingKey interface {
-       SerializeSignaturePrefix(io.Writer)
-       serializeWithoutHeaders(io.Writer) error
-}
-
-func fromBig(n *big.Int) parsedMPI {
-       return parsedMPI{
-               bytes:     n.Bytes(),
-               bitLength: uint16(n.BitLen()),
-       }
-}
-
-// NewRSAPublicKey returns a PublicKey that wraps the given rsa.PublicKey.
-func NewRSAPublicKey(creationTime time.Time, pub *rsa.PublicKey) *PublicKey {
-       pk := &PublicKey{
-               CreationTime: creationTime,
-               PubKeyAlgo:   PubKeyAlgoRSA,
-               PublicKey:    pub,
-               n:            fromBig(pub.N),
-               e:            fromBig(big.NewInt(int64(pub.E))),
-       }
-
-       pk.setFingerPrintAndKeyId()
-       return pk
-}
-
-// NewDSAPublicKey returns a PublicKey that wraps the given dsa.PublicKey.
-func NewDSAPublicKey(creationTime time.Time, pub *dsa.PublicKey) *PublicKey {
-       pk := &PublicKey{
-               CreationTime: creationTime,
-               PubKeyAlgo:   PubKeyAlgoDSA,
-               PublicKey:    pub,
-               p:            fromBig(pub.P),
-               q:            fromBig(pub.Q),
-               g:            fromBig(pub.G),
-               y:            fromBig(pub.Y),
-       }
-
-       pk.setFingerPrintAndKeyId()
-       return pk
-}
-
-// NewElGamalPublicKey returns a PublicKey that wraps the given 
elgamal.PublicKey.
-func NewElGamalPublicKey(creationTime time.Time, pub *elgamal.PublicKey) 
*PublicKey {
-       pk := &PublicKey{
-               CreationTime: creationTime,
-               PubKeyAlgo:   PubKeyAlgoElGamal,
-               PublicKey:    pub,
-               p:            fromBig(pub.P),
-               g:            fromBig(pub.G),
-               y:            fromBig(pub.Y),
-       }
-
-       pk.setFingerPrintAndKeyId()
-       return pk
-}
-
-func (pk *PublicKey) parse(r io.Reader) (err error) {
-       // RFC 4880, section 5.5.2
-       var buf [6]byte
-       _, err = readFull(r, buf[:])
-       if err != nil {
-               return
-       }
-       if buf[0] != 4 {
-               return errors.UnsupportedError("public key version")
-       }
-       pk.CreationTime = 
time.Unix(int64(uint32(buf[1])<<24|uint32(buf[2])<<16|uint32(buf[3])<<8|uint32(buf[4])),
 0)
-       pk.PubKeyAlgo = PublicKeyAlgorithm(buf[5])
-       switch pk.PubKeyAlgo {
-       case PubKeyAlgoRSA, PubKeyAlgoRSAEncryptOnly, PubKeyAlgoRSASignOnly:
-               err = pk.parseRSA(r)
-       case PubKeyAlgoDSA:
-               err = pk.parseDSA(r)
-       case PubKeyAlgoElGamal:
-               err = pk.parseElGamal(r)
-       case PubKeyAlgoECDSA:
-               pk.ec = new(ecdsaKey)
-               if err = pk.ec.parse(r); err != nil {
-                       return err
-               }
-               pk.PublicKey, err = pk.ec.newECDSA()
-       case PubKeyAlgoECDH:
-               pk.ec = new(ecdsaKey)
-               if err = pk.ec.parse(r); err != nil {
-                       return
-               }
-               pk.ecdh = new(ecdhKdf)
-               if err = pk.ecdh.parse(r); err != nil {
-                       return
-               }
-               // The ECDH key is stored in an ecdsa.PublicKey for convenience.
-               pk.PublicKey, err = pk.ec.newECDSA()
-       default:
-               err = errors.UnsupportedError("public key type: " + 
strconv.Itoa(int(pk.PubKeyAlgo)))
-       }
-       if err != nil {
-               return
-       }
-
-       pk.setFingerPrintAndKeyId()
-       return
-}
-
-func (pk *PublicKey) setFingerPrintAndKeyId() {
-       // RFC 4880, section 12.2
-       fingerPrint := sha1.New()
-       pk.SerializeSignaturePrefix(fingerPrint)
-       pk.serializeWithoutHeaders(fingerPrint)
-       copy(pk.Fingerprint[:], fingerPrint.Sum(nil))
-       pk.KeyId = binary.BigEndian.Uint64(pk.Fingerprint[12:20])
-}
-
-// parseRSA parses RSA public key material from the given Reader. See RFC 4880,
-// section 5.5.2.
-func (pk *PublicKey) parseRSA(r io.Reader) (err error) {
-       pk.n.bytes, pk.n.bitLength, err = readMPI(r)
-       if err != nil {
-               return
-       }
-       pk.e.bytes, pk.e.bitLength, err = readMPI(r)
-       if err != nil {
-               return
-       }
-
-       if len(pk.e.bytes) > 3 {
-               err = errors.UnsupportedError("large public exponent")
-               return
-       }
-       rsa := &rsa.PublicKey{
-               N: new(big.Int).SetBytes(pk.n.bytes),
-               E: 0,
-       }
-       for i := 0; i < len(pk.e.bytes); i++ {
-               rsa.E <<= 8
-               rsa.E |= int(pk.e.bytes[i])
-       }
-       pk.PublicKey = rsa
-       return
-}
-
-// parseDSA parses DSA public key material from the given Reader. See RFC 4880,
-// section 5.5.2.
-func (pk *PublicKey) parseDSA(r io.Reader) (err error) {
-       pk.p.bytes, pk.p.bitLength, err = readMPI(r)
-       if err != nil {
-               return
-       }
-       pk.q.bytes, pk.q.bitLength, err = readMPI(r)
-       if err != nil {
-               return
-       }
-       pk.g.bytes, pk.g.bitLength, err = readMPI(r)
-       if err != nil {
-               return
-       }
-       pk.y.bytes, pk.y.bitLength, err = readMPI(r)
-       if err != nil {
-               return
-       }
-
-       dsa := new(dsa.PublicKey)
-       dsa.P = new(big.Int).SetBytes(pk.p.bytes)
-       dsa.Q = new(big.Int).SetBytes(pk.q.bytes)
-       dsa.G = new(big.Int).SetBytes(pk.g.bytes)
-       dsa.Y = new(big.Int).SetBytes(pk.y.bytes)
-       pk.PublicKey = dsa
-       return
-}
-
-// parseElGamal parses ElGamal public key material from the given Reader. See
-// RFC 4880, section 5.5.2.
-func (pk *PublicKey) parseElGamal(r io.Reader) (err error) {
-       pk.p.bytes, pk.p.bitLength, err = readMPI(r)
-       if err != nil {
-               return
-       }
-       pk.g.bytes, pk.g.bitLength, err = readMPI(r)
-       if err != nil {
-               return
-       }
-       pk.y.bytes, pk.y.bitLength, err = readMPI(r)
-       if err != nil {
-               return
-       }
-
-       elgamal := new(elgamal.PublicKey)
-       elgamal.P = new(big.Int).SetBytes(pk.p.bytes)
-       elgamal.G = new(big.Int).SetBytes(pk.g.bytes)
-       elgamal.Y = new(big.Int).SetBytes(pk.y.bytes)
-       pk.PublicKey = elgamal
-       return
-}
-
-// SerializeSignaturePrefix writes the prefix for this public key to the given 
Writer.
-// The prefix is used when calculating a signature over this public key. See
-// RFC 4880, section 5.2.4.
-func (pk *PublicKey) SerializeSignaturePrefix(h io.Writer) {
-       var pLength uint16
-       switch pk.PubKeyAlgo {
-       case PubKeyAlgoRSA, PubKeyAlgoRSAEncryptOnly, PubKeyAlgoRSASignOnly:
-               pLength += 2 + uint16(len(pk.n.bytes))
-               pLength += 2 + uint16(len(pk.e.bytes))
-       case PubKeyAlgoDSA:
-               pLength += 2 + uint16(len(pk.p.bytes))
-               pLength += 2 + uint16(len(pk.q.bytes))
-               pLength += 2 + uint16(len(pk.g.bytes))
-               pLength += 2 + uint16(len(pk.y.bytes))
-       case PubKeyAlgoElGamal:
-               pLength += 2 + uint16(len(pk.p.bytes))
-               pLength += 2 + uint16(len(pk.g.bytes))
-               pLength += 2 + uint16(len(pk.y.bytes))
-       case PubKeyAlgoECDSA:
-               pLength += uint16(pk.ec.byteLen())
-       case PubKeyAlgoECDH:
-               pLength += uint16(pk.ec.byteLen())
-               pLength += uint16(pk.ecdh.byteLen())
-       default:
-               panic("unknown public key algorithm")
-       }
-       pLength += 6
-       h.Write([]byte{0x99, byte(pLength >> 8), byte(pLength)})
-       return
-}
-
-func (pk *PublicKey) Serialize(w io.Writer) (err error) {
-       length := 6 // 6 byte header
-
-       switch pk.PubKeyAlgo {
-       case PubKeyAlgoRSA, PubKeyAlgoRSAEncryptOnly, PubKeyAlgoRSASignOnly:
-               length += 2 + len(pk.n.bytes)
-               length += 2 + len(pk.e.bytes)
-       case PubKeyAlgoDSA:
-               length += 2 + len(pk.p.bytes)
-               length += 2 + len(pk.q.bytes)
-               length += 2 + len(pk.g.bytes)
-               length += 2 + len(pk.y.bytes)
-       case PubKeyAlgoElGamal:
-               length += 2 + len(pk.p.bytes)
-               length += 2 + len(pk.g.bytes)
-               length += 2 + len(pk.y.bytes)
-       case PubKeyAlgoECDSA:
-               length += pk.ec.byteLen()
-       case PubKeyAlgoECDH:
-               length += pk.ec.byteLen()
-               length += pk.ecdh.byteLen()
-       default:
-               panic("unknown public key algorithm")
-       }
-
-       packetType := packetTypePublicKey
-       if pk.IsSubkey {
-               packetType = packetTypePublicSubkey
-       }
-       err = serializeHeader(w, packetType, length)
-       if err != nil {
-               return
-       }
-       return pk.serializeWithoutHeaders(w)
-}
-
-// serializeWithoutHeaders marshals the PublicKey to w in the form of an
-// OpenPGP public key packet, not including the packet header.
-func (pk *PublicKey) serializeWithoutHeaders(w io.Writer) (err error) {
-       var buf [6]byte
-       buf[0] = 4
-       t := uint32(pk.CreationTime.Unix())
-       buf[1] = byte(t >> 24)
-       buf[2] = byte(t >> 16)
-       buf[3] = byte(t >> 8)
-       buf[4] = byte(t)
-       buf[5] = byte(pk.PubKeyAlgo)
-
-       _, err = w.Write(buf[:])
-       if err != nil {
-               return
-       }
-
-       switch pk.PubKeyAlgo {
-       case PubKeyAlgoRSA, PubKeyAlgoRSAEncryptOnly, PubKeyAlgoRSASignOnly:
-               return writeMPIs(w, pk.n, pk.e)
-       case PubKeyAlgoDSA:
-               return writeMPIs(w, pk.p, pk.q, pk.g, pk.y)
-       case PubKeyAlgoElGamal:
-               return writeMPIs(w, pk.p, pk.g, pk.y)
-       case PubKeyAlgoECDSA:
-               return pk.ec.serialize(w)
-       case PubKeyAlgoECDH:
-               if err = pk.ec.serialize(w); err != nil {
-                       return
-               }
-               return pk.ecdh.serialize(w)
-       }
-       return errors.InvalidArgumentError("bad public-key algorithm")
-}
-
-// CanSign returns true iff this public key can generate signatures
-func (pk *PublicKey) CanSign() bool {
-       return pk.PubKeyAlgo != PubKeyAlgoRSAEncryptOnly && pk.PubKeyAlgo != 
PubKeyAlgoElGamal
-}
-
-// VerifySignature returns nil iff sig is a valid signature, made by this
-// public key, of the data hashed into signed. signed is mutated by this call.
-func (pk *PublicKey) VerifySignature(signed hash.Hash, sig *Signature) (err 
error) {
-       if !pk.CanSign() {
-               return errors.InvalidArgumentError("public key cannot generate 
signatures")
-       }
-
-       signed.Write(sig.HashSuffix)
-       hashBytes := signed.Sum(nil)
-
-       if hashBytes[0] != sig.HashTag[0] || hashBytes[1] != sig.HashTag[1] {
-               return errors.SignatureError("hash tag doesn't match")
-       }
-
-       if pk.PubKeyAlgo != sig.PubKeyAlgo {
-               return errors.InvalidArgumentError("public key and signature 
use different algorithms")
-       }
-
-       switch pk.PubKeyAlgo {
-       case PubKeyAlgoRSA, PubKeyAlgoRSASignOnly:
-               rsaPublicKey, _ := pk.PublicKey.(*rsa.PublicKey)
-               err = rsa.VerifyPKCS1v15(rsaPublicKey, sig.Hash, hashBytes, 
sig.RSASignature.bytes)
-               if err != nil {
-                       return errors.SignatureError("RSA verification failure")
-               }
-               return nil
-       case PubKeyAlgoDSA:
-               dsaPublicKey, _ := pk.PublicKey.(*dsa.PublicKey)
-               // Need to truncate hashBytes to match FIPS 186-3 section 4.6.
-               subgroupSize := (dsaPublicKey.Q.BitLen() + 7) / 8
-               if len(hashBytes) > subgroupSize {
-                       hashBytes = hashBytes[:subgroupSize]
-               }
-               if !dsa.Verify(dsaPublicKey, hashBytes, 
new(big.Int).SetBytes(sig.DSASigR.bytes), 
new(big.Int).SetBytes(sig.DSASigS.bytes)) {
-                       return errors.SignatureError("DSA verification failure")
-               }
-               return nil
-       case PubKeyAlgoECDSA:
-               ecdsaPublicKey := pk.PublicKey.(*ecdsa.PublicKey)
-               if !ecdsa.Verify(ecdsaPublicKey, hashBytes, 
new(big.Int).SetBytes(sig.ECDSASigR.bytes), 
new(big.Int).SetBytes(sig.ECDSASigS.bytes)) {
-                       return errors.SignatureError("ECDSA verification 
failure")
-               }
-               return nil
-       default:
-               return errors.SignatureError("Unsupported public key algorithm 
used in signature")
-       }
-       panic("unreachable")
-}
-
-// VerifySignatureV3 returns nil iff sig is a valid signature, made by this
-// public key, of the data hashed into signed. signed is mutated by this call.
-func (pk *PublicKey) VerifySignatureV3(signed hash.Hash, sig *SignatureV3) 
(err error) {
-       if !pk.CanSign() {
-               return errors.InvalidArgumentError("public key cannot generate 
signatures")
-       }
-
-       suffix := make([]byte, 5)
-       suffix[0] = byte(sig.SigType)
-       binary.BigEndian.PutUint32(suffix[1:], uint32(sig.CreationTime.Unix()))
-       signed.Write(suffix)
-       hashBytes := signed.Sum(nil)
-
-       if hashBytes[0] != sig.HashTag[0] || hashBytes[1] != sig.HashTag[1] {
-               return errors.SignatureError("hash tag doesn't match")
-       }
-
-       if pk.PubKeyAlgo != sig.PubKeyAlgo {
-               return errors.InvalidArgumentError("public key and signature 
use different algorithms")
-       }
-
-       switch pk.PubKeyAlgo {
-       case PubKeyAlgoRSA, PubKeyAlgoRSASignOnly:
-               rsaPublicKey := pk.PublicKey.(*rsa.PublicKey)
-               if err = rsa.VerifyPKCS1v15(rsaPublicKey, sig.Hash, hashBytes, 
sig.RSASignature.bytes); err != nil {
-                       return errors.SignatureError("RSA verification failure")
-               }
-               return
-       case PubKeyAlgoDSA:
-               dsaPublicKey := pk.PublicKey.(*dsa.PublicKey)
-               // Need to truncate hashBytes to match FIPS 186-3 section 4.6.
-               subgroupSize := (dsaPublicKey.Q.BitLen() + 7) / 8
-               if len(hashBytes) > subgroupSize {
-                       hashBytes = hashBytes[:subgroupSize]
-               }
-               if !dsa.Verify(dsaPublicKey, hashBytes, 
new(big.Int).SetBytes(sig.DSASigR.bytes), 
new(big.Int).SetBytes(sig.DSASigS.bytes)) {
-                       return errors.SignatureError("DSA verification failure")
-               }
-               return nil
-       default:
-               panic("shouldn't happen")
-       }
-       panic("unreachable")
-}
-
-// keySignatureHash returns a Hash of the message that needs to be signed for
-// pk to assert a subkey relationship to signed.
-func keySignatureHash(pk, signed signingKey, hashFunc crypto.Hash) (h 
hash.Hash, err error) {
-       if !hashFunc.Available() {
-               return nil, errors.UnsupportedError("hash function")
-       }
-       h = hashFunc.New()
-
-       // RFC 4880, section 5.2.4
-       pk.SerializeSignaturePrefix(h)
-       pk.serializeWithoutHeaders(h)
-       signed.SerializeSignaturePrefix(h)
-       signed.serializeWithoutHeaders(h)
-       return
-}
-
-// VerifyKeySignature returns nil iff sig is a valid signature, made by this
-// public key, of signed.
-func (pk *PublicKey) VerifyKeySignature(signed *PublicKey, sig *Signature) 
error {
-       h, err := keySignatureHash(pk, signed, sig.Hash)
-       if err != nil {
-               return err
-       }
-       if err = pk.VerifySignature(h, sig); err != nil {
-               return err
-       }
-
-       if sig.FlagSign {
-               // Signing subkeys must be cross-signed. See
-               // https://www.gnupg.org/faq/subkey-cross-certify.html.
-               if sig.EmbeddedSignature == nil {
-                       return errors.StructuralError("signing subkey is 
missing cross-signature")
-               }
-               // Verify the cross-signature. This is calculated over the same
-               // data as the main signature, so we cannot just recursively
-               // call signed.VerifyKeySignature(...)
-               if h, err = keySignatureHash(pk, signed, 
sig.EmbeddedSignature.Hash); err != nil {
-                       return errors.StructuralError("error while hashing for 
cross-signature: " + err.Error())
-               }
-               if err := signed.VerifySignature(h, sig.EmbeddedSignature); err 
!= nil {
-                       return errors.StructuralError("error while verifying 
cross-signature: " + err.Error())
-               }
-       }
-
-       return nil
-}
-
-func keyRevocationHash(pk signingKey, hashFunc crypto.Hash) (h hash.Hash, err 
error) {
-       if !hashFunc.Available() {
-               return nil, errors.UnsupportedError("hash function")
-       }
-       h = hashFunc.New()
-
-       // RFC 4880, section 5.2.4
-       pk.SerializeSignaturePrefix(h)
-       pk.serializeWithoutHeaders(h)
-
-       return
-}
-
-// VerifyRevocationSignature returns nil iff sig is a valid signature, made by 
this
-// public key.
-func (pk *PublicKey) VerifyRevocationSignature(sig *Signature) (err error) {
-       h, err := keyRevocationHash(pk, sig.Hash)
-       if err != nil {
-               return err
-       }
-       return pk.VerifySignature(h, sig)
-}
-
-// userIdSignatureHash returns a Hash of the message that needs to be signed
-// to assert that pk is a valid key for id.
-func userIdSignatureHash(id string, pk *PublicKey, hashFunc crypto.Hash) (h 
hash.Hash, err error) {
-       if !hashFunc.Available() {
-               return nil, errors.UnsupportedError("hash function")
-       }
-       h = hashFunc.New()
-
-       // RFC 4880, section 5.2.4
-       pk.SerializeSignaturePrefix(h)
-       pk.serializeWithoutHeaders(h)
-
-       var buf [5]byte
-       buf[0] = 0xb4
-       buf[1] = byte(len(id) >> 24)
-       buf[2] = byte(len(id) >> 16)
-       buf[3] = byte(len(id) >> 8)
-       buf[4] = byte(len(id))
-       h.Write(buf[:])
-       h.Write([]byte(id))
-
-       return
-}
-
-// VerifyUserIdSignature returns nil iff sig is a valid signature, made by this
-// public key, that id is the identity of pub.
-func (pk *PublicKey) VerifyUserIdSignature(id string, pub *PublicKey, sig 
*Signature) (err error) {
-       h, err := userIdSignatureHash(id, pub, sig.Hash)
-       if err != nil {
-               return err
-       }
-       return pk.VerifySignature(h, sig)
-}
-
-// VerifyUserIdSignatureV3 returns nil iff sig is a valid signature, made by 
this
-// public key, that id is the identity of pub.
-func (pk *PublicKey) VerifyUserIdSignatureV3(id string, pub *PublicKey, sig 
*SignatureV3) (err error) {
-       h, err := userIdSignatureV3Hash(id, pub, sig.Hash)
-       if err != nil {
-               return err
-       }
-       return pk.VerifySignatureV3(h, sig)
-}
-
-// KeyIdString returns the public key's fingerprint in capital hex
-// (e.g. "6C7EE1B8621CC013").
-func (pk *PublicKey) KeyIdString() string {
-       return fmt.Sprintf("%X", pk.Fingerprint[12:20])
-}
-
-// KeyIdShortString returns the short form of public key's fingerprint
-// in capital hex, as shown by gpg --list-keys (e.g. "621CC013").
-func (pk *PublicKey) KeyIdShortString() string {
-       return fmt.Sprintf("%X", pk.Fingerprint[16:20])
-}
-
-// A parsedMPI is used to store the contents of a big integer, along with the
-// bit length that was specified in the original input. This allows the MPI to
-// be reserialized exactly.
-type parsedMPI struct {
-       bytes     []byte
-       bitLength uint16
-}
-
-// writeMPIs is a utility function for serializing several big integers to the
-// given Writer.
-func writeMPIs(w io.Writer, mpis ...parsedMPI) (err error) {
-       for _, mpi := range mpis {
-               err = writeMPI(w, mpi.bitLength, mpi.bytes)
-               if err != nil {
-                       return
-               }
-       }
-       return
-}
-
-// BitLength returns the bit length for the given public key.
-func (pk *PublicKey) BitLength() (bitLength uint16, err error) {
-       switch pk.PubKeyAlgo {
-       case PubKeyAlgoRSA, PubKeyAlgoRSAEncryptOnly, PubKeyAlgoRSASignOnly:
-               bitLength = pk.n.bitLength
-       case PubKeyAlgoDSA:
-               bitLength = pk.p.bitLength
-       case PubKeyAlgoElGamal:
-               bitLength = pk.p.bitLength
-       default:
-               err = errors.InvalidArgumentError("bad public-key algorithm")
-       }
-       return
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/openpgp/packet/public_key_test.go
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/openpgp/packet/public_key_test.go 
b/cli/vendor/golang.org/x/crypto/openpgp/packet/public_key_test.go
deleted file mode 100644
index 7ad7d91..0000000
--- a/cli/vendor/golang.org/x/crypto/openpgp/packet/public_key_test.go
+++ /dev/null
@@ -1,202 +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 packet
-
-import (
-       "bytes"
-       "encoding/hex"
-       "testing"
-       "time"
-)
-
-var pubKeyTests = []struct {
-       hexData        string
-       hexFingerprint string
-       creationTime   time.Time
-       pubKeyAlgo     PublicKeyAlgorithm
-       keyId          uint64
-       keyIdString    string
-       keyIdShort     string
-}{
-       {rsaPkDataHex, rsaFingerprintHex, time.Unix(0x4d3c5c10, 0), 
PubKeyAlgoRSA, 0xa34d7e18c20c31bb, "A34D7E18C20C31BB", "C20C31BB"},
-       {dsaPkDataHex, dsaFingerprintHex, time.Unix(0x4d432f89, 0), 
PubKeyAlgoDSA, 0x8e8fbe54062f19ed, "8E8FBE54062F19ED", "062F19ED"},
-       {ecdsaPkDataHex, ecdsaFingerprintHex, time.Unix(0x5071c294, 0), 
PubKeyAlgoECDSA, 0x43fe956c542ca00b, "43FE956C542CA00B", "542CA00B"},
-}
-
-func TestPublicKeyRead(t *testing.T) {
-       for i, test := range pubKeyTests {
-               packet, err := Read(readerFromHex(test.hexData))
-               if err != nil {
-                       t.Errorf("#%d: Read error: %s", i, err)
-                       continue
-               }
-               pk, ok := packet.(*PublicKey)
-               if !ok {
-                       t.Errorf("#%d: failed to parse, got: %#v", i, packet)
-                       continue
-               }
-               if pk.PubKeyAlgo != test.pubKeyAlgo {
-                       t.Errorf("#%d: bad public key algorithm got:%x 
want:%x", i, pk.PubKeyAlgo, test.pubKeyAlgo)
-               }
-               if !pk.CreationTime.Equal(test.creationTime) {
-                       t.Errorf("#%d: bad creation time got:%v want:%v", i, 
pk.CreationTime, test.creationTime)
-               }
-               expectedFingerprint, _ := hex.DecodeString(test.hexFingerprint)
-               if !bytes.Equal(expectedFingerprint, pk.Fingerprint[:]) {
-                       t.Errorf("#%d: bad fingerprint got:%x want:%x", i, 
pk.Fingerprint[:], expectedFingerprint)
-               }
-               if pk.KeyId != test.keyId {
-                       t.Errorf("#%d: bad keyid got:%x want:%x", i, pk.KeyId, 
test.keyId)
-               }
-               if g, e := pk.KeyIdString(), test.keyIdString; g != e {
-                       t.Errorf("#%d: bad KeyIdString got:%q want:%q", i, g, e)
-               }
-               if g, e := pk.KeyIdShortString(), test.keyIdShort; g != e {
-                       t.Errorf("#%d: bad KeyIdShortString got:%q want:%q", i, 
g, e)
-               }
-       }
-}
-
-func TestPublicKeySerialize(t *testing.T) {
-       for i, test := range pubKeyTests {
-               packet, err := Read(readerFromHex(test.hexData))
-               if err != nil {
-                       t.Errorf("#%d: Read error: %s", i, err)
-                       continue
-               }
-               pk, ok := packet.(*PublicKey)
-               if !ok {
-                       t.Errorf("#%d: failed to parse, got: %#v", i, packet)
-                       continue
-               }
-               serializeBuf := bytes.NewBuffer(nil)
-               err = pk.Serialize(serializeBuf)
-               if err != nil {
-                       t.Errorf("#%d: failed to serialize: %s", i, err)
-                       continue
-               }
-
-               packet, err = Read(serializeBuf)
-               if err != nil {
-                       t.Errorf("#%d: Read error (from serialized data): %s", 
i, err)
-                       continue
-               }
-               pk, ok = packet.(*PublicKey)
-               if !ok {
-                       t.Errorf("#%d: failed to parse serialized data, got: 
%#v", i, packet)
-                       continue
-               }
-       }
-}
-
-func TestEcc384Serialize(t *testing.T) {
-       r := readerFromHex(ecc384PubHex)
-       var w bytes.Buffer
-       for i := 0; i < 2; i++ {
-               // Public key
-               p, err := Read(r)
-               if err != nil {
-                       t.Error(err)
-               }
-               pubkey := p.(*PublicKey)
-               if !bytes.Equal(pubkey.ec.oid, []byte{0x2b, 0x81, 0x04, 0x00, 
0x22}) {
-                       t.Errorf("Unexpected pubkey OID: %x", pubkey.ec.oid)
-               }
-               if !bytes.Equal(pubkey.ec.p.bytes[:5], []byte{0x04, 0xf6, 0xb8, 
0xc5, 0xac}) {
-                       t.Errorf("Unexpected pubkey P[:5]: %x", 
pubkey.ec.p.bytes)
-               }
-               if pubkey.KeyId != 0x098033880F54719F {
-                       t.Errorf("Unexpected pubkey ID: %x", pubkey.KeyId)
-               }
-               err = pubkey.Serialize(&w)
-               if err != nil {
-                       t.Error(err)
-               }
-               // User ID
-               p, err = Read(r)
-               if err != nil {
-                       t.Error(err)
-               }
-               uid := p.(*UserId)
-               if uid.Id != "ec_dsa_dh_384 <open...@brainhub.org>" {
-                       t.Error("Unexpected UID:", uid.Id)
-               }
-               err = uid.Serialize(&w)
-               if err != nil {
-                       t.Error(err)
-               }
-               // User ID Sig
-               p, err = Read(r)
-               if err != nil {
-                       t.Error(err)
-               }
-               uidSig := p.(*Signature)
-               err = pubkey.VerifyUserIdSignature(uid.Id, pubkey, uidSig)
-               if err != nil {
-                       t.Error(err, ": UID")
-               }
-               err = uidSig.Serialize(&w)
-               if err != nil {
-                       t.Error(err)
-               }
-               // Subkey
-               p, err = Read(r)
-               if err != nil {
-                       t.Error(err)
-               }
-               subkey := p.(*PublicKey)
-               if !bytes.Equal(subkey.ec.oid, []byte{0x2b, 0x81, 0x04, 0x00, 
0x22}) {
-                       t.Errorf("Unexpected subkey OID: %x", subkey.ec.oid)
-               }
-               if !bytes.Equal(subkey.ec.p.bytes[:5], []byte{0x04, 0x2f, 0xaa, 
0x84, 0x02}) {
-                       t.Errorf("Unexpected subkey P[:5]: %x", 
subkey.ec.p.bytes)
-               }
-               if subkey.ecdh.KdfHash != 0x09 {
-                       t.Error("Expected KDF hash function SHA384 (0x09), 
got", subkey.ecdh.KdfHash)
-               }
-               if subkey.ecdh.KdfAlgo != 0x09 {
-                       t.Error("Expected KDF symmetric alg AES256 (0x09), 
got", subkey.ecdh.KdfAlgo)
-               }
-               if subkey.KeyId != 0xAA8B938F9A201946 {
-                       t.Errorf("Unexpected subkey ID: %x", subkey.KeyId)
-               }
-               err = subkey.Serialize(&w)
-               if err != nil {
-                       t.Error(err)
-               }
-               // Subkey Sig
-               p, err = Read(r)
-               if err != nil {
-                       t.Error(err)
-               }
-               subkeySig := p.(*Signature)
-               err = pubkey.VerifyKeySignature(subkey, subkeySig)
-               if err != nil {
-                       t.Error(err)
-               }
-               err = subkeySig.Serialize(&w)
-               if err != nil {
-                       t.Error(err)
-               }
-               // Now read back what we've written again
-               r = bytes.NewBuffer(w.Bytes())
-               w.Reset()
-       }
-}
-
-const rsaFingerprintHex = "5fb74b1d03b1e3cb31bc2f8aa34d7e18c20c31bb"
-
-const rsaPkDataHex = 
"988d044d3c5c10010400b1d13382944bd5aba23a4312968b5095d14f947f600eb478e14a6fcb16b0e0cac764884909c020bc495cfcc39a935387c661507bdb236a0612fb582cac3af9b29cc2c8c70090616c41b662f4da4c1201e195472eb7f4ae1ccbcbf9940fe21d985e379a5563dde5b9a23d35f1cfaa5790da3b79db26f23695107bfaca8e7b5bcd0011010001"
-
-const dsaFingerprintHex = "eece4c094db002103714c63c8e8fbe54062f19ed"
-
-const dsaPkDataHex = 
"9901a2044d432f89110400cd581334f0d7a1e1bdc8b9d6d8c0baf68793632735d2bb0903224cbaa1dfbf35a60ee7a13b92643421e1eb41aa8d79bea19a115a677f6b8ba3c7818ce53a6c2a24a1608bd8b8d6e55c5090cbde09dd26e356267465ae25e69ec8bdd57c7bbb2623e4d73336f73a0a9098f7f16da2e25252130fd694c0e8070c55a812a423ae7f00a0ebf50e70c2f19c3520a551bd4b08d30f23530d3d03ff7d0bf4a53a64a09dc5e6e6e35854b7d70c882b0c60293401958b1bd9e40abec3ea05ba87cf64899299d4bd6aa7f459c201d3fbbd6c82004bdc5e8a9eb8082d12054cc90fa9d4ec251a843236a588bf49552441817436c4f43326966fe85447d4e6d0acf8fa1ef0f014730770603ad7634c3088dc52501c237328417c31c89ed70400b2f1a98b0bf42f11fefc430704bebbaa41d9f355600c3facee1e490f64208e0e094ea55e3a598a219a58500bf78ac677b670a14f4e47e9cf8eab4f368cc1ddcaa18cc59309d4cc62dd4f680e73e6cc3e1ce87a84d0925efbcb26c575c093fc42eecf45135fabf6403a25c2016e1774c0484e440a18319072c617cc97ac0a3bb0"
-
-const ecdsaFingerprintHex = "9892270b38b8980b05c8d56d43fe956c542ca00b"
-
-const ecdsaPkDataHex = 
"9893045071c29413052b8104002304230401f4867769cedfa52c325018896245443968e52e51d0c2df8d939949cb5b330f2921711fbee1c9b9dddb95d15cb0255e99badeddda7cc23d9ddcaacbc290969b9f24019375d61c2e4e3b36953a28d8b2bc95f78c3f1d592fb24499be348656a7b17e3963187b4361afe497bc5f9f81213f04069f8e1fb9e6a6290ae295ca1a92b894396cb4"
-
-// Source: 
https://sites.google.com/site/brainhub/pgpecckeys#TOC-ECC-NIST-P-384-key
-const ecc384PubHex = 
`99006f044d53059213052b81040022030304f6b8c5aced5b84ef9f4a209db2e4a9dfb70d28cb8c10ecd57674a9fa5a67389942b62d5e51367df4c7bfd3f8e500feecf07ed265a621a8ebbbe53e947ec78c677eba143bd1533c2b350e1c29f82313e1e1108eba063be1e64b10e6950e799c2db42465635f6473615f64685f333834203c6f70656e70677040627261696e6875622e6f72673e8900cb04101309005305024d530592301480000000002000077072656665727265642d656d61696c2d656e636f64696e67407067702e636f6d7067706d696d65040b090807021901051b03000000021602051e010000000415090a08000a0910098033880f54719fca2b0180aa37350968bd5f115afd8ce7bc7b103822152dbff06d0afcda835329510905b98cb469ba208faab87c7412b799e7b633017f58364ea480e8a1a3f253a0c5f22c446e8be9a9fce6210136ee30811abbd49139de28b5bdf8dc36d06ae748579e9ff503b90073044d53059212052b810400220303042faa84024a20b6735c4897efa5bfb41bf85b7eefeab5ca0cb9ffc8ea04a46acb25534a577694f9e25340a4ab5223a9dd1eda530c8aa2e6718db10d7e672558c7736fe09369ea5739a2a3554bf16d41faa50562f11c6d39bbd5dffb6b9a9ec9180301090989008404181309000c05024
 
d530592051b0c000000000a0910098033880f54719f80970180eee7a6d8fcee41ee4f9289df17f9bcf9d955dca25c583b94336f3a2b2d4986dc5cf417b8d2dc86f741a9e1a6d236c0e3017d1c76575458a0cfb93ae8a2b274fcc65ceecd7a91eec83656ba13219969f06945b48c56bd04152c3a0553c5f2f4bd1267`

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/openpgp/packet/public_key_v3.go
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/openpgp/packet/public_key_v3.go 
b/cli/vendor/golang.org/x/crypto/openpgp/packet/public_key_v3.go
deleted file mode 100644
index 26337f5..0000000
--- a/cli/vendor/golang.org/x/crypto/openpgp/packet/public_key_v3.go
+++ /dev/null
@@ -1,280 +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 packet
-
-import (
-       "crypto"
-       "crypto/md5"
-       "crypto/rsa"
-       "encoding/binary"
-       "fmt"
-       "hash"
-       "io"
-       "math/big"
-       "strconv"
-       "time"
-
-       "golang.org/x/crypto/openpgp/errors"
-)
-
-// PublicKeyV3 represents older, version 3 public keys. These keys are less 
secure and
-// should not be used for signing or encrypting. They are supported here only 
for
-// parsing version 3 key material and validating signatures.
-// See RFC 4880, section 5.5.2.
-type PublicKeyV3 struct {
-       CreationTime time.Time
-       DaysToExpire uint16
-       PubKeyAlgo   PublicKeyAlgorithm
-       PublicKey    *rsa.PublicKey
-       Fingerprint  [16]byte
-       KeyId        uint64
-       IsSubkey     bool
-
-       n, e parsedMPI
-}
-
-// newRSAPublicKeyV3 returns a PublicKey that wraps the given rsa.PublicKey.
-// Included here for testing purposes only. RFC 4880, section 5.5.2:
-// "an implementation MUST NOT generate a V3 key, but MAY accept it."
-func newRSAPublicKeyV3(creationTime time.Time, pub *rsa.PublicKey) 
*PublicKeyV3 {
-       pk := &PublicKeyV3{
-               CreationTime: creationTime,
-               PublicKey:    pub,
-               n:            fromBig(pub.N),
-               e:            fromBig(big.NewInt(int64(pub.E))),
-       }
-
-       pk.setFingerPrintAndKeyId()
-       return pk
-}
-
-func (pk *PublicKeyV3) parse(r io.Reader) (err error) {
-       // RFC 4880, section 5.5.2
-       var buf [8]byte
-       if _, err = readFull(r, buf[:]); err != nil {
-               return
-       }
-       if buf[0] < 2 || buf[0] > 3 {
-               return errors.UnsupportedError("public key version")
-       }
-       pk.CreationTime = 
time.Unix(int64(uint32(buf[1])<<24|uint32(buf[2])<<16|uint32(buf[3])<<8|uint32(buf[4])),
 0)
-       pk.DaysToExpire = binary.BigEndian.Uint16(buf[5:7])
-       pk.PubKeyAlgo = PublicKeyAlgorithm(buf[7])
-       switch pk.PubKeyAlgo {
-       case PubKeyAlgoRSA, PubKeyAlgoRSAEncryptOnly, PubKeyAlgoRSASignOnly:
-               err = pk.parseRSA(r)
-       default:
-               err = errors.UnsupportedError("public key type: " + 
strconv.Itoa(int(pk.PubKeyAlgo)))
-       }
-       if err != nil {
-               return
-       }
-
-       pk.setFingerPrintAndKeyId()
-       return
-}
-
-func (pk *PublicKeyV3) setFingerPrintAndKeyId() {
-       // RFC 4880, section 12.2
-       fingerPrint := md5.New()
-       fingerPrint.Write(pk.n.bytes)
-       fingerPrint.Write(pk.e.bytes)
-       fingerPrint.Sum(pk.Fingerprint[:0])
-       pk.KeyId = binary.BigEndian.Uint64(pk.n.bytes[len(pk.n.bytes)-8:])
-}
-
-// parseRSA parses RSA public key material from the given Reader. See RFC 4880,
-// section 5.5.2.
-func (pk *PublicKeyV3) parseRSA(r io.Reader) (err error) {
-       if pk.n.bytes, pk.n.bitLength, err = readMPI(r); err != nil {
-               return
-       }
-       if pk.e.bytes, pk.e.bitLength, err = readMPI(r); err != nil {
-               return
-       }
-
-       // RFC 4880 Section 12.2 requires the low 8 bytes of the
-       // modulus to form the key id.
-       if len(pk.n.bytes) < 8 {
-               return errors.StructuralError("v3 public key modulus is too 
short")
-       }
-       if len(pk.e.bytes) > 3 {
-               err = errors.UnsupportedError("large public exponent")
-               return
-       }
-       rsa := &rsa.PublicKey{N: new(big.Int).SetBytes(pk.n.bytes)}
-       for i := 0; i < len(pk.e.bytes); i++ {
-               rsa.E <<= 8
-               rsa.E |= int(pk.e.bytes[i])
-       }
-       pk.PublicKey = rsa
-       return
-}
-
-// SerializeSignaturePrefix writes the prefix for this public key to the given 
Writer.
-// The prefix is used when calculating a signature over this public key. See
-// RFC 4880, section 5.2.4.
-func (pk *PublicKeyV3) SerializeSignaturePrefix(w io.Writer) {
-       var pLength uint16
-       switch pk.PubKeyAlgo {
-       case PubKeyAlgoRSA, PubKeyAlgoRSAEncryptOnly, PubKeyAlgoRSASignOnly:
-               pLength += 2 + uint16(len(pk.n.bytes))
-               pLength += 2 + uint16(len(pk.e.bytes))
-       default:
-               panic("unknown public key algorithm")
-       }
-       pLength += 6
-       w.Write([]byte{0x99, byte(pLength >> 8), byte(pLength)})
-       return
-}
-
-func (pk *PublicKeyV3) Serialize(w io.Writer) (err error) {
-       length := 8 // 8 byte header
-
-       switch pk.PubKeyAlgo {
-       case PubKeyAlgoRSA, PubKeyAlgoRSAEncryptOnly, PubKeyAlgoRSASignOnly:
-               length += 2 + len(pk.n.bytes)
-               length += 2 + len(pk.e.bytes)
-       default:
-               panic("unknown public key algorithm")
-       }
-
-       packetType := packetTypePublicKey
-       if pk.IsSubkey {
-               packetType = packetTypePublicSubkey
-       }
-       if err = serializeHeader(w, packetType, length); err != nil {
-               return
-       }
-       return pk.serializeWithoutHeaders(w)
-}
-
-// serializeWithoutHeaders marshals the PublicKey to w in the form of an
-// OpenPGP public key packet, not including the packet header.
-func (pk *PublicKeyV3) serializeWithoutHeaders(w io.Writer) (err error) {
-       var buf [8]byte
-       // Version 3
-       buf[0] = 3
-       // Creation time
-       t := uint32(pk.CreationTime.Unix())
-       buf[1] = byte(t >> 24)
-       buf[2] = byte(t >> 16)
-       buf[3] = byte(t >> 8)
-       buf[4] = byte(t)
-       // Days to expire
-       buf[5] = byte(pk.DaysToExpire >> 8)
-       buf[6] = byte(pk.DaysToExpire)
-       // Public key algorithm
-       buf[7] = byte(pk.PubKeyAlgo)
-
-       if _, err = w.Write(buf[:]); err != nil {
-               return
-       }
-
-       switch pk.PubKeyAlgo {
-       case PubKeyAlgoRSA, PubKeyAlgoRSAEncryptOnly, PubKeyAlgoRSASignOnly:
-               return writeMPIs(w, pk.n, pk.e)
-       }
-       return errors.InvalidArgumentError("bad public-key algorithm")
-}
-
-// CanSign returns true iff this public key can generate signatures
-func (pk *PublicKeyV3) CanSign() bool {
-       return pk.PubKeyAlgo != PubKeyAlgoRSAEncryptOnly
-}
-
-// VerifySignatureV3 returns nil iff sig is a valid signature, made by this
-// public key, of the data hashed into signed. signed is mutated by this call.
-func (pk *PublicKeyV3) VerifySignatureV3(signed hash.Hash, sig *SignatureV3) 
(err error) {
-       if !pk.CanSign() {
-               return errors.InvalidArgumentError("public key cannot generate 
signatures")
-       }
-
-       suffix := make([]byte, 5)
-       suffix[0] = byte(sig.SigType)
-       binary.BigEndian.PutUint32(suffix[1:], uint32(sig.CreationTime.Unix()))
-       signed.Write(suffix)
-       hashBytes := signed.Sum(nil)
-
-       if hashBytes[0] != sig.HashTag[0] || hashBytes[1] != sig.HashTag[1] {
-               return errors.SignatureError("hash tag doesn't match")
-       }
-
-       if pk.PubKeyAlgo != sig.PubKeyAlgo {
-               return errors.InvalidArgumentError("public key and signature 
use different algorithms")
-       }
-
-       switch pk.PubKeyAlgo {
-       case PubKeyAlgoRSA, PubKeyAlgoRSASignOnly:
-               if err = rsa.VerifyPKCS1v15(pk.PublicKey, sig.Hash, hashBytes, 
sig.RSASignature.bytes); err != nil {
-                       return errors.SignatureError("RSA verification failure")
-               }
-               return
-       default:
-               // V3 public keys only support RSA.
-               panic("shouldn't happen")
-       }
-       panic("unreachable")
-}
-
-// VerifyUserIdSignatureV3 returns nil iff sig is a valid signature, made by 
this
-// public key, that id is the identity of pub.
-func (pk *PublicKeyV3) VerifyUserIdSignatureV3(id string, pub *PublicKeyV3, 
sig *SignatureV3) (err error) {
-       h, err := userIdSignatureV3Hash(id, pk, sig.Hash)
-       if err != nil {
-               return err
-       }
-       return pk.VerifySignatureV3(h, sig)
-}
-
-// VerifyKeySignatureV3 returns nil iff sig is a valid signature, made by this
-// public key, of signed.
-func (pk *PublicKeyV3) VerifyKeySignatureV3(signed *PublicKeyV3, sig 
*SignatureV3) (err error) {
-       h, err := keySignatureHash(pk, signed, sig.Hash)
-       if err != nil {
-               return err
-       }
-       return pk.VerifySignatureV3(h, sig)
-}
-
-// userIdSignatureV3Hash returns a Hash of the message that needs to be signed
-// to assert that pk is a valid key for id.
-func userIdSignatureV3Hash(id string, pk signingKey, hfn crypto.Hash) (h 
hash.Hash, err error) {
-       if !hfn.Available() {
-               return nil, errors.UnsupportedError("hash function")
-       }
-       h = hfn.New()
-
-       // RFC 4880, section 5.2.4
-       pk.SerializeSignaturePrefix(h)
-       pk.serializeWithoutHeaders(h)
-
-       h.Write([]byte(id))
-
-       return
-}
-
-// KeyIdString returns the public key's fingerprint in capital hex
-// (e.g. "6C7EE1B8621CC013").
-func (pk *PublicKeyV3) KeyIdString() string {
-       return fmt.Sprintf("%X", pk.KeyId)
-}
-
-// KeyIdShortString returns the short form of public key's fingerprint
-// in capital hex, as shown by gpg --list-keys (e.g. "621CC013").
-func (pk *PublicKeyV3) KeyIdShortString() string {
-       return fmt.Sprintf("%X", pk.KeyId&0xFFFFFFFF)
-}
-
-// BitLength returns the bit length for the given public key.
-func (pk *PublicKeyV3) BitLength() (bitLength uint16, err error) {
-       switch pk.PubKeyAlgo {
-       case PubKeyAlgoRSA, PubKeyAlgoRSAEncryptOnly, PubKeyAlgoRSASignOnly:
-               bitLength = pk.n.bitLength
-       default:
-               err = errors.InvalidArgumentError("bad public-key algorithm")
-       }
-       return
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/openpgp/packet/public_key_v3_test.go
----------------------------------------------------------------------
diff --git 
a/cli/vendor/golang.org/x/crypto/openpgp/packet/public_key_v3_test.go 
b/cli/vendor/golang.org/x/crypto/openpgp/packet/public_key_v3_test.go
deleted file mode 100644
index e064059..0000000
--- a/cli/vendor/golang.org/x/crypto/openpgp/packet/public_key_v3_test.go
+++ /dev/null
@@ -1,82 +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 packet
-
-import (
-       "bytes"
-       "encoding/hex"
-       "testing"
-       "time"
-)
-
-var pubKeyV3Test = struct {
-       hexFingerprint string
-       creationTime   time.Time
-       pubKeyAlgo     PublicKeyAlgorithm
-       keyId          uint64
-       keyIdString    string
-       keyIdShort     string
-}{
-       "103BECF5BD1E837C89D19E98487767F7",
-       time.Unix(779753634, 0),
-       PubKeyAlgoRSA,
-       0xDE0F188A5DA5E3C9,
-       "DE0F188A5DA5E3C9",
-       "5DA5E3C9"}
-
-func TestPublicKeyV3Read(t *testing.T) {
-       i, test := 0, pubKeyV3Test
-       packet, err := Read(v3KeyReader(t))
-       if err != nil {
-               t.Fatalf("#%d: Read error: %s", i, err)
-       }
-       pk, ok := packet.(*PublicKeyV3)
-       if !ok {
-               t.Fatalf("#%d: failed to parse, got: %#v", i, packet)
-       }
-       if pk.PubKeyAlgo != test.pubKeyAlgo {
-               t.Errorf("#%d: bad public key algorithm got:%x want:%x", i, 
pk.PubKeyAlgo, test.pubKeyAlgo)
-       }
-       if !pk.CreationTime.Equal(test.creationTime) {
-               t.Errorf("#%d: bad creation time got:%v want:%v", i, 
pk.CreationTime, test.creationTime)
-       }
-       expectedFingerprint, _ := hex.DecodeString(test.hexFingerprint)
-       if !bytes.Equal(expectedFingerprint, pk.Fingerprint[:]) {
-               t.Errorf("#%d: bad fingerprint got:%x want:%x", i, 
pk.Fingerprint[:], expectedFingerprint)
-       }
-       if pk.KeyId != test.keyId {
-               t.Errorf("#%d: bad keyid got:%x want:%x", i, pk.KeyId, 
test.keyId)
-       }
-       if g, e := pk.KeyIdString(), test.keyIdString; g != e {
-               t.Errorf("#%d: bad KeyIdString got:%q want:%q", i, g, e)
-       }
-       if g, e := pk.KeyIdShortString(), test.keyIdShort; g != e {
-               t.Errorf("#%d: bad KeyIdShortString got:%q want:%q", i, g, e)
-       }
-}
-
-func TestPublicKeyV3Serialize(t *testing.T) {
-       //for i, test := range pubKeyV3Tests {
-       i := 0
-       packet, err := Read(v3KeyReader(t))
-       if err != nil {
-               t.Fatalf("#%d: Read error: %s", i, err)
-       }
-       pk, ok := packet.(*PublicKeyV3)
-       if !ok {
-               t.Fatalf("#%d: failed to parse, got: %#v", i, packet)
-       }
-       var serializeBuf bytes.Buffer
-       if err = pk.Serialize(&serializeBuf); err != nil {
-               t.Fatalf("#%d: failed to serialize: %s", i, err)
-       }
-
-       if packet, err = Read(bytes.NewBuffer(serializeBuf.Bytes())); err != 
nil {
-               t.Fatalf("#%d: Read error (from serialized data): %s", i, err)
-       }
-       if pk, ok = packet.(*PublicKeyV3); !ok {
-               t.Fatalf("#%d: failed to parse serialized data, got: %#v", i, 
packet)
-       }
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/openpgp/packet/reader.go
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/openpgp/packet/reader.go 
b/cli/vendor/golang.org/x/crypto/openpgp/packet/reader.go
deleted file mode 100644
index 34bc7c6..0000000
--- a/cli/vendor/golang.org/x/crypto/openpgp/packet/reader.go
+++ /dev/null
@@ -1,76 +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 packet
-
-import (
-       "golang.org/x/crypto/openpgp/errors"
-       "io"
-)
-
-// Reader reads packets from an io.Reader and allows packets to be 'unread' so
-// that they result from the next call to Next.
-type Reader struct {
-       q       []Packet
-       readers []io.Reader
-}
-
-// New io.Readers are pushed when a compressed or encrypted packet is processed
-// and recursively treated as a new source of packets. However, a carefully
-// crafted packet can trigger an infinite recursive sequence of packets. See
-// http://mumble.net/~campbell/misc/pgp-quine
-// https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2013-4402
-// This constant limits the number of recursive packets that may be pushed.
-const maxReaders = 32
-
-// Next returns the most recently unread Packet, or reads another packet from
-// the top-most io.Reader. Unknown packet types are skipped.
-func (r *Reader) Next() (p Packet, err error) {
-       if len(r.q) > 0 {
-               p = r.q[len(r.q)-1]
-               r.q = r.q[:len(r.q)-1]
-               return
-       }
-
-       for len(r.readers) > 0 {
-               p, err = Read(r.readers[len(r.readers)-1])
-               if err == nil {
-                       return
-               }
-               if err == io.EOF {
-                       r.readers = r.readers[:len(r.readers)-1]
-                       continue
-               }
-               if _, ok := err.(errors.UnknownPacketTypeError); !ok {
-                       return nil, err
-               }
-       }
-
-       return nil, io.EOF
-}
-
-// Push causes the Reader to start reading from a new io.Reader. When an EOF
-// error is seen from the new io.Reader, it is popped and the Reader continues
-// to read from the next most recent io.Reader. Push returns a StructuralError
-// if pushing the reader would exceed the maximum recursion level, otherwise it
-// returns nil.
-func (r *Reader) Push(reader io.Reader) (err error) {
-       if len(r.readers) >= maxReaders {
-               return errors.StructuralError("too many layers of packets")
-       }
-       r.readers = append(r.readers, reader)
-       return nil
-}
-
-// Unread causes the given Packet to be returned from the next call to Next.
-func (r *Reader) Unread(p Packet) {
-       r.q = append(r.q, p)
-}
-
-func NewReader(r io.Reader) *Reader {
-       return &Reader{
-               q:       nil,
-               readers: []io.Reader{r},
-       }
-}

Reply via email to