tem_ruby 0.11.5 → 0.11.6

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,3 +1,5 @@
1
+ v0.11.6. Firmware uploading logic, and the new tem_upload_fw binary.
2
+
1
3
  v0.11.5. ATR forwarding logic in tem_proxy, for smartcard API 0.4.2.
2
4
 
3
5
  v0.11.4. Removed Ruby warnings. Updated for smartcard API 0.4.
data/Manifest CHANGED
@@ -1,9 +1,14 @@
1
+ CHANGELOG
2
+ LICENSE
3
+ Manifest
4
+ README
5
+ Rakefile
1
6
  bin/tem_bench
2
7
  bin/tem_ca
3
8
  bin/tem_irb
4
9
  bin/tem_proxy
5
10
  bin/tem_stat
6
- CHANGELOG
11
+ bin/tem_upload_fw
7
12
  dev_ca/ca_cert.cer
8
13
  dev_ca/ca_cert.pem
9
14
  dev_ca/ca_key.pem
@@ -31,6 +36,8 @@ lib/tem/definitions/abi.rb
31
36
  lib/tem/definitions/assembler.rb
32
37
  lib/tem/definitions/isa.rb
33
38
  lib/tem/ecert.rb
39
+ lib/tem/firmware/tc.cap
40
+ lib/tem/firmware/uploader.rb
34
41
  lib/tem/hive.rb
35
42
  lib/tem/keys/asymmetric.rb
36
43
  lib/tem/keys/key.rb
@@ -41,12 +48,10 @@ lib/tem/secpack.rb
41
48
  lib/tem/tem.rb
42
49
  lib/tem/toolkit.rb
43
50
  lib/tem_ruby.rb
44
- LICENSE
45
- Manifest
46
- Rakefile
47
- README
51
+ tem_ruby.gemspec
48
52
  test/_test_cert.rb
49
53
  test/builders/test_abi_builder.rb
54
+ test/firmware/test_uploader.rb
50
55
  test/tem_test_case.rb
51
56
  test/tem_unit/test_tem_alu.rb
52
57
  test/tem_unit/test_tem_bound_secpack.rb
data/Rakefile CHANGED
@@ -10,7 +10,7 @@ Echoe.new('tem_ruby') do |p|
10
10
  p.email = 'victor@costan.us'
11
11
  p.summary = 'TEM (Trusted Execution Module) driver, written in and for ruby.'
12
12
  p.url = 'http://tem.rubyforge.org'
13
- p.dependencies = ['smartcard >=0.4.2']
13
+ p.dependencies = ['smartcard >=0.4.6']
14
14
 
15
15
  p.need_tar_gz = !Gem.win_platform?
16
16
  p.need_zip = !Gem.win_platform?
data/bin/tem_stat CHANGED
@@ -1,6 +1,11 @@
1
1
  #!/usr/bin/env ruby
2
+ #
3
+ # Stats the TEM's firmware version, buffers, and keys, and dumps them to stdout.
4
+ #
5
+ # Author:: Victor Costan
6
+ # Copyright:: Copyright (C) 2007 Massachusetts Institute of Technology
7
+ # License:: MIT
2
8
 
3
- # spews information about the TEM
4
9
  require 'rubygems'
5
10
  require 'tem_ruby'
6
11
  require 'pp'
