Class: Tem::OpenSSL::Key

Inherits:
Object
  • Object
show all
Includes:
TemTools
Defined in:
lib/ossl/key.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(pub_key, priv_decrypt_sec, priv_encrypt_sec, priv_sign_sec) ⇒ Key

Returns a new instance of Key.



8
9
10
11
12
13
# File 'lib/ossl/key.rb', line 8

def initialize(pub_key, priv_decrypt_sec, priv_encrypt_sec, priv_sign_sec)
  @pub_key = pub_key
  @priv_decrypt_sec = priv_decrypt_sec
  @priv_encrypt_sec = priv_encrypt_sec
  @priv_sign_sec = priv_sign_sec
end

Instance Attribute Details

#pub_keyObject (readonly)

Returns the value of attribute pub_key.



6
7
8
# File 'lib/ossl/key.rb', line 6

def pub_key
  @pub_key
end

Class Method Details

.load_from_tkfile(f) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/ossl/key.rb', line 39

def self.load_from_tkfile(f)
  ossl_pub_key = OpenSSL::PKey::RSA.new(f)
  pub_key = Tem::CryptoAbi::new_key_from_ssl(ossl_pub_key, true)
  begin
    ds_ary, es_ary, ss_ary = *YAML.load(f)
    priv_decrypt_sec = Tem::SecPack.new_from_array(ds_ary)
    priv_encrypt_sec = Tem::SecPack.new_from_array(es_ary)      
    priv_sign_sec = Tem::SecPack.new_from_array(ss_ary)
  rescue
    priv_decrypt_sec = nil
    priv_encrypt_sec = nil
    priv_sign_sec = nil
  end
  return self.new(pub_key, priv_decrypt_sec, priv_encrypt_sec, priv_sign_sec)
end

.new_tem_key(tem) ⇒ Object



31
32
33
34
35
36
37
# File 'lib/ossl/key.rb', line 31

def self.new_tem_key(tem)
  keys = Tem::OpenSSL::TemTools.generate_key_on_tem(tem)
  priv_decrypt_sec = Tem::OpenSSL::TemTools.crypting_sec(keys[:privk], tem, :decrypt)
  priv_encrypt_sec = Tem::OpenSSL::TemTools.crypting_sec(keys[:privk], tem, :encrypt)
  priv_sign_sec = Tem::OpenSSL::TemTools.signing_sec(keys[:privk], tem)
  return self.new(keys[:pubk], priv_decrypt_sec, priv_encrypt_sec, priv_sign_sec)
end

Instance Method Details

#privk_decrypt(data, tem) ⇒ Object



19
20
21
# File 'lib/ossl/key.rb', line 19

def privk_decrypt(data, tem)
  Tem::OpenSSL::TemTools.crypt_with_sec(data, @priv_decrypt_sec, tem)
end

#privk_encrypt(data, tem) ⇒ Object



23
24
25
# File 'lib/ossl/key.rb', line 23

def privk_encrypt(data, tem)
  Tem::OpenSSL::TemTools.crypt_with_sec(data, @priv_encrypt_sec, tem)
end

#privk_sign(data, tem) ⇒ Object



27
28
29
# File 'lib/ossl/key.rb', line 27

def privk_sign(data, tem)
  Tem::OpenSSL::TemTools.sign_with_sec(data, @priv_sign_sec, tem)    
end

#to_tkfileObject



15
16
17
# File 'lib/ossl/key.rb', line 15

def to_tkfile
  @pub_key.ssl_key.to_s + [@priv_decrypt_sec.to_array, @priv_encrypt_sec.to_array, @priv_sign_sec.to_array].to_yaml
end