Module: Tem::Apdus::Keys
- Included in:
- Session
- Defined in:
- lib/tem/apdus/keys.rb
Instance Method Summary collapse
- #devchip_decrypt(data, key_id) ⇒ Object
- #devchip_encrypt(data, key_id) ⇒ Object
- #devchip_encrypt_decrypt(data, key_id, opcode) ⇒ Object
- #devchip_generate_key_pair ⇒ Object
- #devchip_release_key(key_id) ⇒ Object
- #devchip_save_key(key_id) ⇒ Object
- #stat_keys ⇒ Object
Instance Method Details
#devchip_decrypt(data, key_id) ⇒ Object
45 46 47 |
# File 'lib/tem/apdus/keys.rb', line 45 def devchip_decrypt(data, key_id) devchip_encrypt_decrypt data, key_id, 0x45 end |
#devchip_encrypt(data, key_id) ⇒ Object
42 43 44 |
# File 'lib/tem/apdus/keys.rb', line 42 def devchip_encrypt(data, key_id) devchip_encrypt_decrypt data, key_id, 0x44 end |
#devchip_encrypt_decrypt(data, key_id, opcode) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/tem/apdus/keys.rb', line 26 def devchip_encrypt_decrypt(data, key_id, opcode) buffer_id = post_buffer data begin response = @transport.applet_apdu! :ins => opcode, :p1 => key_id, :p2 => buffer_id ensure release_buffer buffer_id end buffer_id = read_tem_byte response, 0 buffer_length = read_tem_short response, 1 data_buffer = read_buffer buffer_id release_buffer buffer_id return data_buffer[0, buffer_length] end |
#devchip_generate_key_pair ⇒ Object
5 6 7 8 9 |
# File 'lib/tem/apdus/keys.rb', line 5 def devchip_generate_key_pair response = @transport.applet_apdu! :ins => 0x40 return { :privkey_id => read_tem_byte(response, 0), :pubkey_id => read_tem_byte(response, 1) } end |
#devchip_release_key(key_id) ⇒ Object
11 12 13 14 |
# File 'lib/tem/apdus/keys.rb', line 11 def devchip_release_key(key_id) @transport.applet_apdu! :ins => 0x41, :p1 => key_id return true end |
#devchip_save_key(key_id) ⇒ Object
16 17 18 19 20 21 22 23 24 |
# File 'lib/tem/apdus/keys.rb', line 16 def devchip_save_key(key_id) response = @transport.applet_apdu! :ins => 0x43, :p1 => key_id buffer_id = read_tem_byte response, 0 buffer_length = read_tem_short response, 1 key_buffer = read_buffer buffer_id release_buffer buffer_id read_tem_key key_buffer[0, buffer_length], 0 end |
#stat_keys ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/tem/apdus/keys.rb', line 49 def stat_keys response = @transport.applet_apdu! :ins => 0x27, :p1 => 0x01 key_types = { 0x99 => :symmetric, 0x55 => :private, 0xAA => :public } stat = {:keys => {}} offset = 0 while offset < response.length do stat[:keys][read_tem_ubyte(response, offset)] = { :type => key_types[read_tem_ubyte(response, offset + 1)], :bits => read_tem_ushort(response, offset + 2) } offset += 4 end return stat end |