diff --git a/newcoin.vcxproj b/newcoin.vcxproj
index 6d82588bf7..fb500bb55d 100644
--- a/newcoin.vcxproj
+++ b/newcoin.vcxproj
@@ -100,13 +100,13 @@
+
-
@@ -157,11 +157,7 @@
-
-
-
-
@@ -178,36 +174,75 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
diff --git a/newcoin.vcxproj.filters b/newcoin.vcxproj.filters
index d9c41f387c..4896e44620 100644
--- a/newcoin.vcxproj.filters
+++ b/newcoin.vcxproj.filters
@@ -90,9 +90,6 @@
Source Files
-
- Source Files
-
Source Files
@@ -246,32 +243,17 @@
Source Files
+
+ Source Files
+
Header Files
-
- Header Files
-
-
- Header Files
-
Header Files
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
Header Files\util
@@ -281,54 +263,12 @@
Header Files
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
Header Files\util
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
Header Files
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
Source Files\cryptopp
@@ -362,36 +302,21 @@
Source Files\cryptopp
-
- Header Files
-
Header Files
-
- Header Files
-
Header Files
-
- Header Files
-
Header Files
-
- Header Files
-
Header Files\util
Header Files\util
-
- Header Files
-
Header Files\util
@@ -401,10 +326,190 @@
Header Files
-
+
Header Files
-
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
Header Files
diff --git a/newcoind.cfg b/newcoind.cfg
index a6c0ea16d7..6c4260dd91 100644
--- a/newcoind.cfg
+++ b/newcoind.cfg
@@ -49,3 +49,6 @@
[rpc_port]
5005
+
+[rpc_allow_remote]
+1
diff --git a/src/RPCServer.cpp b/src/RPCServer.cpp
index 57f3351a1e..55420d07aa 100644
--- a/src/RPCServer.cpp
+++ b/src/RPCServer.cpp
@@ -275,10 +275,10 @@ Json::Value RPCServer::getMasterGenerator(const uint256& uLedger, const NewcoinA
// - Make sure the source account can pay.
// --> naRegularSeed : To find the generator
// --> naSrcAccountID : Account we want the public and private regular keys to.
-// --> naVerifyGenerator : If provided, the found master public generator must match.
// <-- naAccountPublic : Regular public key for naSrcAccountID
// <-- naAccountPrivate : Regular private key for naSrcAccountID
// <-- saSrcBalance: Balance minus fee.
+// --> naVerifyGenerator : If provided, the found master public generator must match.
Json::Value RPCServer::authorize(const uint256& uLedger,
const NewcoinAddress& naRegularSeed, const NewcoinAddress& naSrcAccountID,
NewcoinAddress& naAccountPublic, NewcoinAddress& naAccountPrivate,
@@ -291,19 +291,21 @@ Json::Value RPCServer::authorize(const uint256& uLedger,
{
return RPCError(rpcSRC_MISSING);
}
-
- // Source must have been claimed.
- if (!asSrc->bHaveAuthorizedKey())
- {
- return RPCError(rpcSRC_UNCLAIMED);
- }
-
+
NewcoinAddress naMasterGenerator;
- Json::Value obj = getMasterGenerator(uLedger, naRegularSeed, naMasterGenerator);
+
+ if(asSrc->bHaveAuthorizedKey())
+ {
+ Json::Value obj = getMasterGenerator(uLedger, naRegularSeed, naMasterGenerator);
- if (!obj.empty())
- return obj;
+ if (!obj.empty())
+ return obj;
+ }else
+ {
+ // Try the seed as a master seed.
+ naMasterGenerator.setFamilyGenerator(naRegularSeed);
+ }
// If naVerifyGenerator is provided, make sure it is the master generator.
if (naVerifyGenerator.isValid() && naMasterGenerator != naVerifyGenerator)
@@ -330,7 +332,7 @@ Json::Value RPCServer::authorize(const uint256& uLedger,
naAccountPublic.setAccountPublic(naGenerator, iIndex);
naAccountPrivate.setAccountPrivate(naGenerator, naRegularSeed, iIndex);
- if (asSrc->getAuthorizedKey().getAccountID() != naAccountPublic.getAccountID())
+ if (asSrc->bHaveAuthorizedKey() && (asSrc->getAuthorizedKey().getAccountID() != naAccountPublic.getAccountID()))
{
std::cerr << "iIndex: " << iIndex << std::endl;
std::cerr << "sfAuthorizedKey: " << strHex(asSrc->getAuthorizedKey().getAccountID()) << std::endl;
@@ -350,6 +352,7 @@ Json::Value RPCServer::authorize(const uint256& uLedger,
saSrcBalance -= saFee;
}
+ Json::Value obj;
return obj;
}
@@ -426,13 +429,13 @@ Json::Value RPCServer::doAccountEmailSet(Json::Value ¶ms)
return RPCError(rpcSRC_ACT_MALFORMED);
}
- NewcoinAddress naMasterGenerator;
+ NewcoinAddress naVerifyGenerator;
NewcoinAddress naAccountPublic;
NewcoinAddress naAccountPrivate;
AccountState::pointer asSrc;
STAmount saSrcBalance;
Json::Value obj = authorize(uLedger, naSeed, naSrcAccountID, naAccountPublic, naAccountPrivate,
- saSrcBalance, theConfig.FEE_DEFAULT, asSrc, naMasterGenerator);
+ saSrcBalance, theConfig.FEE_DEFAULT, asSrc, naVerifyGenerator);
if (!obj.empty())
return obj;
@@ -634,13 +637,13 @@ Json::Value RPCServer::doAccountMessageSet(Json::Value& params) {
return RPCError(rpcPUBLIC_MALFORMED);
}
- NewcoinAddress naMasterGenerator;
+ NewcoinAddress naVerifyGenerator;
NewcoinAddress naAccountPublic;
NewcoinAddress naAccountPrivate;
AccountState::pointer asSrc;
STAmount saSrcBalance;
Json::Value obj = authorize(uLedger, naSeed, naSrcAccountID, naAccountPublic, naAccountPrivate,
- saSrcBalance, theConfig.FEE_DEFAULT, asSrc, naMasterGenerator);
+ saSrcBalance, theConfig.FEE_DEFAULT, asSrc, naVerifyGenerator);
if (!obj.empty())
return obj;
@@ -1177,13 +1180,13 @@ Json::Value RPCServer::doSend(Json::Value& params)
bool bCreate = !asDst;
STAmount saFee = bCreate ? theConfig.FEE_ACCOUNT_CREATE : theConfig.FEE_DEFAULT;
- NewcoinAddress naMasterGenerator;
+ NewcoinAddress naVerifyGenerator;
NewcoinAddress naAccountPublic;
NewcoinAddress naAccountPrivate;
AccountState::pointer asSrc;
STAmount saSrcBalance;
Json::Value obj = authorize(uLedger, naSeed, naSrcAccountID, naAccountPublic, naAccountPrivate,
- saSrcBalance, saFee, asSrc, naMasterGenerator);
+ saSrcBalance, saFee, asSrc, naVerifyGenerator);
if (!obj.empty())
return obj;
@@ -1764,7 +1767,7 @@ Json::Value RPCServer::doWalletClaim(Json::Value& params)
std::vector vucGeneratorCipher = naRegular0Private.accountPrivateEncrypt(naRegular0Public, naMasterGenerator.getFamilyGenerator());
std::vector vucGeneratorSig;
- // Prove that we have the corrisponding private key to the generator id. So, we can get the generator id.
+ // Prove that we have the corresponding private key to the generator id. So, we can get the generator id.
// XXX Check result.
naRegular0Private.accountPrivateSign(Serializer::getSHA512Half(vucGeneratorCipher), vucGeneratorSig);
diff --git a/src/TransactionEngine.cpp b/src/TransactionEngine.cpp
index 8748f8b336..cf006613a0 100644
--- a/src/TransactionEngine.cpp
+++ b/src/TransactionEngine.cpp
@@ -479,6 +479,7 @@ TransactionEngineResult TransactionEngine::applyTransaction(const SerializedTran
break;
default:
+
if (!sleSrc->getIFieldPresent(sfAuthorizedKey))
{
std::cerr << "applyTransaction: Source is an unclaimed account." << std::endl;