Merge pull request #81 from square/cs/cli-tests

Add command-line test scripts
This commit is contained in:
Cedric Staub
2016-06-29 11:24:29 -07:00
committed by GitHub
4 changed files with 233 additions and 4 deletions
+2
View File
@@ -7,6 +7,7 @@ go:
before_install:
- go get github.com/Masterminds/glide
- pip install cram --user `whoami`
install:
- go build .
@@ -16,3 +17,4 @@ before_script:
script:
- go test -v `glide nv`
- PATH=$PWD:$PATH cram -v tests/*.t
+9 -4
View File
@@ -43,10 +43,11 @@ import (
var (
app = kingpin.New("certigo", "A command line certificate examination utility.")
dump = app.Command("dump", "Display information about a certificate from a file/stdin.")
dumpFiles = dump.Arg("file", "Certificate file to dump (or stdin if not specified).").ExistingFiles()
dumpType = dump.Flag("format", "Format of given input (PEM, DER, JCEKS, PKCS12; heuristic if missing).").String()
dumpPem = dump.Flag("pem", "Write output as PEM blocks instead of human-readable format.").Bool()
dump = app.Command("dump", "Display information about a certificate from a file/stdin.")
dumpFiles = dump.Arg("file", "Certificate file to dump (or stdin if not specified).").ExistingFiles()
dumpType = dump.Flag("format", "Format of given input (PEM, DER, JCEKS, PKCS12; heuristic if missing).").String()
dumpPem = dump.Flag("pem", "Write output as PEM blocks instead of human-readable format.").Bool()
dumpPassword = dump.Flag("password", "Password for PKCS12/JCEKS key stores (if required).").String()
connect = app.Command("connect", "Connect to a server and print its certificate(s).")
connectTo = connect.Arg("server:port", "Hostname or IP to connect to.").String()
@@ -161,6 +162,10 @@ func readCerts(files []*os.File, callback func(*pem.Block)) {
}
func readPassword(prompt string) string {
if *dumpPassword != "" {
return *dumpPassword
}
var tty *os.File
tty, err := os.OpenFile("/dev/tty", os.O_RDWR, 0)
if err != nil {
+107
View File
@@ -0,0 +1,107 @@
Set up test data.
$ base64 --decode > example.jceks <<EOF
> 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
> EOF
Dump PEM blocks from a JCEKS keystore.
$ certigo dump --pem --password password example.jceks
-----BEGIN RSA PRIVATE KEY-----
friendlyName: example-root
originFile: example.jceks
MIIEpQIBAAKCAQEAyjhKEojYzEPP81BXEFvPS1sPlHk1yhsDQ0qRo8ovIwSmdZVj
25zJq4yOg2fUXnrxx86gXSmbfvTRTxRM+3YwzEQciLiYUb84XxQX5WiHUnjZNvja
VGhblFFHeiCHj7tAHUb3ifGRh10cAnhAyFQmUuKAWDxzoV/8zFg4PL0juKUsU4xn
OyPHx8WlEpFc1AW3jvU/9XhZNJtrsbN1M4lHJNl//GKkXfqfxGgRA+/J17ykQCwI
LigM6sSIJN3HDytElUBTRavnldf6qPHKLnkLqjKQgL8FZH6VSoZ3sgtjZTK385XG
WW3xv4q5Uo0J+fhMWV+CLMtaQlGzolX0q7AnbQIDAQABAoIBAQCSQ0iAQ27bv6in
SlLOyDkVPhX0w/794a/oegUBPPn/EBv+LEF/1NWhORbTQMRAWhiK9o7TE4ceuqCx
2/MaZpBBDnq9ARda+T4itvvZuFM4eaRSuIfiSWED1A4o7WJfuYZUJsJgidNC3zul
JallvEfD54QBTigsbqsAekai2AMAR126+66rSJtlnT+6bxhACU7SvGqEjRhEWo+5
t0TowQ8rH1VKBAJwMWZ4E09fKiheie56F3Imjb3lUBCiGaUFstuvvk7lyobG9PMn
WtBrxlMekm5sK4GqIo3o24BmgsLwtQztNiz+AeWWg514touGCfpE3HYfeMscKjoj
Igorl71ZAoGBAPXPv5/pKDdgLPQWIabRKzY6aVdfWgYtTPGn2r4YiVEy5xzo538y
6Kt4bRR3ZCo9FoWeXkHMKc0Bz+TOncM4MKZAwonn/Q3z1euIb6kC2kX5maNpPtWV
Yeewu7NGFaiZGKUMYvZkmjmOsn5HTOkjv56uqRFJpsO4SRVFqpDrxbzLAoGBANKZ
/+cXneGeMXTsEWxff4LPTn8sBSGl9hyFGBJofPEzz14Axu9a/Dq8BdV9O1clSrmW
Hgba97DdExC94CXjh9kQW3ItiMMM3bkgPQvNaGegu5e8ukFMVFu1gBo0fUF1h6/M
5v9UXrN9c4fkl8HkDLc4rhufagwxHFcLf02DDR2nAoGBANxD6ux6W2Uzs1SNuF3p
NRWExfxbHypF0ZsB1ItfJT0zpdFMCpT6o29znBso2QLYdqQJQ2Emd5aStx3K36ed
ZEq14Rz+Ws3z348NVTFXswvdHAVIO9vb3j1lKuz8MlA/z8umC8/KWkCVU/DAJ3UK
aZzh2fH504uySRrcsHjoLOp9AoGAVgtFWo1zm/KeEj9A/x4lYrSARcUec5jy7MQU
CbFXGtUoLCf1H2X1F6oqWAdKb1h1J04GBpcAC+rHF1f8dH55yl28fvHLpqVjEXfy
eRf7SBuLiXs6PeOJs858ADjh1BTI0zLMThWSe5MN2L+0oSsjZthpii+fjEukYIv5
/xlECpECgYEAuCUw2cxdENXJH0qiz2tatyYG0zgpbSPcUpUkAnJMPri/lmjth9sV
JQM8G81RT4wdpvis82lvole1zHisQI8SGCNQpmZZmEYwukrkChbjJYEEMIolQHgd
OcNCwOR/omok5c6d1Yje4MI4tpx5U4xqbSpO9AGat3flt/amjshl+94=
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
friendlyName: example-root
originFile: example.jceks
MIIDUzCCAjugAwIBAgIJAKg+LQlirffwMA0GCSqGSIb3DQEBCwUAMFUxCzAJBgNV
BAYTAlVTMQswCQYDVQQIEwJDQTEQMA4GA1UEChMHY2VydGlnbzEQMA4GA1UECxMH
ZXhhbXBsZTEVMBMGA1UEAxMMZXhhbXBsZS1yb290MB4XDTE2MDYxMDIyMTQxMVoX
DTIzMDQxNTIyMTQxMVowVTELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRAwDgYD
VQQKEwdjZXJ0aWdvMRAwDgYDVQQLEwdleGFtcGxlMRUwEwYDVQQDEwxleGFtcGxl
LXJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDKOEoSiNjMQ8/z
UFcQW89LWw+UeTXKGwNDSpGjyi8jBKZ1lWPbnMmrjI6DZ9ReevHHzqBdKZt+9NFP
FEz7djDMRByIuJhRvzhfFBflaIdSeNk2+NpUaFuUUUd6IIePu0AdRveJ8ZGHXRwC
eEDIVCZS4oBYPHOhX/zMWDg8vSO4pSxTjGc7I8fHxaUSkVzUBbeO9T/1eFk0m2ux
s3UziUck2X/8YqRd+p/EaBED78nXvKRALAguKAzqxIgk3ccPK0SVQFNFq+eV1/qo
8coueQuqMpCAvwVkfpVKhneyC2NlMrfzlcZZbfG/irlSjQn5+ExZX4Isy1pCUbOi
VfSrsCdtAgMBAAGjJjAkMA4GA1UdDwEB/wQEAwICBDASBgNVHRMBAf8ECDAGAQH/
AgEAMA0GCSqGSIb3DQEBCwUAA4IBAQCLEJU65vTU+oLbNHLOCR6fALrbjK7xsi6S
FDpSXBMm74MWsy3myDBmXpOcN8hCYgsgivUXTQz9ynXP/pzOj4b83zzlaOfPtLTA
mMhKWVV4Q85mrDQz+HzG4lKXM78eTsD8PyrocA/tSE7mVEJ0Jal4E2KI/Z9/fqpY
FLB6LFlx5n83ehXM/egA0l4OeCC9nBKCeNUN3sIQO85lljyzAJdtWnsdoWogJs6q
jcV8n2U5xjZxN5ZFdclYLjq6g2cjEXXMQxb8b7ZhHjLWFdjHP85UvXHK3DpK3JmU
g8bYS7t1DJffDQNjawhlsMycKZN+r0ND0Um4m7AjGqxbKT/M2yKF
-----END CERTIFICATE-----
+115
View File
@@ -0,0 +1,115 @@
Set up test data.
$ base64 --decode > example.p12 <<EOF
> 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
> 80XXrt5bwvUCAggA
> EOF
Dump PEM blocks from a PKCS12 keystore.
$ certigo dump --pem --password password example.p12
-----BEGIN CERTIFICATE-----
friendlyName: example-expired
localKeyId: ba95b425d439cd6903f9d002c7b0b91d94df3a3f
originFile: example.p12
MIIDLDCCAhQCCQCa74bQsAj2/jANBgkqhkiG9w0BAQsFADBYMQswCQYDVQQGEwJV
UzELMAkGA1UECBMCQ0ExEDAOBgNVBAoTB2NlcnRpZ28xEDAOBgNVBAsTB2V4YW1w
bGUxGDAWBgNVBAMTD2V4YW1wbGUtZXhwaXJlZDAeFw0xNjA2MTAyMjE0MTJaFw0x
NjA2MTEyMjE0MTJaMFgxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEQMA4GA1UE
ChMHY2VydGlnbzEQMA4GA1UECxMHZXhhbXBsZTEYMBYGA1UEAxMPZXhhbXBsZS1l
eHBpcmVkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs6JY7Hm/NAsH
3nuMOOSBno6WmwsTYEw3hk4eyprWiI/NpoiaiZVCGahT8NAKqLDW5t9vgKz6c4ff
i5/aQ2scichq3QS7pELAYlS4b+ey3dA6hj62MOTTO4Ad5bFbbRZG+Mdm2Ayvl6eV
6catQhMvxt7aIoY9+bodyIYC1zZVqwQ5sOT+CPLDnxK+GvhoyD2jL/XwZplWiIVL
oX6eEpKIo/QtB6mSU216F/PuAzl/BJond+RzF9mcxJjdZYZlhwT8+o8oXEMI4vEf
3yzd+zB/mjuxDJR2iw3bSL+zZr2GV/CsMLG/jmvbpIuyI/p5eTy0alz+iHOiyeCN
9pgD6jyonwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQAMUuv/zVYniJ94GdOVcNJ/
bL3CxR5lo6YB04S425qsVrmOex3IQBL1fUduKSSxh5nF+6nzhRzRrDzp07f9pWHL
ZHt6rruVhE1Eqt7TKKCtZg0d85lmx5WddL+yWc5cI1UtCohB9+iZDPUBUR9RcszQ
dGD9PmxnPc9soEcQw/3iNffhMMpLRhPaRW9qtJU8wk16DZunWR8E0Oeq42jVTnb4
ZiD1Idajj0tj/rT5/M1K/ZLEiOzXVpo/+l/+hoXw9eVnRa2nBwjoiZ9cMuGKUpHm
YSv7SyFevNwDwcxcAq6uVitKi0YCqHiNZ7Ye3/BGRDUFpK2IASUo8YbXYNyA/6nu
-----END CERTIFICATE-----
-----BEGIN PRIVATE KEY-----
friendlyName: example-expired
localKeyId: ba95b425d439cd6903f9d002c7b0b91d94df3a3f
originFile: example.p12
MIIEowIBAAKCAQEAs6JY7Hm/NAsH3nuMOOSBno6WmwsTYEw3hk4eyprWiI/Npoia
iZVCGahT8NAKqLDW5t9vgKz6c4ffi5/aQ2scichq3QS7pELAYlS4b+ey3dA6hj62
MOTTO4Ad5bFbbRZG+Mdm2Ayvl6eV6catQhMvxt7aIoY9+bodyIYC1zZVqwQ5sOT+
CPLDnxK+GvhoyD2jL/XwZplWiIVLoX6eEpKIo/QtB6mSU216F/PuAzl/BJond+Rz
F9mcxJjdZYZlhwT8+o8oXEMI4vEf3yzd+zB/mjuxDJR2iw3bSL+zZr2GV/CsMLG/
jmvbpIuyI/p5eTy0alz+iHOiyeCN9pgD6jyonwIDAQABAoIBAA4wn+emQmVhDbEU
f2IrItYcm2cJ+/DadHRmjWYhzxqgiXVDSzndEYinVGIsfPsQZRl9wvgeMfaYYB9O
dFZpCqsTquVkr1Htd/cMjDlCy01cWpMqNwgru0fy+emgFgHLBbY3QjeE4QYQ1fXO
nPcgPuDtz7t0cUbd3eZuN6E6iI/mtpBbN0MrgKb/tlQqFBpSWgcUhu2B9foKg8X5
6PHbW9eJ5ZPqJ03+86vFVtLmJ93APCZb/W5sRNNdq8Ey0dauKyJr4x++w+GHsW5Q
8JTdkaIFWU0nc1oO8EXZeZzxPrVHzcxktOmUrhudXG349z1PA5eizlqjOkhFl5/E
qwSa9zkCgYEA59FD1UbT5SO1MJDsUzLqMIbT4Oe07joLLjsI2aBwvTbXE/t2GCTe
38Gu2b4LzKLTWJpeEMiD6RVPfzU/5A0ZabUawlOcVXcsjrxKEHjQmVdf6wPuGYf7
figI3PnKwub5Z0jdHzlgLXQlqLW9mDfmnmSD08PihA++Tnpa4MChs3sCgYEAxl+E
TLBhPTPLQ92YwUCMDN9NYL1NkAOvYZEZ5OVu5ro35Mnzud2LzPyqt8m0Qq4fITgC
tdvvOvJ2wa/5nCd80U0eR7Ci9hB0qJMq2xFsrqaZWNMPEoQSMvU2DFq1XU1WQfpy
s4EgEaq2oycPeYvLbz89TYJGmoYefrafzLYXlC0CgYBWDZCos0olXUP9a07O86+L
pAEzE9BOPq2306JNZwlys9DTUh1ciRNS7IsDuVCX/jmGQod4o3aUJ50DE7lL5rDw
VJJCYNc/wqV/ttWnl7GXup+YljTktV3eTu47WV6zSxp6BMpQtPPG676vCgf/YYDy
e02UZrrHWzDB4RmrJNbh0QKBgQCFV+1hc2pZrngizVECDjZV7MBhl74MYT3Bsrya
LVMnyuMJamrndDGl/+1tjysZa1vHg5Pm1Mjxccw8E+MQgUaYlmMVQ3m3N4aDTjGP
gh3xJFGN8ImAI8Dr+gJzuYGSDws9XHE/kjuRRJRyBS6UwFBmHjdB46E7+42CFZZD
D9+3nQKBgGlX4cwGan4tBVBHorU8925Gk6nmyrzPQ+riA+KYiPXIZ5/WtPAhV86D
GtZ2VVSqRprAcwQopp9SBfnFy0NHErrPm2telmIRqlxii9ipda4Tek2QgGoREOrq
gjzEnBf5gy/YRJkylVeH9FY7+HsaBO4kSEOH7GIOe0UpcShJKd+6
-----END PRIVATE KEY-----