Class KeyringFactoryWrapper

    • Constructor Summary

      Constructors 
      Constructor Description
      KeyringFactoryWrapper()
      Creates a KeyringFactoryWrapper instance
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      SingleKeyring create​(java.lang.String address, java.lang.String key)
      Creates a single type of keyring instance.
      MultipleKeyring create​(java.lang.String address, java.lang.String[] keys)
      Creates a multiple type of keyring instance.
      RoleBasedKeyring create​(java.lang.String address, java.util.List<java.lang.String[]> keys)
      Creates a roleBased type of keyring instance.
      SingleKeyring createFromKlaytnWalletKey​(java.lang.String klaytnWalletKey)
      Creates a single type of keyring instance from KlaytnWalletKey string.
      SingleKeyring createFromPrivateKey​(java.lang.String key)
      Creates a single type of keyring instance with private key.
      MultipleKeyring createWithMultipleKey​(java.lang.String address, java.lang.String[] multipleKey)
      Creates a multiple type of keyring instance from address and private key strings.
      RoleBasedKeyring createWithRoleBasedKey​(java.lang.String address, java.util.List<java.lang.String[]> roleBasedKey)
      Create a roleBased type of keyring instance from address and private key strings.
      SingleKeyring createWithSingleKey​(java.lang.String address, java.lang.String key)
      Creates a single type of keyring instance from address and private key string.
      AbstractKeyring decrypt​(KeyStore keystore, java.lang.String password)
      Decrypts a keystore v3 or v4 and returns a keyring instance.
      AbstractKeyring decrypt​(java.lang.String keyStore, java.lang.String password)
      Decrypts a KeyStore json string and returns a keyring instance.
      SingleKeyring generate()
      Generates a single type of keyring instance.
      SingleKeyring generate​(java.lang.String entropy)
      Generates a single type of keyring instance with entropy.
      java.lang.String[] generateMultipleKeys​(int num)
      Generates an array of private key strings.
      java.lang.String[] generateMultipleKeys​(int num, java.lang.String entropy)
      Generates an array of private key strings with entropy.
      java.util.List<java.lang.String[]> generateRoleBasedKeys​(int[] numArr)
      Generates an list of private key strings.
      java.util.List<java.lang.String[]> generateRoleBasedKeys​(int[] numArr, java.lang.String entropy)
      Generates an list of private key strings.
      java.lang.String generateSingleKey()
      Generates a single private key string.
      java.lang.String generateSingleKey​(java.lang.String entropy)
      Generates a single private key string with entropy.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • KeyringFactoryWrapper

        public KeyringFactoryWrapper()
        Creates a KeyringFactoryWrapper instance
    • Method Detail

      • generate

        public SingleKeyring generate()
        Generates a single type of keyring instance.

        Example :
         
         SingleKeyring keyring = caver.wallet.keyring.generate();
         
         
        Returns:
        SingleKeyring
      • generate

        public SingleKeyring generate​(java.lang.String entropy)
        Generates a single type of 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 java.lang.String generateSingleKey()
        Generates a single private key string.

        Example :
         
         String privateKey = caver.wallet.keyring.generateSingleKey();
         
         
        Returns:
        String
      • generateSingleKey

        public java.lang.String generateSingleKey​(java.lang.String entropy)
        Generates 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 java.lang.String[] generateMultipleKeys​(int num)
        Generates an array of private key strings.

         
         String[] privateKeys = caver.wallet.keyring.generateMultipleKeys(3);
         
         
        Parameters:
        num - A length of keys.
        Returns:
        String[]
      • generateMultipleKeys

        public java.lang.String[] generateMultipleKeys​(int num,
                                                       java.lang.String entropy)
        Generates 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 java.util.List<java.lang.String[]> generateRoleBasedKeys​(int[] numArr)
        Generates an list of private key strings.

        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 java.util.List<java.lang.String[]> generateRoleBasedKeys​(int[] numArr,
                                                                        java.lang.String entropy)
        Generates an list of private key strings.
        Example :
         
         String entropy = "entropy";
         List<String[]> privateKeys = caver.wallet.keyring.generateRoleBasedKeys(new int[] {3,3,3});
         
         
        Parameters:
        numArr - An array containing the number of keys for each role.
        entropy - A random string to create private key.
        Returns:
        List
      • create

        public 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 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.generateMultipleKeys(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 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[]> privateKeys = caver.wallet.keyring.generateRoleBasedKeys(new int[] {3,3,3});
        
         RoleBasedKeyring added = (RoleBasedKeyring)caver.wallet.keyring.create(address, privateKeys);
         
         
        Parameters:
        address - The address of keyring.
        keys - The key list of keyring.
        Returns:
        RoleBasedKeyring
      • createFromPrivateKey

        public 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 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 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 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[] keyArray = caver.wallet.keyring.generateMultipleKeys(3);
         MultipleKeyring keyring = (MultipleKeyring)caver.wallet.keyring.createWithMultipleKey(address, keyArray);
         
         
        Parameters:
        address - An address of keyring.
        multipleKey - An array of private key strings.
        Returns:
        MultipleKeyring
      • createWithRoleBasedKey

        public RoleBasedKeyring createWithRoleBasedKey​(java.lang.String address,
                                                       java.util.List<java.lang.String[]> roleBasedKey)
        Create a roleBased type of keyring instance from address and private key strings.
        Example :
         
         String address = caver.wallet.keyring.generate().getAddress();
         List<String[]> privateKeys = caver.wallet.keyring.generateRoleBasedKeys(new int[] {3,3,3});
        
         RoleBasedKeyring added = (RoleBasedKeyring)caver.wallet.keyring.createWithRoleBasedKey(address, privateKeys);
         
         
        Parameters:
        address - An address of keyring.
        roleBasedKey - A List of private key strings.
        Returns:
        RoleBasedKeyring
      • decrypt

        public 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 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(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.