26 virtual bool do_match(
27 _In_reads_or_z_opt_(end)
const char* text,
28 _In_
size_t start = 0,
29 _In_
size_t end = SIZE_MAX,
30 _In_
int flags = stdex::parser::match_default)
32 _Unreferenced_(flags);
33 _Assume_(text || start + 17 >= end);
34 if (start + 17 < end &&
35 text[start + 0] ==
'u' &&
36 text[start + 1] ==
'n' &&
37 text[start + 2] ==
't' &&
38 text[start + 3] ==
'r' &&
39 text[start + 4] ==
'u' &&
40 text[start + 5] ==
's' &&
41 text[start + 6] ==
't' &&
42 text[start + 7] ==
'e' &&
43 text[start + 8] ==
'd' &&
44 text[start + 9] ==
' ' &&
45 text[start + 10] ==
'c' &&
46 text[start + 11] ==
'o' &&
47 text[start + 12] ==
'm' &&
48 text[start + 13] ==
'm' &&
49 text[start + 14] ==
'e' &&
50 text[start + 15] ==
'n' &&
51 text[start + 16] ==
't' &&
52 text[start + 17] ==
':')
68 virtual bool do_match(
69 _In_reads_or_z_opt_(end)
const char* text,
70 _In_
size_t start = 0,
71 _In_
size_t end = SIZE_MAX,
72 _In_
int flags = stdex::parser::match_default)
74 _Unreferenced_(flags);
75 _Assume_(text || start + 1 >= end);
76 if (start + 1 < end &&
77 text[start + 0] ==
'\r' &&
78 text[start + 1] ==
'\n')
83 _Assume_(text || start >= end);
84 if (start < end && text[start] ==
'\n') {
101 inline void parse_minisig(_Inout_
stdex::stream::basic& minisig, _Out_ uint8_t& algorithm, _Out_writes_all_(8) uint8_t key_id[8], _Out_writes_all_(32) uint8_t signature[64])
103 std::vector<uint8_t> data;
107 minisig.readln(line);
114 decoder.
decode(data, is_last, line.data(), line.size());
117 if (data.size() < 74)
118 throw std::runtime_error(
"Minisign signature is too short");
120 throw std::runtime_error(
"not a Minisign signature");
122 memcpy(&key_id[0], &data[2], 8);
123 memcpy(&signature[0], &data[10], 64);
Base64 decoding session.
Definition base64.hpp:274
void decode(std::vector< T_to, AX > &out, bool &is_last, const T_from *data, size_t size)
Decodes one block of information, and appends it to the output.
Definition base64.hpp:296
Test for CRLF or LF.
Definition minisign.hpp:66
UTF-8 byte-order-mark
Definition stream.hpp:84
Numerical interval.
Definition interval.hpp:18
T end
interval end
Definition interval.hpp:20
void invalidate()
Invalidates interval.
Definition interval.hpp:59
T start
interval start
Definition interval.hpp:19