Sha256: 6a5b54b21a766d00ea6176467534c49bcca3d26c73beff64efd1fbfed997e03e
Contents?: true
Size: 1.08 KB
Versions: 1
Compression:
Stored size: 1.08 KB
Contents
# frozen_string_literal: true require 'base64' module JWT # Base64 encoding and decoding class Base64 class << self # Encode a string with URL-safe Base64 complying with RFC 4648 (not padded). def url_encode(str) ::Base64.urlsafe_encode64(str, padding: false) end # Decode a string with URL-safe Base64 complying with RFC 4648. # Deprecated support for RFC 2045 remains for now. ("All line breaks or other characters not found in Table 1 must be ignored by decoding software") def url_decode(str) ::Base64.urlsafe_decode64(str) rescue ArgumentError => e raise unless e.message == 'invalid base64' warn('[DEPRECATION] Invalid base64 input detected, could be because of invalid padding, trailing whitespaces or newline chars. Graceful handling of invalid input will be dropped in the next major version of ruby-jwt') loose_urlsafe_decode64(str) end def loose_urlsafe_decode64(str) str += '=' * (4 - str.length.modulo(4)) ::Base64.decode64(str.tr('-_', '+/')) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
jwt-2.8.0 | lib/jwt/base64.rb |