Sha256: 9cec7632e0f7e505ec21f1f5562ca72384e6a25903a7988b4c1633372f634e44

Contents?: true

Size: 1.81 KB

Versions: 26

Compression:

Stored size: 1.81 KB

Contents

require 'pkcs11/library'
require 'pkcs11/slot'
require 'pkcs11/session'
require 'pkcs11/object'

# Ruby connector to PKCS#11 libraries.
#
# This library allowes to use PKCS#11 librarys in Ruby MRI.
#
# @example
#   pkcs11 = PKCS11.open("/path/to/pkcs11.so")
#   slot = pkcs11.active_slots.first
#   p slot.info
#   session = slot.open(PKCS11::CKF_SERIAL_SESSION|PKCS11::CKF_RW_SESSION)
#   session.login(:USER, "1234")
#   # ... crypto operations
#   session.logout
#   session.close
#
# See unit tests in the <tt>test</tt> directory for further examples of the usage.
module PKCS11

  class << self
    # Open a PKCS#11 library file.
    alias new open
  end

  # Base class of all PKCS#11 structs.
  class CStruct
    # @return [Array<String>] attribute names
    def values
      members.inject([]){|a,v| a << send(v) }
    end
    # @return [Hash] with attribute names and current values
    def to_hash
      members.inject({}){|h,v| h[v.intern] = send(v); h }
    end
    def inspect
      "#<#{self.class} #{to_hash.map{|k,v| "#{k}=#{v.inspect}"}.join(", ") }>"
    end
  end

  # Struct to hold an attribute type and it's value.
  #
  # @see PKCS11::Object
  class CK_ATTRIBUTE
    # @return [Array<String>] attribute names
    def members
      ['type', 'value']
    end
    # @return [Array<String, Boolean, Integer>] attribute values
    def values
      members.inject([]){|a,v| a << send(v) }
    end
    # @return [Hash] with attribute names and current values
    def to_hash
      members.inject({}){|h,v| h[v.intern] = send(v); h }
    end
    # Get the constant name as String of the given value.
    # @return [String, nil]  Returns <tt>nil</tt> if value is unknown
    def to_s
      ATTRIBUTES[type]
    end
    def inspect
      "#<#{self.class} #{ to_s ? "#{to_s} (#{type})" : type} value=#{value.inspect}>"
    end
  end
end

Version data entries

26 entries across 26 versions & 2 rubygems

Version Path
pkcs11-0.3.4 lib/pkcs11/extensions.rb
pkcs11-0.3.3 lib/pkcs11/extensions.rb
pkcs11-0.3.2 lib/pkcs11/extensions.rb
pkcs11-0.3.1 lib/pkcs11/extensions.rb
pkcs11-0.3.0 lib/pkcs11/extensions.rb
pkcs11-0.2.7 lib/pkcs11/extensions.rb
pkcs11-0.2.6-x86-mingw32 lib/pkcs11/extensions.rb
pkcs11-0.2.6-x64-mingw32 lib/pkcs11/extensions.rb
pkcs11-0.2.6 lib/pkcs11/extensions.rb
roostify-pkcs11-0.2.5 lib/pkcs11/extensions.rb
pkcs11-0.2.5-x86-mingw32 lib/pkcs11/extensions.rb
pkcs11-0.2.5-x64-mingw32 lib/pkcs11/extensions.rb
pkcs11-0.2.5 lib/pkcs11/extensions.rb
pkcs11-0.2.4-x86-mingw32 lib/pkcs11/extensions.rb
pkcs11-0.2.4-x64-mingw32 lib/pkcs11/extensions.rb
pkcs11-0.2.4 lib/pkcs11/extensions.rb
pkcs11-0.2.3-x86-mingw32 lib/pkcs11/extensions.rb
pkcs11-0.2.3 lib/pkcs11/extensions.rb
pkcs11-0.2.2-x86-mingw32 lib/pkcs11/extensions.rb
pkcs11-0.2.2 lib/pkcs11/extensions.rb