Sha256: 41f3004b6a38faa66970ffa8d6514b77c410c92222209724257218c976df931d

Contents?: true

Size: 1.17 KB

Versions: 3

Compression:

Stored size: 1.17 KB

Contents

# encoding: binary
# typed: strict
# frozen_string_literal: true

module Paseto
  module Operations
    class ID
      extend T::Sig

      sig(:final) { params(key: SymmetricKey).returns(String) }
      def self.lid(key)
        new(key.protocol).lid(key)
      end

      sig(:final) { params(key: AsymmetricKey).returns(String) }
      def self.sid(key)
        new(key.protocol).sid(key)
      end

      sig(:final) { params(key: AsymmetricKey).returns(String) }
      def self.pid(key)
        new(key.protocol).pid(key)
      end

      sig { params(protocol: Interface::Version).void }
      def initialize(protocol)
        @coder = T.let(protocol.id, Interface::ID)
      end

      sig(:final) { params(key: SymmetricKey).returns(String) }
      def lid(key)
        @coder.encode('lid', key.paserk)
      end

      sig(:final) { params(key: AsymmetricKey).returns(String) }
      def sid(key)
        raise ArgumentError, 'no private key available' unless key.private?

        @coder.encode('sid', key.paserk)
      end

      sig(:final) { params(key: AsymmetricKey).returns(String) }
      def pid(key)
        @coder.encode('pid', key.public_paserk)
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
ruby-paseto-0.1.2 lib/paseto/operations/i_d.rb
ruby-paseto-0.1.1 lib/paseto/operations/i_d.rb
ruby-paseto-0.1.0 lib/paseto/operations/i_d.rb