@@ -1168,6 +1168,40 @@ UniValue bls_generate(const JSONRPCRequest& request)
1168
1168
return ret;
1169
1169
}
1170
1170
1171
+ void bls_fromsecret_help ()
1172
+ {
1173
+ throw std::runtime_error (
1174
+ " bls fromsecret \" secret\"\n "
1175
+ " \n Parses a BLS secret key and returns the secret/public key pair.\n "
1176
+ " \n Arguments:\n "
1177
+ " 1. \" secret\" (string, required) The BLS secret key\n "
1178
+ " \n Result:\n "
1179
+ " {\n "
1180
+ " \" secret\" : \" xxxx\" , (string) BLS secret key\n "
1181
+ " \" public\" : \" xxxx\" , (string) BLS public key\n "
1182
+ " }\n "
1183
+ " \n Examples:\n "
1184
+ + HelpExampleCli (" bls fromsecret" , " 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f" )
1185
+ );
1186
+ }
1187
+
1188
+ UniValue bls_fromsecret (const JSONRPCRequest& request)
1189
+ {
1190
+ if (request.fHelp || request.params .size () != 2 ) {
1191
+ bls_fromsecret_help ();
1192
+ }
1193
+
1194
+ CBLSSecretKey sk;
1195
+ if (!sk.SetHexStr (request.params [1 ].get_str ())) {
1196
+ throw JSONRPCError (RPC_INVALID_PARAMETER, strprintf (" Secret key must be a valid hex string of length %d" , sk.SerSize *2 ));
1197
+ }
1198
+
1199
+ UniValue ret (UniValue::VOBJ);
1200
+ ret.push_back (Pair (" secret" , sk.ToString ()));
1201
+ ret.push_back (Pair (" public" , sk.GetPublicKey ().ToString ()));
1202
+ return ret;
1203
+ }
1204
+
1171
1205
[[ noreturn ]] void bls_help ()
1172
1206
{
1173
1207
throw std::runtime_error (
@@ -1178,6 +1212,7 @@ UniValue bls_generate(const JSONRPCRequest& request)
1178
1212
" 1. \" command\" (string, required) The command to execute\n "
1179
1213
" \n Available commands:\n "
1180
1214
" generate - Create a BLS secret/public key pair\n "
1215
+ " fromsecret - Parse a BLS secret key and return the secret/public key pair\n "
1181
1216
);
1182
1217
}
1183
1218
@@ -1194,6 +1229,8 @@ UniValue _bls(const JSONRPCRequest& request)
1194
1229
1195
1230
if (command == " generate" ) {
1196
1231
return bls_generate (request);
1232
+ } else if (command == " fromsecret" ) {
1233
+ return bls_fromsecret (request);
1197
1234
} else {
1198
1235
bls_help ();
1199
1236
}
0 commit comments