data/bin/tem_upload_fw ADDED
@@ -0,0 +1,31 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Uploads TEM firmware to a smartcard.
4
+ #
5
+ # Author:: Victor Costan
6
+ # Copyright:: Copyright (C) 2009 Massachusetts Institute of Technology
7
+ # License:: MIT
8
+
9
+ require 'rubygems'
10
+ require 'smartcard'
11
+ require 'tem_ruby'
12
+ require 'pp'
13
+
14
+ transport = Smartcard::Iso::auto_transport
15
+ print "Connected to smart-card using #{transport.inspect}\n"
16
+ begin
17
+ Tem::Firmware::Uploader.upload_cap transport
18
+ rescue Exception => e
19
+ print "Could not upload TEM firmware.\n"
20
+ print "#{e.class.name}: #{e}\n#{e.backtrace.join("\n")}\n"
21
+ exit
22
+ end
23
+
24
+ tem = Tem::Session.new transport
25
+ begin
26
+ tem.activate
27
+ pp tem.emit
28
+ rescue Exception => e
29
+ print "Could not activate and emit TEM. Firmware might be broken.\n"
30
+ print "#{e.class.name}: #{e}\n#{e.backtrace.join("\n")}\n"
31
+ end
Binary file
@@ -0,0 +1,49 @@
1
+ # TEM firmware installation and update.
2
+ #
3
+ # Author:: Victor Costan
4
+ # Copyright:: Copyright (C) 2009 Massachusetts Institute of Technology
5
+ # License:: MIT
6
+
7
+ # :nodoc: namespace
8
+ module Tem::Firmware
9
+
10
+
11
+ # Installs and updates
12
+ module Uploader
13
+ # Path to the JavaCard CAP file containing the firmware.
14
+ #
15
+ # CAP updates can be downloaded directly from the URL below. However, it's
16
+ # recommended to obtain them by installing a new version of the tem_ruby gem.
17
+ # The gem is only tested with the firmware bundled with it.
18
+ #
19
+ # Update URL: http://rubyforge.org/frs/?group_id=6431
20
+ def self.cap_file
21
+ File.join File.dirname(__FILE__), 'tc.cap'
22
+ end
23
+
24
+ @applet_aid = nil
25
+ # The AID for the firmware's JavaCard applet.
26
+ def self.applet_aid
27
+ # Cache expensive operation of unzipping the CAP file.
28
+ return @applet_aid if @applet_aid
29
+
30
+ cap_data = Smartcard::Gp::CapLoader.load_cap cap_file
31
+ @applet_aid = Smartcard::Gp::CapLoader.parse_applets(cap_data).first[:aid]
32
+ end
33
+
34
+ # Uploads the firmware CAP file, removing any old version.
35
+ #
36
+ # Note that uploading a new version wipes the firmware's data completely, so
37
+ # the TEM will have to be re-emitted, and will have a different endorsement
38
+ # key.
39
+ def self.upload_cap(transport)
40
+ class <<transport
41
+ include Smartcard::Gp::GpCardMixin
42
+ end
43
+ transport.install_applet cap_file
44
+ end
45
+
46
+
47
+ end # module Tem::Firmware::Uploader
48
+
49
+ end # namespace Tem::Firmware
data/lib/tem_ruby.rb CHANGED
@@ -25,6 +25,8 @@ require 'tem/apdus/keys.rb'
25
25
  require 'tem/apdus/lifecycle.rb'
26
26
  require 'tem/apdus/tag.rb'
27
27
 
28
+ require 'tem/firmware/uploader.rb'
29
+
28
30
  require 'tem/ca.rb'
29
31
  require 'tem/ecert.rb'
30
32
  require 'tem/hive.rb'
data/tem_ruby.gemspec CHANGED
@@ -2,34 +2,34 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{tem_ruby}
5
- s.version = "0.11.5"
5
+ s.version = "0.11.6"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Victor Costan"]
9
9
  s.date = %q{2009-11-01}
10
10
  s.description = %q{TEM (Trusted Execution Module) driver, written in and for ruby.}
11
11
  s.email = %q{victor@costan.us}
