KeyStore¶
KeyStore is abstraction for managing AergoKey. It can save, load and remove AergoKey with authentication. Supported type is
- InMemoryKeystore
- JavaKeyStore
- AergoKeyStore
Create¶
Heraj provides factory method for making KeyStore.
InMemoryKeystore¶
InMemoryKeystore keeps AergoKey in a memory.
// make a keystore
KeyStore keyStore = KeyStores.newInMemoryKeyStore();
System.out.println("InMemoryKeystore: " + keyStore);
System.out.println("Stored keys: " + keyStore.listIdentities());
JavaKeyStore¶
JavaKeystore uses java.security.keystore for key managing. You have to make it and pass it to factory method.
// create a java keystore
java.security.KeyStore delegate = java.security.KeyStore.getInstance("PKCS12");
delegate.load(new FileInputStream(someDir + "/keystore.p12"), "password".toCharArray());
// make a keystore
KeyStore keyStore = KeyStores.newJavaKeyStore(delegate);
System.out.println("JavaKeyStore: " + keyStore);
System.out.println("Stored keys: " + keyStore.listIdentities());
AergoKeyStore¶
AergoKeystore manages AergoKey in an aergo-specific way. It’s compatible with keystore generated by aergocli. For more about making keystore using cli, see Creating Accounts.
// make a keystore
String root = someDir + "/aergo_keystore";
KeyStore keyStore = KeyStores.newAergoKeyStore(root);
System.out.println("AergoKeyStore: " + keyStore);
System.out.println("Stored keys: " + keyStore.listIdentities());
Save and Load¶
Save and load AergoKey.
Using alias.
// create a keystore
KeyStore keyStore = KeyStores.newInMemoryKeyStore();
// create an new key
AergoKey key = new AergoKeyGenerator().create();
// save
Authentication authentication = Authentication.of(KeyAlias.of("myalias"), "password");
keyStore.save(authentication, key);
Using address itself.
// create an keystore
KeyStore keyStore = KeyStores.newInMemoryKeyStore();
// create an new key
AergoKey key = new AergoKeyGenerator().create();
// save
Authentication authentication = Authentication.of(key.getAddress(), "password");
keyStore.save(authentication, key);
Remove¶
Remove AergoKey stored in a keystore.
Using alias.
// create a keystore
KeyStore keyStore = KeyStores.newInMemoryKeyStore();
// create an new key
AergoKey key = new AergoKeyGenerator().create();
// save
Authentication authentication = Authentication.of(KeyAlias.of("myalias"), "password");
keyStore.save(authentication, key);
// remove
System.out.println("Before remove: " + keyStore.listIdentities());
keyStore.remove(authentication);
System.out.println("After remove: " + keyStore.listIdentities());
Using address itself.
// create a keystore
KeyStore keyStore = KeyStores.newInMemoryKeyStore();
// create an new key
AergoKey key = new AergoKeyGenerator().create();
// save
Authentication authentication = Authentication.of(key.getAddress(), "password");
keyStore.save(authentication, key);
// remove
System.out.println("Before remove: " + keyStore.listIdentities());
keyStore.remove(authentication);
System.out.println("After remove: " + keyStore.listIdentities());
Export¶
Export AergoKey as wallet import format stored in a keystore.
Using alias.
// create a keystore
KeyStore keyStore = KeyStores.newInMemoryKeyStore();
// create an new key
AergoKey key = new AergoKeyGenerator().create();
// save
Authentication authentication = Authentication.of(KeyAlias.of("myalias"), "password");
keyStore.save(authentication, key);
// export
EncryptedPrivateKey exported = keyStore.export(authentication, "newpassword");
System.out.println("Exported: " + exported);
Using address itself.
// create a keystore
KeyStore keyStore = KeyStores.newInMemoryKeyStore();
// create an new key
AergoKey key = new AergoKeyGenerator().create();
// save
Authentication authentication = Authentication.of(key.getAddress(), "password");
keyStore.save(authentication, key);
// export
EncryptedPrivateKey exported = keyStore.export(authentication, "newpassword");
System.out.println("Exported: " + exported);
List Stored Identities¶
List identities stored in a keystore.
// create a keystore
KeyStore keyStore = KeyStores.newInMemoryKeyStore();
// create an new key
AergoKey key = new AergoKeyGenerator().create();
// save
Authentication authentication = Authentication.of(KeyAlias.of("myalias"), "password");
keyStore.save(authentication, key);
// list
List<Identity> identities = keyStore.listIdentities();
System.out.println("Stored identities: " + identities);
Store¶
Store keystore to a file. It’s valid only for JavaKeyStore type. For other types, do nothing.
// prepare a java keystore
java.security.KeyStore delegate = java.security.KeyStore.getInstance("PKCS12");
delegate.load(null, null);
// create a java keystore
KeyStore keyStore = KeyStores.newJavaKeyStore(delegate);
// store
String path = someDir + "/" + randomUUID().toString();
keyStore.store(path, "password".toCharArray());