Class: Themis::SKeyPairGen

Inherits:
Object
  • Object
show all
Includes:
ThemisCommon, ThemisImport
Defined in:
lib/rbthemis.rb

Constant Summary

Constants included from ThemisImport

ThemisImport::THEMIS_KEY_EC_PRIVATE, ThemisImport::THEMIS_KEY_EC_PUBLIC, ThemisImport::THEMIS_KEY_INVALID, ThemisImport::THEMIS_KEY_RSA_PRIVATE, ThemisImport::THEMIS_KEY_RSA_PUBLIC

Instance Method Summary collapse

Methods included from ThemisCommon

string_to_pointer_size

Instance Method Details

#ecObject



152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
# File 'lib/rbthemis.rb', line 152

def ec
  private_key_length = FFI::MemoryPointer.new(:uint)
  public_key_length = FFI::MemoryPointer.new(:uint)

  res = themis_gen_ec_key_pair(
    nil, private_key_length, nil, public_key_length)
  if res != BUFFER_TOO_SMALL
    raise ThemisError, "Themis failed generating EC KeyPair: #{res}"
  end

  private_key = FFI::MemoryPointer.new(:char, private_key_length.read_uint)
  public_key = FFI::MemoryPointer.new(:char, public_key_length.read_uint)

  res = themis_gen_ec_key_pair(
    private_key, private_key_length, public_key, public_key_length)
  if res != SUCCESS
    raise ThemisError, "Themis failed generating EC KeyPair: #{res}"
  end

  [private_key.get_bytes(0, private_key_length.read_uint),
   public_key.get_bytes(0, public_key_length.read_uint)]
end

#rsaObject



175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
# File 'lib/rbthemis.rb', line 175

def rsa
  private_key_length = FFI::MemoryPointer.new(:uint)
  public_key_length = FFI::MemoryPointer.new(:uint)

  res = themis_gen_rsa_key_pair(
    nil, private_key_length, nil, public_key_length)
  if res != BUFFER_TOO_SMALL
    raise ThemisError, "Themis failed generating RSA KeyPair: #{res}"
  end

  private_key = FFI::MemoryPointer.new(:char, private_key_length.read_uint)
  public_key = FFI::MemoryPointer.new(:char, public_key_length.read_uint)

  res = themis_gen_rsa_key_pair(
    private_key, private_key_length, public_key, public_key_length)
  if res != SUCCESS
    raise ThemisError, "Themis failed generating RSA KeyPair: #{res}"
  end

  [private_key.get_bytes(0, private_key_length.read_uint),
   public_key.get_bytes(0, public_key_length.read_uint)]
end