diff --git a/lib/modules/MIME.pmod/module.pmod b/lib/modules/MIME.pmod/module.pmod index 8207de4699572c7c841703954ccf501acd607a2e..aaf796a7b9d3a3f5bb2d32ca5c60089809e4b8d7 100644 --- a/lib/modules/MIME.pmod/module.pmod +++ b/lib/modules/MIME.pmod/module.pmod @@ -1615,3 +1615,17 @@ int|object reconstruct_partial(array(object) collection) return reconstructed; } else return (maxgot>total? -1 : total-got); } + +//! Encode strings according to @rfc{4648@} base64url encoding. +string encode_base64url(string x) +{ + x = replace(encode_base64(x,1),({ "+", "/" }),({ "-", "_" })); + while( sizeof(x) && x[-1]=='=' ) x=x[..<1]; + return x; +} + +//! Decode strings according to @rfc{4648@} base64url encoding. +string decode_base64url(string x) +{ + return decode_base64(replace(x,({ "-", "_" }),({ "+", "/" }))); +}