diff --git a/.travis.yml b/.travis.yml index 1efa7de..300c220 100644 --- a/.travis.yml +++ b/.travis.yml @@ -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 diff --git a/main.go b/main.go index b4b7a72..3cb5da7 100644 --- a/main.go +++ b/main.go @@ -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 { diff --git a/tests/export-jceks.t b/tests/export-jceks.t new file mode 100644 index 0000000..e386512 --- /dev/null +++ b/tests/export-jceks.t @@ -0,0 +1,107 @@ +Set up test data. + + $ base64 --decode > example.jceks < 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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----- diff --git a/tests/export-pkcs12.t b/tests/export-pkcs12.t new file mode 100644 index 0000000..bd5939d --- /dev/null +++ b/tests/export-pkcs12.t @@ -0,0 +1,115 @@ +Set up test data. + + $ base64 --decode > example.p12 < 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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-----