http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/blowfish/blowfish_test.go
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/blowfish/blowfish_test.go 
b/cli/vendor/golang.org/x/crypto/blowfish/blowfish_test.go
deleted file mode 100644
index 7afa1fd..0000000
--- a/cli/vendor/golang.org/x/crypto/blowfish/blowfish_test.go
+++ /dev/null
@@ -1,274 +0,0 @@
-// Copyright 2010 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package blowfish
-
-import "testing"
-
-type CryptTest struct {
-       key []byte
-       in  []byte
-       out []byte
-}
-
-// Test vector values are from http://www.schneier.com/code/vectors.txt.
-var encryptTests = []CryptTest{
-       {
-               []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-               []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-               []byte{0x4E, 0xF9, 0x97, 0x45, 0x61, 0x98, 0xDD, 0x78}},
-       {
-               []byte{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
-               []byte{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
-               []byte{0x51, 0x86, 0x6F, 0xD5, 0xB8, 0x5E, 0xCB, 0x8A}},
-       {
-               []byte{0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-               []byte{0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01},
-               []byte{0x7D, 0x85, 0x6F, 0x9A, 0x61, 0x30, 0x63, 0xF2}},
-       {
-               []byte{0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11},
-               []byte{0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11},
-               []byte{0x24, 0x66, 0xDD, 0x87, 0x8B, 0x96, 0x3C, 0x9D}},
-
-       {
-               []byte{0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF},
-               []byte{0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11},
-               []byte{0x61, 0xF9, 0xC3, 0x80, 0x22, 0x81, 0xB0, 0x96}},
-       {
-               []byte{0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11},
-               []byte{0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF},
-               []byte{0x7D, 0x0C, 0xC6, 0x30, 0xAF, 0xDA, 0x1E, 0xC7}},
-       {
-               []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-               []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-               []byte{0x4E, 0xF9, 0x97, 0x45, 0x61, 0x98, 0xDD, 0x78}},
-       {
-               []byte{0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10},
-               []byte{0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF},
-               []byte{0x0A, 0xCE, 0xAB, 0x0F, 0xC6, 0xA0, 0xA2, 0x8D}},
-       {
-               []byte{0x7C, 0xA1, 0x10, 0x45, 0x4A, 0x1A, 0x6E, 0x57},
-               []byte{0x01, 0xA1, 0xD6, 0xD0, 0x39, 0x77, 0x67, 0x42},
-               []byte{0x59, 0xC6, 0x82, 0x45, 0xEB, 0x05, 0x28, 0x2B}},
-       {
-               []byte{0x01, 0x31, 0xD9, 0x61, 0x9D, 0xC1, 0x37, 0x6E},
-               []byte{0x5C, 0xD5, 0x4C, 0xA8, 0x3D, 0xEF, 0x57, 0xDA},
-               []byte{0xB1, 0xB8, 0xCC, 0x0B, 0x25, 0x0F, 0x09, 0xA0}},
-       {
-               []byte{0x07, 0xA1, 0x13, 0x3E, 0x4A, 0x0B, 0x26, 0x86},
-               []byte{0x02, 0x48, 0xD4, 0x38, 0x06, 0xF6, 0x71, 0x72},
-               []byte{0x17, 0x30, 0xE5, 0x77, 0x8B, 0xEA, 0x1D, 0xA4}},
-       {
-               []byte{0x38, 0x49, 0x67, 0x4C, 0x26, 0x02, 0x31, 0x9E},
-               []byte{0x51, 0x45, 0x4B, 0x58, 0x2D, 0xDF, 0x44, 0x0A},
-               []byte{0xA2, 0x5E, 0x78, 0x56, 0xCF, 0x26, 0x51, 0xEB}},
-       {
-               []byte{0x04, 0xB9, 0x15, 0xBA, 0x43, 0xFE, 0xB5, 0xB6},
-               []byte{0x42, 0xFD, 0x44, 0x30, 0x59, 0x57, 0x7F, 0xA2},
-               []byte{0x35, 0x38, 0x82, 0xB1, 0x09, 0xCE, 0x8F, 0x1A}},
-       {
-               []byte{0x01, 0x13, 0xB9, 0x70, 0xFD, 0x34, 0xF2, 0xCE},
-               []byte{0x05, 0x9B, 0x5E, 0x08, 0x51, 0xCF, 0x14, 0x3A},
-               []byte{0x48, 0xF4, 0xD0, 0x88, 0x4C, 0x37, 0x99, 0x18}},
-       {
-               []byte{0x01, 0x70, 0xF1, 0x75, 0x46, 0x8F, 0xB5, 0xE6},
-               []byte{0x07, 0x56, 0xD8, 0xE0, 0x77, 0x47, 0x61, 0xD2},
-               []byte{0x43, 0x21, 0x93, 0xB7, 0x89, 0x51, 0xFC, 0x98}},
-       {
-               []byte{0x43, 0x29, 0x7F, 0xAD, 0x38, 0xE3, 0x73, 0xFE},
-               []byte{0x76, 0x25, 0x14, 0xB8, 0x29, 0xBF, 0x48, 0x6A},
-               []byte{0x13, 0xF0, 0x41, 0x54, 0xD6, 0x9D, 0x1A, 0xE5}},
-       {
-               []byte{0x07, 0xA7, 0x13, 0x70, 0x45, 0xDA, 0x2A, 0x16},
-               []byte{0x3B, 0xDD, 0x11, 0x90, 0x49, 0x37, 0x28, 0x02},
-               []byte{0x2E, 0xED, 0xDA, 0x93, 0xFF, 0xD3, 0x9C, 0x79}},
-       {
-               []byte{0x04, 0x68, 0x91, 0x04, 0xC2, 0xFD, 0x3B, 0x2F},
-               []byte{0x26, 0x95, 0x5F, 0x68, 0x35, 0xAF, 0x60, 0x9A},
-               []byte{0xD8, 0x87, 0xE0, 0x39, 0x3C, 0x2D, 0xA6, 0xE3}},
-       {
-               []byte{0x37, 0xD0, 0x6B, 0xB5, 0x16, 0xCB, 0x75, 0x46},
-               []byte{0x16, 0x4D, 0x5E, 0x40, 0x4F, 0x27, 0x52, 0x32},
-               []byte{0x5F, 0x99, 0xD0, 0x4F, 0x5B, 0x16, 0x39, 0x69}},
-       {
-               []byte{0x1F, 0x08, 0x26, 0x0D, 0x1A, 0xC2, 0x46, 0x5E},
-               []byte{0x6B, 0x05, 0x6E, 0x18, 0x75, 0x9F, 0x5C, 0xCA},
-               []byte{0x4A, 0x05, 0x7A, 0x3B, 0x24, 0xD3, 0x97, 0x7B}},
-       {
-               []byte{0x58, 0x40, 0x23, 0x64, 0x1A, 0xBA, 0x61, 0x76},
-               []byte{0x00, 0x4B, 0xD6, 0xEF, 0x09, 0x17, 0x60, 0x62},
-               []byte{0x45, 0x20, 0x31, 0xC1, 0xE4, 0xFA, 0xDA, 0x8E}},
-       {
-               []byte{0x02, 0x58, 0x16, 0x16, 0x46, 0x29, 0xB0, 0x07},
-               []byte{0x48, 0x0D, 0x39, 0x00, 0x6E, 0xE7, 0x62, 0xF2},
-               []byte{0x75, 0x55, 0xAE, 0x39, 0xF5, 0x9B, 0x87, 0xBD}},
-       {
-               []byte{0x49, 0x79, 0x3E, 0xBC, 0x79, 0xB3, 0x25, 0x8F},
-               []byte{0x43, 0x75, 0x40, 0xC8, 0x69, 0x8F, 0x3C, 0xFA},
-               []byte{0x53, 0xC5, 0x5F, 0x9C, 0xB4, 0x9F, 0xC0, 0x19}},
-       {
-               []byte{0x4F, 0xB0, 0x5E, 0x15, 0x15, 0xAB, 0x73, 0xA7},
-               []byte{0x07, 0x2D, 0x43, 0xA0, 0x77, 0x07, 0x52, 0x92},
-               []byte{0x7A, 0x8E, 0x7B, 0xFA, 0x93, 0x7E, 0x89, 0xA3}},
-       {
-               []byte{0x49, 0xE9, 0x5D, 0x6D, 0x4C, 0xA2, 0x29, 0xBF},
-               []byte{0x02, 0xFE, 0x55, 0x77, 0x81, 0x17, 0xF1, 0x2A},
-               []byte{0xCF, 0x9C, 0x5D, 0x7A, 0x49, 0x86, 0xAD, 0xB5}},
-       {
-               []byte{0x01, 0x83, 0x10, 0xDC, 0x40, 0x9B, 0x26, 0xD6},
-               []byte{0x1D, 0x9D, 0x5C, 0x50, 0x18, 0xF7, 0x28, 0xC2},
-               []byte{0xD1, 0xAB, 0xB2, 0x90, 0x65, 0x8B, 0xC7, 0x78}},
-       {
-               []byte{0x1C, 0x58, 0x7F, 0x1C, 0x13, 0x92, 0x4F, 0xEF},
-               []byte{0x30, 0x55, 0x32, 0x28, 0x6D, 0x6F, 0x29, 0x5A},
-               []byte{0x55, 0xCB, 0x37, 0x74, 0xD1, 0x3E, 0xF2, 0x01}},
-       {
-               []byte{0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01},
-               []byte{0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF},
-               []byte{0xFA, 0x34, 0xEC, 0x48, 0x47, 0xB2, 0x68, 0xB2}},
-       {
-               []byte{0x1F, 0x1F, 0x1F, 0x1F, 0x0E, 0x0E, 0x0E, 0x0E},
-               []byte{0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF},
-               []byte{0xA7, 0x90, 0x79, 0x51, 0x08, 0xEA, 0x3C, 0xAE}},
-       {
-               []byte{0xE0, 0xFE, 0xE0, 0xFE, 0xF1, 0xFE, 0xF1, 0xFE},
-               []byte{0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF},
-               []byte{0xC3, 0x9E, 0x07, 0x2D, 0x9F, 0xAC, 0x63, 0x1D}},
-       {
-               []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-               []byte{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
-               []byte{0x01, 0x49, 0x33, 0xE0, 0xCD, 0xAF, 0xF6, 0xE4}},
-       {
-               []byte{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
-               []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-               []byte{0xF2, 0x1E, 0x9A, 0x77, 0xB7, 0x1C, 0x49, 0xBC}},
-       {
-               []byte{0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF},
-               []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-               []byte{0x24, 0x59, 0x46, 0x88, 0x57, 0x54, 0x36, 0x9A}},
-       {
-               []byte{0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10},
-               []byte{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
-               []byte{0x6B, 0x5C, 0x5A, 0x9C, 0x5D, 0x9E, 0x0A, 0x5A}},
-}
-
-func TestCipherEncrypt(t *testing.T) {
-       for i, tt := range encryptTests {
-               c, err := NewCipher(tt.key)
-               if err != nil {
-                       t.Errorf("NewCipher(%d bytes) = %s", len(tt.key), err)
-                       continue
-               }
-               ct := make([]byte, len(tt.out))
-               c.Encrypt(ct, tt.in)
-               for j, v := range ct {
-                       if v != tt.out[j] {
-                               t.Errorf("Cipher.Encrypt, test vector #%d: 
cipher-text[%d] = %#x, expected %#x", i, j, v, tt.out[j])
-                               break
-                       }
-               }
-       }
-}
-
-func TestCipherDecrypt(t *testing.T) {
-       for i, tt := range encryptTests {
-               c, err := NewCipher(tt.key)
-               if err != nil {
-                       t.Errorf("NewCipher(%d bytes) = %s", len(tt.key), err)
-                       continue
-               }
-               pt := make([]byte, len(tt.in))
-               c.Decrypt(pt, tt.out)
-               for j, v := range pt {
-                       if v != tt.in[j] {
-                               t.Errorf("Cipher.Decrypt, test vector #%d: 
plain-text[%d] = %#x, expected %#x", i, j, v, tt.in[j])
-                               break
-                       }
-               }
-       }
-}
-
-func TestSaltedCipherKeyLength(t *testing.T) {
-       if _, err := NewSaltedCipher(nil, []byte{'a'}); err != KeySizeError(0) {
-               t.Errorf("NewSaltedCipher with short key, gave error %#v, 
expected %#v", err, KeySizeError(0))
-       }
-
-       // A 57-byte key. One over the typical blowfish restriction.
-       key := 
[]byte("012345678901234567890123456789012345678901234567890123456")
-       if _, err := NewSaltedCipher(key, []byte{'a'}); err != nil {
-               t.Errorf("NewSaltedCipher with long key, gave error %#v", err)
-       }
-}
-
-// Test vectors generated with Blowfish from OpenSSH.
-var saltedVectors = [][8]byte{
-       {0x0c, 0x82, 0x3b, 0x7b, 0x8d, 0x01, 0x4b, 0x7e},
-       {0xd1, 0xe1, 0x93, 0xf0, 0x70, 0xa6, 0xdb, 0x12},
-       {0xfc, 0x5e, 0xba, 0xde, 0xcb, 0xf8, 0x59, 0xad},
-       {0x8a, 0x0c, 0x76, 0xe7, 0xdd, 0x2c, 0xd3, 0xa8},
-       {0x2c, 0xcb, 0x7b, 0xee, 0xac, 0x7b, 0x7f, 0xf8},
-       {0xbb, 0xf6, 0x30, 0x6f, 0xe1, 0x5d, 0x62, 0xbf},
-       {0x97, 0x1e, 0xc1, 0x3d, 0x3d, 0xe0, 0x11, 0xe9},
-       {0x06, 0xd7, 0x4d, 0xb1, 0x80, 0xa3, 0xb1, 0x38},
-       {0x67, 0xa1, 0xa9, 0x75, 0x0e, 0x5b, 0xc6, 0xb4},
-       {0x51, 0x0f, 0x33, 0x0e, 0x4f, 0x67, 0xd2, 0x0c},
-       {0xf1, 0x73, 0x7e, 0xd8, 0x44, 0xea, 0xdb, 0xe5},
-       {0x14, 0x0e, 0x16, 0xce, 0x7f, 0x4a, 0x9c, 0x7b},
-       {0x4b, 0xfe, 0x43, 0xfd, 0xbf, 0x36, 0x04, 0x47},
-       {0xb1, 0xeb, 0x3e, 0x15, 0x36, 0xa7, 0xbb, 0xe2},
-       {0x6d, 0x0b, 0x41, 0xdd, 0x00, 0x98, 0x0b, 0x19},
-       {0xd3, 0xce, 0x45, 0xce, 0x1d, 0x56, 0xb7, 0xfc},
-       {0xd9, 0xf0, 0xfd, 0xda, 0xc0, 0x23, 0xb7, 0x93},
-       {0x4c, 0x6f, 0xa1, 0xe4, 0x0c, 0xa8, 0xca, 0x57},
-       {0xe6, 0x2f, 0x28, 0xa7, 0x0c, 0x94, 0x0d, 0x08},
-       {0x8f, 0xe3, 0xf0, 0xb6, 0x29, 0xe3, 0x44, 0x03},
-       {0xff, 0x98, 0xdd, 0x04, 0x45, 0xb4, 0x6d, 0x1f},
-       {0x9e, 0x45, 0x4d, 0x18, 0x40, 0x53, 0xdb, 0xef},
-       {0xb7, 0x3b, 0xef, 0x29, 0xbe, 0xa8, 0x13, 0x71},
-       {0x02, 0x54, 0x55, 0x41, 0x8e, 0x04, 0xfc, 0xad},
-       {0x6a, 0x0a, 0xee, 0x7c, 0x10, 0xd9, 0x19, 0xfe},
-       {0x0a, 0x22, 0xd9, 0x41, 0xcc, 0x23, 0x87, 0x13},
-       {0x6e, 0xff, 0x1f, 0xff, 0x36, 0x17, 0x9c, 0xbe},
-       {0x79, 0xad, 0xb7, 0x40, 0xf4, 0x9f, 0x51, 0xa6},
-       {0x97, 0x81, 0x99, 0xa4, 0xde, 0x9e, 0x9f, 0xb6},
-       {0x12, 0x19, 0x7a, 0x28, 0xd0, 0xdc, 0xcc, 0x92},
-       {0x81, 0xda, 0x60, 0x1e, 0x0e, 0xdd, 0x65, 0x56},
-       {0x7d, 0x76, 0x20, 0xb2, 0x73, 0xc9, 0x9e, 0xee},
-}
-
-func TestSaltedCipher(t *testing.T) {
-       var key, salt [32]byte
-       for i := range key {
-               key[i] = byte(i)
-               salt[i] = byte(i + 32)
-       }
-       for i, v := range saltedVectors {
-               c, err := NewSaltedCipher(key[:], salt[:i])
-               if err != nil {
-                       t.Fatal(err)
-               }
-               var buf [8]byte
-               c.Encrypt(buf[:], buf[:])
-               if v != buf {
-                       t.Errorf("%d: expected %x, got %x", i, v, buf)
-               }
-       }
-}
-
-func BenchmarkExpandKeyWithSalt(b *testing.B) {
-       key := make([]byte, 32)
-       salt := make([]byte, 16)
-       c, _ := NewCipher(key)
-       for i := 0; i < b.N; i++ {
-               expandKeyWithSalt(key, salt, c)
-       }
-}
-
-func BenchmarkExpandKey(b *testing.B) {
-       key := make([]byte, 32)
-       c, _ := NewCipher(key)
-       for i := 0; i < b.N; i++ {
-               ExpandKey(key, c)
-       }
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/blowfish/cipher.go
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/blowfish/cipher.go 
b/cli/vendor/golang.org/x/crypto/blowfish/cipher.go
deleted file mode 100644
index 542984a..0000000
--- a/cli/vendor/golang.org/x/crypto/blowfish/cipher.go
+++ /dev/null
@@ -1,91 +0,0 @@
-// Copyright 2010 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package blowfish implements Bruce Schneier's Blowfish encryption algorithm.
-package blowfish // import "golang.org/x/crypto/blowfish"
-
-// The code is a port of Bruce Schneier's C implementation.
-// See http://www.schneier.com/blowfish.html.
-
-import "strconv"
-
-// The Blowfish block size in bytes.
-const BlockSize = 8
-
-// A Cipher is an instance of Blowfish encryption using a particular key.
-type Cipher struct {
-       p              [18]uint32
-       s0, s1, s2, s3 [256]uint32
-}
-
-type KeySizeError int
-
-func (k KeySizeError) Error() string {
-       return "crypto/blowfish: invalid key size " + strconv.Itoa(int(k))
-}
-
-// NewCipher creates and returns a Cipher.
-// The key argument should be the Blowfish key, from 1 to 56 bytes.
-func NewCipher(key []byte) (*Cipher, error) {
-       var result Cipher
-       if k := len(key); k < 1 || k > 56 {
-               return nil, KeySizeError(k)
-       }
-       initCipher(&result)
-       ExpandKey(key, &result)
-       return &result, nil
-}
-
-// NewSaltedCipher creates a returns a Cipher that folds a salt into its key
-// schedule. For most purposes, NewCipher, instead of NewSaltedCipher, is
-// sufficient and desirable. For bcrypt compatiblity, the key can be over 56
-// bytes.
-func NewSaltedCipher(key, salt []byte) (*Cipher, error) {
-       if len(salt) == 0 {
-               return NewCipher(key)
-       }
-       var result Cipher
-       if k := len(key); k < 1 {
-               return nil, KeySizeError(k)
-       }
-       initCipher(&result)
-       expandKeyWithSalt(key, salt, &result)
-       return &result, nil
-}
-
-// BlockSize returns the Blowfish block size, 8 bytes.
-// It is necessary to satisfy the Block interface in the
-// package "crypto/cipher".
-func (c *Cipher) BlockSize() int { return BlockSize }
-
-// Encrypt encrypts the 8-byte buffer src using the key k
-// and stores the result in dst.
-// Note that for amounts of data larger than a block,
-// it is not safe to just call Encrypt on successive blocks;
-// instead, use an encryption mode like CBC (see crypto/cipher/cbc.go).
-func (c *Cipher) Encrypt(dst, src []byte) {
-       l := uint32(src[0])<<24 | uint32(src[1])<<16 | uint32(src[2])<<8 | 
uint32(src[3])
-       r := uint32(src[4])<<24 | uint32(src[5])<<16 | uint32(src[6])<<8 | 
uint32(src[7])
-       l, r = encryptBlock(l, r, c)
-       dst[0], dst[1], dst[2], dst[3] = byte(l>>24), byte(l>>16), byte(l>>8), 
byte(l)
-       dst[4], dst[5], dst[6], dst[7] = byte(r>>24), byte(r>>16), byte(r>>8), 
byte(r)
-}
-
-// Decrypt decrypts the 8-byte buffer src using the key k
-// and stores the result in dst.
-func (c *Cipher) Decrypt(dst, src []byte) {
-       l := uint32(src[0])<<24 | uint32(src[1])<<16 | uint32(src[2])<<8 | 
uint32(src[3])
-       r := uint32(src[4])<<24 | uint32(src[5])<<16 | uint32(src[6])<<8 | 
uint32(src[7])
-       l, r = decryptBlock(l, r, c)
-       dst[0], dst[1], dst[2], dst[3] = byte(l>>24), byte(l>>16), byte(l>>8), 
byte(l)
-       dst[4], dst[5], dst[6], dst[7] = byte(r>>24), byte(r>>16), byte(r>>8), 
byte(r)
-}
-
-func initCipher(c *Cipher) {
-       copy(c.p[0:], p[0:])
-       copy(c.s0[0:], s0[0:])
-       copy(c.s1[0:], s1[0:])
-       copy(c.s2[0:], s2[0:])
-       copy(c.s3[0:], s3[0:])
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/blowfish/const.go
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/blowfish/const.go 
b/cli/vendor/golang.org/x/crypto/blowfish/const.go
deleted file mode 100644
index 8c5ee4c..0000000
--- a/cli/vendor/golang.org/x/crypto/blowfish/const.go
+++ /dev/null
@@ -1,199 +0,0 @@
-// Copyright 2010 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// The startup permutation array and substitution boxes.
-// They are the hexadecimal digits of PI; see:
-// http://www.schneier.com/code/constants.txt.
-
-package blowfish
-
-var s0 = [256]uint32{
-       0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, 0xb8e1afed, 0x6a267e96,
-       0xba7c9045, 0xf12c7f99, 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16,
-       0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e, 0x0d95748f, 0x728eb658,
-       0x718bcd58, 0x82154aee, 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013,
-       0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef, 0x8e79dcb0, 0x603a180e,
-       0x6c9e0e8b, 0xb01e8a3e, 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60,
-       0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440, 0x55ca396a, 0x2aab10b6,
-       0xb4cc5c34, 0x1141e8ce, 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a,
-       0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e, 0xafd6ba33, 0x6c24cf5c,
-       0x7a325381, 0x28958677, 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193,
-       0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032, 0xef845d5d, 0xe98575b1,
-       0xdc262302, 0xeb651b88, 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239,
-       0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e, 0x21c66842, 0xf6e96c9a,
-       0x670c9c61, 0xabd388f0, 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3,
-       0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98, 0xa1f1651d, 0x39af0176,
-       0x66ca593e, 0x82430e88, 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe,
-       0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6, 0x4ed3aa62, 0x363f7706,
-       0x1bfedf72, 0x429b023d, 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b,
-       0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7, 0xe3fe501a, 0xb6794c3b,
-       0x976ce0bd, 0x04c006ba, 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463,
-       0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f, 0x6dfc511f, 0x9b30952c,
-       0xcc814544, 0xaf5ebd09, 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3,
-       0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb, 0x5579c0bd, 0x1a60320a,
-       0xd6a100c6, 0x402c7279, 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8,
-       0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab, 0x323db5fa, 0xfd238760,
-       0x53317b48, 0x3e00df82, 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db,
-       0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573, 0x695b27b0, 0xbbca58c8,
-       0xe1ffa35d, 0xb8f011a0, 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b,
-       0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790, 0xe1ddf2da, 0xa4cb7e33,
-       0x62fb1341, 0xcee4c6e8, 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4,
-       0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0, 0xd08ed1d0, 0xafc725e0,
-       0x8e3c5b2f, 0x8e7594b7, 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c,
-       0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad, 0x2f2f2218, 0xbe0e1777,
-       0xea752dfe, 0x8b021fa1, 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299,
-       0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9, 0x165fa266, 0x80957705,
-       0x93cc7314, 0x211a1477, 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf,
-       0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49, 0x00250e2d, 0x2071b35e,
-       0x226800bb, 0x57b8e0af, 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa,
-       0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5, 0x83260376, 0x6295cfa9,
-       0x11c81968, 0x4e734a41, 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915,
-       0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400, 0x08ba6fb5, 0x571be91f,
-       0xf296ec6b, 0x2a0dd915, 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664,
-       0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a,
-}
-
-var s1 = [256]uint32{
-       0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623, 0xad6ea6b0, 0x49a7df7d,
-       0x9cee60b8, 0x8fedb266, 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1,
-       0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e, 0x3f54989a, 0x5b429d65,
-       0x6b8fe4d6, 0x99f73fd6, 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1,
-       0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e, 0x09686b3f, 0x3ebaefc9,
-       0x3c971814, 0x6b6a70a1, 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737,
-       0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8, 0xb03ada37, 0xf0500c0d,
-       0xf01c1f04, 0x0200b3ff, 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd,
-       0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701, 0x3ae5e581, 0x37c2dadc,
-       0xc8b57634, 0x9af3dda7, 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41,
-       0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331, 0x4e548b38, 0x4f6db908,
-       0x6f420d03, 0xf60a04bf, 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af,
-       0xde9a771f, 0xd9930810, 0xb38bae12, 0xdccf3f2e, 0x5512721f, 0x2e6b7124,
-       0x501adde6, 0x9f84cd87, 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c,
-       0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2, 0xef1c1847, 0x3215d908,
-       0xdd433b37, 0x24c2ba16, 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd,
-       0x71dff89e, 0x10314e55, 0x81ac77d6, 0x5f11199b, 0x043556f1, 0xd7a3c76b,
-       0x3c11183b, 0x5924a509, 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e,
-       0x86e34570, 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3, 0x771fe71c, 0x4e3d06fa,
-       0x2965dcb9, 0x99e71d0f, 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a,
-       0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4, 0xf2f74ea7, 0x361d2b3d,
-       0x1939260f, 0x19c27960, 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66,
-       0xe3bc4595, 0xa67bc883, 0xb17f37d1, 0x018cff28, 0xc332ddef, 0xbe6c5aa5,
-       0x65582185, 0x68ab9802, 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84,
-       0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510, 0x13cca830, 0xeb61bd96,
-       0x0334fe1e, 0xaa0363cf, 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14,
-       0xeecc86bc, 0x60622ca7, 0x9cab5cab, 0xb2f3846e, 0x648b1eaf, 0x19bdf0ca,
-       0xa02369b9, 0x655abb50, 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7,
-       0x9b540b19, 0x875fa099, 0x95f7997e, 0x623d7da8, 0xf837889a, 0x97e32d77,
-       0x11ed935f, 0x16681281, 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99,
-       0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696, 0xcdb30aeb, 0x532e3054,
-       0x8fd948e4, 0x6dbc3128, 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73,
-       0x5d4a14d9, 0xe864b7e3, 0x42105d14, 0x203e13e0, 0x45eee2b6, 0xa3aaabea,
-       0xdb6c4f15, 0xfacb4fd0, 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105,
-       0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250, 0xcf62a1f2, 0x5b8d2646,
-       0xfc8883a0, 0xc1c7b6a3, 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285,
-       0x095bbf00, 0xad19489d, 0x1462b174, 0x23820e00, 0x58428d2a, 0x0c55f5ea,
-       0x1dadf43e, 0x233f7061, 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb,
-       0x7cde3759, 0xcbee7460, 0x4085f2a7, 0xce77326e, 0xa6078084, 0x19f8509e,
-       0xe8efd855, 0x61d99735, 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc,
-       0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9, 0xdb73dbd3, 0x105588cd,
-       0x675fda79, 0xe3674340, 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20,
-       0x153e21e7, 0x8fb03d4a, 0xe6e39f2b, 0xdb83adf7,
-}
-
-var s2 = [256]uint32{
-       0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934, 0x411520f7, 0x7602d4f7,
-       0xbcf46b2e, 0xd4a20068, 0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af,
-       0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840, 0x4d95fc1d, 0x96b591af,
-       0x70f4ddd3, 0x66a02f45, 0xbfbc09ec, 0x03bd9785, 0x7fac6dd0, 0x31cb8504,
-       0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a, 0x28507825, 0x530429f4,
-       0x0a2c86da, 0xe9b66dfb, 0x68dc1462, 0xd7486900, 0x680ec0a4, 0x27a18dee,
-       0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6, 0xaace1e7c, 0xd3375fec,
-       0xce78a399, 0x406b2a42, 0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b,
-       0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2, 0x3a6efa74, 0xdd5b4332,
-       0x6841e7f7, 0xca7820fb, 0xfb0af54e, 0xd8feb397, 0x454056ac, 0xba489527,
-       0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b, 0x55a867bc, 0xa1159a58,
-       0xcca92963, 0x99e1db33, 0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c,
-       0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3, 0x95c11548, 0xe4c66d22,
-       0x48c1133f, 0xc70f86dc, 0x07f9c9ee, 0x41041f0f, 0x404779a4, 0x5d886e17,
-       0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564, 0x257b7834, 0x602a9c60,
-       0xdff8e8a3, 0x1f636c1b, 0x0e12b4c2, 0x02e1329e, 0xaf664fd1, 0xcad18115,
-       0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922, 0x85b2a20e, 0xe6ba0d99,
-       0xde720c8c, 0x2da2f728, 0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0,
-       0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e, 0x0a476341, 0x992eff74,
-       0x3a6f6eab, 0xf4f8fd37, 0xa812dc60, 0xa1ebddf8, 0x991be14c, 0xdb6e6b0d,
-       0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804, 0xf1290dc7, 0xcc00ffa3,
-       0xb5390f92, 0x690fed0b, 0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3,
-       0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb, 0x37392eb3, 0xcc115979,
-       0x8026e297, 0xf42e312d, 0x6842ada7, 0xc66a2b3b, 0x12754ccc, 0x782ef11c,
-       0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350, 0x1a6b1018, 0x11caedfa,
-       0x3d25bdd8, 0xe2e1c3c9, 0x44421659, 0x0a121386, 0xd90cec6e, 0xd5abea2a,
-       0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe, 0x9dbc8057, 0xf0f7c086,
-       0x60787bf8, 0x6003604d, 0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc,
-       0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f, 0x77a057be, 0xbde8ae24,
-       0x55464299, 0xbf582e61, 0x4e58f48f, 0xf2ddfda2, 0xf474ef38, 0x8789bdc2,
-       0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9, 0x7aeb2661, 0x8b1ddf84,
-       0x846a0e79, 0x915f95e2, 0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c,
-       0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e, 0xb77f19b6, 0xe0a9dc09,
-       0x662d09a1, 0xc4324633, 0xe85a1f02, 0x09f0be8c, 0x4a99a025, 0x1d6efe10,
-       0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169, 0xdcb7da83, 0x573906fe,
-       0xa1e2ce9b, 0x4fcd7f52, 0x50115e01, 0xa70683fa, 0xa002b5c4, 0x0de6d027,
-       0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5, 0xf0177a28, 0xc0f586e0,
-       0x006058aa, 0x30dc7d62, 0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634,
-       0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76, 0x6f05e409, 0x4b7c0188,
-       0x39720a3d, 0x7c927c24, 0x86e3725f, 0x724d9db9, 0x1ac15bb4, 0xd39eb8fc,
-       0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4, 0x1e50ef5e, 0xb161e6f8,
-       0xa28514d9, 0x6c51133c, 0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837,
-       0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0,
-}
-
-var s3 = [256]uint32{
-       0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b, 0x5cb0679e, 0x4fa33742,
-       0xd3822740, 0x99bc9bbe, 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b,
-       0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4, 0x5748ab2f, 0xbc946e79,
-       0xc6a376d2, 0x6549c2c8, 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6,
-       0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304, 0xa1fad5f0, 0x6a2d519a,
-       0x63ef8ce2, 0x9a86ee22, 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4,
-       0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6, 0x2826a2f9, 0xa73a3ae1,
-       0x4ba99586, 0xef5562e9, 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59,
-       0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593, 0xe990fd5a, 0x9e34d797,
-       0x2cf0b7d9, 0x022b8b51, 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28,
-       0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c, 0xe029ac71, 0xe019a5e6,
-       0x47b0acfd, 0xed93fa9b, 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28,
-       0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c, 0x15056dd4, 0x88f46dba,
-       0x03a16125, 0x0564f0bd, 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a,
-       0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319, 0x7533d928, 0xb155fdf5,
-       0x03563482, 0x8aba3cbb, 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f,
-       0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991, 0xea7a90c2, 0xfb3e7bce,
-       0x5121ce64, 0x774fbe32, 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680,
-       0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166, 0xb39a460a, 0x6445c0dd,
-       0x586cdecf, 0x1c20c8ae, 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb,
-       0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5, 0x72eacea8, 0xfa6484bb,
-       0x8d6612ae, 0xbf3c6f47, 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370,
-       0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d, 0x4040cb08, 0x4eb4e2cc,
-       0x34d2466a, 0x0115af84, 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048,
-       0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8, 0x611560b1, 0xe7933fdc,
-       0xbb3a792b, 0x344525bd, 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9,
-       0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7, 0x1a908749, 0xd44fbd9a,
-       0xd0dadecb, 0xd50ada38, 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f,
-       0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c, 0xbf97222c, 0x15e6fc2a,
-       0x0f91fc71, 0x9b941525, 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1,
-       0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442, 0xe0ec6e0e, 0x1698db3b,
-       0x4c98a0be, 0x3278e964, 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e,
-       0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8, 0xdf359f8d, 0x9b992f2e,
-       0xe60b6f47, 0x0fe3f11d, 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f,
-       0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299, 0xf523f357, 0xa6327623,
-       0x93a83531, 0x56cccd02, 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc,
-       0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614, 0xe6c6c7bd, 0x327a140a,
-       0x45e1d006, 0xc3f27b9a, 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6,
-       0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b, 0x53113ec0, 0x1640e3d3,
-       0x38abbd60, 0x2547adf0, 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060,
-       0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e, 0x1948c25c, 0x02fb8a8c,
-       0x01c36ae4, 0xd6ebe1f9, 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f,
-       0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6,
-}
-
-var p = [18]uint32{
-       0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, 0xa4093822, 0x299f31d0,
-       0x082efa98, 0xec4e6c89, 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c,
-       0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917, 0x9216d5d9, 0x8979fb1b,
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/bn256/bn256.go
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/bn256/bn256.go 
b/cli/vendor/golang.org/x/crypto/bn256/bn256.go
deleted file mode 100644
index 014f8b3..0000000
--- a/cli/vendor/golang.org/x/crypto/bn256/bn256.go
+++ /dev/null
@@ -1,404 +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 bn256 implements a particular bilinear group at the 128-bit 
security level.
-//
-// Bilinear groups are the basis of many of the new cryptographic protocols
-// that have been proposed over the past decade. They consist of a triplet of
-// groups (G₁, G₂ and GT) such that there exists a function 
e(g₁ˣ,g₂ʸ)=gTˣʸ
-// (where gₓ is a generator of the respective group). That function is called
-// a pairing function.
-//
-// This package specifically implements the Optimal Ate pairing over a 256-bit
-// Barreto-Naehrig curve as described in
-// http://cryptojedi.org/papers/dclxvi-20100714.pdf. Its output is compatible
-// with the implementation described in that paper.
-package bn256 // import "golang.org/x/crypto/bn256"
-
-import (
-       "crypto/rand"
-       "io"
-       "math/big"
-)
-
-// BUG(agl): this implementation is not constant time.
-// TODO(agl): keep GF(p²) elements in Mongomery form.
-
-// G1 is an abstract cyclic group. The zero value is suitable for use as the
-// output of an operation, but cannot be used as an input.
-type G1 struct {
-       p *curvePoint
-}
-
-// RandomG1 returns x and g₁ˣ where x is a random, non-zero number read 
from r.
-func RandomG1(r io.Reader) (*big.Int, *G1, error) {
-       var k *big.Int
-       var err error
-
-       for {
-               k, err = rand.Int(r, Order)
-               if err != nil {
-                       return nil, nil, err
-               }
-               if k.Sign() > 0 {
-                       break
-               }
-       }
-
-       return k, new(G1).ScalarBaseMult(k), nil
-}
-
-func (g *G1) String() string {
-       return "bn256.G1" + g.p.String()
-}
-
-// ScalarBaseMult sets e to g*k where g is the generator of the group and
-// then returns e.
-func (e *G1) ScalarBaseMult(k *big.Int) *G1 {
-       if e.p == nil {
-               e.p = newCurvePoint(nil)
-       }
-       e.p.Mul(curveGen, k, new(bnPool))
-       return e
-}
-
-// ScalarMult sets e to a*k and then returns e.
-func (e *G1) ScalarMult(a *G1, k *big.Int) *G1 {
-       if e.p == nil {
-               e.p = newCurvePoint(nil)
-       }
-       e.p.Mul(a.p, k, new(bnPool))
-       return e
-}
-
-// Add sets e to a+b and then returns e.
-// BUG(agl): this function is not complete: a==b fails.
-func (e *G1) Add(a, b *G1) *G1 {
-       if e.p == nil {
-               e.p = newCurvePoint(nil)
-       }
-       e.p.Add(a.p, b.p, new(bnPool))
-       return e
-}
-
-// Neg sets e to -a and then returns e.
-func (e *G1) Neg(a *G1) *G1 {
-       if e.p == nil {
-               e.p = newCurvePoint(nil)
-       }
-       e.p.Negative(a.p)
-       return e
-}
-
-// Marshal converts n to a byte slice.
-func (n *G1) Marshal() []byte {
-       n.p.MakeAffine(nil)
-
-       xBytes := new(big.Int).Mod(n.p.x, p).Bytes()
-       yBytes := new(big.Int).Mod(n.p.y, p).Bytes()
-
-       // Each value is a 256-bit number.
-       const numBytes = 256 / 8
-
-       ret := make([]byte, numBytes*2)
-       copy(ret[1*numBytes-len(xBytes):], xBytes)
-       copy(ret[2*numBytes-len(yBytes):], yBytes)
-
-       return ret
-}
-
-// Unmarshal sets e to the result of converting the output of Marshal back into
-// a group element and then returns e.
-func (e *G1) Unmarshal(m []byte) (*G1, bool) {
-       // Each value is a 256-bit number.
-       const numBytes = 256 / 8
-
-       if len(m) != 2*numBytes {
-               return nil, false
-       }
-
-       if e.p == nil {
-               e.p = newCurvePoint(nil)
-       }
-
-       e.p.x.SetBytes(m[0*numBytes : 1*numBytes])
-       e.p.y.SetBytes(m[1*numBytes : 2*numBytes])
-
-       if e.p.x.Sign() == 0 && e.p.y.Sign() == 0 {
-               // This is the point at infinity.
-               e.p.y.SetInt64(1)
-               e.p.z.SetInt64(0)
-               e.p.t.SetInt64(0)
-       } else {
-               e.p.z.SetInt64(1)
-               e.p.t.SetInt64(1)
-
-               if !e.p.IsOnCurve() {
-                       return nil, false
-               }
-       }
-
-       return e, true
-}
-
-// G2 is an abstract cyclic group. The zero value is suitable for use as the
-// output of an operation, but cannot be used as an input.
-type G2 struct {
-       p *twistPoint
-}
-
-// RandomG1 returns x and g₂ˣ where x is a random, non-zero number read 
from r.
-func RandomG2(r io.Reader) (*big.Int, *G2, error) {
-       var k *big.Int
-       var err error
-
-       for {
-               k, err = rand.Int(r, Order)
-               if err != nil {
-                       return nil, nil, err
-               }
-               if k.Sign() > 0 {
-                       break
-               }
-       }
-
-       return k, new(G2).ScalarBaseMult(k), nil
-}
-
-func (g *G2) String() string {
-       return "bn256.G2" + g.p.String()
-}
-
-// ScalarBaseMult sets e to g*k where g is the generator of the group and
-// then returns out.
-func (e *G2) ScalarBaseMult(k *big.Int) *G2 {
-       if e.p == nil {
-               e.p = newTwistPoint(nil)
-       }
-       e.p.Mul(twistGen, k, new(bnPool))
-       return e
-}
-
-// ScalarMult sets e to a*k and then returns e.
-func (e *G2) ScalarMult(a *G2, k *big.Int) *G2 {
-       if e.p == nil {
-               e.p = newTwistPoint(nil)
-       }
-       e.p.Mul(a.p, k, new(bnPool))
-       return e
-}
-
-// Add sets e to a+b and then returns e.
-// BUG(agl): this function is not complete: a==b fails.
-func (e *G2) Add(a, b *G2) *G2 {
-       if e.p == nil {
-               e.p = newTwistPoint(nil)
-       }
-       e.p.Add(a.p, b.p, new(bnPool))
-       return e
-}
-
-// Marshal converts n into a byte slice.
-func (n *G2) Marshal() []byte {
-       n.p.MakeAffine(nil)
-
-       xxBytes := new(big.Int).Mod(n.p.x.x, p).Bytes()
-       xyBytes := new(big.Int).Mod(n.p.x.y, p).Bytes()
-       yxBytes := new(big.Int).Mod(n.p.y.x, p).Bytes()
-       yyBytes := new(big.Int).Mod(n.p.y.y, p).Bytes()
-
-       // Each value is a 256-bit number.
-       const numBytes = 256 / 8
-
-       ret := make([]byte, numBytes*4)
-       copy(ret[1*numBytes-len(xxBytes):], xxBytes)
-       copy(ret[2*numBytes-len(xyBytes):], xyBytes)
-       copy(ret[3*numBytes-len(yxBytes):], yxBytes)
-       copy(ret[4*numBytes-len(yyBytes):], yyBytes)
-
-       return ret
-}
-
-// Unmarshal sets e to the result of converting the output of Marshal back into
-// a group element and then returns e.
-func (e *G2) Unmarshal(m []byte) (*G2, bool) {
-       // Each value is a 256-bit number.
-       const numBytes = 256 / 8
-
-       if len(m) != 4*numBytes {
-               return nil, false
-       }
-
-       if e.p == nil {
-               e.p = newTwistPoint(nil)
-       }
-
-       e.p.x.x.SetBytes(m[0*numBytes : 1*numBytes])
-       e.p.x.y.SetBytes(m[1*numBytes : 2*numBytes])
-       e.p.y.x.SetBytes(m[2*numBytes : 3*numBytes])
-       e.p.y.y.SetBytes(m[3*numBytes : 4*numBytes])
-
-       if e.p.x.x.Sign() == 0 &&
-               e.p.x.y.Sign() == 0 &&
-               e.p.y.x.Sign() == 0 &&
-               e.p.y.y.Sign() == 0 {
-               // This is the point at infinity.
-               e.p.y.SetOne()
-               e.p.z.SetZero()
-               e.p.t.SetZero()
-       } else {
-               e.p.z.SetOne()
-               e.p.t.SetOne()
-
-               if !e.p.IsOnCurve() {
-                       return nil, false
-               }
-       }
-
-       return e, true
-}
-
-// GT is an abstract cyclic group. The zero value is suitable for use as the
-// output of an operation, but cannot be used as an input.
-type GT struct {
-       p *gfP12
-}
-
-func (g *GT) String() string {
-       return "bn256.GT" + g.p.String()
-}
-
-// ScalarMult sets e to a*k and then returns e.
-func (e *GT) ScalarMult(a *GT, k *big.Int) *GT {
-       if e.p == nil {
-               e.p = newGFp12(nil)
-       }
-       e.p.Exp(a.p, k, new(bnPool))
-       return e
-}
-
-// Add sets e to a+b and then returns e.
-func (e *GT) Add(a, b *GT) *GT {
-       if e.p == nil {
-               e.p = newGFp12(nil)
-       }
-       e.p.Mul(a.p, b.p, new(bnPool))
-       return e
-}
-
-// Neg sets e to -a and then returns e.
-func (e *GT) Neg(a *GT) *GT {
-       if e.p == nil {
-               e.p = newGFp12(nil)
-       }
-       e.p.Invert(a.p, new(bnPool))
-       return e
-}
-
-// Marshal converts n into a byte slice.
-func (n *GT) Marshal() []byte {
-       n.p.Minimal()
-
-       xxxBytes := n.p.x.x.x.Bytes()
-       xxyBytes := n.p.x.x.y.Bytes()
-       xyxBytes := n.p.x.y.x.Bytes()
-       xyyBytes := n.p.x.y.y.Bytes()
-       xzxBytes := n.p.x.z.x.Bytes()
-       xzyBytes := n.p.x.z.y.Bytes()
-       yxxBytes := n.p.y.x.x.Bytes()
-       yxyBytes := n.p.y.x.y.Bytes()
-       yyxBytes := n.p.y.y.x.Bytes()
-       yyyBytes := n.p.y.y.y.Bytes()
-       yzxBytes := n.p.y.z.x.Bytes()
-       yzyBytes := n.p.y.z.y.Bytes()
-
-       // Each value is a 256-bit number.
-       const numBytes = 256 / 8
-
-       ret := make([]byte, numBytes*12)
-       copy(ret[1*numBytes-len(xxxBytes):], xxxBytes)
-       copy(ret[2*numBytes-len(xxyBytes):], xxyBytes)
-       copy(ret[3*numBytes-len(xyxBytes):], xyxBytes)
-       copy(ret[4*numBytes-len(xyyBytes):], xyyBytes)
-       copy(ret[5*numBytes-len(xzxBytes):], xzxBytes)
-       copy(ret[6*numBytes-len(xzyBytes):], xzyBytes)
-       copy(ret[7*numBytes-len(yxxBytes):], yxxBytes)
-       copy(ret[8*numBytes-len(yxyBytes):], yxyBytes)
-       copy(ret[9*numBytes-len(yyxBytes):], yyxBytes)
-       copy(ret[10*numBytes-len(yyyBytes):], yyyBytes)
-       copy(ret[11*numBytes-len(yzxBytes):], yzxBytes)
-       copy(ret[12*numBytes-len(yzyBytes):], yzyBytes)
-
-       return ret
-}
-
-// Unmarshal sets e to the result of converting the output of Marshal back into
-// a group element and then returns e.
-func (e *GT) Unmarshal(m []byte) (*GT, bool) {
-       // Each value is a 256-bit number.
-       const numBytes = 256 / 8
-
-       if len(m) != 12*numBytes {
-               return nil, false
-       }
-
-       if e.p == nil {
-               e.p = newGFp12(nil)
-       }
-
-       e.p.x.x.x.SetBytes(m[0*numBytes : 1*numBytes])
-       e.p.x.x.y.SetBytes(m[1*numBytes : 2*numBytes])
-       e.p.x.y.x.SetBytes(m[2*numBytes : 3*numBytes])
-       e.p.x.y.y.SetBytes(m[3*numBytes : 4*numBytes])
-       e.p.x.z.x.SetBytes(m[4*numBytes : 5*numBytes])
-       e.p.x.z.y.SetBytes(m[5*numBytes : 6*numBytes])
-       e.p.y.x.x.SetBytes(m[6*numBytes : 7*numBytes])
-       e.p.y.x.y.SetBytes(m[7*numBytes : 8*numBytes])
-       e.p.y.y.x.SetBytes(m[8*numBytes : 9*numBytes])
-       e.p.y.y.y.SetBytes(m[9*numBytes : 10*numBytes])
-       e.p.y.z.x.SetBytes(m[10*numBytes : 11*numBytes])
-       e.p.y.z.y.SetBytes(m[11*numBytes : 12*numBytes])
-
-       return e, true
-}
-
-// Pair calculates an Optimal Ate pairing.
-func Pair(g1 *G1, g2 *G2) *GT {
-       return &GT{optimalAte(g2.p, g1.p, new(bnPool))}
-}
-
-// bnPool implements a tiny cache of *big.Int objects that's used to reduce the
-// number of allocations made during processing.
-type bnPool struct {
-       bns   []*big.Int
-       count int
-}
-
-func (pool *bnPool) Get() *big.Int {
-       if pool == nil {
-               return new(big.Int)
-       }
-
-       pool.count++
-       l := len(pool.bns)
-       if l == 0 {
-               return new(big.Int)
-       }
-
-       bn := pool.bns[l-1]
-       pool.bns = pool.bns[:l-1]
-       return bn
-}
-
-func (pool *bnPool) Put(bn *big.Int) {
-       if pool == nil {
-               return
-       }
-       pool.bns = append(pool.bns, bn)
-       pool.count--
-}
-
-func (pool *bnPool) Count() int {
-       return pool.count
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/bn256/bn256_test.go
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/bn256/bn256_test.go 
b/cli/vendor/golang.org/x/crypto/bn256/bn256_test.go
deleted file mode 100644
index 1cec388..0000000
--- a/cli/vendor/golang.org/x/crypto/bn256/bn256_test.go
+++ /dev/null
@@ -1,304 +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 bn256
-
-import (
-       "bytes"
-       "crypto/rand"
-       "math/big"
-       "testing"
-)
-
-func TestGFp2Invert(t *testing.T) {
-       pool := new(bnPool)
-
-       a := newGFp2(pool)
-       a.x.SetString("23423492374", 10)
-       a.y.SetString("12934872398472394827398470", 10)
-
-       inv := newGFp2(pool)
-       inv.Invert(a, pool)
-
-       b := newGFp2(pool).Mul(inv, a, pool)
-       if b.x.Int64() != 0 || b.y.Int64() != 1 {
-               t.Fatalf("bad result for a^-1*a: %s %s", b.x, b.y)
-       }
-
-       a.Put(pool)
-       b.Put(pool)
-       inv.Put(pool)
-
-       if c := pool.Count(); c > 0 {
-               t.Errorf("Pool count non-zero: %d\n", c)
-       }
-}
-
-func isZero(n *big.Int) bool {
-       return new(big.Int).Mod(n, p).Int64() == 0
-}
-
-func isOne(n *big.Int) bool {
-       return new(big.Int).Mod(n, p).Int64() == 1
-}
-
-func TestGFp6Invert(t *testing.T) {
-       pool := new(bnPool)
-
-       a := newGFp6(pool)
-       a.x.x.SetString("239487238491", 10)
-       a.x.y.SetString("2356249827341", 10)
-       a.y.x.SetString("082659782", 10)
-       a.y.y.SetString("182703523765", 10)
-       a.z.x.SetString("978236549263", 10)
-       a.z.y.SetString("64893242", 10)
-
-       inv := newGFp6(pool)
-       inv.Invert(a, pool)
-
-       b := newGFp6(pool).Mul(inv, a, pool)
-       if !isZero(b.x.x) ||
-               !isZero(b.x.y) ||
-               !isZero(b.y.x) ||
-               !isZero(b.y.y) ||
-               !isZero(b.z.x) ||
-               !isOne(b.z.y) {
-               t.Fatalf("bad result for a^-1*a: %s", b)
-       }
-
-       a.Put(pool)
-       b.Put(pool)
-       inv.Put(pool)
-
-       if c := pool.Count(); c > 0 {
-               t.Errorf("Pool count non-zero: %d\n", c)
-       }
-}
-
-func TestGFp12Invert(t *testing.T) {
-       pool := new(bnPool)
-
-       a := newGFp12(pool)
-       a.x.x.x.SetString("239846234862342323958623", 10)
-       a.x.x.y.SetString("2359862352529835623", 10)
-       a.x.y.x.SetString("928836523", 10)
-       a.x.y.y.SetString("9856234", 10)
-       a.x.z.x.SetString("235635286", 10)
-       a.x.z.y.SetString("5628392833", 10)
-       a.y.x.x.SetString("252936598265329856238956532167968", 10)
-       a.y.x.y.SetString("23596239865236954178968", 10)
-       a.y.y.x.SetString("95421692834", 10)
-       a.y.y.y.SetString("236548", 10)
-       a.y.z.x.SetString("924523", 10)
-       a.y.z.y.SetString("12954623", 10)
-
-       inv := newGFp12(pool)
-       inv.Invert(a, pool)
-
-       b := newGFp12(pool).Mul(inv, a, pool)
-       if !isZero(b.x.x.x) ||
-               !isZero(b.x.x.y) ||
-               !isZero(b.x.y.x) ||
-               !isZero(b.x.y.y) ||
-               !isZero(b.x.z.x) ||
-               !isZero(b.x.z.y) ||
-               !isZero(b.y.x.x) ||
-               !isZero(b.y.x.y) ||
-               !isZero(b.y.y.x) ||
-               !isZero(b.y.y.y) ||
-               !isZero(b.y.z.x) ||
-               !isOne(b.y.z.y) {
-               t.Fatalf("bad result for a^-1*a: %s", b)
-       }
-
-       a.Put(pool)
-       b.Put(pool)
-       inv.Put(pool)
-
-       if c := pool.Count(); c > 0 {
-               t.Errorf("Pool count non-zero: %d\n", c)
-       }
-}
-
-func TestCurveImpl(t *testing.T) {
-       pool := new(bnPool)
-
-       g := &curvePoint{
-               pool.Get().SetInt64(1),
-               pool.Get().SetInt64(-2),
-               pool.Get().SetInt64(1),
-               pool.Get().SetInt64(0),
-       }
-
-       x := pool.Get().SetInt64(32498273234)
-       X := newCurvePoint(pool).Mul(g, x, pool)
-
-       y := pool.Get().SetInt64(98732423523)
-       Y := newCurvePoint(pool).Mul(g, y, pool)
-
-       s1 := newCurvePoint(pool).Mul(X, y, pool).MakeAffine(pool)
-       s2 := newCurvePoint(pool).Mul(Y, x, pool).MakeAffine(pool)
-
-       if s1.x.Cmp(s2.x) != 0 ||
-               s2.x.Cmp(s1.x) != 0 {
-               t.Errorf("DH points don't match: (%s, %s) (%s, %s)", s1.x, 
s1.y, s2.x, s2.y)
-       }
-
-       pool.Put(x)
-       X.Put(pool)
-       pool.Put(y)
-       Y.Put(pool)
-       s1.Put(pool)
-       s2.Put(pool)
-       g.Put(pool)
-
-       if c := pool.Count(); c > 0 {
-               t.Errorf("Pool count non-zero: %d\n", c)
-       }
-}
-
-func TestOrderG1(t *testing.T) {
-       g := new(G1).ScalarBaseMult(Order)
-       if !g.p.IsInfinity() {
-               t.Error("G1 has incorrect order")
-       }
-
-       one := new(G1).ScalarBaseMult(new(big.Int).SetInt64(1))
-       g.Add(g, one)
-       g.p.MakeAffine(nil)
-       if g.p.x.Cmp(one.p.x) != 0 || g.p.y.Cmp(one.p.y) != 0 {
-               t.Errorf("1+0 != 1 in G1")
-       }
-}
-
-func TestOrderG2(t *testing.T) {
-       g := new(G2).ScalarBaseMult(Order)
-       if !g.p.IsInfinity() {
-               t.Error("G2 has incorrect order")
-       }
-
-       one := new(G2).ScalarBaseMult(new(big.Int).SetInt64(1))
-       g.Add(g, one)
-       g.p.MakeAffine(nil)
-       if g.p.x.x.Cmp(one.p.x.x) != 0 ||
-               g.p.x.y.Cmp(one.p.x.y) != 0 ||
-               g.p.y.x.Cmp(one.p.y.x) != 0 ||
-               g.p.y.y.Cmp(one.p.y.y) != 0 {
-               t.Errorf("1+0 != 1 in G2")
-       }
-}
-
-func TestOrderGT(t *testing.T) {
-       gt := Pair(&G1{curveGen}, &G2{twistGen})
-       g := new(GT).ScalarMult(gt, Order)
-       if !g.p.IsOne() {
-               t.Error("GT has incorrect order")
-       }
-}
-
-func TestBilinearity(t *testing.T) {
-       for i := 0; i < 2; i++ {
-               a, p1, _ := RandomG1(rand.Reader)
-               b, p2, _ := RandomG2(rand.Reader)
-               e1 := Pair(p1, p2)
-
-               e2 := Pair(&G1{curveGen}, &G2{twistGen})
-               e2.ScalarMult(e2, a)
-               e2.ScalarMult(e2, b)
-
-               minusE2 := new(GT).Neg(e2)
-               e1.Add(e1, minusE2)
-
-               if !e1.p.IsOne() {
-                       t.Fatalf("bad pairing result: %s", e1)
-               }
-       }
-}
-
-func TestG1Marshal(t *testing.T) {
-       g := new(G1).ScalarBaseMult(new(big.Int).SetInt64(1))
-       form := g.Marshal()
-       _, ok := new(G1).Unmarshal(form)
-       if !ok {
-               t.Fatalf("failed to unmarshal")
-       }
-
-       g.ScalarBaseMult(Order)
-       form = g.Marshal()
-       g2, ok := new(G1).Unmarshal(form)
-       if !ok {
-               t.Fatalf("failed to unmarshal ∞")
-       }
-       if !g2.p.IsInfinity() {
-               t.Fatalf("∞ unmarshaled incorrectly")
-       }
-}
-
-func TestG2Marshal(t *testing.T) {
-       g := new(G2).ScalarBaseMult(new(big.Int).SetInt64(1))
-       form := g.Marshal()
-       _, ok := new(G2).Unmarshal(form)
-       if !ok {
-               t.Fatalf("failed to unmarshal")
-       }
-
-       g.ScalarBaseMult(Order)
-       form = g.Marshal()
-       g2, ok := new(G2).Unmarshal(form)
-       if !ok {
-               t.Fatalf("failed to unmarshal ∞")
-       }
-       if !g2.p.IsInfinity() {
-               t.Fatalf("∞ unmarshaled incorrectly")
-       }
-}
-
-func TestG1Identity(t *testing.T) {
-       g := new(G1).ScalarBaseMult(new(big.Int).SetInt64(0))
-       if !g.p.IsInfinity() {
-               t.Error("failure")
-       }
-}
-
-func TestG2Identity(t *testing.T) {
-       g := new(G2).ScalarBaseMult(new(big.Int).SetInt64(0))
-       if !g.p.IsInfinity() {
-               t.Error("failure")
-       }
-}
-
-func TestTripartiteDiffieHellman(t *testing.T) {
-       a, _ := rand.Int(rand.Reader, Order)
-       b, _ := rand.Int(rand.Reader, Order)
-       c, _ := rand.Int(rand.Reader, Order)
-
-       pa, _ := new(G1).Unmarshal(new(G1).ScalarBaseMult(a).Marshal())
-       qa, _ := new(G2).Unmarshal(new(G2).ScalarBaseMult(a).Marshal())
-       pb, _ := new(G1).Unmarshal(new(G1).ScalarBaseMult(b).Marshal())
-       qb, _ := new(G2).Unmarshal(new(G2).ScalarBaseMult(b).Marshal())
-       pc, _ := new(G1).Unmarshal(new(G1).ScalarBaseMult(c).Marshal())
-       qc, _ := new(G2).Unmarshal(new(G2).ScalarBaseMult(c).Marshal())
-
-       k1 := Pair(pb, qc)
-       k1.ScalarMult(k1, a)
-       k1Bytes := k1.Marshal()
-
-       k2 := Pair(pc, qa)
-       k2.ScalarMult(k2, b)
-       k2Bytes := k2.Marshal()
-
-       k3 := Pair(pa, qb)
-       k3.ScalarMult(k3, c)
-       k3Bytes := k3.Marshal()
-
-       if !bytes.Equal(k1Bytes, k2Bytes) || !bytes.Equal(k2Bytes, k3Bytes) {
-               t.Errorf("keys didn't agree")
-       }
-}
-
-func BenchmarkPairing(b *testing.B) {
-       for i := 0; i < b.N; i++ {
-               Pair(&G1{curveGen}, &G2{twistGen})
-       }
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/bn256/constants.go
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/bn256/constants.go 
b/cli/vendor/golang.org/x/crypto/bn256/constants.go
deleted file mode 100644
index 08ccfdf..0000000
--- a/cli/vendor/golang.org/x/crypto/bn256/constants.go
+++ /dev/null
@@ -1,44 +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 bn256
-
-import (
-       "math/big"
-)
-
-func bigFromBase10(s string) *big.Int {
-       n, _ := new(big.Int).SetString(s, 10)
-       return n
-}
-
-// u is the BN parameter that determines the prime: 1868033³.
-var u = bigFromBase10("6518589491078791937")
-
-// p is a prime over which we form a basic field: 36u⁴+36u³+24u³+6u+1.
-var p = 
bigFromBase10("65000549695646603732796438742359905742825358107623003571877145026864184071783")
-
-// Order is the number of elements in both G₁ and G₂: 
36u⁴+36u³+18u³+6u+1.
-var Order = 
bigFromBase10("65000549695646603732796438742359905742570406053903786389881062969044166799969")
-
-// xiToPMinus1Over6 is ξ^((p-1)/6) where ξ = i+3.
-var xiToPMinus1Over6 = 
&gfP2{bigFromBase10("8669379979083712429711189836753509758585994370025260553045152614783263110636"),
 
bigFromBase10("19998038925833620163537568958541907098007303196759855091367510456613536016040")}
-
-// xiToPMinus1Over3 is ξ^((p-1)/3) where ξ = i+3.
-var xiToPMinus1Over3 = 
&gfP2{bigFromBase10("26098034838977895781559542626833399156321265654106457577426020397262786167059"),
 
bigFromBase10("15931493369629630809226283458085260090334794394361662678240713231519278691715")}
-
-// xiToPMinus1Over2 is ξ^((p-1)/2) where ξ = i+3.
-var xiToPMinus1Over2 = 
&gfP2{bigFromBase10("50997318142241922852281555961173165965672272825141804376761836765206060036244"),
 
bigFromBase10("38665955945962842195025998234511023902832543644254935982879660597356748036009")}
-
-// xiToPSquaredMinus1Over3 is ξ^((p²-1)/3) where ξ = i+3.
-var xiToPSquaredMinus1Over3 = 
bigFromBase10("65000549695646603727810655408050771481677621702948236658134783353303381437752")
-
-// xiTo2PSquaredMinus2Over3 is ξ^((2p²-2)/3) where ξ = i+3 (a cubic root of 
unity, mod p).
-var xiTo2PSquaredMinus2Over3 = 
bigFromBase10("4985783334309134261147736404674766913742361673560802634030")
-
-// xiToPSquaredMinus1Over6 is ξ^((1p²-1)/6) where ξ = i+3 (a cubic root of 
-1, mod p).
-var xiToPSquaredMinus1Over6 = 
bigFromBase10("65000549695646603727810655408050771481677621702948236658134783353303381437753")
-
-// xiTo2PMinus2Over3 is ξ^((2p-2)/3) where ξ = i+3.
-var xiTo2PMinus2Over3 = 
&gfP2{bigFromBase10("19885131339612776214803633203834694332692106372356013117629940868870585019582"),
 
bigFromBase10("21645619881471562101905880913352894726728173167203616652430647841922248593627")}

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/bn256/curve.go
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/bn256/curve.go 
b/cli/vendor/golang.org/x/crypto/bn256/curve.go
deleted file mode 100644
index 55b7063..0000000
--- a/cli/vendor/golang.org/x/crypto/bn256/curve.go
+++ /dev/null
@@ -1,278 +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 bn256
-
-import (
-       "math/big"
-)
-
-// curvePoint implements the elliptic curve y²=x³+3. Points are kept in
-// Jacobian form and t=z² when valid. G₁ is the set of points of this curve 
on
-// GF(p).
-type curvePoint struct {
-       x, y, z, t *big.Int
-}
-
-var curveB = new(big.Int).SetInt64(3)
-
-// curveGen is the generator of G₁.
-var curveGen = &curvePoint{
-       new(big.Int).SetInt64(1),
-       new(big.Int).SetInt64(-2),
-       new(big.Int).SetInt64(1),
-       new(big.Int).SetInt64(1),
-}
-
-func newCurvePoint(pool *bnPool) *curvePoint {
-       return &curvePoint{
-               pool.Get(),
-               pool.Get(),
-               pool.Get(),
-               pool.Get(),
-       }
-}
-
-func (c *curvePoint) String() string {
-       c.MakeAffine(new(bnPool))
-       return "(" + c.x.String() + ", " + c.y.String() + ")"
-}
-
-func (c *curvePoint) Put(pool *bnPool) {
-       pool.Put(c.x)
-       pool.Put(c.y)
-       pool.Put(c.z)
-       pool.Put(c.t)
-}
-
-func (c *curvePoint) Set(a *curvePoint) {
-       c.x.Set(a.x)
-       c.y.Set(a.y)
-       c.z.Set(a.z)
-       c.t.Set(a.t)
-}
-
-// IsOnCurve returns true iff c is on the curve where c must be in affine form.
-func (c *curvePoint) IsOnCurve() bool {
-       yy := new(big.Int).Mul(c.y, c.y)
-       xxx := new(big.Int).Mul(c.x, c.x)
-       xxx.Mul(xxx, c.x)
-       yy.Sub(yy, xxx)
-       yy.Sub(yy, curveB)
-       if yy.Sign() < 0 || yy.Cmp(p) >= 0 {
-               yy.Mod(yy, p)
-       }
-       return yy.Sign() == 0
-}
-
-func (c *curvePoint) SetInfinity() {
-       c.z.SetInt64(0)
-}
-
-func (c *curvePoint) IsInfinity() bool {
-       return c.z.Sign() == 0
-}
-
-func (c *curvePoint) Add(a, b *curvePoint, pool *bnPool) {
-       if a.IsInfinity() {
-               c.Set(b)
-               return
-       }
-       if b.IsInfinity() {
-               c.Set(a)
-               return
-       }
-
-       // See 
http://hyperelliptic.org/EFD/g1p/auto-code/shortw/jacobian-0/addition/add-2007-bl.op3
-
-       // Normalize the points by replacing a = [x1:y1:z1] and b = [x2:y2:z2]
-       // by [u1:s1:z1·z2] and [u2:s2:z1·z2]
-       // where u1 = x1·z2², s1 = y1·z2³ and u1 = x2·z1², s2 = y2·z1³
-       z1z1 := pool.Get().Mul(a.z, a.z)
-       z1z1.Mod(z1z1, p)
-       z2z2 := pool.Get().Mul(b.z, b.z)
-       z2z2.Mod(z2z2, p)
-       u1 := pool.Get().Mul(a.x, z2z2)
-       u1.Mod(u1, p)
-       u2 := pool.Get().Mul(b.x, z1z1)
-       u2.Mod(u2, p)
-
-       t := pool.Get().Mul(b.z, z2z2)
-       t.Mod(t, p)
-       s1 := pool.Get().Mul(a.y, t)
-       s1.Mod(s1, p)
-
-       t.Mul(a.z, z1z1)
-       t.Mod(t, p)
-       s2 := pool.Get().Mul(b.y, t)
-       s2.Mod(s2, p)
-
-       // Compute x = (2h)²(s²-u1-u2)
-       // where s = (s2-s1)/(u2-u1) is the slope of the line through
-       // (u1,s1) and (u2,s2). The extra factor 2h = 2(u2-u1) comes from the 
value of z below.
-       // This is also:
-       // 4(s2-s1)² - 4h²(u1+u2) = 4(s2-s1)² - 4h³ - 4h²(2u1)
-       //                        = r² - j - 2v
-       // with the notations below.
-       h := pool.Get().Sub(u2, u1)
-       xEqual := h.Sign() == 0
-
-       t.Add(h, h)
-       // i = 4h²
-       i := pool.Get().Mul(t, t)
-       i.Mod(i, p)
-       // j = 4h³
-       j := pool.Get().Mul(h, i)
-       j.Mod(j, p)
-
-       t.Sub(s2, s1)
-       yEqual := t.Sign() == 0
-       if xEqual && yEqual {
-               c.Double(a, pool)
-               return
-       }
-       r := pool.Get().Add(t, t)
-
-       v := pool.Get().Mul(u1, i)
-       v.Mod(v, p)
-
-       // t4 = 4(s2-s1)²
-       t4 := pool.Get().Mul(r, r)
-       t4.Mod(t4, p)
-       t.Add(v, v)
-       t6 := pool.Get().Sub(t4, j)
-       c.x.Sub(t6, t)
-
-       // Set y = -(2h)³(s1 + s*(x/4h²-u1))
-       // This is also
-       // y = - 2·s1·j - (s2-s1)(2x - 2i·u1) = r(v-x) - 2·s1·j
-       t.Sub(v, c.x) // t7
-       t4.Mul(s1, j) // t8
-       t4.Mod(t4, p)
-       t6.Add(t4, t4) // t9
-       t4.Mul(r, t)   // t10
-       t4.Mod(t4, p)
-       c.y.Sub(t4, t6)
-
-       // Set z = 2(u2-u1)·z1·z2 = 2h·z1·z2
-       t.Add(a.z, b.z) // t11
-       t4.Mul(t, t)    // t12
-       t4.Mod(t4, p)
-       t.Sub(t4, z1z1) // t13
-       t4.Sub(t, z2z2) // t14
-       c.z.Mul(t4, h)
-       c.z.Mod(c.z, p)
-
-       pool.Put(z1z1)
-       pool.Put(z2z2)
-       pool.Put(u1)
-       pool.Put(u2)
-       pool.Put(t)
-       pool.Put(s1)
-       pool.Put(s2)
-       pool.Put(h)
-       pool.Put(i)
-       pool.Put(j)
-       pool.Put(r)
-       pool.Put(v)
-       pool.Put(t4)
-       pool.Put(t6)
-}
-
-func (c *curvePoint) Double(a *curvePoint, pool *bnPool) {
-       // See 
http://hyperelliptic.org/EFD/g1p/auto-code/shortw/jacobian-0/doubling/dbl-2009-l.op3
-       A := pool.Get().Mul(a.x, a.x)
-       A.Mod(A, p)
-       B := pool.Get().Mul(a.y, a.y)
-       B.Mod(B, p)
-       C := pool.Get().Mul(B, B)
-       C.Mod(C, p)
-
-       t := pool.Get().Add(a.x, B)
-       t2 := pool.Get().Mul(t, t)
-       t2.Mod(t2, p)
-       t.Sub(t2, A)
-       t2.Sub(t, C)
-       d := pool.Get().Add(t2, t2)
-       t.Add(A, A)
-       e := pool.Get().Add(t, A)
-       f := pool.Get().Mul(e, e)
-       f.Mod(f, p)
-
-       t.Add(d, d)
-       c.x.Sub(f, t)
-
-       t.Add(C, C)
-       t2.Add(t, t)
-       t.Add(t2, t2)
-       c.y.Sub(d, c.x)
-       t2.Mul(e, c.y)
-       t2.Mod(t2, p)
-       c.y.Sub(t2, t)
-
-       t.Mul(a.y, a.z)
-       t.Mod(t, p)
-       c.z.Add(t, t)
-
-       pool.Put(A)
-       pool.Put(B)
-       pool.Put(C)
-       pool.Put(t)
-       pool.Put(t2)
-       pool.Put(d)
-       pool.Put(e)
-       pool.Put(f)
-}
-
-func (c *curvePoint) Mul(a *curvePoint, scalar *big.Int, pool *bnPool) 
*curvePoint {
-       sum := newCurvePoint(pool)
-       sum.SetInfinity()
-       t := newCurvePoint(pool)
-
-       for i := scalar.BitLen(); i >= 0; i-- {
-               t.Double(sum, pool)
-               if scalar.Bit(i) != 0 {
-                       sum.Add(t, a, pool)
-               } else {
-                       sum.Set(t)
-               }
-       }
-
-       c.Set(sum)
-       sum.Put(pool)
-       t.Put(pool)
-       return c
-}
-
-func (c *curvePoint) MakeAffine(pool *bnPool) *curvePoint {
-       if words := c.z.Bits(); len(words) == 1 && words[0] == 1 {
-               return c
-       }
-
-       zInv := pool.Get().ModInverse(c.z, p)
-       t := pool.Get().Mul(c.y, zInv)
-       t.Mod(t, p)
-       zInv2 := pool.Get().Mul(zInv, zInv)
-       zInv2.Mod(zInv2, p)
-       c.y.Mul(t, zInv2)
-       c.y.Mod(c.y, p)
-       t.Mul(c.x, zInv2)
-       t.Mod(t, p)
-       c.x.Set(t)
-       c.z.SetInt64(1)
-       c.t.SetInt64(1)
-
-       pool.Put(zInv)
-       pool.Put(t)
-       pool.Put(zInv2)
-
-       return c
-}
-
-func (c *curvePoint) Negative(a *curvePoint) {
-       c.x.Set(a.x)
-       c.y.Neg(a.y)
-       c.z.Set(a.z)
-       c.t.SetInt64(0)
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/bn256/example_test.go
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/bn256/example_test.go 
b/cli/vendor/golang.org/x/crypto/bn256/example_test.go
deleted file mode 100644
index b2d1980..0000000
--- a/cli/vendor/golang.org/x/crypto/bn256/example_test.go
+++ /dev/null
@@ -1,43 +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 bn256
-
-import (
-       "crypto/rand"
-)
-
-func ExamplePair() {
-       // This implements the tripartite Diffie-Hellman algorithm from "A One
-       // Round Protocol for Tripartite Diffie-Hellman", A. Joux.
-       // http://www.springerlink.com/content/cddc57yyva0hburb/fulltext.pdf
-
-       // Each of three parties, a, b and c, generate a private value.
-       a, _ := rand.Int(rand.Reader, Order)
-       b, _ := rand.Int(rand.Reader, Order)
-       c, _ := rand.Int(rand.Reader, Order)
-
-       // Then each party calculates g₁ and g₂ times their private value.
-       pa := new(G1).ScalarBaseMult(a)
-       qa := new(G2).ScalarBaseMult(a)
-
-       pb := new(G1).ScalarBaseMult(b)
-       qb := new(G2).ScalarBaseMult(b)
-
-       pc := new(G1).ScalarBaseMult(c)
-       qc := new(G2).ScalarBaseMult(c)
-
-       // Now each party exchanges its public values with the other two and
-       // all parties can calculate the shared key.
-       k1 := Pair(pb, qc)
-       k1.ScalarMult(k1, a)
-
-       k2 := Pair(pc, qa)
-       k2.ScalarMult(k2, b)
-
-       k3 := Pair(pa, qb)
-       k3.ScalarMult(k3, c)
-
-       // k1, k2 and k3 will all be equal.
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/bn256/gfp12.go
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/bn256/gfp12.go 
b/cli/vendor/golang.org/x/crypto/bn256/gfp12.go
deleted file mode 100644
index f084edd..0000000
--- a/cli/vendor/golang.org/x/crypto/bn256/gfp12.go
+++ /dev/null
@@ -1,200 +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 bn256
-
-// For details of the algorithms used, see "Multiplication and Squaring on
-// Pairing-Friendly Fields, Devegili et al.
-// http://eprint.iacr.org/2006/471.pdf.
-
-import (
-       "math/big"
-)
-
-// gfP12 implements the field of size p¹² as a quadratic extension of gfP6
-// where ω²=τ.
-type gfP12 struct {
-       x, y *gfP6 // value is xω + y
-}
-
-func newGFp12(pool *bnPool) *gfP12 {
-       return &gfP12{newGFp6(pool), newGFp6(pool)}
-}
-
-func (e *gfP12) String() string {
-       return "(" + e.x.String() + "," + e.y.String() + ")"
-}
-
-func (e *gfP12) Put(pool *bnPool) {
-       e.x.Put(pool)
-       e.y.Put(pool)
-}
-
-func (e *gfP12) Set(a *gfP12) *gfP12 {
-       e.x.Set(a.x)
-       e.y.Set(a.y)
-       return e
-}
-
-func (e *gfP12) SetZero() *gfP12 {
-       e.x.SetZero()
-       e.y.SetZero()
-       return e
-}
-
-func (e *gfP12) SetOne() *gfP12 {
-       e.x.SetZero()
-       e.y.SetOne()
-       return e
-}
-
-func (e *gfP12) Minimal() {
-       e.x.Minimal()
-       e.y.Minimal()
-}
-
-func (e *gfP12) IsZero() bool {
-       e.Minimal()
-       return e.x.IsZero() && e.y.IsZero()
-}
-
-func (e *gfP12) IsOne() bool {
-       e.Minimal()
-       return e.x.IsZero() && e.y.IsOne()
-}
-
-func (e *gfP12) Conjugate(a *gfP12) *gfP12 {
-       e.x.Negative(a.x)
-       e.y.Set(a.y)
-       return a
-}
-
-func (e *gfP12) Negative(a *gfP12) *gfP12 {
-       e.x.Negative(a.x)
-       e.y.Negative(a.y)
-       return e
-}
-
-// Frobenius computes (xω+y)^p = x^p ω·ξ^((p-1)/6) + y^p
-func (e *gfP12) Frobenius(a *gfP12, pool *bnPool) *gfP12 {
-       e.x.Frobenius(a.x, pool)
-       e.y.Frobenius(a.y, pool)
-       e.x.MulScalar(e.x, xiToPMinus1Over6, pool)
-       return e
-}
-
-// FrobeniusP2 computes (xω+y)^p² = x^p² ω·ξ^((p²-1)/6) + y^p²
-func (e *gfP12) FrobeniusP2(a *gfP12, pool *bnPool) *gfP12 {
-       e.x.FrobeniusP2(a.x)
-       e.x.MulGFP(e.x, xiToPSquaredMinus1Over6)
-       e.y.FrobeniusP2(a.y)
-       return e
-}
-
-func (e *gfP12) Add(a, b *gfP12) *gfP12 {
-       e.x.Add(a.x, b.x)
-       e.y.Add(a.y, b.y)
-       return e
-}
-
-func (e *gfP12) Sub(a, b *gfP12) *gfP12 {
-       e.x.Sub(a.x, b.x)
-       e.y.Sub(a.y, b.y)
-       return e
-}
-
-func (e *gfP12) Mul(a, b *gfP12, pool *bnPool) *gfP12 {
-       tx := newGFp6(pool)
-       tx.Mul(a.x, b.y, pool)
-       t := newGFp6(pool)
-       t.Mul(b.x, a.y, pool)
-       tx.Add(tx, t)
-
-       ty := newGFp6(pool)
-       ty.Mul(a.y, b.y, pool)
-       t.Mul(a.x, b.x, pool)
-       t.MulTau(t, pool)
-       e.y.Add(ty, t)
-       e.x.Set(tx)
-
-       tx.Put(pool)
-       ty.Put(pool)
-       t.Put(pool)
-       return e
-}
-
-func (e *gfP12) MulScalar(a *gfP12, b *gfP6, pool *bnPool) *gfP12 {
-       e.x.Mul(e.x, b, pool)
-       e.y.Mul(e.y, b, pool)
-       return e
-}
-
-func (c *gfP12) Exp(a *gfP12, power *big.Int, pool *bnPool) *gfP12 {
-       sum := newGFp12(pool)
-       sum.SetOne()
-       t := newGFp12(pool)
-
-       for i := power.BitLen() - 1; i >= 0; i-- {
-               t.Square(sum, pool)
-               if power.Bit(i) != 0 {
-                       sum.Mul(t, a, pool)
-               } else {
-                       sum.Set(t)
-               }
-       }
-
-       c.Set(sum)
-
-       sum.Put(pool)
-       t.Put(pool)
-
-       return c
-}
-
-func (e *gfP12) Square(a *gfP12, pool *bnPool) *gfP12 {
-       // Complex squaring algorithm
-       v0 := newGFp6(pool)
-       v0.Mul(a.x, a.y, pool)
-
-       t := newGFp6(pool)
-       t.MulTau(a.x, pool)
-       t.Add(a.y, t)
-       ty := newGFp6(pool)
-       ty.Add(a.x, a.y)
-       ty.Mul(ty, t, pool)
-       ty.Sub(ty, v0)
-       t.MulTau(v0, pool)
-       ty.Sub(ty, t)
-
-       e.y.Set(ty)
-       e.x.Double(v0)
-
-       v0.Put(pool)
-       t.Put(pool)
-       ty.Put(pool)
-
-       return e
-}
-
-func (e *gfP12) Invert(a *gfP12, pool *bnPool) *gfP12 {
-       // See "Implementing cryptographic pairings", M. Scott, section 3.2.
-       // ftp://136.206.11.249/pub/crypto/pairings.pdf
-       t1 := newGFp6(pool)
-       t2 := newGFp6(pool)
-
-       t1.Square(a.x, pool)
-       t2.Square(a.y, pool)
-       t1.MulTau(t1, pool)
-       t1.Sub(t2, t1)
-       t2.Invert(t1, pool)
-
-       e.x.Negative(a.x)
-       e.y.Set(a.y)
-       e.MulScalar(e, t2, pool)
-
-       t1.Put(pool)
-       t2.Put(pool)
-
-       return e
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/bn256/gfp2.go
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/bn256/gfp2.go 
b/cli/vendor/golang.org/x/crypto/bn256/gfp2.go
deleted file mode 100644
index 97f3f1f..0000000
--- a/cli/vendor/golang.org/x/crypto/bn256/gfp2.go
+++ /dev/null
@@ -1,219 +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 bn256
-
-// For details of the algorithms used, see "Multiplication and Squaring on
-// Pairing-Friendly Fields, Devegili et al.
-// http://eprint.iacr.org/2006/471.pdf.
-
-import (
-       "math/big"
-)
-
-// gfP2 implements a field of size p² as a quadratic extension of the base
-// field where i²=-1.
-type gfP2 struct {
-       x, y *big.Int // value is xi+y.
-}
-
-func newGFp2(pool *bnPool) *gfP2 {
-       return &gfP2{pool.Get(), pool.Get()}
-}
-
-func (e *gfP2) String() string {
-       x := new(big.Int).Mod(e.x, p)
-       y := new(big.Int).Mod(e.y, p)
-       return "(" + x.String() + "," + y.String() + ")"
-}
-
-func (e *gfP2) Put(pool *bnPool) {
-       pool.Put(e.x)
-       pool.Put(e.y)
-}
-
-func (e *gfP2) Set(a *gfP2) *gfP2 {
-       e.x.Set(a.x)
-       e.y.Set(a.y)
-       return e
-}
-
-func (e *gfP2) SetZero() *gfP2 {
-       e.x.SetInt64(0)
-       e.y.SetInt64(0)
-       return e
-}
-
-func (e *gfP2) SetOne() *gfP2 {
-       e.x.SetInt64(0)
-       e.y.SetInt64(1)
-       return e
-}
-
-func (e *gfP2) Minimal() {
-       if e.x.Sign() < 0 || e.x.Cmp(p) >= 0 {
-               e.x.Mod(e.x, p)
-       }
-       if e.y.Sign() < 0 || e.y.Cmp(p) >= 0 {
-               e.y.Mod(e.y, p)
-       }
-}
-
-func (e *gfP2) IsZero() bool {
-       return e.x.Sign() == 0 && e.y.Sign() == 0
-}
-
-func (e *gfP2) IsOne() bool {
-       if e.x.Sign() != 0 {
-               return false
-       }
-       words := e.y.Bits()
-       return len(words) == 1 && words[0] == 1
-}
-
-func (e *gfP2) Conjugate(a *gfP2) *gfP2 {
-       e.y.Set(a.y)
-       e.x.Neg(a.x)
-       return e
-}
-
-func (e *gfP2) Negative(a *gfP2) *gfP2 {
-       e.x.Neg(a.x)
-       e.y.Neg(a.y)
-       return e
-}
-
-func (e *gfP2) Add(a, b *gfP2) *gfP2 {
-       e.x.Add(a.x, b.x)
-       e.y.Add(a.y, b.y)
-       return e
-}
-
-func (e *gfP2) Sub(a, b *gfP2) *gfP2 {
-       e.x.Sub(a.x, b.x)
-       e.y.Sub(a.y, b.y)
-       return e
-}
-
-func (e *gfP2) Double(a *gfP2) *gfP2 {
-       e.x.Lsh(a.x, 1)
-       e.y.Lsh(a.y, 1)
-       return e
-}
-
-func (c *gfP2) Exp(a *gfP2, power *big.Int, pool *bnPool) *gfP2 {
-       sum := newGFp2(pool)
-       sum.SetOne()
-       t := newGFp2(pool)
-
-       for i := power.BitLen() - 1; i >= 0; i-- {
-               t.Square(sum, pool)
-               if power.Bit(i) != 0 {
-                       sum.Mul(t, a, pool)
-               } else {
-                       sum.Set(t)
-               }
-       }
-
-       c.Set(sum)
-
-       sum.Put(pool)
-       t.Put(pool)
-
-       return c
-}
-
-// See "Multiplication and Squaring in Pairing-Friendly Fields",
-// http://eprint.iacr.org/2006/471.pdf
-func (e *gfP2) Mul(a, b *gfP2, pool *bnPool) *gfP2 {
-       tx := pool.Get().Mul(a.x, b.y)
-       t := pool.Get().Mul(b.x, a.y)
-       tx.Add(tx, t)
-       tx.Mod(tx, p)
-
-       ty := pool.Get().Mul(a.y, b.y)
-       t.Mul(a.x, b.x)
-       ty.Sub(ty, t)
-       e.y.Mod(ty, p)
-       e.x.Set(tx)
-
-       pool.Put(tx)
-       pool.Put(ty)
-       pool.Put(t)
-
-       return e
-}
-
-func (e *gfP2) MulScalar(a *gfP2, b *big.Int) *gfP2 {
-       e.x.Mul(a.x, b)
-       e.y.Mul(a.y, b)
-       return e
-}
-
-// MulXi sets e=ξa where ξ=i+3 and then returns e.
-func (e *gfP2) MulXi(a *gfP2, pool *bnPool) *gfP2 {
-       // (xi+y)(i+3) = (3x+y)i+(3y-x)
-       tx := pool.Get().Lsh(a.x, 1)
-       tx.Add(tx, a.x)
-       tx.Add(tx, a.y)
-
-       ty := pool.Get().Lsh(a.y, 1)
-       ty.Add(ty, a.y)
-       ty.Sub(ty, a.x)
-
-       e.x.Set(tx)
-       e.y.Set(ty)
-
-       pool.Put(tx)
-       pool.Put(ty)
-
-       return e
-}
-
-func (e *gfP2) Square(a *gfP2, pool *bnPool) *gfP2 {
-       // Complex squaring algorithm:
-       // (xi+b)² = (x+y)(y-x) + 2*i*x*y
-       t1 := pool.Get().Sub(a.y, a.x)
-       t2 := pool.Get().Add(a.x, a.y)
-       ty := pool.Get().Mul(t1, t2)
-       ty.Mod(ty, p)
-
-       t1.Mul(a.x, a.y)
-       t1.Lsh(t1, 1)
-
-       e.x.Mod(t1, p)
-       e.y.Set(ty)
-
-       pool.Put(t1)
-       pool.Put(t2)
-       pool.Put(ty)
-
-       return e
-}
-
-func (e *gfP2) Invert(a *gfP2, pool *bnPool) *gfP2 {
-       // See "Implementing cryptographic pairings", M. Scott, section 3.2.
-       // ftp://136.206.11.249/pub/crypto/pairings.pdf
-       t := pool.Get()
-       t.Mul(a.y, a.y)
-       t2 := pool.Get()
-       t2.Mul(a.x, a.x)
-       t.Add(t, t2)
-
-       inv := pool.Get()
-       inv.ModInverse(t, p)
-
-       e.x.Neg(a.x)
-       e.x.Mul(e.x, inv)
-       e.x.Mod(e.x, p)
-
-       e.y.Mul(a.y, inv)
-       e.y.Mod(e.y, p)
-
-       pool.Put(t)
-       pool.Put(t2)
-       pool.Put(inv)
-
-       return e
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/bn256/gfp6.go
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/bn256/gfp6.go 
b/cli/vendor/golang.org/x/crypto/bn256/gfp6.go
deleted file mode 100644
index f98ae78..0000000
--- a/cli/vendor/golang.org/x/crypto/bn256/gfp6.go
+++ /dev/null
@@ -1,296 +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 bn256
-
-// For details of the algorithms used, see "Multiplication and Squaring on
-// Pairing-Friendly Fields, Devegili et al.
-// http://eprint.iacr.org/2006/471.pdf.
-
-import (
-       "math/big"
-)
-
-// gfP6 implements the field of size p⁶ as a cubic extension of gfP2 where 
τ³=ξ
-// and ξ=i+3.
-type gfP6 struct {
-       x, y, z *gfP2 // value is xτ² + yτ + z
-}
-
-func newGFp6(pool *bnPool) *gfP6 {
-       return &gfP6{newGFp2(pool), newGFp2(pool), newGFp2(pool)}
-}
-
-func (e *gfP6) String() string {
-       return "(" + e.x.String() + "," + e.y.String() + "," + e.z.String() + 
")"
-}
-
-func (e *gfP6) Put(pool *bnPool) {
-       e.x.Put(pool)
-       e.y.Put(pool)
-       e.z.Put(pool)
-}
-
-func (e *gfP6) Set(a *gfP6) *gfP6 {
-       e.x.Set(a.x)
-       e.y.Set(a.y)
-       e.z.Set(a.z)
-       return e
-}
-
-func (e *gfP6) SetZero() *gfP6 {
-       e.x.SetZero()
-       e.y.SetZero()
-       e.z.SetZero()
-       return e
-}
-
-func (e *gfP6) SetOne() *gfP6 {
-       e.x.SetZero()
-       e.y.SetZero()
-       e.z.SetOne()
-       return e
-}
-
-func (e *gfP6) Minimal() {
-       e.x.Minimal()
-       e.y.Minimal()
-       e.z.Minimal()
-}
-
-func (e *gfP6) IsZero() bool {
-       return e.x.IsZero() && e.y.IsZero() && e.z.IsZero()
-}
-
-func (e *gfP6) IsOne() bool {
-       return e.x.IsZero() && e.y.IsZero() && e.z.IsOne()
-}
-
-func (e *gfP6) Negative(a *gfP6) *gfP6 {
-       e.x.Negative(a.x)
-       e.y.Negative(a.y)
-       e.z.Negative(a.z)
-       return e
-}
-
-func (e *gfP6) Frobenius(a *gfP6, pool *bnPool) *gfP6 {
-       e.x.Conjugate(a.x)
-       e.y.Conjugate(a.y)
-       e.z.Conjugate(a.z)
-
-       e.x.Mul(e.x, xiTo2PMinus2Over3, pool)
-       e.y.Mul(e.y, xiToPMinus1Over3, pool)
-       return e
-}
-
-// FrobeniusP2 computes (xτ²+yτ+z)^(p²) = xτ^(2p²) + yτ^(p²) + z
-func (e *gfP6) FrobeniusP2(a *gfP6) *gfP6 {
-       // τ^(2p²) = τ²τ^(2p²-2) = τ²ξ^((2p²-2)/3)
-       e.x.MulScalar(a.x, xiTo2PSquaredMinus2Over3)
-       // τ^(p²) = ττ^(p²-1) = τξ^((p²-1)/3)
-       e.y.MulScalar(a.y, xiToPSquaredMinus1Over3)
-       e.z.Set(a.z)
-       return e
-}
-
-func (e *gfP6) Add(a, b *gfP6) *gfP6 {
-       e.x.Add(a.x, b.x)
-       e.y.Add(a.y, b.y)
-       e.z.Add(a.z, b.z)
-       return e
-}
-
-func (e *gfP6) Sub(a, b *gfP6) *gfP6 {
-       e.x.Sub(a.x, b.x)
-       e.y.Sub(a.y, b.y)
-       e.z.Sub(a.z, b.z)
-       return e
-}
-
-func (e *gfP6) Double(a *gfP6) *gfP6 {
-       e.x.Double(a.x)
-       e.y.Double(a.y)
-       e.z.Double(a.z)
-       return e
-}
-
-func (e *gfP6) Mul(a, b *gfP6, pool *bnPool) *gfP6 {
-       // "Multiplication and Squaring on Pairing-Friendly Fields"
-       // Section 4, Karatsuba method.
-       // http://eprint.iacr.org/2006/471.pdf
-
-       v0 := newGFp2(pool)
-       v0.Mul(a.z, b.z, pool)
-       v1 := newGFp2(pool)
-       v1.Mul(a.y, b.y, pool)
-       v2 := newGFp2(pool)
-       v2.Mul(a.x, b.x, pool)
-
-       t0 := newGFp2(pool)
-       t0.Add(a.x, a.y)
-       t1 := newGFp2(pool)
-       t1.Add(b.x, b.y)
-       tz := newGFp2(pool)
-       tz.Mul(t0, t1, pool)
-
-       tz.Sub(tz, v1)
-       tz.Sub(tz, v2)
-       tz.MulXi(tz, pool)
-       tz.Add(tz, v0)
-
-       t0.Add(a.y, a.z)
-       t1.Add(b.y, b.z)
-       ty := newGFp2(pool)
-       ty.Mul(t0, t1, pool)
-       ty.Sub(ty, v0)
-       ty.Sub(ty, v1)
-       t0.MulXi(v2, pool)
-       ty.Add(ty, t0)
-
-       t0.Add(a.x, a.z)
-       t1.Add(b.x, b.z)
-       tx := newGFp2(pool)
-       tx.Mul(t0, t1, pool)
-       tx.Sub(tx, v0)
-       tx.Add(tx, v1)
-       tx.Sub(tx, v2)
-
-       e.x.Set(tx)
-       e.y.Set(ty)
-       e.z.Set(tz)
-
-       t0.Put(pool)
-       t1.Put(pool)
-       tx.Put(pool)
-       ty.Put(pool)
-       tz.Put(pool)
-       v0.Put(pool)
-       v1.Put(pool)
-       v2.Put(pool)
-       return e
-}
-
-func (e *gfP6) MulScalar(a *gfP6, b *gfP2, pool *bnPool) *gfP6 {
-       e.x.Mul(a.x, b, pool)
-       e.y.Mul(a.y, b, pool)
-       e.z.Mul(a.z, b, pool)
-       return e
-}
-
-func (e *gfP6) MulGFP(a *gfP6, b *big.Int) *gfP6 {
-       e.x.MulScalar(a.x, b)
-       e.y.MulScalar(a.y, b)
-       e.z.MulScalar(a.z, b)
-       return e
-}
-
-// MulTau computes τ·(aτ²+bτ+c) = bτ²+cτ+aξ
-func (e *gfP6) MulTau(a *gfP6, pool *bnPool) {
-       tz := newGFp2(pool)
-       tz.MulXi(a.x, pool)
-       ty := newGFp2(pool)
-       ty.Set(a.y)
-       e.y.Set(a.z)
-       e.x.Set(ty)
-       e.z.Set(tz)
-       tz.Put(pool)
-       ty.Put(pool)
-}
-
-func (e *gfP6) Square(a *gfP6, pool *bnPool) *gfP6 {
-       v0 := newGFp2(pool).Square(a.z, pool)
-       v1 := newGFp2(pool).Square(a.y, pool)
-       v2 := newGFp2(pool).Square(a.x, pool)
-
-       c0 := newGFp2(pool).Add(a.x, a.y)
-       c0.Square(c0, pool)
-       c0.Sub(c0, v1)
-       c0.Sub(c0, v2)
-       c0.MulXi(c0, pool)
-       c0.Add(c0, v0)
-
-       c1 := newGFp2(pool).Add(a.y, a.z)
-       c1.Square(c1, pool)
-       c1.Sub(c1, v0)
-       c1.Sub(c1, v1)
-       xiV2 := newGFp2(pool).MulXi(v2, pool)
-       c1.Add(c1, xiV2)
-
-       c2 := newGFp2(pool).Add(a.x, a.z)
-       c2.Square(c2, pool)
-       c2.Sub(c2, v0)
-       c2.Add(c2, v1)
-       c2.Sub(c2, v2)
-
-       e.x.Set(c2)
-       e.y.Set(c1)
-       e.z.Set(c0)
-
-       v0.Put(pool)
-       v1.Put(pool)
-       v2.Put(pool)
-       c0.Put(pool)
-       c1.Put(pool)
-       c2.Put(pool)
-       xiV2.Put(pool)
-
-       return e
-}
-
-func (e *gfP6) Invert(a *gfP6, pool *bnPool) *gfP6 {
-       // See "Implementing cryptographic pairings", M. Scott, section 3.2.
-       // ftp://136.206.11.249/pub/crypto/pairings.pdf
-
-       // Here we can give a short explanation of how it works: let j be a 
cubic root of
-       // unity in GF(p²) so that 1+j+j²=0.
-       // Then (xτ² + yτ + z)(xj²τ² + yjτ + z)(xjτ² + yj²τ + z)
-       // = (xτ² + yτ + z)(Cτ²+Bτ+A)
-       // = (x³ξ²+y³ξ+z³-3ξxyz) = F is an element of the base field 
(the norm).
-       //
-       // On the other hand (xj²τ² + yjτ + z)(xjτ² + yj²τ + z)
-       // = τ²(y²-ξxz) + τ(ξx²-yz) + (z²-ξxy)
-       //
-       // So that's why A = (z²-ξxy), B = (ξx²-yz), C = (y²-ξxz)
-       t1 := newGFp2(pool)
-
-       A := newGFp2(pool)
-       A.Square(a.z, pool)
-       t1.Mul(a.x, a.y, pool)
-       t1.MulXi(t1, pool)
-       A.Sub(A, t1)
-
-       B := newGFp2(pool)
-       B.Square(a.x, pool)
-       B.MulXi(B, pool)
-       t1.Mul(a.y, a.z, pool)
-       B.Sub(B, t1)
-
-       C := newGFp2(pool)
-       C.Square(a.y, pool)
-       t1.Mul(a.x, a.z, pool)
-       C.Sub(C, t1)
-
-       F := newGFp2(pool)
-       F.Mul(C, a.y, pool)
-       F.MulXi(F, pool)
-       t1.Mul(A, a.z, pool)
-       F.Add(F, t1)
-       t1.Mul(B, a.x, pool)
-       t1.MulXi(t1, pool)
-       F.Add(F, t1)
-
-       F.Invert(F, pool)
-
-       e.x.Mul(C, F, pool)
-       e.y.Mul(B, F, pool)
-       e.z.Mul(A, F, pool)
-
-       t1.Put(pool)
-       A.Put(pool)
-       B.Put(pool)
-       C.Put(pool)
-       F.Put(pool)
-
-       return e
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/bn256/optate.go
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/bn256/optate.go 
b/cli/vendor/golang.org/x/crypto/bn256/optate.go
deleted file mode 100644
index 7ae0746..0000000
--- a/cli/vendor/golang.org/x/crypto/bn256/optate.go
+++ /dev/null
@@ -1,395 +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 bn256
-
-func lineFunctionAdd(r, p *twistPoint, q *curvePoint, r2 *gfP2, pool *bnPool) 
(a, b, c *gfP2, rOut *twistPoint) {
-       // See the mixed addition algorithm from "Faster Computation of the
-       // Tate Pairing", http://arxiv.org/pdf/0904.0854v3.pdf
-
-       B := newGFp2(pool).Mul(p.x, r.t, pool)
-
-       D := newGFp2(pool).Add(p.y, r.z)
-       D.Square(D, pool)
-       D.Sub(D, r2)
-       D.Sub(D, r.t)
-       D.Mul(D, r.t, pool)
-
-       H := newGFp2(pool).Sub(B, r.x)
-       I := newGFp2(pool).Square(H, pool)
-
-       E := newGFp2(pool).Add(I, I)
-       E.Add(E, E)
-
-       J := newGFp2(pool).Mul(H, E, pool)
-
-       L1 := newGFp2(pool).Sub(D, r.y)
-       L1.Sub(L1, r.y)
-
-       V := newGFp2(pool).Mul(r.x, E, pool)
-
-       rOut = newTwistPoint(pool)
-       rOut.x.Square(L1, pool)
-       rOut.x.Sub(rOut.x, J)
-       rOut.x.Sub(rOut.x, V)
-       rOut.x.Sub(rOut.x, V)
-
-       rOut.z.Add(r.z, H)
-       rOut.z.Square(rOut.z, pool)
-       rOut.z.Sub(rOut.z, r.t)
-       rOut.z.Sub(rOut.z, I)
-
-       t := newGFp2(pool).Sub(V, rOut.x)
-       t.Mul(t, L1, pool)
-       t2 := newGFp2(pool).Mul(r.y, J, pool)
-       t2.Add(t2, t2)
-       rOut.y.Sub(t, t2)
-
-       rOut.t.Square(rOut.z, pool)
-
-       t.Add(p.y, rOut.z)
-       t.Square(t, pool)
-       t.Sub(t, r2)
-       t.Sub(t, rOut.t)
-
-       t2.Mul(L1, p.x, pool)
-       t2.Add(t2, t2)
-       a = newGFp2(pool)
-       a.Sub(t2, t)
-
-       c = newGFp2(pool)
-       c.MulScalar(rOut.z, q.y)
-       c.Add(c, c)
-
-       b = newGFp2(pool)
-       b.SetZero()
-       b.Sub(b, L1)
-       b.MulScalar(b, q.x)
-       b.Add(b, b)
-
-       B.Put(pool)
-       D.Put(pool)
-       H.Put(pool)
-       I.Put(pool)
-       E.Put(pool)
-       J.Put(pool)
-       L1.Put(pool)
-       V.Put(pool)
-       t.Put(pool)
-       t2.Put(pool)
-
-       return
-}
-
-func lineFunctionDouble(r *twistPoint, q *curvePoint, pool *bnPool) (a, b, c 
*gfP2, rOut *twistPoint) {
-       // See the doubling algorithm for a=0 from "Faster Computation of the
-       // Tate Pairing", http://arxiv.org/pdf/0904.0854v3.pdf
-
-       A := newGFp2(pool).Square(r.x, pool)
-       B := newGFp2(pool).Square(r.y, pool)
-       C := newGFp2(pool).Square(B, pool)
-
-       D := newGFp2(pool).Add(r.x, B)
-       D.Square(D, pool)
-       D.Sub(D, A)
-       D.Sub(D, C)
-       D.Add(D, D)
-
-       E := newGFp2(pool).Add(A, A)
-       E.Add(E, A)
-
-       G := newGFp2(pool).Square(E, pool)
-
-       rOut = newTwistPoint(pool)
-       rOut.x.Sub(G, D)
-       rOut.x.Sub(rOut.x, D)
-
-       rOut.z.Add(r.y, r.z)
-       rOut.z.Square(rOut.z, pool)
-       rOut.z.Sub(rOut.z, B)
-       rOut.z.Sub(rOut.z, r.t)
-
-       rOut.y.Sub(D, rOut.x)
-       rOut.y.Mul(rOut.y, E, pool)
-       t := newGFp2(pool).Add(C, C)
-       t.Add(t, t)
-       t.Add(t, t)
-       rOut.y.Sub(rOut.y, t)
-
-       rOut.t.Square(rOut.z, pool)
-
-       t.Mul(E, r.t, pool)
-       t.Add(t, t)
-       b = newGFp2(pool)
-       b.SetZero()
-       b.Sub(b, t)
-       b.MulScalar(b, q.x)
-
-       a = newGFp2(pool)
-       a.Add(r.x, E)
-       a.Square(a, pool)
-       a.Sub(a, A)
-       a.Sub(a, G)
-       t.Add(B, B)
-       t.Add(t, t)
-       a.Sub(a, t)
-
-       c = newGFp2(pool)
-       c.Mul(rOut.z, r.t, pool)
-       c.Add(c, c)
-       c.MulScalar(c, q.y)
-
-       A.Put(pool)
-       B.Put(pool)
-       C.Put(pool)
-       D.Put(pool)
-       E.Put(pool)
-       G.Put(pool)
-       t.Put(pool)
-
-       return
-}
-
-func mulLine(ret *gfP12, a, b, c *gfP2, pool *bnPool) {
-       a2 := newGFp6(pool)
-       a2.x.SetZero()
-       a2.y.Set(a)
-       a2.z.Set(b)
-       a2.Mul(a2, ret.x, pool)
-       t3 := newGFp6(pool).MulScalar(ret.y, c, pool)
-
-       t := newGFp2(pool)
-       t.Add(b, c)
-       t2 := newGFp6(pool)
-       t2.x.SetZero()
-       t2.y.Set(a)
-       t2.z.Set(t)
-       ret.x.Add(ret.x, ret.y)
-
-       ret.y.Set(t3)
-
-       ret.x.Mul(ret.x, t2, pool)
-       ret.x.Sub(ret.x, a2)
-       ret.x.Sub(ret.x, ret.y)
-       a2.MulTau(a2, pool)
-       ret.y.Add(ret.y, a2)
-
-       a2.Put(pool)
-       t3.Put(pool)
-       t2.Put(pool)
-       t.Put(pool)
-}
-
-// sixuPlus2NAF is 6u+2 in non-adjacent form.
-var sixuPlus2NAF = []int8{0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, -1, 
0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, -1, 0, 1, 0, 0, 0, 1, 0, -1, 0, 0, 0, 
-1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, -1, 0, 0, 0, 0, 1, 0, 0, 0, 1}
-
-// miller implements the Miller loop for calculating the Optimal Ate pairing.
-// See algorithm 1 from http://cryptojedi.org/papers/dclxvi-20100714.pdf
-func miller(q *twistPoint, p *curvePoint, pool *bnPool) *gfP12 {
-       ret := newGFp12(pool)
-       ret.SetOne()
-
-       aAffine := newTwistPoint(pool)
-       aAffine.Set(q)
-       aAffine.MakeAffine(pool)
-
-       bAffine := newCurvePoint(pool)
-       bAffine.Set(p)
-       bAffine.MakeAffine(pool)
-
-       minusA := newTwistPoint(pool)
-       minusA.Negative(aAffine, pool)
-
-       r := newTwistPoint(pool)
-       r.Set(aAffine)
-
-       r2 := newGFp2(pool)
-       r2.Square(aAffine.y, pool)
-
-       for i := len(sixuPlus2NAF) - 1; i > 0; i-- {
-               a, b, c, newR := lineFunctionDouble(r, bAffine, pool)
-               if i != len(sixuPlus2NAF)-1 {
-                       ret.Square(ret, pool)
-               }
-
-               mulLine(ret, a, b, c, pool)
-               a.Put(pool)
-               b.Put(pool)
-               c.Put(pool)
-               r.Put(pool)
-               r = newR
-
-               switch sixuPlus2NAF[i-1] {
-               case 1:
-                       a, b, c, newR = lineFunctionAdd(r, aAffine, bAffine, 
r2, pool)
-               case -1:
-                       a, b, c, newR = lineFunctionAdd(r, minusA, bAffine, r2, 
pool)
-               default:
-                       continue
-               }
-
-               mulLine(ret, a, b, c, pool)
-               a.Put(pool)
-               b.Put(pool)
-               c.Put(pool)
-               r.Put(pool)
-               r = newR
-       }
-
-       // In order to calculate Q1 we have to convert q from the sextic twist
-       // to the full GF(p^12) group, apply the Frobenius there, and convert
-       // back.
-       //
-       // The twist isomorphism is (x', y') -> (xω², yω³). If we consider 
just
-       // x for a moment, then after applying the Frobenius, we have x̄ω^(2p)
-       // where x̄ is the conjugate of x. If we are going to apply the inverse
-       // isomorphism we need a value with a single coefficient of ω² so we
-       // rewrite this as x̄ω^(2p-2)ω². ξ⁶ = ω and, due to the 
construction of
-       // p, 2p-2 is a multiple of six. Therefore we can rewrite as
-       // x̄ξ^((p-1)/3)ω² and applying the inverse isomorphism eliminates 
the
-       // ω².
-       //
-       // A similar argument can be made for the y value.
-
-       q1 := newTwistPoint(pool)
-       q1.x.Conjugate(aAffine.x)
-       q1.x.Mul(q1.x, xiToPMinus1Over3, pool)
-       q1.y.Conjugate(aAffine.y)
-       q1.y.Mul(q1.y, xiToPMinus1Over2, pool)
-       q1.z.SetOne()
-       q1.t.SetOne()
-
-       // For Q2 we are applying the p² Frobenius. The two conjugations cancel
-       // out and we are left only with the factors from the isomorphism. In
-       // the case of x, we end up with a pure number which is why
-       // xiToPSquaredMinus1Over3 is ∈ GF(p). With y we get a factor of -1. 
We
-       // ignore this to end up with -Q2.
-
-       minusQ2 := newTwistPoint(pool)
-       minusQ2.x.MulScalar(aAffine.x, xiToPSquaredMinus1Over3)
-       minusQ2.y.Set(aAffine.y)
-       minusQ2.z.SetOne()
-       minusQ2.t.SetOne()
-
-       r2.Square(q1.y, pool)
-       a, b, c, newR := lineFunctionAdd(r, q1, bAffine, r2, pool)
-       mulLine(ret, a, b, c, pool)
-       a.Put(pool)
-       b.Put(pool)
-       c.Put(pool)
-       r.Put(pool)
-       r = newR
-
-       r2.Square(minusQ2.y, pool)
-       a, b, c, newR = lineFunctionAdd(r, minusQ2, bAffine, r2, pool)
-       mulLine(ret, a, b, c, pool)
-       a.Put(pool)
-       b.Put(pool)
-       c.Put(pool)
-       r.Put(pool)
-       r = newR
-
-       aAffine.Put(pool)
-       bAffine.Put(pool)
-       minusA.Put(pool)
-       r.Put(pool)
-       r2.Put(pool)
-
-       return ret
-}
-
-// finalExponentiation computes the (p¹²-1)/Order-th power of an element of
-// GF(p¹²) to obtain an element of GT (steps 13-15 of algorithm 1 from
-// http://cryptojedi.org/papers/dclxvi-20100714.pdf)
-func finalExponentiation(in *gfP12, pool *bnPool) *gfP12 {
-       t1 := newGFp12(pool)
-
-       // This is the p^6-Frobenius
-       t1.x.Negative(in.x)
-       t1.y.Set(in.y)
-
-       inv := newGFp12(pool)
-       inv.Invert(in, pool)
-       t1.Mul(t1, inv, pool)
-
-       t2 := newGFp12(pool).FrobeniusP2(t1, pool)
-       t1.Mul(t1, t2, pool)
-
-       fp := newGFp12(pool).Frobenius(t1, pool)
-       fp2 := newGFp12(pool).FrobeniusP2(t1, pool)
-       fp3 := newGFp12(pool).Frobenius(fp2, pool)
-
-       fu, fu2, fu3 := newGFp12(pool), newGFp12(pool), newGFp12(pool)
-       fu.Exp(t1, u, pool)
-       fu2.Exp(fu, u, pool)
-       fu3.Exp(fu2, u, pool)
-
-       y3 := newGFp12(pool).Frobenius(fu, pool)
-       fu2p := newGFp12(pool).Frobenius(fu2, pool)
-       fu3p := newGFp12(pool).Frobenius(fu3, pool)
-       y2 := newGFp12(pool).FrobeniusP2(fu2, pool)
-
-       y0 := newGFp12(pool)
-       y0.Mul(fp, fp2, pool)
-       y0.Mul(y0, fp3, pool)
-
-       y1, y4, y5 := newGFp12(pool), newGFp12(pool), newGFp12(pool)
-       y1.Conjugate(t1)
-       y5.Conjugate(fu2)
-       y3.Conjugate(y3)
-       y4.Mul(fu, fu2p, pool)
-       y4.Conjugate(y4)
-
-       y6 := newGFp12(pool)
-       y6.Mul(fu3, fu3p, pool)
-       y6.Conjugate(y6)
-
-       t0 := newGFp12(pool)
-       t0.Square(y6, pool)
-       t0.Mul(t0, y4, pool)
-       t0.Mul(t0, y5, pool)
-       t1.Mul(y3, y5, pool)
-       t1.Mul(t1, t0, pool)
-       t0.Mul(t0, y2, pool)
-       t1.Square(t1, pool)
-       t1.Mul(t1, t0, pool)
-       t1.Square(t1, pool)
-       t0.Mul(t1, y1, pool)
-       t1.Mul(t1, y0, pool)
-       t0.Square(t0, pool)
-       t0.Mul(t0, t1, pool)
-
-       inv.Put(pool)
-       t1.Put(pool)
-       t2.Put(pool)
-       fp.Put(pool)
-       fp2.Put(pool)
-       fp3.Put(pool)
-       fu.Put(pool)
-       fu2.Put(pool)
-       fu3.Put(pool)
-       fu2p.Put(pool)
-       fu3p.Put(pool)
-       y0.Put(pool)
-       y1.Put(pool)
-       y2.Put(pool)
-       y3.Put(pool)
-       y4.Put(pool)
-       y5.Put(pool)
-       y6.Put(pool)
-
-       return t0
-}
-
-func optimalAte(a *twistPoint, b *curvePoint, pool *bnPool) *gfP12 {
-       e := miller(a, b, pool)
-       ret := finalExponentiation(e, pool)
-       e.Put(pool)
-
-       if a.IsInfinity() || b.IsInfinity() {
-               ret.SetOne()
-       }
-
-       return ret
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/868863aa/cli/vendor/golang.org/x/crypto/bn256/twist.go
----------------------------------------------------------------------
diff --git a/cli/vendor/golang.org/x/crypto/bn256/twist.go 
b/cli/vendor/golang.org/x/crypto/bn256/twist.go
deleted file mode 100644
index 4f8b3fe..0000000
--- a/cli/vendor/golang.org/x/crypto/bn256/twist.go
+++ /dev/null
@@ -1,249 +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 bn256
-
-import (
-       "math/big"
-)
-
-// twistPoint implements the elliptic curve y²=x³+3/ξ over GF(p²). Points 
are
-// kept in Jacobian form and t=z² when valid. The group G₂ is the set of
-// n-torsion points of this curve over GF(p²) (where n = Order)
-type twistPoint struct {
-       x, y, z, t *gfP2
-}
-
-var twistB = &gfP2{
-       
bigFromBase10("6500054969564660373279643874235990574282535810762300357187714502686418407178"),
-       
bigFromBase10("45500384786952622612957507119651934019977750675336102500314001518804928850249"),
-}
-
-// twistGen is the generator of group G₂.
-var twistGen = &twistPoint{
-       &gfP2{
-               
bigFromBase10("21167961636542580255011770066570541300993051739349375019639421053990175267184"),
-               
bigFromBase10("64746500191241794695844075326670126197795977525365406531717464316923369116492"),
-       },
-       &gfP2{
-               
bigFromBase10("20666913350058776956210519119118544732556678129809273996262322366050359951122"),
-               
bigFromBase10("17778617556404439934652658462602675281523610326338642107814333856843981424549"),
-       },
-       &gfP2{
-               bigFromBase10("0"),
-               bigFromBase10("1"),
-       },
-       &gfP2{
-               bigFromBase10("0"),
-               bigFromBase10("1"),
-       },
-}
-
-func newTwistPoint(pool *bnPool) *twistPoint {
-       return &twistPoint{
-               newGFp2(pool),
-               newGFp2(pool),
-               newGFp2(pool),
-               newGFp2(pool),
-       }
-}
-
-func (c *twistPoint) String() string {
-       return "(" + c.x.String() + ", " + c.y.String() + ", " + c.z.String() + 
")"
-}
-
-func (c *twistPoint) Put(pool *bnPool) {
-       c.x.Put(pool)
-       c.y.Put(pool)
-       c.z.Put(pool)
-       c.t.Put(pool)
-}
-
-func (c *twistPoint) Set(a *twistPoint) {
-       c.x.Set(a.x)
-       c.y.Set(a.y)
-       c.z.Set(a.z)
-       c.t.Set(a.t)
-}
-
-// IsOnCurve returns true iff c is on the curve where c must be in affine form.
-func (c *twistPoint) IsOnCurve() bool {
-       pool := new(bnPool)
-       yy := newGFp2(pool).Square(c.y, pool)
-       xxx := newGFp2(pool).Square(c.x, pool)
-       xxx.Mul(xxx, c.x, pool)
-       yy.Sub(yy, xxx)
-       yy.Sub(yy, twistB)
-       yy.Minimal()
-       return yy.x.Sign() == 0 && yy.y.Sign() == 0
-}
-
-func (c *twistPoint) SetInfinity() {
-       c.z.SetZero()
-}
-
-func (c *twistPoint) IsInfinity() bool {
-       return c.z.IsZero()
-}
-
-func (c *twistPoint) Add(a, b *twistPoint, pool *bnPool) {
-       // For additional comments, see the same function in curve.go.
-
-       if a.IsInfinity() {
-               c.Set(b)
-               return
-       }
-       if b.IsInfinity() {
-               c.Set(a)
-               return
-       }
-
-       // See 
http://hyperelliptic.org/EFD/g1p/auto-code/shortw/jacobian-0/addition/add-2007-bl.op3
-       z1z1 := newGFp2(pool).Square(a.z, pool)
-       z2z2 := newGFp2(pool).Square(b.z, pool)
-       u1 := newGFp2(pool).Mul(a.x, z2z2, pool)
-       u2 := newGFp2(pool).Mul(b.x, z1z1, pool)
-
-       t := newGFp2(pool).Mul(b.z, z2z2, pool)
-       s1 := newGFp2(pool).Mul(a.y, t, pool)
-
-       t.Mul(a.z, z1z1, pool)
-       s2 := newGFp2(pool).Mul(b.y, t, pool)
-
-       h := newGFp2(pool).Sub(u2, u1)
-       xEqual := h.IsZero()
-
-       t.Add(h, h)
-       i := newGFp2(pool).Square(t, pool)
-       j := newGFp2(pool).Mul(h, i, pool)
-
-       t.Sub(s2, s1)
-       yEqual := t.IsZero()
-       if xEqual && yEqual {
-               c.Double(a, pool)
-               return
-       }
-       r := newGFp2(pool).Add(t, t)
-
-       v := newGFp2(pool).Mul(u1, i, pool)
-
-       t4 := newGFp2(pool).Square(r, pool)
-       t.Add(v, v)
-       t6 := newGFp2(pool).Sub(t4, j)
-       c.x.Sub(t6, t)
-
-       t.Sub(v, c.x)       // t7
-       t4.Mul(s1, j, pool) // t8
-       t6.Add(t4, t4)      // t9
-       t4.Mul(r, t, pool)  // t10
-       c.y.Sub(t4, t6)
-
-       t.Add(a.z, b.z)    // t11
-       t4.Square(t, pool) // t12
-       t.Sub(t4, z1z1)    // t13
-       t4.Sub(t, z2z2)    // t14
-       c.z.Mul(t4, h, pool)
-
-       z1z1.Put(pool)
-       z2z2.Put(pool)
-       u1.Put(pool)
-       u2.Put(pool)
-       t.Put(pool)
-       s1.Put(pool)
-       s2.Put(pool)
-       h.Put(pool)
-       i.Put(pool)
-       j.Put(pool)
-       r.Put(pool)
-       v.Put(pool)
-       t4.Put(pool)
-       t6.Put(pool)
-}
-
-func (c *twistPoint) Double(a *twistPoint, pool *bnPool) {
-       // See 
http://hyperelliptic.org/EFD/g1p/auto-code/shortw/jacobian-0/doubling/dbl-2009-l.op3
-       A := newGFp2(pool).Square(a.x, pool)
-       B := newGFp2(pool).Square(a.y, pool)
-       C := newGFp2(pool).Square(B, pool)
-
-       t := newGFp2(pool).Add(a.x, B)
-       t2 := newGFp2(pool).Square(t, pool)
-       t.Sub(t2, A)
-       t2.Sub(t, C)
-       d := newGFp2(pool).Add(t2, t2)
-       t.Add(A, A)
-       e := newGFp2(pool).Add(t, A)
-       f := newGFp2(pool).Square(e, pool)
-
-       t.Add(d, d)
-       c.x.Sub(f, t)
-
-       t.Add(C, C)
-       t2.Add(t, t)
-       t.Add(t2, t2)
-       c.y.Sub(d, c.x)
-       t2.Mul(e, c.y, pool)
-       c.y.Sub(t2, t)
-
-       t.Mul(a.y, a.z, pool)
-       c.z.Add(t, t)
-
-       A.Put(pool)
-       B.Put(pool)
-       C.Put(pool)
-       t.Put(pool)
-       t2.Put(pool)
-       d.Put(pool)
-       e.Put(pool)
-       f.Put(pool)
-}
-
-func (c *twistPoint) Mul(a *twistPoint, scalar *big.Int, pool *bnPool) 
*twistPoint {
-       sum := newTwistPoint(pool)
-       sum.SetInfinity()
-       t := newTwistPoint(pool)
-
-       for i := scalar.BitLen(); i >= 0; i-- {
-               t.Double(sum, pool)
-               if scalar.Bit(i) != 0 {
-                       sum.Add(t, a, pool)
-               } else {
-                       sum.Set(t)
-               }
-       }
-
-       c.Set(sum)
-       sum.Put(pool)
-       t.Put(pool)
-       return c
-}
-
-func (c *twistPoint) MakeAffine(pool *bnPool) *twistPoint {
-       if c.z.IsOne() {
-               return c
-       }
-
-       zInv := newGFp2(pool).Invert(c.z, pool)
-       t := newGFp2(pool).Mul(c.y, zInv, pool)
-       zInv2 := newGFp2(pool).Square(zInv, pool)
-       c.y.Mul(t, zInv2, pool)
-       t.Mul(c.x, zInv2, pool)
-       c.x.Set(t)
-       c.z.SetOne()
-       c.t.SetOne()
-
-       zInv.Put(pool)
-       t.Put(pool)
-       zInv2.Put(pool)
-
-       return c
-}
-
-func (c *twistPoint) Negative(a *twistPoint, pool *bnPool) {
-       c.x.Set(a.x)
-       c.y.SetZero()
-       c.y.Sub(c.y, a.y)
-       c.z.Set(a.z)
-       c.t.SetZero()
-}

Reply via email to