X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=tests%2Forg%2Fcacert%2Fgigi%2Fapi%2FIssueCert.java;h=faa8618e246e27ccc282d95b56f2d62f065a6170;hb=e545cb295b12e3ecb0d777b2f2b6a601c9b27387;hp=74240b26d3a804ac547267ea69e074122b915c68;hpb=0fad27fa1dbd119648945ec77cd8e4a1b7965885;p=gigi.git diff --git a/tests/org/cacert/gigi/api/IssueCert.java b/tests/org/cacert/gigi/api/IssueCert.java index 74240b26..faa8618e 100644 --- a/tests/org/cacert/gigi/api/IssueCert.java +++ b/tests/org/cacert/gigi/api/IssueCert.java @@ -3,19 +3,26 @@ package org.cacert.gigi.api; import static org.junit.Assert.*; import java.io.ByteArrayInputStream; +import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStream; +import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; +import java.net.MalformedURLException; import java.net.URL; import java.net.URLEncoder; +import java.security.KeyManagementException; import java.security.KeyPair; +import java.security.NoSuchAlgorithmException; import java.security.PrivateKey; import java.security.cert.CertificateFactory; import java.security.cert.X509Certificate; import org.cacert.gigi.dbObjects.Certificate; import org.cacert.gigi.dbObjects.Certificate.CSRType; +import org.cacert.gigi.dbObjects.Certificate.CertificateStatus; import org.cacert.gigi.dbObjects.CertificateProfile; +import org.cacert.gigi.dbObjects.Digest; import org.cacert.gigi.testUtils.ClientTest; import org.cacert.gigi.testUtils.IOUtils; import org.junit.Test; @@ -28,11 +35,11 @@ public class IssueCert extends ClientTest { public void testIssueCert() throws Exception { KeyPair kp = generateKeypair(); String key1 = generatePEMCSR(kp, "EMAIL=testmail@example.com"); - Certificate c = new Certificate(u, Certificate.buildDN("EMAIL", "testmail@example.com"), "sha256", key1, CSRType.CSR, CertificateProfile.getById(1)); + Certificate c = new Certificate(u, u, Certificate.buildDN("EMAIL", "testmail@example.com"), Digest.SHA256, key1, CSRType.CSR, CertificateProfile.getById(1)); final PrivateKey pk = kp.getPrivate(); - c.issue(null, "2y").waitFor(60000); + c.issue(null, "2y", u).waitFor(60000); final X509Certificate ce = c.cert(); - HttpURLConnection connection = (HttpURLConnection) new URL("https://" + getServerName().replaceFirst("^www.", "api.") + "/account/certs/new").openConnection(); + HttpURLConnection connection = (HttpURLConnection) new URL("https://" + getServerName().replaceFirst("^www.", "api.") + CreateCertificate.PATH).openConnection(); authenticateClientCert(pk, ce, connection); connection.setDoOutput(true); OutputStream os = connection.getOutputStream(); @@ -41,7 +48,25 @@ public class IssueCert extends ClientTest { assertEquals(connection.getResponseCode(), 200); String cert = IOUtils.readURL(new InputStreamReader(connection.getInputStream(), "UTF-8")); CertificateFactory cf = CertificateFactory.getInstance("X509"); - java.security.cert.Certificate xcert = cf.generateCertificate(new ByteArrayInputStream(cert.getBytes("UTF-8"))); - assertEquals("CAcert WoT User", ((X500Name) ((X509Certificate) xcert).getSubjectDN()).getCommonName()); + java.security.cert.X509Certificate xcert = (X509Certificate) cf.generateCertificate(new ByteArrayInputStream(cert.getBytes("UTF-8"))); + assertEquals("CAcert WoT User", ((X500Name) xcert.getSubjectDN()).getCommonName()); + + revoke(pk, ce, xcert.getSerialNumber().toString(16).toLowerCase()); + revoke(pk, ce, c.getSerial().toLowerCase()); + + assertEquals(CertificateStatus.REVOKED, c.getStatus()); + + } + + private void revoke(final PrivateKey pk, final X509Certificate ce, String serial) throws IOException, MalformedURLException, NoSuchAlgorithmException, KeyManagementException, UnsupportedEncodingException { + HttpURLConnection connection; + OutputStream os; + connection = (HttpURLConnection) new URL("https://" + getServerName().replaceFirst("^www.", "api.") + "/account/certs/revoke").openConnection(); + authenticateClientCert(pk, ce, connection); + connection.setDoOutput(true); + os = connection.getOutputStream(); + os.write(("serial=" + URLEncoder.encode(serial, "UTF-8")).getBytes("UTF-8")); + os.flush(); + assertEquals(connection.getResponseCode(), 200); } }