mirror of
https://github.com/IT4Change/gradido.git
synced 2025-12-13 07:45:54 +00:00
add signTransaction json call to Login-Server
This commit is contained in:
parent
a2d7420040
commit
659851218e
@ -13,6 +13,7 @@
|
|||||||
#include "JsonCreateTransaction.h"
|
#include "JsonCreateTransaction.h"
|
||||||
#include "JsonCreateUser.h"
|
#include "JsonCreateUser.h"
|
||||||
#include "JsonGetLogin.h"
|
#include "JsonGetLogin.h"
|
||||||
|
#include "JsonSignTransaction.h"
|
||||||
#include "JsonUnknown.h"
|
#include "JsonUnknown.h"
|
||||||
#include "JsonGetRunningUserTasks.h"
|
#include "JsonGetRunningUserTasks.h"
|
||||||
#include "JsonGetUsers.h"
|
#include "JsonGetUsers.h"
|
||||||
@ -76,6 +77,9 @@ Poco::Net::HTTPRequestHandler* JsonRequestHandlerFactory::createRequestHandler(c
|
|||||||
else if (url_first_part == "/checkSessionState") {
|
else if (url_first_part == "/checkSessionState") {
|
||||||
return new JsonCheckSessionState;
|
return new JsonCheckSessionState;
|
||||||
}
|
}
|
||||||
|
else if (url_first_part == "/signTransaction") {
|
||||||
|
return new JsonSignTransaction;
|
||||||
|
}
|
||||||
else if (url_first_part == "/checkUsername") {
|
else if (url_first_part == "/checkUsername") {
|
||||||
return new JsonCheckUsername;
|
return new JsonCheckUsername;
|
||||||
}
|
}
|
||||||
|
|||||||
48
login_server/src/cpp/JSONInterface/JsonSignTransaction.cpp
Normal file
48
login_server/src/cpp/JSONInterface/JsonSignTransaction.cpp
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
#include "JsonSignTransaction.h"
|
||||||
|
#include "lib/DataTypeConverter.h"
|
||||||
|
|
||||||
|
Poco::JSON::Object* JsonSignTransaction::handle(Poco::Dynamic::Var params)
|
||||||
|
{
|
||||||
|
auto result = checkAndLoadSession(params);
|
||||||
|
if (result) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string bodyBytes_base64;
|
||||||
|
auto mm = MemoryManager::getInstance();
|
||||||
|
|
||||||
|
// if is json object
|
||||||
|
if (params.type() == typeid(Poco::JSON::Object::Ptr)) {
|
||||||
|
Poco::JSON::Object::Ptr paramJsonObject = params.extract<Poco::JSON::Object::Ptr>();
|
||||||
|
/// Throws a RangeException if the value does not fit
|
||||||
|
/// into the result variable.
|
||||||
|
/// Throws a NotImplementedException if conversion is
|
||||||
|
/// not available for the given type.
|
||||||
|
/// Throws InvalidAccessException if Var is empty.
|
||||||
|
try {
|
||||||
|
paramJsonObject->get("bodyBytes").convert(bodyBytes_base64);
|
||||||
|
}
|
||||||
|
catch (Poco::Exception& ex) {
|
||||||
|
return stateError("json exception", ex.displayText());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
auto user = mSession->getNewUser();
|
||||||
|
auto keyPair = user->getGradidoKeyPair();
|
||||||
|
if (!keyPair) {
|
||||||
|
return stateError("error reading keys");
|
||||||
|
}
|
||||||
|
|
||||||
|
auto bodyBytes = DataTypeConverter::base64ToBin(bodyBytes_base64);
|
||||||
|
auto sign = keyPair->sign(bodyBytes_base64);
|
||||||
|
mm->releaseMemory(bodyBytes);
|
||||||
|
|
||||||
|
if (!sign) {
|
||||||
|
return stateError("error signing transaction");
|
||||||
|
}
|
||||||
|
auto sign_base64 = DataTypeConverter::binToBase64(sign);
|
||||||
|
mm->releaseMemory(sign);
|
||||||
|
result = stateSuccess();
|
||||||
|
result->set("sign", sign_base64);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
15
login_server/src/cpp/JSONInterface/JsonSignTransaction.h
Normal file
15
login_server/src/cpp/JSONInterface/JsonSignTransaction.h
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#ifndef __JSON_INTERFACE_JSON_SIGN_TRANSACTION_
|
||||||
|
#define __JSON_INTERFACE_JSON_SIGN_TRANSACTION_
|
||||||
|
|
||||||
|
#include "JsonRequestHandler.h"
|
||||||
|
|
||||||
|
class JsonSignTransaction : public JsonRequestHandler
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Poco::JSON::Object* handle(Poco::Dynamic::Var params);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // __JSON_INTERFACE_JSON_SIGN_TRANSACTION_
|
||||||
Loading…
x
Reference in New Issue
Block a user