Sha256: da785374f17829336849a4a544d71a41d61ba48ba4a8e43fdfce0051c22f8832
Contents?: true
Size: 1.3 KB
Versions: 18
Compression:
Stored size: 1.3 KB
Contents
require 'base64' module AttrVault # borrowed wholesale from Fernet # Internal: Encapsulates a secret key, a 32-byte sequence consisting # of an encryption and a signing key. class Secret # Internal - Initialize a Secret # # secret - the secret, optionally encoded with either standard or # URL safe variants of Base64 encoding # # Raises AttrVault::Secret::InvalidSecret if it cannot be decoded or is # not of the expected length def initialize(secret) if secret.bytesize == 32 @secret = secret else begin @secret = Base64.urlsafe_decode64(secret) rescue ArgumentError @secret = Base64.decode64(secret) end unless @secret.bytesize == 32 raise InvalidSecret, "Secret must be 32 bytes, instead got #{@secret.bytesize}" end end end # Internal: Returns the portion of the secret token used for encryption def encryption_key @secret.slice(16, 16) end # Internal: Returns the portion of the secret token used for signing def signing_key @secret.slice(0, 16) end # Public: String representation of this secret, masks to avoid leaks. def to_s "<AttrVault::Secret [masked]>" end alias to_s inspect end end
Version data entries
18 entries across 18 versions & 1 rubygems