Base64¶
This library implements the Base64 encoding algorithm as defined in RFC 4648.
Usage¶
Add "base64"
to the dependencies listed in your project’s “dylan-package.json” file
and run deft update
to install the base64 package and update your workspace
registry. Add use base64;
to your library and module definitions.
The base64
library exports two functions:
Both of these function accept a scheme:
keyword argument of type <scheme>
which may be one of the following constants:
$standard-scheme
- the standard base64 character set including+
and/
.
$url-scheme
- a character set safe for use in URLs and filenames, in which+
is replaced by-
and/
is replaced by_
.
Note
There is currently no support for line breaks or whitespace in the input/output, nor for base64 streams. Pull requests welcome.
The base64 Module¶
- <scheme> Type¶
Equivalent to
one-of($standard-scheme, $url-scheme)
.
- $standard-scheme Constant¶
An instance of
<scheme>
indicating to use the standard base64 encoding character set.
- $url-scheme Constant¶
An instance of
<scheme>
indicating to use the URL and filename safe base64 character set.
- base64-encode Function¶
Encode a byte sequence as a base 64 byte string as defined by RFC 4648.
- Signature:
base64-encode (bytes, #key scheme, pad?) => (byte-string)
- Parameters:
bytes – An instance of
<sequence>
. An error is signaled if the elements of this sequence are not either integers in the range 0 - 255 or byte characters.scheme (#key) – An instance of
<scheme>
. May be either$standard-scheme
(the default) or$url-scheme
.pad? (#key) – An instance of
<boolean>
. If true (the default) the returned byte string is padded with “=” to a multiple of 4 characters in length. This results in 0, 1, or 2 “=” characters at the end of the string.
- Values:
string – An instance of
<byte-string>
.
- Example:
base64-encode("foo") => "Zm9v" base64-encode(#(251, 252, 253, 254, 255)) => "+/z9/v8=" base64-encode(#(251, 252, 253, 254, 255), scheme: $url-scheme) => "-_z9_v8="
- base64-decode Function¶
Decode a base 64 encoded string into a byte sequence as defined by RFC 4648.
- Signature:
base64-decode (string, #key scheme) => (bytes)
- Parameters:
string – An instance of
<byte-string>
.scheme (#key) – An instance of
<scheme>
. May be either$standard-scheme
(the default) or$url-scheme
.
- Values:
bytes – An instance of
<byte-vector>
.
- Example:
- Discussion:
Padding characters (“=”) at the end of the input string are automatically detected and ignored.
- Example:
base64-decode("Zm8=") => {<simple-byte-vector>: 102, 111} base64-decode("Zm8") => {<simple-byte-vector>: 102, 111}