12
- s.executables = ["tem_bench", "tem_ca", "tem_irb", "tem_proxy", "tem_stat"]
13
- s.extra_rdoc_files = ["bin/tem_bench", "bin/tem_ca", "bin/tem_irb", "bin/tem_proxy", "bin/tem_stat", "CHANGELOG", "lib/tem/_cert.rb", "lib/tem/apdus/buffers.rb", "lib/tem/apdus/keys.rb", "lib/tem/apdus/lifecycle.rb", "lib/tem/apdus/tag.rb", "lib/tem/auto_conf.rb", "lib/tem/benchmarks/benchmarks.rb", "lib/tem/benchmarks/blank_bound_secpack.rb", "lib/tem/benchmarks/blank_sec.rb", "lib/tem/benchmarks/devchip_decrypt.rb", "lib/tem/benchmarks/post_buffer.rb", "lib/tem/benchmarks/simple_apdu.rb", "lib/tem/benchmarks/vm_perf.rb", "lib/tem/benchmarks/vm_perf_bound.rb", "lib/tem/builders/abi.rb", "lib/tem/builders/assembler.rb", "lib/tem/builders/crypto.rb", "lib/tem/builders/isa.rb", "lib/tem/ca.rb", "lib/tem/definitions/abi.rb", "lib/tem/definitions/assembler.rb", "lib/tem/definitions/isa.rb", "lib/tem/ecert.rb", "lib/tem/hive.rb", "lib/tem/keys/asymmetric.rb", "lib/tem/keys/key.rb", "lib/tem/keys/symmetric.rb", "lib/tem/sec_exec_error.rb", "lib/tem/seclosures.rb", "lib/tem/secpack.rb", "lib/tem/tem.rb", "lib/tem/toolkit.rb", "lib/tem_ruby.rb", "LICENSE", "README"]
14
- s.files = ["bin/tem_bench", "bin/tem_ca", "bin/tem_irb", "bin/tem_proxy", "bin/tem_stat", "CHANGELOG", "dev_ca/ca_cert.cer", "dev_ca/ca_cert.pem", "dev_ca/ca_key.pem", "dev_ca/config.yml", "lib/tem/_cert.rb", "lib/tem/apdus/buffers.rb", "lib/tem/apdus/keys.rb", "lib/tem/apdus/lifecycle.rb", "lib/tem/apdus/tag.rb", "lib/tem/auto_conf.rb", "lib/tem/benchmarks/benchmarks.rb", "lib/tem/benchmarks/blank_bound_secpack.rb", "lib/tem/benchmarks/blank_sec.rb", "lib/tem/benchmarks/devchip_decrypt.rb", "lib/tem/benchmarks/post_buffer.rb", "lib/tem/benchmarks/simple_apdu.rb", "lib/tem/benchmarks/vm_perf.rb", "lib/tem/benchmarks/vm_perf_bound.rb", "lib/tem/builders/abi.rb", "lib/tem/builders/assembler.rb", "lib/tem/builders/crypto.rb", "lib/tem/builders/isa.rb", "lib/tem/ca.rb", "lib/tem/definitions/abi.rb", "lib/tem/definitions/assembler.rb", "lib/tem/definitions/isa.rb", "lib/tem/ecert.rb", "lib/tem/hive.rb", "lib/tem/keys/asymmetric.rb", "lib/tem/keys/key.rb", "lib/tem/keys/symmetric.rb", "lib/tem/sec_exec_error.rb", "lib/tem/seclosures.rb", "lib/tem/secpack.rb", "lib/tem/tem.rb", "lib/tem/toolkit.rb", "lib/tem_ruby.rb", "LICENSE", "Manifest", "Rakefile", "README", "test/_test_cert.rb", "test/builders/test_abi_builder.rb", "test/tem_test_case.rb", "test/tem_unit/test_tem_alu.rb", "test/tem_unit/test_tem_bound_secpack.rb", "test/tem_unit/test_tem_branching.rb", "test/tem_unit/test_tem_crypto_asymmetric.rb", "test/tem_unit/test_tem_crypto_hash.rb", "test/tem_unit/test_tem_crypto_pstore.rb", "test/tem_unit/test_tem_crypto_random.rb", "test/tem_unit/test_tem_emit.rb", "test/tem_unit/test_tem_memory.rb", "test/tem_unit/test_tem_memory_compare.rb", "test/tem_unit/test_tem_output.rb", "test/tem_unit/test_tem_yaml_secpack.rb", "test/test_auto_conf.rb", "test/test_driver.rb", "test/test_exceptions.rb", "tem_ruby.gemspec"]
12
+ s.executables = ["tem_bench", "tem_ca", "tem_irb", "tem_proxy", "tem_stat", "tem_upload_fw"]
13
+ s.extra_rdoc_files = ["CHANGELOG", "LICENSE", "README", "bin/tem_bench", "bin/tem_ca", "bin/tem_irb", "bin/tem_proxy", "bin/tem_stat", "bin/tem_upload_fw", "lib/tem/_cert.rb", "lib/tem/apdus/buffers.rb", "lib/tem/apdus/keys.rb", "lib/tem/apdus/lifecycle.rb", "lib/tem/apdus/tag.rb", "lib/tem/auto_conf.rb", "lib/tem/benchmarks/benchmarks.rb", "lib/tem/benchmarks/blank_bound_secpack.rb", "lib/tem/benchmarks/blank_sec.rb", "lib/tem/benchmarks/devchip_decrypt.rb", "lib/tem/benchmarks/post_buffer.rb", "lib/tem/benchmarks/simple_apdu.rb", "lib/tem/benchmarks/vm_perf.rb", "lib/tem/benchmarks/vm_perf_bound.rb", "lib/tem/builders/abi.rb", "lib/tem/builders/assembler.rb", "lib/tem/builders/crypto.rb", "lib/tem/builders/isa.rb", "lib/tem/ca.rb", "lib/tem/definitions/abi.rb", "lib/tem/definitions/assembler.rb", "lib/tem/definitions/isa.rb", "lib/tem/ecert.rb", "lib/tem/firmware/tc.cap", "lib/tem/firmware/uploader.rb", "lib/tem/hive.rb", "lib/tem/keys/asymmetric.rb", "lib/tem/keys/key.rb", "lib/tem/keys/symmetric.rb", "lib/tem/sec_exec_error.rb", "lib/tem/seclosures.rb", "lib/tem/secpack.rb", "lib/tem/tem.rb", "lib/tem/toolkit.rb", "lib/tem_ruby.rb"]
14
+ s.files = ["CHANGELOG", "LICENSE", "Manifest", "README", "Rakefile", "bin/tem_bench", "bin/tem_ca", "bin/tem_irb", "bin/tem_proxy", "bin/tem_stat", "bin/tem_upload_fw", "dev_ca/ca_cert.cer", "dev_ca/ca_cert.pem", "dev_ca/ca_key.pem", "dev_ca/config.yml", "lib/tem/_cert.rb", "lib/tem/apdus/buffers.rb", "lib/tem/apdus/keys.rb", "lib/tem/apdus/lifecycle.rb", "lib/tem/apdus/tag.rb", "lib/tem/auto_conf.rb", "lib/tem/benchmarks/benchmarks.rb", "lib/tem/benchmarks/blank_bound_secpack.rb", "lib/tem/benchmarks/blank_sec.rb", "lib/tem/benchmarks/devchip_decrypt.rb", "lib/tem/benchmarks/post_buffer.rb", "lib/tem/benchmarks/simple_apdu.rb", "lib/tem/benchmarks/vm_perf.rb", "lib/tem/benchmarks/vm_perf_bound.rb", "lib/tem/builders/abi.rb", "lib/tem/builders/assembler.rb", "lib/tem/builders/crypto.rb", "lib/tem/builders/isa.rb", "lib/tem/ca.rb", "lib/tem/definitions/abi.rb", "lib/tem/definitions/assembler.rb", "lib/tem/definitions/isa.rb", "lib/tem/ecert.rb", "lib/tem/firmware/tc.cap", "lib/tem/firmware/uploader.rb", "lib/tem/hive.rb", "lib/tem/keys/asymmetric.rb", "lib/tem/keys/key.rb", "lib/tem/keys/symmetric.rb", "lib/tem/sec_exec_error.rb", "lib/tem/seclosures.rb", "lib/tem/secpack.rb", "lib/tem/tem.rb", "lib/tem/toolkit.rb", "lib/tem_ruby.rb", "tem_ruby.gemspec", "test/_test_cert.rb", "test/builders/test_abi_builder.rb", "test/firmware/test_uploader.rb", "test/tem_test_case.rb", "test/tem_unit/test_tem_alu.rb", "test/tem_unit/test_tem_bound_secpack.rb", "test/tem_unit/test_tem_branching.rb", "test/tem_unit/test_tem_crypto_asymmetric.rb", "test/tem_unit/test_tem_crypto_hash.rb", "test/tem_unit/test_tem_crypto_pstore.rb", "test/tem_unit/test_tem_crypto_random.rb", "test/tem_unit/test_tem_emit.rb", "test/tem_unit/test_tem_memory.rb", "test/tem_unit/test_tem_memory_compare.rb", "test/tem_unit/test_tem_output.rb", "test/tem_unit/test_tem_yaml_secpack.rb", "test/test_auto_conf.rb", "test/test_driver.rb", "test/test_exceptions.rb"]
15
15
  s.homepage = %q{http://tem.rubyforge.org}
16
16
  s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Tem_ruby", "--main", "README"]
17
17
  s.require_paths = ["lib"]
18
18
  s.rubyforge_project = %q{tem}
19
19
  s.rubygems_version = %q{1.3.5}
20
20
  s.summary = %q{TEM (Trusted Execution Module) driver, written in and for ruby.}
21
- s.test_files = ["test/builders/test_abi_builder.rb", "test/tem_unit/test_tem_alu.rb", "test/tem_unit/test_tem_bound_secpack.rb", "test/tem_unit/test_tem_branching.rb", "test/tem_unit/test_tem_crypto_asymmetric.rb", "test/tem_unit/test_tem_crypto_hash.rb", "test/tem_unit/test_tem_crypto_pstore.rb", "test/tem_unit/test_tem_crypto_random.rb", "test/tem_unit/test_tem_emit.rb", "test/tem_unit/test_tem_memory.rb", "test/tem_unit/test_tem_memory_compare.rb", "test/tem_unit/test_tem_output.rb", "test/tem_unit/test_tem_yaml_secpack.rb", "test/test_auto_conf.rb", "test/test_driver.rb", "test/test_exceptions.rb"]
21
+ s.test_files = ["test/builders/test_abi_builder.rb", "test/firmware/test_uploader.rb", "test/tem_unit/test_tem_alu.rb", "test/tem_unit/test_tem_bound_secpack.rb", "test/tem_unit/test_tem_branching.rb", "test/tem_unit/test_tem_crypto_asymmetric.rb", "test/tem_unit/test_tem_crypto_hash.rb", "test/tem_unit/test_tem_crypto_pstore.rb", "test/tem_unit/test_tem_crypto_random.rb", "test/tem_unit/test_tem_emit.rb", "test/tem_unit/test_tem_memory.rb", "test/tem_unit/test_tem_memory_compare.rb", "test/tem_unit/test_tem_output.rb", "test/tem_unit/test_tem_yaml_secpack.rb", "test/test_auto_conf.rb", "test/test_driver.rb", "test/test_exceptions.rb"]
22
22
 
23
23
  if s.respond_to? :specification_version then
24
24
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
25
25
  s.specification_version = 3
26
26
 
27
27
  if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
28
- s.add_runtime_dependency(%q<smartcard>, [">= 0.4.2"])
28
+ s.add_runtime_dependency(%q<smartcard>, [">= 0.4.6"])
29
29
  else
30
- s.add_dependency(%q<smartcard>, [">= 0.4.2"])
30
+ s.add_dependency(%q<smartcard>, [">= 0.4.6"])
31
31
  end
32
32
  else
33
- s.add_dependency(%q<smartcard>, [">= 0.4.2"])
33
+ s.add_dependency(%q<smartcard>, [">= 0.4.6"])
34
34
  end
35
35
  end
@@ -0,0 +1,27 @@
1
+ require 'tem_ruby'
2
+
3
+ require 'test/unit'
4
+
5
+
6
+ class UploaderTest < Test::Unit::TestCase
7
+ Uploader = Tem::Firmware::Uploader
8
+
9
+ def test_cap_file
10
+ file = Uploader.cap_file
11
+ assert file, "Cap_file returned a blank"
12
+
13
+ assert Smartcard::Gp::CapLoader.load_cap(file), "Couldn't load CAP file"
14
+ end
15
+
16
+ def test_applet_aid
17
+ assert_equal [0x19, 0x83, 0x12, 0x29, 0x10, 0xBA, 0xBE], Uploader.applet_aid
18
+ end
19
+
20
+ def test_upload
21
+ transport = Smartcard::Iso.auto_transport
22
+ Uploader.upload_cap transport
23
+
24
+ tem = Tem::Session.new transport
25
+ assert tem.activate, "Activation failed (old TEM firmware was not replaced)"
26
+ end
27
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tem_ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.5
4
+ version: 0.11.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Victor Costan
@@ -20,7 +20,7 @@ dependencies:
20
20
  requirements:
21
21
  - - ">="
22
22
  - !ruby/object:Gem::Version
23
- version: 0.4.2
23
+ version: 0.4.6
24
24
  version:
25
25
  description: TEM (Trusted Execution Module) driver, written in and for ruby.
26
26
  email: victor@costan.us
@@ -30,15 +30,19 @@ executables:
30
30
  - tem_irb
31
31
  - tem_proxy
32
32
  - tem_stat
33
+ - tem_upload_fw
33
34
  extensions: []
34
35
 
35
36
  extra_rdoc_files:
37
+ - CHANGELOG
38
+ - LICENSE
39
+ - README
36
40
  - bin/tem_bench
37
41
  - bin/tem_ca
38
42
  - bin/tem_irb
39
43
  - bin/tem_proxy
40
44
  - bin/tem_stat
41
- - CHANGELOG
45
+ - bin/tem_upload_fw
42
46
  - lib/tem/_cert.rb
43
47
  - lib/tem/apdus/buffers.rb
44
48
  - lib/tem/apdus/keys.rb
@@ -62,6 +66,8 @@ extra_rdoc_files:
62
66
  - lib/tem/definitions/assembler.rb
63
67
  - lib/tem/definitions/isa.rb
64
68
  - lib/tem/ecert.rb
69
+ - lib/tem/firmware/tc.cap
70
+ - lib/tem/firmware/uploader.rb
65
71
  - lib/tem/hive.rb
66
72
  - lib/tem/keys/asymmetric.rb
67
73
  - lib/tem/keys/key.rb
@@ -72,15 +78,18 @@ extra_rdoc_files:
72
78
  - lib/tem/tem.rb
73
79
  - lib/tem/toolkit.rb
74
80
  - lib/tem_ruby.rb
81
+ files:
82
+ - CHANGELOG
75
83
  - LICENSE
84
+ - Manifest
76
85
  - README
77
- files:
86
+ - Rakefile
78
87
  - bin/tem_bench
79
88
  - bin/tem_ca
80
89
  - bin/tem_irb
81
90
  - bin/tem_proxy
82
91
  - bin/tem_stat
83
- - CHANGELOG
92
+ - bin/tem_upload_fw
84
93
  - dev_ca/ca_cert.cer
85
94
  - dev_ca/ca_cert.pem
86
95
  - dev_ca/ca_key.pem
@@ -108,6 +117,8 @@ files:
108
117
  - lib/tem/definitions/assembler.rb
109
118
  - lib/tem/definitions/isa.rb
110
119
  - lib/tem/ecert.rb
120
+ - lib/tem/firmware/tc.cap
121
+ - lib/tem/firmware/uploader.rb
111
122
  - lib/tem/hive.rb
112
123
  - lib/tem/keys/asymmetric.rb
113
124
  - lib/tem/keys/key.rb
@@ -118,12 +129,10 @@ files:
118
129
  - lib/tem/tem.rb
119
130
  - lib/tem/toolkit.rb
120
131
  - lib/tem_ruby.rb
121
- - LICENSE
122
- - Manifest
123
- - Rakefile
124
- - README
132
+ - tem_ruby.gemspec
125
133
  - test/_test_cert.rb
126
134
  - test/builders/test_abi_builder.rb
135
+ - test/firmware/test_uploader.rb
127
136
  - test/tem_test_case.rb
128
137
  - test/tem_unit/test_tem_alu.rb
129
138
  - test/tem_unit/test_tem_bound_secpack.rb
@@ -140,7 +149,6 @@ files:
140
149
  - test/test_auto_conf.rb
141
150
  - test/test_driver.rb
142
151
  - test/test_exceptions.rb
143
- - tem_ruby.gemspec
144
152
  has_rdoc: true
145
153
  homepage: http://tem.rubyforge.org
146
154
  licenses: []
@@ -176,6 +184,7 @@ specification_version: 3
176
184
  summary: TEM (Trusted Execution Module) driver, written in and for ruby.
177
185
  test_files:
178
186
  - test/builders/test_abi_builder.rb
187
+ - test/firmware/test_uploader.rb
179
188
  - test/tem_unit/test_tem_alu.rb
180
189
  - test/tem_unit/test_tem_bound_secpack.rb
181
190
  - test/tem_unit/test_tem_branching.rb