Package com.klaytn.caver.wallet.keyring
Class KeyringFactory
- java.lang.Object
-
- com.klaytn.caver.wallet.keyring.KeyringFactory
-
public class KeyringFactory extends java.lang.Object
Representing a KeyringFactory which supports create function for Keyring(Single/Multiple/RoleBased) instance.To access it from Caver instance, it can be accessed through `caver.wallet.keyring` using
KeyringFactoryWrapper
.
-
-
Constructor Summary
Constructors Constructor Description KeyringFactory()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static SingleKeyring
create(java.lang.String address, java.lang.String key)
Creates a single type of keyring instance.static MultipleKeyring
create(java.lang.String address, java.lang.String[] keys)
Creates a multiple type of keyring instance.static RoleBasedKeyring
create(java.lang.String address, java.util.List<java.lang.String[]> keys)
Creates a roleBased type of keyring instance.static SingleKeyring
createFromKlaytnWalletKey(java.lang.String klaytnWalletKey)
Creates a single type of keyring instance from KlaytnWalletKey string.static SingleKeyring
createFromPrivateKey(java.lang.String key)
Creates a single type of keyring instance with private key.static MultipleKeyring
createWithMultipleKey(java.lang.String address, java.lang.String[] multipleKey)
Creates a multiple type of keyring instance from address and private key strings.static RoleBasedKeyring
createWithRoleBasedKey(java.lang.String address, java.util.List<java.lang.String[]> roleBasedKey)
Create a roleBased type of keyring instance from address and a list of private key strings array.static SingleKeyring
createWithSingleKey(java.lang.String address, java.lang.String key)
Creates a single type of keyring instance from address and private key string.static AbstractKeyring
decrypt(KeyStore keystore, java.lang.String password)
Decrypts a keystore v3 or v4 and returns a keyring instance.static AbstractKeyring
decrypt(java.lang.String keyStore, java.lang.String password)
Decrypts a KeyStore json string and returns a keyring instance.static SingleKeyring
generate()
Returns a randomly generated single keyring instance.static SingleKeyring
generate(java.lang.String entropy)
Returns a randomly generated single keyring instance with entropy.static java.lang.String[]
generateMultipleKeys(int num)
Returns an array of private key strings.static java.lang.String[]
generateMultipleKeys(int num, java.lang.String entropy)
Returns an array of private key strings with entropy.static java.util.List<java.lang.String[]>
generateRoleBasedKeys(int[] numArr)
Returns a list of private key strings array.static java.util.List<java.lang.String[]>
generateRoleBasedKeys(int[] numArr, java.lang.String entropy)
Returns a list of private key strings array.static java.lang.String
generateSingleKey()
Returns a single private key string.static java.lang.String
generateSingleKey(java.lang.String entropy)
Returns a single private key string with entropy.
-
-
-
Method Detail
-
generate
public static SingleKeyring generate()
Returns a randomly generated single keyring instance.Example :
SingleKeyring keyring = caver.wallet.keyring.generate();
- Returns:
- SingleKeyring
-
generate
public static SingleKeyring generate(java.lang.String entropy)
Returns a randomly generated single keyring instance with entropy.Example :
String entropy = "entropy"; SingleKeyring keyring = caver.wallet.keyring.generate(entropy);
- Parameters:
entropy
- A random string to create keyring.- Returns:
- SingleKeyring
-
generateSingleKey
public static java.lang.String generateSingleKey()
Returns a single private key string.Example :
String privateKey = caver.wallet.keyring.generateSingleKey();
- Returns:
- String
-
generateSingleKey
public static java.lang.String generateSingleKey(java.lang.String entropy)
Returns a single private key string with entropy.String entropy = "entropy"; String privateKey = caver.wallet.keyring.generateSingleKey(entropy);
- Parameters:
entropy
- A random string to create private key.- Returns:
- String
-
generateMultipleKeys
public static java.lang.String[] generateMultipleKeys(int num)
Returns an array of private key strings.String[] privateKeys = caver.wallet.keyring.generateMultipleKeys(3);
- Parameters:
num
- A length of keys.- Returns:
String[]
-
generateMultipleKeys
public static java.lang.String[] generateMultipleKeys(int num, java.lang.String entropy)
Returns an array of private key strings with entropy.String entropy = "entropy"; String[] privateKeys = caver.wallet.keyring.generateMultipleKeys(3, entropy);
- Parameters:
num
- A length of keys.entropy
- A random string to create private key.- Returns:
String[]
-
generateRoleBasedKeys
public static java.util.List<java.lang.String[]> generateRoleBasedKeys(int[] numArr)
Returns a list of private key strings array.Example :
List<String[]> privateKeys = caver.wallet.keyring.generateRoleBasedKeys(new int[] {3,3,3});
- Parameters:
numArr
- An array containing the number of keys for each role.- Returns:
List<String[]>
-
generateRoleBasedKeys
public static java.util.List<java.lang.String[]> generateRoleBasedKeys(int[] numArr, java.lang.String entropy)
Returns a list of private key strings array.Example :
String entropy = "entropy"; List<String[]> privateKeys = caver.wallet.keyring.generateRoleBasedKeys(new int[] {3,3,3}, entropy);
- Parameters:
numArr
- An array containing the number of keys for each role.entropy
- A random string to create private key.- Returns:
- List
-
create
public static SingleKeyring create(java.lang.String address, java.lang.String key)
Creates a single type of keyring instance.Example :
String address = "0x{address}"; String key = caver.wallet.keyring.generateSingleKey(); SingleKeyring keyring = caver.wallet.keyring.create(address, key);
- Parameters:
address
- The address of keyring.key
- The key of keyring.- Returns:
- SingleKeyring
-
create
public static MultipleKeyring create(java.lang.String address, java.lang.String[] keys)
Creates a multiple type of keyring instance.Example :
String address = "0x{address}"; String[] keyArray = caver.wallet.keyring.generateMultipleKey(3); MultipleKeyring keyring = (MultipleKeyring)caver.wallet.keyring.create(address, keyArray);
- Parameters:
address
- The address of keyring.keys
- The key list of keyring.- Returns:
- MultipleKeyring
-
create
public static RoleBasedKeyring create(java.lang.String address, java.util.List<java.lang.String[]> keys)
Creates a roleBased type of keyring instance.Example :
String address = caver.wallet.keyring.generate().getAddress(); List<String> privateKeyList = caver.wallet.keyring.generateRoleBasedKeys(new int[]{3,3,3}); RoleBasedKeyring added = (RoleBasedKeyring)caver.wallet.keyring.create(address, privateKeyList);
- Parameters:
address
- The address of keyring.keys
- The key list of keyring.- Returns:
- RoleBasedKeyring
-
createFromPrivateKey
public static SingleKeyring createFromPrivateKey(java.lang.String key)
Creates a single type of keyring instance with private key.Example :
String privateKey = "0x{privateKey}"; SingleKeyring keyring = caver.wallet.keyring.createFromPrivateKey(privateKey);
- Parameters:
key
- A private key string.- Returns:
- SingleKeyring
-
createFromKlaytnWalletKey
public static SingleKeyring createFromKlaytnWalletKey(java.lang.String klaytnWalletKey)
Creates a single type of keyring instance from KlaytnWalletKey string.Example :
String klaytnWalletKey = "0x{private key}0x{type}0x{address}"; SingleKeyring keyring = caver.wallet.keyring.createFromPrivateKey(klaytnWalletKey);
- Parameters:
klaytnWalletKey
- A key string in KlaytnWalletKey format.- Returns:
- SingleKeyring
-
createWithSingleKey
public static SingleKeyring createWithSingleKey(java.lang.String address, java.lang.String key)
Creates a single type of keyring instance from address and private key string.Example :
String address = "0x{address}"; String key = "0x{privateKey}"; SingleKeyring keyring = caver.wallet.keyring.createWithSingleKey(address, key);
- Parameters:
address
- An address of keyring.key
- A private key string.- Returns:
- SingleKeyring
-
createWithMultipleKey
public static MultipleKeyring createWithMultipleKey(java.lang.String address, java.lang.String[] multipleKey)
Creates a multiple type of keyring instance from address and private key strings.Example :
String address = "0x{address}"; String[] privateKeys = caver.wallet.keyring.generateMultipleKeys(3); MultipleKeyring keyring = (MultipleKeyring)caver.wallet.keyring.createWithMultipleKey(address, privateKeys);
- Parameters:
address
- An address of keyring.multipleKey
- An array of private key strings.- Returns:
- MultipleKeyring
-
createWithRoleBasedKey
public static RoleBasedKeyring createWithRoleBasedKey(java.lang.String address, java.util.List<java.lang.String[]> roleBasedKey)
Create a roleBased type of keyring instance from address and a list of private key strings array.Example :
String address = caver.wallet.keyring.generate().getAddress(); List<String> privateKeysList = caver.wallet.keyring.generateRoleBasedKeys(new int[]{3,3,3}); RoleBasedKeyring added = (RoleBasedKeyring)caver.wallet.keyring.createWithRoleBasedKey(address, privateKeysList);
- Parameters:
address
- An address of keyring.roleBasedKey
- A List of private key strings.- Returns:
- RoleBasedKeyring
-
decrypt
public static AbstractKeyring decrypt(java.lang.String keyStore, java.lang.String password) throws org.web3j.crypto.CipherException, java.io.IOException
Decrypts a KeyStore json string and returns a keyring instance.Example :
String keyStoreStr = ""{\n" + " \"version\":4,\n" + " \"id\":\"55da3f9c-6444-4fc1-abfa-f2eabfc57501\",\n" + " \"address\":\"0x86bce8c859f5f304aa30adb89f2f7b6ee5a0d6e2\",\n" + " \"keyring\":[\n" + " [\n" + " {\n" + " \"ciphertext\":\"93dd2c777abd9b80a0be8e1eb9739cbf27c127621a5d3f81e7779e47d3bb22f6\",\n" + " \"cipherparams\":{\"iv\":\"84f90907f3f54f53d19cbd6ae1496b86\"},\n" + " \"cipher\":\"aes-128-ctr\",\n" + " \"kdf\":\"scrypt\",\n" + " \"kdfparams\":{\n" + " \"dklen\":32,\n" + " \"salt\":\"69bf176a136c67a39d131912fb1e0ada4be0ed9f882448e1557b5c4233006e10\",\n" + " \"n\":4096,\n" + " \"r\":8,\n" + " \"p\":1\n" + " },\n" + " \"mac\":\"8f6d1d234f4a87162cf3de0c7fb1d4a8421cd8f5a97b86b1a8e576ffc1eb52d2\"\n" + " },\n" + " {\n" + " \"ciphertext\":\"53d50b4e86b550b26919d9b8cea762cd3c637dfe4f2a0f18995d3401ead839a6\",\n" + " \"cipherparams\":{\"iv\":\"d7a6f63558996a9f99e7daabd289aa2c\"},\n" + " \"cipher\":\"aes-128-ctr\",\n" + " \"kdf\":\"scrypt\",\n" + " \"kdfparams\":{\n" + " \"dklen\":32,\n" + " \"salt\":\"966116898d90c3e53ea09e4850a71e16df9533c1f9e1b2e1a9edec781e1ad44f\",\n" + " \"n\":4096,\n" + " \"r\":8,\n" + " \"p\":1\n" + " },\n" + " \"mac\":\"bca7125e17565c672a110ace9a25755847d42b81aa7df4bb8f5ce01ef7213295\"\n" + " }\n" + " ],\n" + " [\n" + " {\n" + " \"ciphertext\":\"f16def98a70bb2dae053f791882f3254c66d63416633b8d91c2848893e7876ce\",\n" + " \"cipherparams\":{\"iv\":\"f5006128a4c53bc02cada64d095c15cf\"},\n" + " \"cipher\":\"aes-128-ctr\",\n" + " \"kdf\":\"scrypt\",\n" + " \"kdfparams\":{\n" + " \"dklen\":32,\n" + " \"salt\":\"0d8a2f71f79c4880e43ff0795f6841a24cb18838b3ca8ecaeb0cda72da9a72ce\",\n" + " \"n\":4096,\n" + " \"r\":8,\n" + " \"p\":1\n" + " },\n" + " \"mac\":\"38b79276c3805b9d2ff5fbabf1b9d4ead295151b95401c1e54aed782502fc90a\"\n" + " }\n" + " ],\n" + " [\n" + " {\n" + " \"ciphertext\":\"544dbcc327942a6a52ad6a7d537e4459506afc700a6da4e8edebd62fb3dd55ee\",\n" + " \"cipherparams\":{\"iv\":\"05dd5d25ad6426e026818b6fa9b25818\"},\n" + " \"cipher\":\"aes-128-ctr\",\n" + " \"kdf\":\"scrypt\",\n" + " \"kdfparams\":{\n" + " \"dklen\":32,\n" + " \"salt\":\"3a9003c1527f65c772c54c6056a38b0048c2e2d58dc0e584a1d867f2039a25aa\",\n" + " \"n\":4096,\n" + " \"r\":8,\n" + " \"p\":1\n" + " },\n" + " \"mac\":\"19a698b51409cc9ac22d63d329b1201af3c89a04a1faea3111eec4ca97f2e00f\"\n" + " },\n" + " {\n" + " \"ciphertext\":\"dd6b920f02cbcf5998ed205f8867ddbd9b6b088add8dfe1774a9fda29ff3920b\",\n" + " \"cipherparams\":{\"iv\":\"ac04c0f4559dad80dc86c975d1ef7067\"},\n" + " \"cipher\":\"aes-128-ctr\",\n" + " \"kdf\":\"scrypt\",\n" + " \"kdfparams\":{\n" + " \"dklen\":32,\n" + " \"salt\":\"22279c6dbcc706d7daa120022a236cfe149496dca8232b0f8159d1df999569d6\",\n" + " \"n\":4096,\n" + " \"r\":8,\n" + " \"p\":1\n" + " },\n" + " \"mac\":\"1c54f7378fa279a49a2f790a0adb683defad8535a21bdf2f3dadc48a7bddf517\"\n" + " }\n" + " ]\n" + " ]\n" + "}"; AbstractKeyring keyring = caver.wallet.keyring.decrypt(keyStoreStr, "password");
- Parameters:
keyStore
- The encrypted keystore to decrypt.password
- The password to use for decryption.- Returns:
- AbstractKeyring
- Throws:
org.web3j.crypto.CipherException
java.io.IOException
-
decrypt
public static AbstractKeyring decrypt(KeyStore keystore, java.lang.String password) throws org.web3j.crypto.CipherException
Decrypts a keystore v3 or v4 and returns a keyring instance.Example :
String keyStoreStr = "{\n" + " \"version\":4,\n" + " \"id\":\"55da3f9c-6444-4fc1-abfa-f2eabfc57501\",\n" + " \"address\":\"0x86bce8c859f5f304aa30adb89f2f7b6ee5a0d6e2\",\n" + " \"keyring\":[\n" + " [\n" + " {\n" + " \"ciphertext\":\"93dd2c777abd9b80a0be8e1eb9739cbf27c127621a5d3f81e7779e47d3bb22f6\",\n" + " \"cipherparams\":{\"iv\":\"84f90907f3f54f53d19cbd6ae1496b86\"},\n" + " \"cipher\":\"aes-128-ctr\",\n" + " \"kdf\":\"scrypt\",\n" + " \"kdfparams\":{\n" + " \"dklen\":32,\n" + " \"salt\":\"69bf176a136c67a39d131912fb1e0ada4be0ed9f882448e1557b5c4233006e10\",\n" + " \"n\":4096,\n" + " \"r\":8,\n" + " \"p\":1\n" + " },\n" + " \"mac\":\"8f6d1d234f4a87162cf3de0c7fb1d4a8421cd8f5a97b86b1a8e576ffc1eb52d2\"\n" + " },\n" + " {\n" + " \"ciphertext\":\"53d50b4e86b550b26919d9b8cea762cd3c637dfe4f2a0f18995d3401ead839a6\",\n" + " \"cipherparams\":{\"iv\":\"d7a6f63558996a9f99e7daabd289aa2c\"},\n" + " \"cipher\":\"aes-128-ctr\",\n" + " \"kdf\":\"scrypt\",\n" + " \"kdfparams\":{\n" + " \"dklen\":32,\n" + " \"salt\":\"966116898d90c3e53ea09e4850a71e16df9533c1f9e1b2e1a9edec781e1ad44f\",\n" + " \"n\":4096,\n" + " \"r\":8,\n" + " \"p\":1\n" + " },\n" + " \"mac\":\"bca7125e17565c672a110ace9a25755847d42b81aa7df4bb8f5ce01ef7213295\"\n" + " }\n" + " ],\n" + " [\n" + " {\n" + " \"ciphertext\":\"f16def98a70bb2dae053f791882f3254c66d63416633b8d91c2848893e7876ce\",\n" + " \"cipherparams\":{\"iv\":\"f5006128a4c53bc02cada64d095c15cf\"},\n" + " \"cipher\":\"aes-128-ctr\",\n" + " \"kdf\":\"scrypt\",\n" + " \"kdfparams\":{\n" + " \"dklen\":32,\n" + " \"salt\":\"0d8a2f71f79c4880e43ff0795f6841a24cb18838b3ca8ecaeb0cda72da9a72ce\",\n" + " \"n\":4096,\n" + " \"r\":8,\n" + " \"p\":1\n" + " },\n" + " \"mac\":\"38b79276c3805b9d2ff5fbabf1b9d4ead295151b95401c1e54aed782502fc90a\"\n" + " }\n" + " ],\n" + " [\n" + " {\n" + " \"ciphertext\":\"544dbcc327942a6a52ad6a7d537e4459506afc700a6da4e8edebd62fb3dd55ee\",\n" + " \"cipherparams\":{\"iv\":\"05dd5d25ad6426e026818b6fa9b25818\"},\n" + " \"cipher\":\"aes-128-ctr\",\n" + " \"kdf\":\"scrypt\",\n" + " \"kdfparams\":{\n" + " \"dklen\":32,\n" + " \"salt\":\"3a9003c1527f65c772c54c6056a38b0048c2e2d58dc0e584a1d867f2039a25aa\",\n" + " \"n\":4096,\n" + " \"r\":8,\n" + " \"p\":1\n" + " },\n" + " \"mac\":\"19a698b51409cc9ac22d63d329b1201af3c89a04a1faea3111eec4ca97f2e00f\"\n" + " },\n" + " {\n" + " \"ciphertext\":\"dd6b920f02cbcf5998ed205f8867ddbd9b6b088add8dfe1774a9fda29ff3920b\",\n" + " \"cipherparams\":{\"iv\":\"ac04c0f4559dad80dc86c975d1ef7067\"},\n" + " \"cipher\":\"aes-128-ctr\",\n" + " \"kdf\":\"scrypt\",\n" + " \"kdfparams\":{\n" + " \"dklen\":32,\n" + " \"salt\":\"22279c6dbcc706d7daa120022a236cfe149496dca8232b0f8159d1df999569d6\",\n" + " \"n\":4096,\n" + " \"r\":8,\n" + " \"p\":1\n" + " },\n" + " \"mac\":\"1c54f7378fa279a49a2f790a0adb683defad8535a21bdf2f3dadc48a7bddf517\"\n" + " }\n" + " ]\n" + " ]\n" + "}"; ObjectMapper mapper = new ObjectMapper(); KeyStore file = mapper.readValue(keyStoreStr, KeyStore.class); AbstractKeyring keyring = caver.wallet.keyring.decrypt(file, "password");
- Parameters:
keystore
- The encrypted keystore to decrypt.password
- The password to use for decryption.- Returns:
- AbstractKeyring
- Throws:
org.web3j.crypto.CipherException
- It throws when cipher operation has failed.
-
-