Class: Pkernel::Identity

Inherits:
Object
  • Object
show all
Defined in:
lib/pkernel_jce/identity.rb

Overview

Identity Identity is abstraction consist of keypair + certificate, stored separately

class Identity

attr_reader :priv_key, :cert, :keystore, :chain
def initialize(opts = {})
  @priv_key = opts[:priv_key]
  @cert = opts[:cert]
  @keystore = opts[:keystore]
  @chain = opts[:chain]
end

end end Identity

Instance Method Summary collapse

Instance Method Details

#certificateObject



72
73
74
75
76
77
# File 'lib/pkernel_jce/identity.rb', line 72

def certificate
  if not @certificate.nil? and @certificate.java_kind_of?(Java::OrgBouncycastleCert::X509CertificateHolder)
    @certificate = @certificate.to_java_cert
  end
  @certificate
end

#keyObject



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/pkernel_jce/identity.rb', line 33

def key
  if @key.nil?
    if not @privKey.nil? 
      if not @pubKey.nil?
        @key = java.security.KeyPair.new(@pubKey,@privKey)
      elsif not @certificate.nil?
        @key = java.security.KeyPair.new(@certificate.public_key,@privKey)
      else
        # no possible to generate without public key
      end
    else
      # not possible to generate without private key
    end
  else
    # key is not nil...
  end

  @key
end

#key=(val) ⇒ Object



25
26
27
28
29
30
31
# File 'lib/pkernel_jce/identity.rb', line 25

def key=(val)
  @key = val
  if not @key.nil?
    @privKey = PkernelJce::KeyPair.private_key(@key)
    @pubKey = PkernelJce::KeyPair.public_key(@key)
  end
end

#privKeyObject



53
54
55
56
57
58
# File 'lib/pkernel_jce/identity.rb', line 53

def privKey
  if @privKey.nil? and not @key.nil?
    @privKey = PkernelJce::KeyPair.private_key(@key)
  end
  @privKey
end

#providerObject



94
95
96
97
98
99
100
101
# File 'lib/pkernel_jce/identity.rb', line 94

def provider
  if @provider.nil?
    PkernelJce::GConf.instance.glog.debug "Provider is nil in Identity object. Setting it to default provider '#{PkernelJce::Provider::DefProvider.name}'"
    @provider = PkernelJce::Provider.add_default
  end
  
  @provider
end

#provider=(val) ⇒ Object

In java world, JCE/JCA provides switchable engine to call if it is software/hardware This provider is tightly related to private key. Since private key is encapsulated in this object, might as well keep the pointer here. Whoever want to use the private key, also should check the provider to load correct signing engine



84
85
86
87
88
89
90
91
92
# File 'lib/pkernel_jce/identity.rb', line 84

def provider=(val)
  if not val.nil? 
    if val.is_a?(String) and not val.empty?
      @provider = PkernelJce::Provider.add_provider(val)
    else
      @provider = PkernelJce::Provider.add_provider(val)
    end
  end
end

#pubKeyObject



60
61
62
63
64
65
66
67
68
69
70
# File 'lib/pkernel_jce/identity.rb', line 60

def pubKey
  if @pubKey.nil?
    if not @key.nil?
      @pubKey = PkernelJce::KeyPair.public_key(@key)
    elsif not @certificate.nil?
      @pubKey = PkernelJce::KeyPair.public_key(@certificate)
    end
  end
  
  @pubKey
end