Class: Virgil::SDK::HighLevel::VirgilKeyManager

Inherits:
Object
  • Object
show all
Defined in:
lib/virgil/sdk/high_level/virgil_key_manager.rb

Overview

this class provides a list of methods to generate the VirgilKey and further them storage in secure place.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(context) ⇒ VirgilKeyManager

Initializes a new instance of the Virgil::SDK::HighLevel::VirgilKeyManager class.



46
47
48
# File 'lib/virgil/sdk/high_level/virgil_key_manager.rb', line 46

def initialize(context)
  @context = context
end

Instance Attribute Details

#contextVirgilContext (readonly)

manages the VirgilApi dependencies during run time.

Returns:



43
44
45
# File 'lib/virgil/sdk/high_level/virgil_key_manager.rb', line 43

def context
  @context
end

Instance Method Details

#delete(key_name) ⇒ Object

Remove the Virgil::SDK::HighLevel::VirgilKey from current storage by specified key name.

Examples:

Remove key from the storage by name

virgil = VirgilApi.new
virgil.keys.delete("[KEY_NAME]")

Parameters:

  • key_name (String)

    The name of the key.

Raises:

  • (KeyEntryNotFoundException)

    if key storage doesn't have item with such name

  • (ArgumentError)

    if key_name is nil

  • (KeyStorageException)

    if destination folder doesn't exist or you don't have permission to write there



123
124
125
126
127
128
# File 'lib/virgil/sdk/high_level/virgil_key_manager.rb', line 123

def delete(key_name)

  raise ArgumentError.new("key_name is not valid") if key_name.nil?

  context.key_storage.delete(key_name)
end

#generateVirgilKey

Generates a new Virgil::SDK::HighLevel::VirgilKey with default parameters.

Examples:

Generate Virgil Key

virgil = VirgilApi.new
alice_key = virgil.keys.generate
# After generation you can save the key to key storage

GENERATE A VIRGIL KEY WITH A SPECIFIC TYPE

initialize Crypto with specific key pair type
crypto = VirgilCrypto.new(KeyPairType::EC_BP512R1)

context = VirgilContext.new(crypto: crypto)

# initialize Virgil SDK using context
virgil = VirgilApi.new(context: context)

# generate a new Virgil Key
alice_key = virgil.keys.generate()

Returns:

See Also:



70
71
72
73
# File 'lib/virgil/sdk/high_level/virgil_key_manager.rb', line 70

def generate
  key_pair = context.crypto.generate_keys()
  VirgilKey.new(context, key_pair.private_key)
end

#import(buffer, password = nil) ⇒ VirgilKey

Imports the Virgil::SDK::HighLevel::VirgilKey from buffer.

Examples:

virgil = VirgilApi.new
# initialize a buffer from base64 encoded string
alice_key_buffer = VirgilBuffer.from_base64("[BASE64_ENCODED_VIRGIL_KEY]")

# import Virgil Key from buffer
alice_key = virgil.keys.import(alice_key_buffer, "[OPTIONAL_KEY_PASSWORD]")

Parameters:

  • buffer (VirgilBuffer)

    The buffer with Key

  • password (String) (defaults to: nil)

    The Key password

Returns:

See Also:



109
110
111
112
# File 'lib/virgil/sdk/high_level/virgil_key_manager.rb', line 109

def import(buffer, password=nil)
  private_key = context.crypto.import_private_key(buffer.bytes, password)
  VirgilKey.new(context, private_key)
end

#load(key_name, key_password = nil) ⇒ VirgilKey

Loads the VirgilKey from current storage by specified key name.

Examples:

virgil = VirgilApi.new()
# load a Virgil Key from storage
alice_key = virgil.keys.load("[KEY_NAME]", "[OPTIONAL_KEY_PASSWORD]")

Parameters:

  • key_name (String)

    The name of the key.

  • key_password (String) (defaults to: nil)

Returns:

Raises:

  • (KeyEntryNotFoundException)

    if key storage doesn't have item with such name

  • (ArgumentError)

    if key_name is nil

  • (KeyStorageException)

    if destination folder doesn't exist or you don't have permission to write there



87
88
89
90
91
92
93
94
95
# File 'lib/virgil/sdk/high_level/virgil_key_manager.rb', line 87

def load(key_name, key_password=nil)

  raise ArgumentError.new("key_name is not valid") if key_name.nil?

  storage_item = context.key_storage.load(key_name)
  private_key = context.crypto.import_private_key(storage_item.data, key_password)
  VirgilKey.new(context, private_key)

end