From fa00e853d17b40d9112cb856ca1f08dfe8500f20 Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Fri, 26 May 2017 18:01:41 +0300 Subject: Store result request challenge as binary value --- libbbot/manifest.cxx | 12 ++++++++++-- libbbot/manifest.hxx | 4 ++-- tests/manifest/result-request.test | 21 ++++++++++++++------- 3 files changed, 26 insertions(+), 11 deletions(-) diff --git a/libbbot/manifest.cxx b/libbbot/manifest.cxx index 06399f2..02a5b05 100644 --- a/libbbot/manifest.cxx +++ b/libbbot/manifest.cxx @@ -14,6 +14,7 @@ #include // uint64_t #include // invalid_argument +#include #include // digit() #include #include @@ -999,7 +1000,14 @@ namespace bbot if (v.empty ()) bad_value ("empty result request challenge"); - challenge = move (v); + try + { + challenge = base64_decode (v); + } + catch (const invalid_argument&) + { + bad_value ("invalid result request challenge"); + } } else if (!iu) bad_name ("unknown name '" + n + "' in result request manifest"); @@ -1034,7 +1042,7 @@ namespace bbot s.next ("session", session); if (challenge) - s.next ("challenge", *challenge); + s.next ("challenge", base64_encode (*challenge)); s.next ("", ""); // End of manifest. diff --git a/libbbot/manifest.hxx b/libbbot/manifest.hxx index 4ae8b26..b981ab4 100644 --- a/libbbot/manifest.hxx +++ b/libbbot/manifest.hxx @@ -296,12 +296,12 @@ namespace bbot // The answer to challenge in the task response. // - butl::optional challenge; + butl::optional> challenge; result_manifest result; result_request_manifest (std::string s, - butl::optional c, + butl::optional> c, result_manifest r) : session (std::move (s)), challenge (std::move (c)), diff --git a/tests/manifest/result-request.test b/tests/manifest/result-request.test index 3e1e08c..f4845e6 100644 --- a/tests/manifest/result-request.test +++ b/tests/manifest/result-request.test @@ -14,7 +14,7 @@ test.options += -rq $* <>EOF : 1 session: abcd - challenge: xyz + challenge: YQo= : name: libfoo version: 1.0 @@ -49,15 +49,15 @@ test.options += -rq : $* <'stdin:3:1: error: result request challenge redefinition' == 1 : 1 - challenge: xyz - challenge: xyz + challenge: YQo= + challenge: YQo= EOI } -: empty +: invalid : { - : session + : empty-session : $* <'stdin:2:9: error: empty result request session' == 1 : 1 @@ -66,6 +66,13 @@ test.options += -rq : challenge : + $* <'stdin:2:12: error: invalid result request challenge' == 1 + : 1 + challenge: abc + EOI + + : empty-challenge + : $* <'stdin:2:11: error: empty result request challenge' == 1 : 1 challenge: @@ -86,7 +93,7 @@ EOI : $* <'stdin:3:1: error: no result request session specified' == 1 : 1 - challenge: xyz + challenge: YQo= EOI : result @@ -94,6 +101,6 @@ EOI $* <'stdin:4:1: error: result manifest expected' == 1 : 1 session: abc - challenge: xyz + challenge: YQo= EOI } -- cgit v1.1