Skip to content

lib/encoding

import "github.com/eugenioenko/goalchemy/lib/encoding"

Package encoding provides canonical RFC 4648 base64 encodings.

Function c csharp go java python rust swift typescript
Base64Decode yes yes yes yes yes yes yes yes
Base64Encode yes yes yes yes yes yes yes yes
Base64URLDecode yes yes yes yes yes yes yes yes
Base64URLEncode yes yes yes yes yes yes yes yes
func Base64Decode(s string) ([]byte, error)

Strict decoding of canonical padded standard base64.

  • Gate: sequential (never suspends)
  • Determinism: deterministic
  • Bounds: Input is at most 4*ceil(64MiB/3) characters and decodes to at most 64MiB. Padding is required; whitespace, non-alphabet characters and nonzero trailing bits are rejected.
  • Errors: Non-canonical, malformed or oversized input returns nil and an error.
  • Contract: lib.encoding.base64_decode 1.0.0
func Base64Encode(data []byte) (string, error)

Standard RFC 4648 base64 with padding.

  • Gate: sequential (never suspends)
  • Determinism: deterministic
  • Bounds: The data is at most 64MiB.
  • Errors: Data over 64MiB returns an empty string and an error.
  • Contract: lib.encoding.base64_encode 1.0.0
func Base64URLDecode(s string) ([]byte, error)

Strict decoding of canonical unpadded base64url.

  • Gate: sequential (never suspends)
  • Determinism: deterministic
  • Bounds: Input is at most 4*ceil(64MiB/3) characters and decodes to at most 64MiB. Padding, whitespace, non-alphabet characters and nonzero trailing bits are rejected.
  • Errors: Non-canonical, malformed or oversized input returns nil and an error.
  • Contract: lib.encoding.base64_url_decode 1.0.0
func Base64URLEncode(data []byte) (string, error)

RFC 4648 base64url without padding.

  • Gate: sequential (never suspends)
  • Determinism: deterministic
  • Bounds: The data is at most 64MiB.
  • Errors: Data over 64MiB returns an empty string and an error.
  • Contract: lib.encoding.base64_url_encode 1.0.0