Class: Tem::Key

Inherits:
Object
  • Object
show all
Defined in:
lib/tem/keys/key.rb

Overview

Base class for the TEM keys.

This class consists of stubs describing the interface implemented by subclasses.

Direct Known Subclasses

Tem::Keys::Asymmetric, Tem::Keys::Symmetric

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(ssl_key) ⇒ Key

Creates a new key based on an OpenSSL key.



10
11
12
# File 'lib/tem/keys/key.rb', line 10

def initialize(ssl_key)
  @ssl_key = ssl_key
end

Instance Attribute Details

#ssl_keyObject (readonly)

The OpenSSL key wrapped by this TEM key.



7
8
9
# File 'lib/tem/keys/key.rb', line 7

def ssl_key
  @ssl_key
end

Class Method Details

.new_from_ssl_key(ssl_key) ⇒ Object

Creates a new TEM key wrapper from a SSL key



39
40
41
42
43
44
45
46
47
# File 'lib/tem/keys/key.rb', line 39

def self.new_from_ssl_key(ssl_key)
  if ssl_key.kind_of? OpenSSL::PKey::PKey
    Tem::Keys::Asymmetric.new ssl_key
  elsif ssl_key.kind_of? OpenSSL::Cipher::Cipher
    Tem::Keys::Symmetric.new ssl_key
  else
    raise "Can't handle keys of class #{ssl_key.class}"
  end
end

Instance Method Details

#decrypt(data) ⇒ Object



26
27
28
# File 'lib/tem/keys/key.rb', line 26

def decrypt(data)
  raise "TEM Key class #{self.class.name} didn't implement decrypt"
end

#encrypt(data) ⇒ Object

Encrypts a block of data into a TEM-friendly format.



22
23
24
# File 'lib/tem/keys/key.rb', line 22

def encrypt(data)
  raise "TEM Key class #{self.class.name} didn't implement encrypt"
end

#sign(data) ⇒ Object



30
31
32
# File 'lib/tem/keys/key.rb', line 30

def sign(data)
  raise "TEM Key class #{self.class.name} didn't implement sign"
end

#to_tem_keyObject

Serializes this key to the TEM ABI format.



17
18
19
# File 'lib/tem/keys/key.rb', line 17

def to_tem_key
  Tem::Abi.to_tem_key self
end

#verify(data) ⇒ Object



34
35
36
# File 'lib/tem/keys/key.rb', line 34

def verify(data)
  raise "TEM Key class #{self.class.name} didn't implement verify"
end