Skip to content

Commit 0e0527e

Browse files
author
JK
committed
Added createkeypairs command
1 parent b0418a7 commit 0e0527e

6 files changed

Lines changed: 84 additions & 1 deletion

File tree

MultiChainJavaAPI.iml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
3+
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
4+
<output url="file://$MODULE_DIR$/target/classes" />
5+
<output-test url="file://$MODULE_DIR$/target/test-classes" />
6+
<content url="file://$MODULE_DIR$">
7+
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
8+
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
9+
<excludeFolder url="file://$MODULE_DIR$/target" />
10+
</content>
11+
<orderEntry type="inheritedJdk" />
12+
<orderEntry type="sourceFolder" forTests="false" />
13+
<orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.0" level="project" />
14+
</component>
15+
</module>

src/main/java/multichain/command/AddressCommand.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import multichain.command.builders.QueryBuilderAddress;
1414
import multichain.object.Address;
1515
import multichain.object.BalanceAsset;
16+
import multichain.object.KeyPair;
1617
import multichain.object.MultiBalance;
1718
import multichain.object.formatters.AddressFormatter;
1819
import multichain.object.formatters.BalanceFormatter;
@@ -335,5 +336,14 @@ public final static Address validateAddress(String stringAddress) throws Multich
335336
return address;
336337
}
337338

339+
/**
340+
* Generate blockchian address and corresponding public and private key. Used for external key management.
341+
* @return KeyPair object with data
342+
* @throws MultichainException
343+
*/
344+
public static KeyPair createKeyPairs() throws MultichainException {
345+
String keyPair = executeCreateKeyPairs();
346+
return AddressFormatter.formatKeyPair(keyPair);
347+
}
338348

339349
}

src/main/java/multichain/command/builders/QueryBuilderAddress.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,17 @@ protected static String executeValidateAddress(String address) throws Multichain
247247
return execute(CommandEnum.VALIDATEADDRESS, address);
248248
}
249249

250-
250+
/**
251+
* Generates a blockchain address, corresponding public and private keys
252+
* @return [{
253+
* address:
254+
* pubkey:
255+
* privkey:
256+
* }]
257+
* @throws MultichainException
258+
*/
259+
protected static String executeCreateKeyPairs() throws MultichainException {
260+
return execute(CommandEnum.CREATEKEYPAIRS);
261+
}
251262

252263
}

src/main/java/multichain/command/builders/QueryBuilderCommon.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ protected enum CommandEnum {
3939
COMBINEUNPSENT,
4040
CREATE,
4141
CREATEFROM,
42+
CREATEKEYPAIRS,
4243
CREATEMULTISIG,
4344
CREATERAWEXCHANGE,
4445
CREATERAWTRANSACTION,
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package multichain.object;
2+
3+
import com.google.gson.Gson;
4+
import com.google.gson.GsonBuilder;
5+
6+
public class KeyPair {
7+
String address;
8+
String pubkey;
9+
String privkey;
10+
11+
public String getAddress() {
12+
return address;
13+
}
14+
15+
public void setAddress(String address) {
16+
this.address = address;
17+
}
18+
19+
public String getPubkey() {
20+
return pubkey;
21+
}
22+
23+
public void setPubkey(String pubkey) {
24+
this.pubkey = pubkey;
25+
}
26+
27+
public String getPrivkey() {
28+
return privkey;
29+
}
30+
31+
public void setPrivkey(String privkey) {
32+
this.privkey = privkey;
33+
}
34+
35+
@Override
36+
public String toString() {
37+
Gson gson = new GsonBuilder().setPrettyPrinting().create();
38+
return gson.toJson(this, this.getClass());
39+
}
40+
}

src/main/java/multichain/object/formatters/AddressFormatter.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import com.google.gson.Gson;
1616
import com.google.gson.GsonBuilder;
1717
import com.google.gson.reflect.TypeToken;
18+
import multichain.object.KeyPair;
1819

1920
/**
2021
* @author Ub - H. MARTEAU
@@ -46,4 +47,9 @@ public final static List<Address> formatAddressesList(String stringAddresses) {
4647

4748
return addresses;
4849
}
50+
51+
public final static KeyPair formatKeyPair(String keyPair) {
52+
final Gson gson = new GsonBuilder().create();
53+
return gson.fromJson(keyPair, KeyPair.class);
54+
}
4955
}

0 commit comments

Comments
 (0)