miniroon

Simplistic macaroon-based authorization for Unix systems
git clone https://ccx.te2000.cz/git/miniroon
Log | Files | Refs | README

commit 128f0d6029063d09dc9ad252daaf4378b3914177
parent 6644dba0e1cd89b1471c06a716830f8a6d78274d
Author: Jan Pobrislo <ccx@te2000.cz>
Date:   Tue, 29 Apr 2025 14:55:29 +0000

simplify header definition

Diffstat:
Mdoc/miniroon_spec.html | 55++++++++++++++++++++++++++++---------------------------
Mdoc/miniroon_spec.pl | 16++++++++--------
2 files changed, 36 insertions(+), 35 deletions(-)

diff --git a/doc/miniroon_spec.html b/doc/miniroon_spec.html @@ -151,34 +151,35 @@ in which case it's `0`.</td></tr> <tr><td>141</td><td><code>miniroon_encoding(Miniroon, Bytes) :-</code></td></tr> <tr><td>142</td><td><code> phrase(netstring_call_dcg(miniroon_content(Miniroon)), Bytes).</code></td></tr> <tr><td>143</td><td><code></code></td><td rowspan="4"></td></tr> -<tr><td>144</td><td><code>miniroon_v0_action(revoke, `revoke`).</code></td></tr> -<tr><td>145</td><td><code>miniroon_v0_action(invoke, `invoke`).</code></td></tr> -<tr><td>146</td><td><code>miniroon_v0_action(invoke_once, `invoke-once`).</code></td></tr> -<tr><td>147</td><td><code></code></td><td rowspan="6"></td></tr> +<tr><td>144</td><td><code>miniroon_v0_action(revoke) --&gt; `revoke`.</code></td></tr> +<tr><td>145</td><td><code>miniroon_v0_action(invoke) --&gt; `invoke`.</code></td></tr> +<tr><td>146</td><td><code>miniroon_v0_action(invoke_once) --&gt; `invoke-once`.</code></td></tr> +<tr><td>147</td><td><code></code></td><td rowspan="7"></td></tr> <tr><td>148</td><td><code>miniroon_header(header_v0(Identifier, Action)) --&gt;</code></td></tr> <tr><td>149</td><td><code> netstring_bytes(`capv0`),</code></td></tr> <tr><td>150</td><td><code> netstring_bytes(Identifier),</code></td></tr> -<tr><td>151</td><td><code> { ~ miniroon_v0_action(Action, ActionBytes) },</code></td></tr> -<tr><td>152</td><td><code> netstring_bytes(ActionBytes).</code></td></tr> -<tr><td>153</td><td><code></code></td><td rowspan="16"></td></tr> -<tr><td>154</td><td><code>miniroon_v0_caveat(caveat_v0_env_is(VarName, Value)) --&gt;</code></td></tr> -<tr><td>155</td><td><code> netstring_bytes(`env-is`),</code></td></tr> -<tr><td>156</td><td><code> netstring_string(VarName),</code></td></tr> -<tr><td>157</td><td><code> netstring_string(Value).</code></td></tr> -<tr><td>158</td><td><code>miniroon_v0_caveat(caveat_v0_env_absent(VarName)) --&gt;</code></td></tr> -<tr><td>159</td><td><code> netstring_bytes(`env-absent`),</code></td></tr> -<tr><td>160</td><td><code> netstring_string(VarName).</code></td></tr> -<tr><td>161</td><td><code>miniroon_v0_caveat(caveat_v0_env_regmatch(VarName, Pattern)) --&gt;</code></td></tr> -<tr><td>162</td><td><code> netstring_bytes(`env-re`),</code></td></tr> -<tr><td>163</td><td><code> netstring_string(VarName),</code></td></tr> -<tr><td>164</td><td><code> netstring_string(Pattern).</code></td></tr> -<tr><td>165</td><td><code>miniroon_v0_caveat(caveat_v0_env_glob(VarName, Pattern)) --&gt;</code></td></tr> -<tr><td>166</td><td><code> netstring_bytes(`env-glob`),</code></td></tr> -<tr><td>167</td><td><code> netstring_string(VarName),</code></td></tr> -<tr><td>168</td><td><code> netstring_string(Pattern).</code></td></tr> -<tr><td>169</td><td><code></code></td><td rowspan="5"></td></tr> -<tr><td>170</td><td><code>miniroon_v0_caveat_list([]) --&gt; {true}.</code></td></tr> -<tr><td>171</td><td><code>miniroon_v0_caveat_list([Caveat|Rest]) --&gt;</code></td></tr> -<tr><td>172</td><td><code> netstring_call_dcg(miniroon_v0_caveat(Caveat)),</code></td></tr> -<tr><td>173</td><td><code> miniroon_v0_caveat_list(Rest).</code></td></tr> +<tr><td>151</td><td><code> netstring_call_dcg(miniroon_v0_action(Action)).</code></td></tr> +<tr><td>152</td><td><code>% { ~ miniroon_v0_action(Action, ActionBytes) },</code></td></tr> +<tr><td>153</td><td><code>% netstring_bytes(ActionBytes).</code></td></tr> +<tr><td>154</td><td><code></code></td><td rowspan="16"></td></tr> +<tr><td>155</td><td><code>miniroon_v0_caveat(caveat_v0_env_is(VarName, Value)) --&gt;</code></td></tr> +<tr><td>156</td><td><code> netstring_bytes(`env-is`),</code></td></tr> +<tr><td>157</td><td><code> netstring_string(VarName),</code></td></tr> +<tr><td>158</td><td><code> netstring_string(Value).</code></td></tr> +<tr><td>159</td><td><code>miniroon_v0_caveat(caveat_v0_env_absent(VarName)) --&gt;</code></td></tr> +<tr><td>160</td><td><code> netstring_bytes(`env-absent`),</code></td></tr> +<tr><td>161</td><td><code> netstring_string(VarName).</code></td></tr> +<tr><td>162</td><td><code>miniroon_v0_caveat(caveat_v0_env_regmatch(VarName, Pattern)) --&gt;</code></td></tr> +<tr><td>163</td><td><code> netstring_bytes(`env-re`),</code></td></tr> +<tr><td>164</td><td><code> netstring_string(VarName),</code></td></tr> +<tr><td>165</td><td><code> netstring_string(Pattern).</code></td></tr> +<tr><td>166</td><td><code>miniroon_v0_caveat(caveat_v0_env_glob(VarName, Pattern)) --&gt;</code></td></tr> +<tr><td>167</td><td><code> netstring_bytes(`env-glob`),</code></td></tr> +<tr><td>168</td><td><code> netstring_string(VarName),</code></td></tr> +<tr><td>169</td><td><code> netstring_string(Pattern).</code></td></tr> +<tr><td>170</td><td><code></code></td><td rowspan="5"></td></tr> +<tr><td>171</td><td><code>miniroon_v0_caveat_list([]) --&gt; {true}.</code></td></tr> +<tr><td>172</td><td><code>miniroon_v0_caveat_list([Caveat|Rest]) --&gt;</code></td></tr> +<tr><td>173</td><td><code> netstring_call_dcg(miniroon_v0_caveat(Caveat)),</code></td></tr> +<tr><td>174</td><td><code> miniroon_v0_caveat_list(Rest).</code></td></tr> </table></body></html> diff --git a/doc/miniroon_spec.pl b/doc/miniroon_spec.pl @@ -131,6 +131,10 @@ netstring_maplist_dcg(DCGBody, [Item|Rest]) --> %%% Miniroon definitions: +miniroon_encoding(Miniroon, Bytes) :- + Bytes will_be sequence_of_bytes, + phrase(netstring_call_dcg(miniroon_content(Miniroon)), Bytes). + % Miniroon is a netstring whose payload is concatenation of three parts: header, caveat list and signature. miniroon_content(miniroon_v0(Identifier, Action, Caveats, Signature)) --> netstring_call_dcg(miniroon_header(header_v0(Identifier, Action))), @@ -138,18 +142,14 @@ miniroon_content(miniroon_v0(Identifier, Action, Caveats, Signature)) --> netstring_call_dcg(netstring_maplist_dcg(miniroon_v0_caveat, Caveats)), netstring_bytes(Signature). -miniroon_encoding(Miniroon, Bytes) :- - phrase(netstring_call_dcg(miniroon_content(Miniroon)), Bytes). - -miniroon_v0_action(revoke, `revoke`). -miniroon_v0_action(invoke, `invoke`). -miniroon_v0_action(invoke_once, `invoke-once`). +miniroon_v0_action(revoke) --> `revoke`. +miniroon_v0_action(invoke) --> `invoke`. +miniroon_v0_action(invoke_once) --> `invoke-once`. miniroon_header(header_v0(Identifier, Action)) --> netstring_bytes(`capv0`), netstring_bytes(Identifier), - { ~ miniroon_v0_action(Action, ActionBytes) }, - netstring_bytes(ActionBytes). + netstring_call_dcg(miniroon_v0_action(Action)). miniroon_v0_caveat(caveat_v0_env_is(VarName, Value)) --> netstring_bytes(`env-is`),