Skip to content

Commit b4ecb03

Browse files
committed
The recommended way to handle external requests is now make_license_key()
1 parent 0fe80d4 commit b4ecb03

File tree

3 files changed

+39
-26
lines changed

3 files changed

+39
-26
lines changed

examples/VisualStudio/Example_External/Example_External.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
#include <cryptolens/core.hpp>
44
#include <cryptolens/Error.hpp>
5+
#include "cryptolens/RequestHandler_WinHTTP.hpp"
56
#include <cryptolens/SignatureVerifier_CryptoAPI.hpp>
67

78
/*
@@ -11,20 +12,21 @@
1112
*/
1213

1314
namespace cryptolens = ::cryptolens_io::v20180502;
15+
using Cryptolens = cryptolens::basic_SKM<cryptolens::RequestHandler_WinHTTP, cryptolens::SignatureVerifier_CryptoAPI>;
1416

1517
int main()
1618
{
19+
Cryptolens cryptolens_handle;
1720
cryptolens::Error e;
18-
cryptolens::SignatureVerifier_CryptoAPI signature_verifier;
1921
// Setting up the signature verifier with credentials from "Security Settings"
2022
// on cryptolens.io
21-
signature_verifier.set_modulus_base64(e, "khbyu3/vAEBHi339fTuo2nUaQgSTBj0jvpt5xnLTTF35FLkGI+5Z3wiKfnvQiCLf+5s4r8JB/Uic/i6/iNjPMILlFeE0N6XZ+2pkgwRkfMOcx6eoewypTPUoPpzuAINJxJRpHym3V6ZJZ1UfYvzRcQBD/lBeAYrvhpCwukQMkGushKsOS6U+d+2C9ZNeP+U+uwuv/xu8YBCBAgGb8YdNojcGzM4SbCtwvJ0fuOfmCWZvUoiumfE4x7rAhp1pa9OEbUe0a5HL+1v7+JLBgkNZ7Z2biiHaM6za7GjHCXU8rojatEQER+MpgDuQV3ZPx8RKRdiJgPnz9ApBHFYDHLDzDw==");
22-
signature_verifier.set_exponent_base64(e, "AQAB");
23+
cryptolens_handle.signature_verifier.set_modulus_base64(e, "khbyu3/vAEBHi339fTuo2nUaQgSTBj0jvpt5xnLTTF35FLkGI+5Z3wiKfnvQiCLf+5s4r8JB/Uic/i6/iNjPMILlFeE0N6XZ+2pkgwRkfMOcx6eoewypTPUoPpzuAINJxJRpHym3V6ZJZ1UfYvzRcQBD/lBeAYrvhpCwukQMkGushKsOS6U+d+2C9ZNeP+U+uwuv/xu8YBCBAgGb8YdNojcGzM4SbCtwvJ0fuOfmCWZvUoiumfE4x7rAhp1pa9OEbUe0a5HL+1v7+JLBgkNZ7Z2biiHaM6za7GjHCXU8rojatEQER+MpgDuQV3ZPx8RKRdiJgPnz9ApBHFYDHLDzDw==");
24+
cryptolens_handle.signature_verifier.set_exponent_base64(e, "AQAB");
2325

2426
// Reply from Cryptolens Web API
2527
std::string cryptolens_reply("{\"licenseKey\":\"eyJQcm9kdWN0SWQiOjM2NDYsIklEIjo0LCJLZXkiOiJNUERXWS1QUUFPVy1GS1NDSC1TR0FBVSIsIkNyZWF0ZWQiOjE0OTAzMTM2MDAsIkV4cGlyZXMiOjE0OTI5MDU2MDAsIlBlcmlvZCI6MzAsIkYxIjpmYWxzZSwiRjIiOmZhbHNlLCJGMyI6ZmFsc2UsIkY0IjpmYWxzZSwiRjUiOmZhbHNlLCJGNiI6ZmFsc2UsIkY3IjpmYWxzZSwiRjgiOmZhbHNlLCJOb3RlcyI6bnVsbCwiQmxvY2siOmZhbHNlLCJHbG9iYWxJZCI6MzE4NzYsIkN1c3RvbWVyIjpudWxsLCJBY3RpdmF0ZWRNYWNoaW5lcyI6W3siTWlkIjoiIiwiSVAiOiIxNTUuNC4xMzQuMjciLCJUaW1lIjoxNDkxODk4OTE4fSx7Ik1pZCI6ImxvbCIsIklQIjoiMTU1LjQuMTM0LjI3IiwiVGltZSI6MTQ5MTg5ODk5NX0seyJNaWQiOiIyODlqZjJhZnNmIiwiSVAiOiIxNTUuNC4xMzQuMjciLCJUaW1lIjoxNDkxOTAwNTQ2fSx7Ik1pZCI6IjI4OWpmMmFmczMiLCJJUCI6IjE1NS40LjEzNC4yNyIsIlRpbWUiOjE0OTE5MDA2MzZ9XSwiVHJpYWxBY3RpdmF0aW9uIjpmYWxzZSwiTWF4Tm9PZk1hY2hpbmVzIjoxMCwiQWxsb3dlZE1hY2hpbmVzIjoiIiwiRGF0YU9iamVjdHMiOltdLCJTaWduRGF0ZSI6MTQ5NTAxOTc2Nn0=\",\"signature\":\"SqPm8dtTdVBrXrmJzXer7qq6dvdQfctJxP8mar+RO9p8QABsgWWaX+uH7aOGMBd42eg+2Omorv7Ks6V7itRhXPeeq5qWoKuefd+pTsFagvqiu2N/E2Np8fpt51aqmiygdHLECo42nJwVD8JzlN67hnvJTgY7iyDWhG7qFK9Slk+kEJjjK/0J1pJYI6nOi+7sgBV7ZRca+7DmiP6OmOjNfySps6PdiB7QbiSis5f24Xmc5OYyRe3fzZmAueqF3eymBK19XhYFroWXeT4tcNsBNJsv+YfItovGbJysLx+K4ppltd2GNwEFQgtE3ILGOUj7EVbeQmQXg9m2c5MTPyk8iA==\",\"result\":0,\"message\":\"\"}");
2628

27-
cryptolens::optional<cryptolens::LicenseKey> license_key = cryptolens::handle_activate(e, signature_verifier, cryptolens_reply);
29+
cryptolens::optional<cryptolens::LicenseKey> license_key = cryptolens_handle.make_license_key(e, cryptolens_reply);
2830

2931
// Check if request was successful and signature is valid
3032
if (!license_key) {

examples/unix/example_external.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
#include <cryptolens/core.hpp>
44
#include <cryptolens/Error.hpp>
5+
#include <cryptolens/RequestHandler_curl.hpp>
56
#include <cryptolens/SignatureVerifier_OpenSSL.hpp>
67

78
/*
@@ -11,20 +12,21 @@
1112
*/
1213

1314
namespace cryptolens = ::cryptolens_io::v20180502;
15+
using Cryptolens = cryptolens::basic_SKM<cryptolens::RequestHandler_curl,cryptolens::SignatureVerifier_OpenSSL>;
1416

1517
int main()
1618
{
1719
cryptolens::Error e;
18-
cryptolens::SignatureVerifier_OpenSSL signature_verifier;
20+
Cryptolens cryptolens_handle;
1921
// Setting up the signature verifier with credentials from "Security Settings"
2022
// on cryptolens.io
21-
signature_verifier.set_modulus_base64(e, "khbyu3/vAEBHi339fTuo2nUaQgSTBj0jvpt5xnLTTF35FLkGI+5Z3wiKfnvQiCLf+5s4r8JB/Uic/i6/iNjPMILlFeE0N6XZ+2pkgwRkfMOcx6eoewypTPUoPpzuAINJxJRpHym3V6ZJZ1UfYvzRcQBD/lBeAYrvhpCwukQMkGushKsOS6U+d+2C9ZNeP+U+uwuv/xu8YBCBAgGb8YdNojcGzM4SbCtwvJ0fuOfmCWZvUoiumfE4x7rAhp1pa9OEbUe0a5HL+1v7+JLBgkNZ7Z2biiHaM6za7GjHCXU8rojatEQER+MpgDuQV3ZPx8RKRdiJgPnz9ApBHFYDHLDzDw==");
22-
signature_verifier.set_exponent_base64(e, "AQAB");
23+
cryptolens_handle.signature_verifier.set_modulus_base64(e, "khbyu3/vAEBHi339fTuo2nUaQgSTBj0jvpt5xnLTTF35FLkGI+5Z3wiKfnvQiCLf+5s4r8JB/Uic/i6/iNjPMILlFeE0N6XZ+2pkgwRkfMOcx6eoewypTPUoPpzuAINJxJRpHym3V6ZJZ1UfYvzRcQBD/lBeAYrvhpCwukQMkGushKsOS6U+d+2C9ZNeP+U+uwuv/xu8YBCBAgGb8YdNojcGzM4SbCtwvJ0fuOfmCWZvUoiumfE4x7rAhp1pa9OEbUe0a5HL+1v7+JLBgkNZ7Z2biiHaM6za7GjHCXU8rojatEQER+MpgDuQV3ZPx8RKRdiJgPnz9ApBHFYDHLDzDw==");
24+
cryptolens_handle.signature_verifier.set_exponent_base64(e, "AQAB");
2325

2426
// Reply from Cryptolens Web API
2527
std::string cryptolens_reply("{\"licenseKey\":\"eyJQcm9kdWN0SWQiOjM2NDYsIklEIjo0LCJLZXkiOiJNUERXWS1QUUFPVy1GS1NDSC1TR0FBVSIsIkNyZWF0ZWQiOjE0OTAzMTM2MDAsIkV4cGlyZXMiOjE0OTI5MDU2MDAsIlBlcmlvZCI6MzAsIkYxIjpmYWxzZSwiRjIiOmZhbHNlLCJGMyI6ZmFsc2UsIkY0IjpmYWxzZSwiRjUiOmZhbHNlLCJGNiI6ZmFsc2UsIkY3IjpmYWxzZSwiRjgiOmZhbHNlLCJOb3RlcyI6bnVsbCwiQmxvY2siOmZhbHNlLCJHbG9iYWxJZCI6MzE4NzYsIkN1c3RvbWVyIjpudWxsLCJBY3RpdmF0ZWRNYWNoaW5lcyI6W3siTWlkIjoiIiwiSVAiOiIxNTUuNC4xMzQuMjciLCJUaW1lIjoxNDkxODk4OTE4fSx7Ik1pZCI6ImxvbCIsIklQIjoiMTU1LjQuMTM0LjI3IiwiVGltZSI6MTQ5MTg5ODk5NX0seyJNaWQiOiIyODlqZjJhZnNmIiwiSVAiOiIxNTUuNC4xMzQuMjciLCJUaW1lIjoxNDkxOTAwNTQ2fSx7Ik1pZCI6IjI4OWpmMmFmczMiLCJJUCI6IjE1NS40LjEzNC4yNyIsIlRpbWUiOjE0OTE5MDA2MzZ9XSwiVHJpYWxBY3RpdmF0aW9uIjpmYWxzZSwiTWF4Tm9PZk1hY2hpbmVzIjoxMCwiQWxsb3dlZE1hY2hpbmVzIjoiIiwiRGF0YU9iamVjdHMiOltdLCJTaWduRGF0ZSI6MTQ5NTAxOTc2Nn0=\",\"signature\":\"SqPm8dtTdVBrXrmJzXer7qq6dvdQfctJxP8mar+RO9p8QABsgWWaX+uH7aOGMBd42eg+2Omorv7Ks6V7itRhXPeeq5qWoKuefd+pTsFagvqiu2N/E2Np8fpt51aqmiygdHLECo42nJwVD8JzlN67hnvJTgY7iyDWhG7qFK9Slk+kEJjjK/0J1pJYI6nOi+7sgBV7ZRca+7DmiP6OmOjNfySps6PdiB7QbiSis5f24Xmc5OYyRe3fzZmAueqF3eymBK19XhYFroWXeT4tcNsBNJsv+YfItovGbJysLx+K4ppltd2GNwEFQgtE3ILGOUj7EVbeQmQXg9m2c5MTPyk8iA==\",\"result\":0,\"message\":\"\"}");
2628

27-
cryptolens::optional<cryptolens::LicenseKey> license_key = cryptolens::handle_activate(e, signature_verifier, cryptolens_reply);
29+
cryptolens::optional<cryptolens::LicenseKey> license_key = cryptolens_handle.make_license_key(e, cryptolens_reply);
2830

2931
// Check if request was successful and signature is valid
3032
if (!license_key) {

include/cryptolens/basic_SKM.hpp

Lines changed: 27 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -403,30 +403,39 @@ basic_SKM<RequestHandler, SignatureVerifier>::make_license_key(basic_Error & e,
403403
{
404404
if (e) { return nullopt; }
405405

406-
size_t k = s.find('-');
407-
if (k == std::string::npos) { e.set(api::main(), errors::Subsystem::Main, errors::Main::UNKNOWN_SERVER_REPLY); return nullopt; }
406+
optional<RawLicenseKey> raw_license_key;
408407

409-
std::string version = s.substr(0, k);
410-
std::string rem = s.substr(k+1, std::string::npos);
411-
// NOTE: s.substr(s.size(), _) returns empty string, thus the previous line does never throw
408+
raw_license_key =
409+
::cryptolens_io::v20180502::internal::handle_activate(e, this->signature_verifier, s);
412410

413-
k = rem.find('-');
414-
if (k == std::string::npos) { e.set(api::main(), errors::Subsystem::Main, errors::Main::UNKNOWN_SERVER_REPLY); return nullopt; }
411+
if (e) {
412+
e.reset(api::main());
415413

416-
std::string license = rem.substr(0, k);
417-
std::string signature = rem.substr(k+1, std::string::npos); // k+1 is fine, see comment above
414+
size_t k = s.find('-');
415+
if (k == std::string::npos) { e.set(api::main(), errors::Subsystem::Main, errors::Main::UNKNOWN_SERVER_REPLY); return nullopt; }
418416

419-
optional<RawLicenseKey> x =
420-
RawLicenseKey::make
421-
( e
422-
, signature_verifier
423-
, license
424-
, signature
425-
);
417+
std::string version = s.substr(0, k);
418+
std::string rem = s.substr(k+1, std::string::npos);
419+
// NOTE: s.substr(s.size(), _) returns empty string, thus the previous line does never throw
426420

427-
optional<LicenseKeyInformation> y = LicenseKeyInformation::make(e, x);
421+
k = rem.find('-');
422+
if (k == std::string::npos) { e.set(api::main(), errors::Subsystem::Main, errors::Main::UNKNOWN_SERVER_REPLY); return nullopt; }
423+
424+
std::string license = rem.substr(0, k);
425+
std::string signature = rem.substr(k+1, std::string::npos); // k+1 is fine, see comment above
426+
427+
raw_license_key =
428+
RawLicenseKey::make
429+
( e
430+
, signature_verifier
431+
, license
432+
, signature
433+
);
434+
}
435+
436+
optional<LicenseKeyInformation> license_key_information = LicenseKeyInformation::make(e, raw_license_key);
428437
if (e) { e.set_call(api::main(), errors::Call::BASIC_SKM_MAKE_LICENSE_KEY); return nullopt; }
429-
return LicenseKey(std::move(*y), std::move(*x));
438+
return LicenseKey(std::move(*license_key_information), std::move(*raw_license_key));
430439
}
431440

432441

0 commit comments

Comments
 (0)