import static org.junit.Assert.*;
import java.io.IOException;
+import java.math.BigInteger;
import java.security.GeneralSecurityException;
import java.security.KeyPair;
import java.security.PrivateKey;
import java.util.Collection;
import java.util.List;
+import org.hamcrest.CoreMatchers;
import org.junit.Test;
import club.wpia.gigi.dbObjects.Certificate;
import club.wpia.gigi.dbObjects.Certificate.CSRType;
import club.wpia.gigi.dbObjects.Certificate.CertificateStatus;
+import club.wpia.gigi.dbObjects.Certificate.RevocationType;
import club.wpia.gigi.dbObjects.Certificate.SANType;
import club.wpia.gigi.dbObjects.Certificate.SubjectAlternateName;
import club.wpia.gigi.dbObjects.Digest;
import club.wpia.gigi.pages.account.certs.Certificates;
import club.wpia.gigi.testUtils.IOUtils;
import club.wpia.gigi.testUtils.ManagedTest;
+import club.wpia.gigi.util.RandomToken;
import sun.security.x509.GeneralNameInterface;
public class TestCertificate extends ManagedTest {
testFails(CertificateStatus.ISSUED, c);
- Certificate c2 = Certificate.getBySerial(c.getSerial());
+ Certificate c2 = Certificate.getBySerial(new BigInteger(c.getSerial(), 16));
assertNotNull(c2);
assertEquals(2, c2.getSANs().size());
assertEquals(c.getSANs().get(0).getName(), c2.getSANs().get(0).getName());
}
}
+ @Test
+ public void testCertCreateSHA384() throws IOException, GeneralSecurityException, SQLException, InterruptedException, GigiApiException {
+ KeyPair kp = generateKeypair();
+ String key = generatePEMCSR(kp, "CN=testmail@example.com");
+ Certificate c = new Certificate(u, u, Certificate.buildDN("CN", "testmail@example.com"), Digest.SHA384, key, CSRType.CSR, getClientProfile());
+ await(c.issue(null, "2y", u));
+ assertThat(c.cert().getSigAlgName().toLowerCase(), CoreMatchers.containsString("sha384"));
+ }
+
@Test
public void testCertLifeCycle() throws IOException, GeneralSecurityException, SQLException, InterruptedException, GigiApiException {
KeyPair kp = generateKeypair();
assertNotNull(login(pk, cert));
assertEquals(1, countRegex(IOUtils.readURL(get(cookie, Certificates.PATH)), "<td>(?:REVOKED|ISSUED)</td>"));
assertEquals(1, countRegex(IOUtils.readURL(get(cookie, Certificates.PATH + "?withRevoked")), "<td>(?:REVOKED|ISSUED)</td>"));
- await(c.revoke());
+ await(c.revoke(RevocationType.USER));
testFails(CertificateStatus.REVOKED, c);
assertNull(login(pk, cert));
assertEquals(status, c.getStatus());
if (status != CertificateStatus.ISSUED) {
try {
- c.revoke();
+ c.revoke(RevocationType.USER);
fail(status + " is in invalid state");
} catch (IllegalStateException ise) {
}
}
}
+
+ @Test
+ public void testClientCertDescription() throws IOException, GeneralSecurityException, SQLException, InterruptedException, GigiApiException {
+ KeyPair kp = generateKeypair();
+ String key1 = generatePEMCSR(kp, "CN=testmail@example.com");
+ Certificate c = new Certificate(u, u, Certificate.buildDN("CN", "testmail@example.com"), Digest.SHA256, key1, CSRType.CSR, getClientProfile());
+ await(c.issue(null, "2y", u));
+ String description = RandomToken.generateToken(95) + DIFFICULT_CHARS;
+ c.setDescription(description);
+ assertEquals(description, c.getDescription());
+
+ // test that description is entered to db
+ int cid = c.getId();
+ clearCaches();
+ Certificate cn = Certificate.getById(cid);
+ assertEquals(description, cn.getDescription());
+
+ }
}