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 "JsonCreateUser.h"
|
||||
#include "JsonGetLogin.h"
|
||||
#include "JsonSignTransaction.h"
|
||||
#include "JsonUnknown.h"
|
||||
#include "JsonGetRunningUserTasks.h"
|
||||
#include "JsonGetUsers.h"
|
||||
@ -76,6 +77,9 @@ Poco::Net::HTTPRequestHandler* JsonRequestHandlerFactory::createRequestHandler(c
|
||||
else if (url_first_part == "/checkSessionState") {
|
||||
return new JsonCheckSessionState;
|
||||
}
|
||||
else if (url_first_part == "/signTransaction") {
|
||||
return new JsonSignTransaction;
|
||||
}
|
||||
else if (url_first_part == "/checkUsername") {
|
||||
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