tem_openssl 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG ADDED
@@ -0,0 +1,11 @@
1
+ v0.3.2. Updated to the API of tem_ruby 0.7.1 (Tem#pubek instead of an ugly hack).
2
+
3
+ v0.3.1. Updated to the API of tem_ruby 0.7.0.
4
+
5
+ v0.3. Implemented rsautl -sign and -verify to meet the openssl specs.
6
+
7
+ v0.2.1. Implemented public key exporting to PEM files. Requires public keys instead of the full key when possible. The TEM should not be needed when only public keys are required.
8
+
9
+ v0.2. Implemented signing.
10
+
11
+ v0.1. Initial release.
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License
2
+
3
+ Copyright (c) 2007 Massachusetts Institute of Technology
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/Manifest ADDED
@@ -0,0 +1,10 @@
1
+ bin/openssl_tem
2
+ Manifest
3
+ LICENSE
4
+ test/test_executor.rb
5
+ lib/ossl/key.rb
6
+ lib/ossl/executor.rb
7
+ lib/ossl/tem_tools.rb
8
+ lib/tem_openssl.rb
9
+ README
10
+ CHANGELOG
data/README ADDED
@@ -0,0 +1,35 @@
1
+ This is a tool for the TEM-based OpenSSL engine.
2
+
3
+ Running coverage tests:
4
+ gem install rcov
5
+ rcov -Ilib test/*.rb
6
+
7
+ Implemented commands (the format is supposed to be compatible with the "openssl" tool):
8
+
9
+ openssl_tem reset
10
+ Resets the TEM to a working state. The TEM applet is reinitialized, and the TEM is emitted.
11
+ All key material and state on TEM is lost.
12
+
13
+ openssl_tem rsagen 2048 -out key.temkey
14
+ Generates a RSA key pair on the TEM (the size is ignored), outputs the TEM-bound key pair to
15
+ "key.temkey".
16
+
17
+ openssl_tem rsa -in key.temkey -out key.pem -pubout
18
+ Extracts the public key from a TEM-bound key pair, outputs it in PEM format to "key.pem"
19
+
20
+ openssl_tem rsautl -encrypt -in plain.txt -inkey key.pem -out crypted.txt -pkcs
21
+ Encrypts the data in "plain.txt" using the PEM public key (or public key in a TEM-bound key pair)
22
+ in "key.pem". PKCS#1 padding is always used.
23
+
24
+ openssl_tem rsautl -decrypt -in crypted.txt -inkey key.temkey -out plain2.txt -pkcs
25
+ Decrypts the data in "crypted.txt" using TEM-bound key pair in "key.temkey".
26
+ PKCS#1 padding is always used.
27
+
28
+ openssl_tem rsautl -xsign -in plain.txt -inkey key.temkey -out signature.txt -pkcs
29
+ Signs the data in "plain.txt" using the TEM-bound key pair in "key.temkey".
30
+ PKCS#1 padding over a SHA-1 message digest of the data is always used.
31
+
32
+ openssl_tem rsautl -xverify -in signature.txt -inkey key.pem -indata plain.txt -out verif.txt -pkcs
33
+ Verifies that "signature.txt" was produced by signing the data in "plain.txt" using the
34
+ TEM-bound key with the PEM public key in "key.pem". PKCS#1 padding over a SHA-1 of the data is
35
+ always used. The output is "true" or "false".
data/bin/openssl_tem ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rubygems'
4
+ require 'tem_openssl'
5
+
6
+ Tem::OpenSSL::Executor.run(ARGV)
@@ -0,0 +1,118 @@
1
+ require 'pp'
2
+
3
+ class Tem::OpenSSL::Executor
4
+ def initialize(args, test_options)
5
+ @args = args
6
+ # unknown args get thrown here
7
+ @arg_bag = {}
8
+ # read key from here
9
+ @in_key = nil
10
+ # read (original) data from here
11
+ @in_data = nil
12
+ # read input from here
13
+ @in = $stdin
14
+ # dump output here
15
+ @out = $stdout
16
+ # run the procs here to clean up
17
+ @cleanup_procs = []
18
+
19
+ # hash of flags to help unit tests
20
+ @test_options = test_options
21
+
22
+ connect_to_tem
23
+ parse_args
24
+ end
25
+
26
+ def run
27
+ case @args[0]
28
+ when 'reset'
29
+ @tem.kill
30
+ @tem.activate
31
+ @tem.emit
32
+ when 'rsa'
33
+ if @arg_bag[:pubout]
34
+ @key = Tem::OpenSSL::Key.load_from_tkfile @in
35
+ @out.write @key.pub_key.ssl_key.to_s
36
+ end
37
+ when 'rsagen'
38
+ @key = Tem::OpenSSL::Key.new_tem_key @tem
39
+ @out.write @key.to_tkfile
40
+ when 'rsautl'
41
+ @key = Tem::OpenSSL::Key.load_from_tkfile @in_key
42
+ data = @in.read
43
+ case
44
+ when @arg_bag[:decrypt]
45
+ # decrypting with private key
46
+ result = @key.privk_decrypt data, @tem
47
+ when @arg_bag[:encrypt]
48
+ # encrypting with public key
49
+ result = @key.pub_key.encrypt data
50
+ when @arg_bag[:sign]
51
+ # fake-signing (encrypting with private key)
52
+ result = @key.privk_encrypt data, @tem
53
+ when @arg_bag[:verify]
54
+ # fake-verifying (decrypting with public key)
55
+ result = @key.pub_key.decrypt data
56
+ when @arg_bag[:xsign]
57
+ result = @key.privk_sign data, @tem
58
+ when @arg_bag[:xverify]
59
+ orig_data = @in_data.read
60
+ result = @key.pub_key.verify orig_data, data
61
+ else
62
+ # ?!
63
+ end
64
+ @out.write result
65
+ end
66
+ end
67
+
68
+ def parse_args
69
+ 0.upto(@args.length - 1) do |i|
70
+ # the tokens that don't start with - are processed OOB
71
+ next unless @args[i][0] == ?-
72
+ case @args[i]
73
+ when '-in'
74
+ @in = File.open(@args[i + 1], 'rb')
75
+ @cleanup_procs << Proc.new { @in.close }
76
+ when '-inkey'
77
+ @in_key = File.open(@args[i + 1], 'r')
78
+ @cleanup_procs << Proc.new { @in_key.close }
79
+ when '-indata'
80
+ @in_data = File.open(@args[i + 1], 'r')
81
+ @cleanup_procs << Proc.new { @in_data.close }
82
+ when '-out'
83
+ @out = File.open(@args[i + 1], 'wb')
84
+ @cleanup_procs << Proc.new { @out.close }
85
+ else
86
+ @arg_bag[@args[i][1..-1].to_sym] = true
87
+ end
88
+ end
89
+ end
90
+
91
+ def cleanup
92
+ @cleanup_procs.each { |p| p.call }
93
+ end
94
+
95
+ def connect_to_tem
96
+ @terminal = Tem::SCard::JCOPRemoteTerminal.new
97
+ if !@terminal.connect or @test_options[:no_tem]
98
+ @terminal.disconnect
99
+ @terminal = Tem::SCard::PCSCTerminal.new
100
+ if !@terminal.connect or @test_options[:no_tem]
101
+ @terminal.disconnect
102
+ @terminal = nil
103
+ end
104
+ end
105
+ unless @terminal.nil?
106
+ @javacard = Tem::SCard::JavaCard.new(@terminal)
107
+ @tem = Tem::Session.new(@javacard)
108
+
109
+ @cleanup_procs << Proc.new { @tem.disconnect; @terminal.disconnect }
110
+ end
111
+ end
112
+
113
+ def self.run(args, test_options = {})
114
+ ex = self.new args, test_options
115
+ ex.run
116
+ ex.cleanup
117
+ end
118
+ end
data/lib/ossl/key.rb ADDED
@@ -0,0 +1,55 @@
1
+ require 'pp'
2
+
3
+ class Tem::OpenSSL::Key
4
+ include Tem::OpenSSL::TemTools
5
+
6
+ attr_reader :pub_key
7
+
8
+ def initialize(pub_key, priv_decrypt_sec, priv_encrypt_sec, priv_sign_sec)
9
+ @pub_key = pub_key
10
+ @priv_decrypt_sec = priv_decrypt_sec
11
+ @priv_encrypt_sec = priv_encrypt_sec
12
+ @priv_sign_sec = priv_sign_sec
13
+ end
14
+
15
+ def to_tkfile
16
+ @pub_key.ssl_key.to_s + [@priv_decrypt_sec.to_array, @priv_encrypt_sec.to_array, @priv_sign_sec.to_array].to_yaml
17
+ end
18
+
19
+ def privk_decrypt(data, tem)
20
+ Tem::OpenSSL::TemTools.crypt_with_sec(data, @priv_decrypt_sec, tem)
21
+ end
22
+
23
+ def privk_encrypt(data, tem)
24
+ Tem::OpenSSL::TemTools.crypt_with_sec(data, @priv_encrypt_sec, tem)
25
+ end
26
+
27
+ def privk_sign(data, tem)
28
+ Tem::OpenSSL::TemTools.sign_with_sec(data, @priv_sign_sec, tem)
29
+ end
30
+
31
+ def self.new_tem_key(tem)
32
+ keys = Tem::OpenSSL::TemTools.generate_key_on_tem(tem)
33
+ priv_decrypt_sec = Tem::OpenSSL::TemTools.crypting_sec(keys[:privk], tem, :decrypt)
34
+ priv_encrypt_sec = Tem::OpenSSL::TemTools.crypting_sec(keys[:privk], tem, :encrypt)
35
+ priv_sign_sec = Tem::OpenSSL::TemTools.signing_sec(keys[:privk], tem)
36
+ return self.new(keys[:pubk], priv_decrypt_sec, priv_encrypt_sec, priv_sign_sec)
37
+ end
38
+
39
+ def self.load_from_tkfile(f)
40
+ ossl_pub_key = OpenSSL::PKey::RSA.new(f)
41
+ pub_key = Tem::CryptoAbi::new_key_from_ssl(ossl_pub_key, true)
42
+ begin
43
+ ds_ary, es_ary, ss_ary = *YAML.load(f)
44
+ priv_decrypt_sec = Tem::SecPack.new_from_array(ds_ary)
45
+ priv_encrypt_sec = Tem::SecPack.new_from_array(es_ary)
46
+ priv_sign_sec = Tem::SecPack.new_from_array(ss_ary)
47
+ rescue
48
+ priv_decrypt_sec = nil
49
+ priv_encrypt_sec = nil
50
+ priv_sign_sec = nil
51
+ end
52
+ return self.new(pub_key, priv_decrypt_sec, priv_encrypt_sec, priv_sign_sec)
53
+ end
54
+
55
+ end
@@ -0,0 +1,124 @@
1
+ module Tem::OpenSSL::TemTools
2
+ # generate an RSA key pair on the TEM
3
+ # slower than OpenSSL-based generation, but uses a hardware RNG
4
+ def self.generate_key_on_tem(tem)
5
+ kdata = tem.tk_gen_key(:asymmetric)
6
+ pubk = tem.tk_read_key(kdata[:pubk_id], kdata[:authz])
7
+ tem.tk_delete_key(kdata[:pubk_id], kdata[:authz])
8
+ privk = tem.tk_read_key(kdata[:privk_id], kdata[:authz])
9
+ tem.tk_delete_key(kdata[:privk_id], kdata[:authz])
10
+
11
+ return {:privk => privk, :pubk => pubk}
12
+ end
13
+
14
+ # generates a SECpack that encrypts/decrypts a user-supplied blob
15
+ # the SECpack is tied down to a TEM
16
+ def self.crypting_sec(key, tem, mode = :decrypt)
17
+ crypt_sec = tem.assemble do |s|
18
+ # load the key in the TEM
19
+ s.ldwc :const => :key_data
20
+ s.rdk
21
+ # allocate the output buffer
22
+ s.ldwc :const => 512
23
+ s.outnew
24
+ # decrypt the given data
25
+ s.ldw :from => :input_length
26
+ s.ldwc :const => :input_data
27
+ s.ldwc :const => -1
28
+ s.send({:encrypt => :kevb, :decrypt => :kdvb}[mode])
29
+ s.halt
30
+
31
+ # key material
32
+ s.label :key_data
33
+ s.immed :ubyte, key.to_tem_key
34
+
35
+ # user-supplied argument: the length of the blob to be encrypted/decrypted
36
+ s.label :input_length
37
+ s.immed :ushort, 256
38
+
39
+ # user-supplied argument: the blob to be encrypted/decrypted
40
+ s.label :input_data
41
+ s.filler :ubyte, 512
42
+
43
+ # the TEM stack
44
+ s.label :sec_stack
45
+ s.stack
46
+ s.extra 8
47
+ end
48
+ crypt_sec.seal(tem.pubek, :key_data, :input_length)
49
+ return crypt_sec
50
+ end
51
+
52
+ # generates a SECpack that decrypts a user-supplied blob
53
+ # the SECpack is tied down to a TEM
54
+ def self.signing_sec(key, tem)
55
+ sign_sec = tem.assemble do |s|
56
+ # load the key in the TEM
57
+ s.ldwc :const => :key_data
58
+ s.rdk
59
+ # allocate the output buffer
60
+ s.ldwc :const => key.ssl_key.n.num_bytes + 1
61
+ s.outnew
62
+ # sign the given data
63
+ s.ldw :from => :input_length
64
+ s.ldwc :const => :input_data
65
+ s.ldwc :const => -1
66
+ s.ksvb
67
+ s.halt
68
+
69
+ # key material
70
+ s.label :key_data
71
+ s.immed :ubyte, key.to_tem_key
72
+
73
+ # user-supplied argument: the length of the blob to be signed
74
+ s.label :input_length
75
+ s.immed :ushort, 256
76
+
77
+ # user-supplied argument: the blob to be signed
78
+ s.label :input_data
79
+ s.filler :ubyte, 512
80
+
81
+ # the TEM stack
82
+ s.label :sec_stack
83
+ s.stack
84
+ s.extra 8
85
+ end
86
+ sign_sec.seal(tem.pubek, :key_data, :input_length)
87
+ return sign_sec
88
+ end
89
+
90
+
91
+ # encrypts/decrypts using a SECpack generated via a previous call to crypting_sec
92
+ def self.crypt_with_sec(encrypted_data, dec_sec, tem)
93
+ # convert the data string to an array of numbers
94
+ ed = encrypted_data.unpack('C*')
95
+
96
+ # patch the data and its length into the SEC
97
+ elen = tem.to_tem_ushort(ed.length)
98
+ dec_sec.body[dec_sec.label_address(:input_length), elen.length] = elen
99
+ dec_sec.body[dec_sec.label_address(:input_data), ed.length] = ed
100
+
101
+ # run the sec and convert its output to a string
102
+ dd = tem.execute dec_sec
103
+ decrypted_data = dd.pack('C*')
104
+
105
+ return decrypted_data
106
+ end
107
+
108
+ # signs using a SECpack generated via a previous call to signing_sec
109
+ def self.sign_with_sec(data, sign_sec, tem)
110
+ # convert the data string to an array of numbers
111
+ d = data.unpack('C*')
112
+
113
+ # patch the data and its length into the SEC
114
+ len = tem.to_tem_ushort(d.length)
115
+ sign_sec.body[sign_sec.label_address(:input_length), len.length] = len
116
+ sign_sec.body[sign_sec.label_address(:input_data), d.length] = d
117
+
118
+ # run the sec and convert its output to a string
119
+ s = tem.execute sign_sec
120
+ signature = s.pack('C*')
121
+
122
+ return signature
123
+ end
124
+ end
@@ -0,0 +1,9 @@
1
+ require 'tem_ruby'
2
+
3
+ module Tem::OpenSSL
4
+ end
5
+
6
+ require 'ossl/tem_tools.rb'
7
+ require 'ossl/key.rb'
8
+ require 'ossl/executor.rb'
9
+
@@ -0,0 +1,55 @@
1
+
2
+ # Gem::Specification for Tem_openssl-0.3.2
3
+ # Originally generated by Echoe
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = %q{tem_openssl}
7
+ s.version = "0.3.2"
8
+
9
+ s.specification_version = 2 if s.respond_to? :specification_version=
10
+
11
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
+ s.authors = ["Victor Costan"]
13
+ s.date = %q{2008-06-11}
14
+ s.default_executable = %q{openssl_tem}
15
+ s.description = %q{TEM (Trusted Execution Module) engine for OpenSSL.}
16
+ s.email = %q{victor@costan.us}
17
+ s.executables = ["openssl_tem"]
18
+ s.extra_rdoc_files = ["bin/openssl_tem", "LICENSE", "lib/ossl/key.rb", "lib/ossl/executor.rb", "lib/ossl/tem_tools.rb", "lib/tem_openssl.rb", "README", "CHANGELOG"]
19
+ s.files = ["bin/openssl_tem", "Manifest", "LICENSE", "test/test_executor.rb", "lib/ossl/key.rb", "lib/ossl/executor.rb", "lib/ossl/tem_tools.rb", "lib/tem_openssl.rb", "README", "CHANGELOG", "tem_openssl.gemspec"]
20
+ s.has_rdoc = true
21
+ s.homepage = %q{http://tem.rubyforge.org}
22
+ s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Tem_openssl", "--main", "README"]
23
+ s.require_paths = ["lib"]
24
+ s.rubyforge_project = %q{tem}
25
+ s.rubygems_version = %q{1.1.1}
26
+ s.summary = %q{TEM (Trusted Execution Module) engine for OpenSSL.}
27
+ s.test_files = ["test/test_executor.rb"]
28
+
29
+ s.add_dependency(%q<tem_ruby>, [">= 0.9.0"])
30
+ end
31
+
32
+
33
+ # # Original Rakefile source (requires the Echoe gem):
34
+ #
35
+ # require 'rubygems'
36
+ # gem 'echoe'
37
+ # require 'echoe'
38
+ #
39
+ # Echoe.new('tem_openssl') do |p|
40
+ # p.project = 'tem' # rubyforge project
41
+ #
42
+ # p.author = 'Victor Costan'
43
+ # p.email = 'victor@costan.us'
44
+ # p.summary = 'TEM (Trusted Execution Module) engine for OpenSSL.'
45
+ # p.url = 'http://tem.rubyforge.org'
46
+ # p.dependencies = ['tem_ruby >=0.9.0']
47
+ #
48
+ # p.need_tar_gz = false
49
+ # p.rdoc_pattern = /^(lib|bin|tasks|ext)|^BUILD|^README|^CHANGELOG|^TODO|^LICENSE|^COPYING$/
50
+ # end
51
+ #
52
+ # if $0 == __FILE__
53
+ # Rake.application = Rake::Application.new
54
+ # Rake.application.run
55
+ # end
@@ -0,0 +1,54 @@
1
+ require 'tem_openssl'
2
+ require 'test/unit'
3
+
4
+ class ExecutorTest < Test::Unit::TestCase
5
+ def setup
6
+ Tem::OpenSSL::Executor.run ['reset']
7
+
8
+ # generate key and extract public key
9
+ Tem::OpenSSL::Executor.run ['rsagen', '2048', '-out', 'test_key.tkey']
10
+ Tem::OpenSSL::Executor.run ['rsa', '-in', 'test_key.tkey', '-out', 'test_key.pem', '-pubout'], :no_tem => true
11
+ end
12
+
13
+ def teardown
14
+ ['test_key.tkey', 'test_key.pem'].each { |fname| File.delete fname }
15
+ end
16
+
17
+ def test_encryption
18
+ # test encryption and decryption (using the PEM file for the public key)
19
+ plain_text = 'Simple encryption test.\n'
20
+ File.open('test_plain.txt', 'wb') { |f| f.write plain_text }
21
+ Tem::OpenSSL::Executor.run ['rsautl', '-encrypt', '-inkey', 'test_key.pem', '-in', 'test_plain.txt', '-pkcs', '-out', 'test_enc.txt'], :no_tem => true
22
+ Tem::OpenSSL::Executor.run ['rsautl', '-decrypt', '-inkey', 'test_key.tkey', '-in', 'test_enc.txt', '-pkcs', '-out', 'test_plain2.txt']
23
+ assert_equal plain_text, File.open('test_plain2.txt', 'rb') { |f| f.read }, 'data corruption in encryption/decryption'
24
+ ['test_plain.txt', 'test_plain2.txt', 'test_enc.txt'].each { |fname| File.delete fname }
25
+
26
+ # test encryption and decryption (using the TEM-bound file for the public key)
27
+ plain_text = 'Simple encryption test.\n'
28
+ File.open('test_plain.txt', 'wb') { |f| f.write plain_text }
29
+ Tem::OpenSSL::Executor.run ['rsautl', '-encrypt', '-inkey', 'test_key.tkey', '-in', 'test_plain.txt', '-pkcs', '-out', 'test_enc.txt']
30
+ Tem::OpenSSL::Executor.run ['rsautl', '-decrypt', '-inkey', 'test_key.tkey', '-in', 'test_enc.txt', '-pkcs', '-out', 'test_plain2.txt']
31
+ assert_equal plain_text, File.open('test_plain2.txt', 'rb') { |f| f.read }, 'data corruption in encryption/decryption'
32
+ ['test_plain.txt', 'test_plain2.txt', 'test_enc.txt'].each { |fname| File.delete fname }
33
+ end
34
+
35
+ def test_fake_signing
36
+ # test fake (openssl-compatible) signing
37
+ plain_text = 'Simple fake-signing test.\n'
38
+ File.open('test_plain.txt', 'wb') { |f| f.write plain_text }
39
+ Tem::OpenSSL::Executor.run ['rsautl', '-sign', '-inkey', 'test_key.tkey', '-in', 'test_plain.txt', '-pkcs', '-out', 'test_fsign.txt']
40
+ Tem::OpenSSL::Executor.run ['rsautl', '-verify', '-inkey', 'test_key.pem', '-in', 'test_fsign.txt', '-pkcs', '-out', 'test_fverify.txt']
41
+ assert_equal plain_text, File.open('test_fverify.txt', 'rb') { |f| f.read }, 'data corruption in fake-sign/verification'
42
+ ['test_plain.txt', 'test_fsign.txt', 'test_fverify.txt'].each { |fname| File.delete fname }
43
+ end
44
+
45
+ def test_xsigning
46
+ # test proper signing (using the PEM file for the public key)
47
+ plain_text = 'Simple signing test.\n'
48
+ File.open('test_plain.txt', 'wb') { |f| f.write plain_text }
49
+ Tem::OpenSSL::Executor.run ['rsautl', '-xsign', '-inkey', 'test_key.tkey', '-in', 'test_plain.txt', '-pkcs', '-out', 'test_sign.txt']
50
+ Tem::OpenSSL::Executor.run ['rsautl', '-xverify', '-inkey', 'test_key.pem', '-in', 'test_sign.txt', '-indata', 'test_plain.txt', '-pkcs', '-out', 'test_verify.txt'], :no_tem => true
51
+ assert_equal "true", File.open('test_verify.txt', 'rb') { |f| f.read }, 'data corruption in sign/verification'
52
+ ['test_plain.txt', 'test_sign.txt', 'test_verify.txt'].each { |fname| File.delete fname }
53
+ end
54
+ end
metadata ADDED
@@ -0,0 +1,83 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: tem_openssl
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.2
5
+ platform: ruby
6
+ authors:
7
+ - Victor Costan
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2008-06-11 00:00:00 -04:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: tem_ruby
17
+ version_requirement:
18
+ version_requirements: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 0.9.0
23
+ version:
24
+ description: TEM (Trusted Execution Module) engine for OpenSSL.
25
+ email: victor@costan.us
26
+ executables:
27
+ - openssl_tem
28
+ extensions: []
29
+
30
+ extra_rdoc_files:
31
+ - bin/openssl_tem
32
+ - LICENSE
33
+ - lib/ossl/key.rb
34
+ - lib/ossl/executor.rb
35
+ - lib/ossl/tem_tools.rb
36
+ - lib/tem_openssl.rb
37
+ - README
38
+ - CHANGELOG
39
+ files:
40
+ - bin/openssl_tem
41
+ - Manifest
42
+ - LICENSE
43
+ - test/test_executor.rb
44
+ - lib/ossl/key.rb
45
+ - lib/ossl/executor.rb
46
+ - lib/ossl/tem_tools.rb
47
+ - lib/tem_openssl.rb
48
+ - README
49
+ - CHANGELOG
50
+ - tem_openssl.gemspec
51
+ has_rdoc: true
52
+ homepage: http://tem.rubyforge.org
53
+ post_install_message:
54
+ rdoc_options:
55
+ - --line-numbers
56
+ - --inline-source
57
+ - --title
58
+ - Tem_openssl
59
+ - --main
60
+ - README
61
+ require_paths:
62
+ - lib
63
+ required_ruby_version: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: "0"
68
+ version:
69
+ required_rubygems_version: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: "0"
74
+ version:
75
+ requirements: []
76
+
77
+ rubyforge_project: tem
78
+ rubygems_version: 1.1.1
79
+ signing_key:
80
+ specification_version: 2
81
+ summary: TEM (Trusted Execution Module) engine for OpenSSL.
82
+ test_files:
83
+ - test/test_executor.rb