MinitScript  0.9.31 PRE-BETA
CryptographyMethods.cpp
Go to the documentation of this file.
1 #include <span>
2 
10 
11 using std::span;
12 
14 
16 
21 
22 void CryptographyMethods::registerConstants(MinitScript* minitScript) {
23 }
24 
25 void CryptographyMethods::registerMethods(MinitScript* minitScript) {
26  // base64
27  {
28  //
29  class MethodCryptographyBase64Encode: public MinitScript::Method {
30  private:
31  MinitScript* minitScript { nullptr };
32  public:
33  MethodCryptographyBase64Encode(MinitScript* minitScript):
35  {
36  { .type = MinitScript::TYPE_STRING, .name = "value", .optional = false, .reference = false, .nullable = false },
37  },
38  MinitScript::TYPE_STRING
39  ),
40  minitScript(minitScript) {}
41  const string getMethodName() override {
42  return "cryptography.base64.encode";
43  }
44  void executeMethod(span<MinitScript::Variable>& arguments, MinitScript::Variable& returnValue, const MinitScript::SubStatement& subStatement) override {
45  string value;
46  if (arguments.size() == 1 &&
47  MinitScript::getStringValue(arguments, 0, value) == true) {
48  returnValue.setValue(_Base64::encode(value));
49  } else {
50  MINITSCRIPT_METHODUSAGE_COMPLAIN(getMethodName());
51  }
52  }
53  };
54  minitScript->registerMethod(new MethodCryptographyBase64Encode(minitScript));
55  }
56  {
57  //
58  class MethodCryptographyBase64Decode: public MinitScript::Method {
59  private:
60  MinitScript* minitScript { nullptr };
61  public:
62  MethodCryptographyBase64Decode(MinitScript* minitScript):
64  {
65  { .type = MinitScript::TYPE_STRING, .name = "value", .optional = false, .reference = false, .nullable = false },
66  },
67  MinitScript::TYPE_STRING
68  ),
69  minitScript(minitScript) {}
70  const string getMethodName() override {
71  return "cryptography.base64.decode";
72  }
73  void executeMethod(span<MinitScript::Variable>& arguments, MinitScript::Variable& returnValue, const MinitScript::SubStatement& subStatement) override {
74  string value;
75  if (arguments.size() == 1 &&
76  MinitScript::getStringValue(arguments, 0, value) == true) {
77  returnValue.setValue(_Base64::decode(value));
78  } else {
79  MINITSCRIPT_METHODUSAGE_COMPLAIN(getMethodName());
80  }
81  }
82  };
83  minitScript->registerMethod(new MethodCryptographyBase64Decode(minitScript));
84  }
85  // sha256
86  {
87  //
88  class MethodCryptographySHA256Encode: public MinitScript::Method {
89  private:
90  MinitScript* minitScript { nullptr };
91  public:
92  MethodCryptographySHA256Encode(MinitScript* minitScript):
94  {
95  { .type = MinitScript::TYPE_STRING, .name = "value", .optional = false, .reference = false, .nullable = false },
96  },
97  MinitScript::TYPE_STRING
98  ),
99  minitScript(minitScript) {}
100  const string getMethodName() override {
101  return "cryptography.sha256.encode";
102  }
103  void executeMethod(span<MinitScript::Variable>& arguments, MinitScript::Variable& returnValue, const MinitScript::SubStatement& subStatement) override {
104  string value;
105  if (arguments.size() == 1 &&
106  MinitScript::getStringValue(arguments, 0, value) == true) {
107  returnValue.setValue(_SHA256::encode(value));
108  } else {
109  MINITSCRIPT_METHODUSAGE_COMPLAIN(getMethodName());
110  }
111  }
112  };
113  minitScript->registerMethod(new MethodCryptographySHA256Encode(minitScript));
114  }
115 }
#define MINITSCRIPT_METHODUSAGE_COMPLAIN(methodName)
Definition: MinitScript.h:59
MinitScript script cryptography methods.
void setValue(const Variable &variable)
Set value from given variable into variable.
Definition: MinitScript.h:1618
void registerMethod(Method *method)
Register method.
Base64 encoding/decoding class.
Definition: Base64.h:16
static const string decode(const string &encodedString)
Decodes an base64 encoded string.
Definition: Base64.h:34
static const string encode(const string &decodedString)
Encodes an string to base 64 string.
Definition: Base64.h:23
SHA256 hash class.
Definition: SHA256.h:16
static const string encode(const string &decodedString)
Encodes an string to SHA256 string.
Definition: SHA256.h:23