Search in sources :

Example 1 with UpdateCRLRequest

use of de.carne.certmgr.certs.x509.UpdateCRLRequest in project certmgr by hdecarne.

the class UserCertStoreTest method testAccessStore.

/**
 * Test access store operations.
 */
@Test
public void testAccessStore() {
    try {
        UserCertStore store = UserCertStore.openStore(testStorePath.get());
        Assert.assertEquals(11, store.size());
        Assert.assertEquals(TestCerts.TEST_STORE_NAME, store.storeName());
        Assert.assertEquals(11, store.getEntries().size());
        Assert.assertEquals(1, traverseStore(store.getRootEntries()));
        // Check preferences access
        UserCertStorePreferences loadPreferences = Check.notNull(store.storePreferences());
        Assert.assertEquals(Integer.valueOf(365), loadPreferences.defaultCRTValidityPeriod.get());
        Assert.assertEquals(Integer.valueOf(30), loadPreferences.defaultCRLUpdatePeriod.get());
        Assert.assertEquals("EC", loadPreferences.defaultKeyPairAlgorithm.get());
        Assert.assertEquals(Integer.valueOf(384), loadPreferences.defaultKeySize.get());
        Assert.assertEquals("SHA256WITHECDSA", loadPreferences.defaultSignatureAlgorithm.get());
        UserCertStorePreferences setPreferences = Check.notNull(store.storePreferences());
        setPreferences.defaultCRTValidityPeriod.putInt(180);
        setPreferences.defaultCRLUpdatePeriod.putInt(7);
        setPreferences.defaultKeyPairAlgorithm.put("EC");
        setPreferences.defaultKeySize.putInt(521);
        setPreferences.defaultSignatureAlgorithm.put("SHA256WITHECDSA");
        setPreferences.sync();
        UserCertStorePreferences getPreferences = Check.notNull(store.storePreferences());
        Assert.assertEquals(Integer.valueOf(180), getPreferences.defaultCRTValidityPeriod.get());
        Assert.assertEquals(Integer.valueOf(7), getPreferences.defaultCRLUpdatePeriod.get());
        Assert.assertEquals("EC", getPreferences.defaultKeyPairAlgorithm.get());
        Assert.assertEquals(Integer.valueOf(521), getPreferences.defaultKeySize.get());
        Assert.assertEquals("SHA256WITHECDSA", getPreferences.defaultSignatureAlgorithm.get());
        // Import access (with already existing entries)
        UserCertStore importStore = UserCertStore.createFromFiles(collectDirectoryFiles(testStorePath.get()), TestCerts.password());
        for (UserCertStoreEntry importStoreEntry : importStore.getEntries()) {
            store.importEntry(importStoreEntry, TestCerts.password(), "Imported");
        }
        Assert.assertEquals(11, store.size());
        // Revoke access
        for (UserCertStoreEntry storeEntry : store.getEntries()) {
            if (storeEntry.hasCRT() && !storeEntry.isSelfSigned() && !storeEntry.isRevoked()) {
                UserCertStoreEntry issuerEntry = storeEntry.issuer();
                if (issuerEntry.canIssue()) {
                    Date lastUpdate = new Date(System.currentTimeMillis());
                    Date nextUpdate = new Date(lastUpdate.getTime() + 1000);
                    SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.getDefaultSet(issuerEntry.getPublicKey().getAlgorithm(), storeEntry.getCRT().getSigAlgName(), false).getDefault();
                    Assert.assertNotNull(signatureAlgorithm);
                    UpdateCRLRequest updateCRLRequest = new UpdateCRLRequest(lastUpdate, nextUpdate, signatureAlgorithm);
                    updateCRLRequest.addRevokeEntry(storeEntry.getCRT().getSerialNumber(), ReasonFlag.PRIVILEGE_WITHDRAWN);
                    issuerEntry.updateCRL(updateCRLRequest, TestCerts.password());
                    Assert.assertTrue(storeEntry.isRevoked());
                }
            }
        }
        // Delete access
        List<UserCertStoreEntryId> deleteIds = new ArrayList<>();
        for (UserCertStoreEntry storeEntry : store.getEntries()) {
            deleteIds.add(storeEntry.id());
        }
        for (UserCertStoreEntryId deleteId : deleteIds) {
            store.deleteEntry(deleteId);
        }
        Assert.assertEquals(0, store.size());
        // Import access (now with empty store)
        for (UserCertStoreEntry importStoreEntry : importStore.getEntries()) {
            store.importEntry(importStoreEntry, TestCerts.password(), "Imported");
        }
        Assert.assertEquals(11, store.size());
    } catch (IOException | BackingStoreException e) {
        e.printStackTrace();
        Assert.fail(e.getMessage());
    }
}
Also used : UserCertStorePreferences(de.carne.certmgr.certs.UserCertStorePreferences) UpdateCRLRequest(de.carne.certmgr.certs.x509.UpdateCRLRequest) ArrayList(java.util.ArrayList) BackingStoreException(java.util.prefs.BackingStoreException) SignatureAlgorithm(de.carne.certmgr.certs.security.SignatureAlgorithm) IOException(java.io.IOException) UserCertStoreEntryId(de.carne.certmgr.certs.UserCertStoreEntryId) Date(java.util.Date) UserCertStore(de.carne.certmgr.certs.UserCertStore) UserCertStoreEntry(de.carne.certmgr.certs.UserCertStoreEntry) Test(org.junit.Test)

