Skip to content

Commit

Permalink
list keys command improvements
Browse files Browse the repository at this point in the history
  • Loading branch information
1azyman committed Dec 17, 2017
1 parent 912c93f commit 8bf3bac
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 27 deletions.
Expand Up @@ -74,11 +74,14 @@ private void setupLogging(LogTarget target) {
root.setLevel(Level.OFF);

infoLogger = setupLogger(LOGGER_SYS_OUT, opts);

errorLogger = setupLogger(LOGGER_SYS_ERR, opts);
errorLogger.setAdditive(false);
errorLogger.addAppender(err);
}

private Logger setupLogger(String name, BaseOptions opts) {
Logger logger = (Logger) LoggerFactory.getLogger(LOGGER_SYS_OUT);
Logger logger = (Logger) LoggerFactory.getLogger(name);

if (opts.isSilent()) {
logger.setLevel(Level.OFF);
Expand Down
@@ -1,11 +1,10 @@
package com.evolveum.midpoint.ninja.action;

import com.evolveum.midpoint.ninja.impl.NinjaException;
import com.evolveum.midpoint.ninja.opts.ListKeysOptions;
import com.evolveum.midpoint.prism.crypto.EncryptionException;
import com.evolveum.midpoint.prism.crypto.Protector;
import com.evolveum.midpoint.prism.crypto.ProtectorImpl;
import com.evolveum.midpoint.ninja.impl.LogTarget;
import com.evolveum.midpoint.ninja.impl.NinjaException;
import com.evolveum.midpoint.ninja.opts.ListKeysOptions;
import org.apache.xml.security.utils.Base64;
import org.springframework.context.ApplicationContext;

Expand All @@ -21,39 +20,34 @@ public class ListKeysRepositoryAction extends RepositoryAction<ListKeysOptions>

private static final String KEY_DIGEST_TYPE = "SHA1";

@Override
protected LogTarget getInfoLogTarget() {
return LogTarget.SYSTEM_ERR;
}

@Override
public void execute() throws Exception {
ApplicationContext appContext = context.getApplicationContext();
Protector protector = appContext.getBean(Protector.class);

if (protector instanceof ProtectorImpl) {
ProtectorImpl impl = (ProtectorImpl) protector;
System.out.println("Location: " + impl.getKeyStorePath());
logInfo("Location: {}", impl.getKeyStorePath());
}

KeyStore keyStore = protector.getKeyStore();

System.out.println("Type: " + keyStore.getType());
logInfo("Type: {}", keyStore.getType());

Provider provider = keyStore.getProvider();
System.out.println("Provider: " + provider.getName());
logInfo("Provider: {}", provider.getName());

Enumeration<String> aliases = keyStore.aliases();

while (aliases.hasMoreElements()) {
String alias = aliases.nextElement();

System.out.println("======");
logInfo("======");

describeAlias(keyStore, alias, protector);

if (aliases.hasMoreElements()) {
System.out.println("======");
logInfo("======");
}
}

Expand All @@ -63,21 +57,22 @@ public void execute() throws Exception {
private void describeAlias(KeyStore keyStore, String alias, Protector protector)
throws KeyStoreException, UnrecoverableEntryException, NoSuchAlgorithmException, EncryptionException {

System.out.println("Alias: " + alias);
System.out.println("Creation date: " + keyStore.getCreationDate(alias));
logInfo("Alias: {}", alias);
logInfo("Creation date: {}", keyStore.getCreationDate(alias));

Certificate cert = keyStore.getCertificate(alias);
if (cert != null) {
System.out.println("Certificate: " + cert);
logInfo("Certificate: {}", cert);
}

Certificate[] chain = keyStore.getCertificateChain(alias);
if (chain != null) {
System.out.println("Certificate chain: " + chain);
logInfo("Certificate chain: {}", chain);
}

//todo use key password from options
KeyStore.ProtectionParameter protParam = new KeyStore.PasswordProtection("midpoint".toCharArray());
char[] password = getPassword();

KeyStore.ProtectionParameter protParam = new KeyStore.PasswordProtection(password);
KeyStore.Entry entry = keyStore.getEntry(alias, protParam);

if (!(entry instanceof KeyStore.SecretKeyEntry)) {
Expand All @@ -86,19 +81,32 @@ private void describeAlias(KeyStore keyStore, String alias, Protector protector)

KeyStore.SecretKeyEntry sEntry = (KeyStore.SecretKeyEntry) entry;
SecretKey key = sEntry.getSecretKey();
System.out.println("Secret key entry");
logInfo("Secret key entry");

System.out.println(" Algorithm: " + key.getAlgorithm());
System.out.println(" Format: " + key.getFormat());
System.out.println(" Key length: " + key.getEncoded().length * 8);
System.out.println(" SHA1 digest: " + getSecretKeyDigest(key));
logInfo(" Algorithm: {}", key.getAlgorithm());
logInfo(" Format: {}", key.getFormat());
logInfo(" Key length: {}", key.getEncoded().length * 8);
logInfo(" SHA1 digest: {}", getSecretKeyDigest(key));

if (protector instanceof ProtectorImpl) {
ProtectorImpl impl = (ProtectorImpl) protector;

String name = impl.getSecretKeyDigest(key);
System.out.println(" Key name: " + name);
logInfo(" Key name: {}", name);
}
}

private char[] getPassword() {
String password = options.getKeyPassword();
if (password == null) {
password = options.getAskKeyPassword();
}

if (password == null) {
password = "";
}

return password.toCharArray();
}

private String getSecretKeyDigest(SecretKey key) throws NinjaException {
Expand Down
Expand Up @@ -16,7 +16,7 @@ public class ListKeysOptions {
public static final String P_KEY_ASK_PASSWORD_LONG = "--key-password-ask";

@Parameter(names = {P_KEY_PASSWORD, P_KEY_PASSWORD_LONG}, descriptionKey = "listKeys.keyPassword")
private String keyPassword = "midpoint";
private String keyPassword;

@Parameter(names = {P_KEY_ASK_PASSWORD, P_KEY_ASK_PASSWORD_LONG}, password = true, echoInput = true,
descriptionKey = "listKeys.askKeyPassword")
Expand Down

0 comments on commit 8bf3bac

Please sign in to comment.