Sha256: 7589cdcd38364528fec5665a658ef09dff8b8a760c03d36ef84848ee1bb4a3c4

Contents?: true

Size: 1 KB

Versions: 2

Compression:

Stored size: 1 KB

Contents

class KRB5
  module Mixin
    module Unpacker
      #
      # Generic method to unpack Kerberos data
      #
      # data ::=
      #     length (16 bits)
      #     value (length bytes)
      #
      # See: https://web.mit.edu/kerberos/krb5-1.16/doc/formats/keytab_file_format.html
      #
      # @return [String]
      def unpack_data
        length = unpack_int16
        data = unpack_bytes(length)
      end

      #
      # Unpack raw bytes
      #
      # @param length [Integer] number of bytes to unpack
      # @return [Array] raw bytes
      #
      def unpack_bytes(length)
        data = bytes[@index, length]
        @index += length

        data
      end

      def unpack_int8
        data = bytes[@index].unpack1('c')
        @index += 1

        data
      end

      def unpack_int16
        data = bytes[@index, 2].unpack1('s>')
        @index += 2

        data
      end

      def unpack_int32
        data = bytes[@index, 4].unpack1('l>')
        @index += 4

        data
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
krb5-ruby-0.2.4 lib/krb5/mixin/unpacker.rb
krb5-ruby-0.2.3 lib/krb5/mixin/unpacker.rb