Example 2 with UpdateCRLRequest

use of de.carne.certmgr.certs.x509.UpdateCRLRequest in project certmgr by hdecarne.

the class CRLOptionsController method onCmdUpdate.

@SuppressWarnings("unused")
@FXML
void onCmdUpdate(ActionEvent evt) {
    try {
        UpdateCRLRequest updateRequest = validateAndGetUpdateRequest();
        getExecutorService().submit(new UpdateCRLTask(updateRequest));
    } catch (ValidationException e) {
        ValidationAlerts.error(e).showAndWait();
    }
}
Also used : ValidationException(de.carne.jfx.util.validation.ValidationException) UpdateCRLRequest(de.carne.certmgr.certs.x509.UpdateCRLRequest) FXML(javafx.fxml.FXML)

Example 3 with UpdateCRLRequest

use of de.carne.certmgr.certs.x509.UpdateCRLRequest in project certmgr by hdecarne.

the class CRLOptionsController method validateAndGetUpdateRequest.

private UpdateCRLRequest validateAndGetUpdateRequest() throws ValidationException {
    Date lastUpdate = validateAndGetLastUpdate();
    Date nextUpdate = validateAndGetNextUpdate(lastUpdate);
    SignatureAlgorithm sigAlg = validateAndGetSigAlg();
    UpdateCRLRequest updateRequest = new UpdateCRLRequest(lastUpdate, nextUpdate, sigAlg);
    for (CRLEntryModel entryItem : this.ctlEntryOptions.getItems()) {
        if (entryItem.getRevoked()) {
            updateRequest.addRevokeEntry(entryItem.getSerial(), entryItem.getReason());
        }
    }
    return updateRequest;
}
Also used : UpdateCRLRequest(de.carne.certmgr.certs.x509.UpdateCRLRequest) SignatureAlgorithm(de.carne.certmgr.certs.security.SignatureAlgorithm) Date(java.util.Date) LocalDate(java.time.LocalDate)

Aggregations

UpdateCRLRequest (de.carne.certmgr.certs.x509.UpdateCRLRequest)3 SignatureAlgorithm (de.carne.certmgr.certs.security.SignatureAlgorithm)2 Date (java.util.Date)2 UserCertStore (de.carne.certmgr.certs.UserCertStore)1 UserCertStoreEntry (de.carne.certmgr.certs.UserCertStoreEntry)1 UserCertStoreEntryId (de.carne.certmgr.certs.UserCertStoreEntryId)1 UserCertStorePreferences (de.carne.certmgr.certs.UserCertStorePreferences)1 ValidationException (de.carne.jfx.util.validation.ValidationException)1 IOException (java.io.IOException)1 LocalDate (java.time.LocalDate)1 ArrayList (java.util.ArrayList)1 BackingStoreException (java.util.prefs.BackingStoreException)1 FXML (javafx.fxml.FXML)1 Test (org.junit.Test)1