smartcard 0.3.1-x86-mswin32-60 → 0.3.2-x86-mswin32-60
Sign up to get free protection for your applications and to get access to all the features.
- data/BUILD +38 -26
- data/CHANGELOG +2 -0
- data/README +21 -16
- data/Rakefile +36 -0
- data/ext/smartcard_pcsc/extconf.rb +15 -6
- data/ext/smartcard_pcsc/pcsc_reader_states.c +12 -7
- data/lib/smartcard/pcsc.so +0 -0
- data/smartcard.gemspec +15 -49
- metadata +8 -5
data/BUILD
CHANGED
@@ -1,18 +1,20 @@
|
|
1
1
|
= Builds are hard
|
2
|
-
+smartcard+ needs to talk to hardware (card readers), so it's bound to use a
|
3
|
-
This means C, and platform-specific building nightmares.
|
2
|
+
+smartcard+ needs to talk to hardware (card readers), so it's bound to use a
|
3
|
+
Ruby extension. This means C, and platform-specific building nightmares.
|
4
|
+
Read below for details.
|
4
5
|
|
5
6
|
= The build system
|
6
|
-
+smartcard+ uses {echoe}[http://blog.evanweaver.com/files/doc/fauna/echoe/] for
|
7
|
-
automates most of the building and packaging work, and can even
|
8
|
-
with a bit of luck. Most used commands:
|
7
|
+
+smartcard+ uses {echoe}[http://blog.evanweaver.com/files/doc/fauna/echoe/] for
|
8
|
+
builds. This automates most of the building and packaging work, and can even
|
9
|
+
push the gem to rubyforge, with a bit of luck. Most used commands:
|
9
10
|
rake manifest # builds the manifest (do this after checking out)
|
10
11
|
rake package # builds the gem for your platform
|
11
12
|
rake mswin package # cross-builds the gem for Windows
|
12
13
|
rake test # builds the gem and runs the tests
|
13
14
|
rake docs # runs Rdoc to produce the docs
|
14
15
|
|
15
|
-
On the other hand, you have to <tt>gem install echoe</tt> to be able to build
|
16
|
+
On the other hand, you have to <tt>gem install echoe</tt> to be able to build
|
17
|
+
anything.
|
16
18
|
|
17
19
|
= Platform-specific information
|
18
20
|
|
@@ -20,14 +22,17 @@ On the other hand, you have to <tt>gem install echoe</tt> to be able to build an
|
|
20
22
|
|
21
23
|
You need to install the Developer Tools to get gcc.
|
22
24
|
|
23
|
-
Leopard includes a working PC/SC provider, as well as a good driver
|
24
|
-
|
25
|
-
|
26
|
-
|
25
|
+
Leopard (OSX 10.5) includes a working PC/SC provider, as well as a good driver
|
26
|
+
for CCID readers.
|
27
|
+
|
28
|
+
Tiger's (OSX 10.4) PC/SC implementation is broken and incomplete, so the Ruby
|
29
|
+
extension code in +smartcard+ has a few hacks to work around that (look for the
|
30
|
+
<tt>RB_SMARTCARD_OSX_TIGER_HACK</tt> define. The following commands are broken /
|
31
|
+
don't work:
|
27
32
|
* Smartcard::PCSC::Context#is_valid (always returs +true+)
|
28
|
-
* Smartcard::PCSC::Card#get_attribute (throws exception
|
29
|
-
* Smartcard::PCSC::Card#set_attribute (throws exception
|
30
|
-
* Smartcard::PCSC::Card#control (Tiger's API is broken,
|
33
|
+
* Smartcard::PCSC::Card#get_attribute (not implemented, throws exception)
|
34
|
+
* Smartcard::PCSC::Card#set_attribute (not implemented, throws exception)
|
35
|
+
* Smartcard::PCSC::Card#control (Tiger's API is broken, the call may not work)
|
31
36
|
|
32
37
|
The developer team doesn't support or test against ports of +gcc+ or +pcsclite+,
|
33
38
|
but we success notifications are welcome.
|
@@ -37,29 +42,36 @@ but we success notifications are welcome.
|
|
37
42
|
A lot of effort has been spent to make Windows builds as easy as possible.
|
38
43
|
+smartcard+ is currently built using a full edition of
|
39
44
|
{Visual Studio 2005}[http://msdn.microsoft.com/vstudio/], but all sources
|
40
|
-
indicate that
|
41
|
-
|
42
|
-
|
45
|
+
indicate that
|
46
|
+
{Visual C++ Express 2005}[http://www.microsoft.com/express/download/]
|
47
|
+
works, as long as you also install a Windows SDK (you're on your own for that).
|
48
|
+
Visual Studio 2008 might work, but it hasn't been tested yet.
|
43
49
|
|
44
50
|
A summary of the hacks that have been done to get Windows builds working:
|
45
|
-
* removing the extension files from the gemspec at the "right time" so that
|
51
|
+
* removing the extension files from the gemspec at the "right time" so that
|
52
|
+
+echoe+ compiles the extension, and the gem doesn't require re-compilation (see
|
53
|
+
the +Rakefile+)
|
46
54
|
* adding the compiled extension to the file list in the gemspec
|
47
|
-
* adding code to <tt>extconf.rb</tt> to patch the +Makefile+ so a manifest is
|
55
|
+
* adding code to <tt>extconf.rb</tt> to patch the +Makefile+ so a manifest is
|
56
|
+
embedded in the extension dll (and ruby doesn't crash if it uses a different
|
57
|
+
version of the C runtime)
|
48
58
|
|
49
59
|
== Linux
|
50
60
|
|
51
61
|
+smartcard+ is developed (and tested) against the
|
52
|
-
{MUSCLE project}[http://www.linuxnet.com/software.html]. If you go this route,
|
53
|
-
get at least the
|
54
|
-
|
55
|
-
|
62
|
+
{MUSCLE project}[http://www.linuxnet.com/software.html]. If you go this route,
|
63
|
+
you need to get at least the
|
64
|
+
{pcsclite library}[http://pcsclite.alioth.debian.org/] and a driver.
|
65
|
+
+smartcard+ developers use the
|
66
|
+
{CCID driver}[http://pcsclite.alioth.debian.org/], which works on most (new)
|
67
|
+
readers.
|
56
68
|
|
57
69
|
=== Ubuntu
|
58
70
|
|
59
|
-
Installing the following packages (and their dependencies) gets you going on
|
60
|
-
|
71
|
+
Installing the following packages (and their dependencies) gets you going on
|
72
|
+
Ubuntu (tested on 7.10, 8.04, and 8.10):
|
73
|
+
* build-essential
|
61
74
|
* libccid
|
62
|
-
* libpcsclite
|
63
|
-
* libpcsclite-dev
|
75
|
+
* libpcsclite-dev (depends on libpcsclite or libpcsclite1)
|
64
76
|
* pcscd
|
65
77
|
* pcsc-tools
|
data/CHANGELOG
CHANGED
data/README
CHANGED
@@ -1,32 +1,37 @@
|
|
1
|
-
+smartcard+ aims to become the standard support library for smart-card
|
2
|
-
Right now, the project offers a PC/SC binding that is
|
3
|
-
Linux, OSX, and Windows. Future plans include a high
|
4
|
-
(plus any other bindings people need),
|
1
|
+
+smartcard+ aims to become the standard support library for smart-card
|
2
|
+
development on ruby. Right now, the project offers a PC/SC binding that is
|
3
|
+
working on ruby 1.8, under Linux, OSX, and Windows. Future plans include a high
|
4
|
+
level abstraction for the PC/SC binding (plus any other bindings people need),
|
5
|
+
and an interface for Java cards.
|
5
6
|
|
6
7
|
= Installation
|
7
8
|
|
8
9
|
gem install smartcard
|
9
10
|
Windows:: Select the <tt>win32</tt> gem.
|
10
11
|
OSX:: Install the Developer Tools to get +gcc+. Requires Tiger or Leopard.
|
11
|
-
UNIX:: You need a PC/SC provider. See the {BUILD file}[link://files/BUILD.html]
|
12
|
+
UNIX:: You need a PC/SC provider. See the {BUILD file}[link://files/BUILD.html]
|
13
|
+
for details. The file also contains package lists for popular distributions.
|
12
14
|
|
13
15
|
= Documentation
|
14
16
|
|
15
|
-
The documentation you see was generated with RDoc. If you install the
|
16
|
-
able to use ri to see the documentation. If
|
17
|
-
the
|
17
|
+
The documentation you see was generated with RDoc. If you install the
|
18
|
+
+smartcard+ gem, you should be able to use ri to see the documentation. If
|
19
|
+
you're using the SVN version, you can <tt>rake doc</tt> to build the HTML
|
20
|
+
documentation yourself.
|
18
21
|
|
19
22
|
= License
|
20
23
|
|
21
|
-
+smartcard+ is released under the MIT license. This means you're free to do
|
22
|
-
with it. However, it'd be nice to let the developers know if
|
23
|
-
distribution (bragging rights are always good).
|
24
|
-
has the license in legalese.
|
24
|
+
+smartcard+ is released under the MIT license. This means you're free to do
|
25
|
+
whatever you want with it. However, it'd be nice to let the developers know if
|
26
|
+
you plan to include this in a distribution (bragging rights are always good).
|
27
|
+
The {LICENSE file}[link://files/LICENSE.html] has the license in legalese.
|
25
28
|
|
26
29
|
= Acknowledgements
|
27
30
|
|
28
|
-
+smartcard+ is developed by Victor Costan while working as a Research Assistant
|
29
|
-
{Prof. Srini Devadas}[http://people.csail.mit.edu/devadas/], in
|
30
|
-
{Trusted Computing group}[http://projects.csail.mit.edu/tc/].
|
31
|
-
|
31
|
+
+smartcard+ is developed by Victor Costan while working as a Research Assistant
|
32
|
+
for MIT, under {Prof. Srini Devadas}[http://people.csail.mit.edu/devadas/], in
|
33
|
+
the {Trusted Computing group}[http://projects.csail.mit.edu/tc/].
|
34
|
+
|
35
|
+
The work is funded by a grant from
|
36
|
+
{Quanta Computer Inc}[http://www.quanta.com.tw], under the
|
32
37
|
{T-Party Project}[http://projects.csail.mit.edu/tparty/].
|
data/Rakefile
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
gem 'echoe'
|
3
|
+
require 'echoe'
|
4
|
+
|
5
|
+
Echoe.new('smartcard') do |p|
|
6
|
+
p.project = 'smartcard' # rubyforge project
|
7
|
+
|
8
|
+
p.author = 'Victor Costan'
|
9
|
+
p.email = 'victor@costan.us'
|
10
|
+
p.summary = 'Interface with ISO 7816 smart cards.'
|
11
|
+
p.url = 'http://www.costan.us/smartcard'
|
12
|
+
|
13
|
+
p.need_tar_gz = !Platform.windows?
|
14
|
+
p.need_zip = !Platform.windows?
|
15
|
+
p.clean_pattern += ['ext/**/*.manifest', 'ext/**/*_autogen.h']
|
16
|
+
p.rdoc_pattern = /^(lib|bin|tasks|ext)|^BUILD|^README|^CHANGELOG|^TODO|^LICENSE|^COPYING$/
|
17
|
+
|
18
|
+
p.eval = proc do |p|
|
19
|
+
if Platform.windows?
|
20
|
+
p.files += ['lib/smartcard/pcsc.so']
|
21
|
+
p.platform = Gem::Platform::CURRENT
|
22
|
+
|
23
|
+
# take out the extension info from the gemspec
|
24
|
+
task :postcompile_hacks => [:compile] do
|
25
|
+
p.extensions.clear
|
26
|
+
end
|
27
|
+
|
28
|
+
task :package => [ :clean, :compile, :postcompile_hacks ]
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
if $0 == __FILE__
|
34
|
+
Rake.application = Rake::Application.new
|
35
|
+
Rake.application.run
|
36
|
+
end
|
@@ -12,9 +12,10 @@ if RUBY_PLATFORM =~ /darwin/
|
|
12
12
|
pcsc_defines.push 'RB_SMARTCARD_OSX_TIGER_HACK'
|
13
13
|
end
|
14
14
|
elsif RUBY_PLATFORM =~ /win/
|
15
|
-
|
16
15
|
have_library('winscard')
|
17
|
-
|
16
|
+
unless have_library('winscard', 'SCardIsValidContext')
|
17
|
+
pcsc_defines << 'PCSC_SURROGATE_SCARD_IS_VALID_CONTEXT'
|
18
|
+
end
|
18
19
|
else
|
19
20
|
# pcsclite is retarded and uses stuff like '#include <wintypes.h>'
|
20
21
|
$CFLAGS += ' -I /usr/include/PCSC -I /usr/local/include/PCSC'
|
@@ -25,7 +26,9 @@ pcsc_headers = []
|
|
25
26
|
['wintypes.h', 'reader.h', 'winscard.h', 'pcsclite.h'].each do |header|
|
26
27
|
['', 'PCSC/', './pcsc_surrogate_'].each do |path_prefix|
|
27
28
|
if have_header(path_prefix + header)
|
28
|
-
pcsc_headers.push((path_prefix[0,1] == '.') ?
|
29
|
+
pcsc_headers.push((path_prefix[0,1] == '.') ?
|
30
|
+
"\"#{path_prefix + header}\"" :
|
31
|
+
"<#{path_prefix + header}>")
|
29
32
|
break
|
30
33
|
end
|
31
34
|
end
|
@@ -34,9 +37,15 @@ end
|
|
34
37
|
File.open('pcsc_autogen.h', 'w') do |f|
|
35
38
|
pcsc_defines.each { |d| f.write "\#define #{d}\n" }
|
36
39
|
pcsc_headers.each { |h| f.write "\#include #{h}\n" }
|
37
|
-
end
|
40
|
+
end
|
41
|
+
|
42
|
+
if have_macro('SCARDHANDLE', ['pcsc_autogen.h']) or
|
43
|
+
have_type('SCARDHANDLE', ['pcsc_autogen.h'])
|
44
|
+
create_makefile('smartcard/pcsc')
|
45
|
+
else
|
46
|
+
STDERR.write "PC/SC libraries missing!\n"
|
47
|
+
end
|
38
48
|
|
39
|
-
create_makefile('smartcard/pcsc')
|
40
49
|
|
41
50
|
def win32_hack(mf_name)
|
42
51
|
# get the version of MSVC
|
@@ -50,7 +59,7 @@ def win32_hack(mf_name)
|
|
50
59
|
return if msvc_ver == 12
|
51
60
|
end
|
52
61
|
|
53
|
-
#
|
62
|
+
# HACK: monkey-patch the makefile to embed a manifest in the extension dll
|
54
63
|
make_contents = File.open(mf_name, 'r') { |f| f.read }
|
55
64
|
make_rules = make_contents.split(/(\n|\r)(\n|\r)+/)
|
56
65
|
new_make_rules = make_rules.map do |rule|
|
@@ -38,7 +38,8 @@ static VALUE PCSC_ReaderStates_alloc(VALUE klass) {
|
|
38
38
|
* new(num_states) --> reader_states
|
39
39
|
*
|
40
40
|
* Creates an array of +num_states+ reader state elements.
|
41
|
-
* The states are unusable until they are assigned reader names by calling
|
41
|
+
* The states are unusable until they are assigned reader names by calling
|
42
|
+
* Smartcard::PCSC::ReaderStates#set_reader_name_of.
|
42
43
|
*/
|
43
44
|
static VALUE PCSC_ReaderStates_initialize(VALUE self, VALUE rbNumStates) {
|
44
45
|
struct PCSCReaderStates *states;
|
@@ -77,10 +78,12 @@ static int _validate_readerstates_args(VALUE rbReaderStates, VALUE rbIndex, stru
|
|
77
78
|
* call-seq:
|
78
79
|
* current_state_of(index) --> current_state
|
79
80
|
*
|
80
|
-
* The current state (_dwCurrentState_ in PC/SC) in the <tt>index</tt>th reader
|
81
|
-
* Smartcard::PCSC::Context#get_status_change blocks as long as
|
81
|
+
* The current state (_dwCurrentState_ in PC/SC) in the <tt>index</tt>th reader
|
82
|
+
* state element. Smartcard::PCSC::Context#get_status_change blocks as long as
|
83
|
+
* the reader state equals this value.
|
82
84
|
*
|
83
|
-
* The returned state is a bitfield; the bits are defined in the
|
85
|
+
* The returned state is a bitfield; the bits are defined in the
|
86
|
+
* Smartcard::PCSC::STATE_ constants. See Smartcard::PCSC::STATE_UNAWARE.
|
84
87
|
*
|
85
88
|
* +index+:: the 0-based index of the reader state element to be queried
|
86
89
|
*/
|
@@ -98,10 +101,12 @@ static VALUE PCSC_ReaderStates_current_state_of(VALUE self, VALUE rbIndex) {
|
|
98
101
|
* call-seq:
|
99
102
|
* event_state_of(index) --> event_state
|
100
103
|
*
|
101
|
-
* The event state (_dwEventState_ in PC/SC) in the <tt>index</tt>th reader
|
102
|
-
* Smartcard::PCSC::Context#get_status_change stores the updated
|
104
|
+
* The event state (_dwEventState_ in PC/SC) in the <tt>index</tt>th reader
|
105
|
+
* state element. Smartcard::PCSC::Context#get_status_change stores the updated
|
106
|
+
* reader state in this value.
|
103
107
|
*
|
104
|
-
* The returned state is a bitfield; the bits are defined in the
|
108
|
+
* The returned state is a bitfield; the bits are defined in the
|
109
|
+
* Smartcard::PCSC::STATE_ constants. See Smartcard::PCSC::STATE_UNAWARE.
|
105
110
|
*
|
106
111
|
* +index+:: the 0-based index of the reader state element to be queried
|
107
112
|
*/
|
data/lib/smartcard/pcsc.so
CHANGED
Binary file
|
data/smartcard.gemspec
CHANGED
@@ -1,66 +1,32 @@
|
|
1
|
-
|
2
|
-
# Gem::Specification for Smartcard-0.3.1
|
3
|
-
# Originally generated by Echoe
|
1
|
+
# -*- encoding: utf-8 -*-
|
4
2
|
|
5
3
|
Gem::Specification.new do |s|
|
6
4
|
s.name = %q{smartcard}
|
7
|
-
s.version = "0.3.
|
5
|
+
s.version = "0.3.2"
|
8
6
|
s.platform = %q{x86-mswin32-60}
|
9
7
|
|
10
|
-
s.
|
11
|
-
|
12
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
13
9
|
s.authors = ["Victor Costan"]
|
14
|
-
s.date = %q{
|
10
|
+
s.date = %q{2009-06-01}
|
15
11
|
s.description = %q{Interface with ISO 7816 smart cards.}
|
16
12
|
s.email = %q{victor@costan.us}
|
17
13
|
s.extra_rdoc_files = ["BUILD", "CHANGELOG", "ext/smartcard_pcsc/extconf.rb", "ext/smartcard_pcsc/pcsc.h", "ext/smartcard_pcsc/pcsc_card.c", "ext/smartcard_pcsc/pcsc_constants.c", "ext/smartcard_pcsc/pcsc_context.c", "ext/smartcard_pcsc/pcsc_exception.c", "ext/smartcard_pcsc/pcsc_io_request.c", "ext/smartcard_pcsc/pcsc_main.c", "ext/smartcard_pcsc/pcsc_multi_strings.c", "ext/smartcard_pcsc/pcsc_namespace.c", "ext/smartcard_pcsc/pcsc_reader_states.c", "ext/smartcard_pcsc/pcsc_surrogate_reader.h", "ext/smartcard_pcsc/pcsc_surrogate_wintypes.h", "lib/smartcard/pcsc_exception.rb", "lib/smartcard.rb", "LICENSE", "README"]
|
18
|
-
s.files = ["BUILD", "CHANGELOG", "ext/smartcard_pcsc/extconf.rb", "ext/smartcard_pcsc/pcsc.h", "ext/smartcard_pcsc/pcsc_card.c", "ext/smartcard_pcsc/pcsc_constants.c", "ext/smartcard_pcsc/pcsc_context.c", "ext/smartcard_pcsc/pcsc_exception.c", "ext/smartcard_pcsc/pcsc_io_request.c", "ext/smartcard_pcsc/pcsc_main.c", "ext/smartcard_pcsc/pcsc_multi_strings.c", "ext/smartcard_pcsc/pcsc_namespace.c", "ext/smartcard_pcsc/pcsc_reader_states.c", "ext/smartcard_pcsc/pcsc_surrogate_reader.h", "ext/smartcard_pcsc/pcsc_surrogate_wintypes.h", "lib/smartcard/pcsc_exception.rb", "lib/smartcard.rb", "LICENSE", "Manifest", "README", "test/test_containers.rb", "test/test_smoke.rb", "tests/ts_pcsc_ext.rb", "smartcard.gemspec", "lib/smartcard/pcsc.so"]
|
19
|
-
s.has_rdoc = true
|
14
|
+
s.files = ["BUILD", "CHANGELOG", "ext/smartcard_pcsc/extconf.rb", "ext/smartcard_pcsc/pcsc.h", "ext/smartcard_pcsc/pcsc_card.c", "ext/smartcard_pcsc/pcsc_constants.c", "ext/smartcard_pcsc/pcsc_context.c", "ext/smartcard_pcsc/pcsc_exception.c", "ext/smartcard_pcsc/pcsc_io_request.c", "ext/smartcard_pcsc/pcsc_main.c", "ext/smartcard_pcsc/pcsc_multi_strings.c", "ext/smartcard_pcsc/pcsc_namespace.c", "ext/smartcard_pcsc/pcsc_reader_states.c", "ext/smartcard_pcsc/pcsc_surrogate_reader.h", "ext/smartcard_pcsc/pcsc_surrogate_wintypes.h", "lib/smartcard/pcsc_exception.rb", "lib/smartcard.rb", "LICENSE", "Manifest", "README", "test/test_containers.rb", "test/test_smoke.rb", "tests/ts_pcsc_ext.rb", "smartcard.gemspec", "Rakefile", "lib/smartcard/pcsc.so"]
|
20
15
|
s.homepage = %q{http://www.costan.us/smartcard}
|
21
16
|
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Smartcard", "--main", "README"]
|
22
17
|
s.require_paths = ["lib", "ext"]
|
23
18
|
s.rubyforge_project = %q{smartcard}
|
24
|
-
s.rubygems_version = %q{1.
|
19
|
+
s.rubygems_version = %q{1.3.4}
|
25
20
|
s.summary = %q{Interface with ISO 7816 smart cards.}
|
26
21
|
s.test_files = ["test/test_containers.rb", "test/test_smoke.rb"]
|
27
|
-
end
|
28
22
|
|
23
|
+
if s.respond_to? :specification_version then
|
24
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
25
|
+
s.specification_version = 3
|
29
26
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
# Echoe.new('smartcard') do |p|
|
37
|
-
# p.project = 'smartcard' # rubyforge project
|
38
|
-
#
|
39
|
-
# p.author = 'Victor Costan'
|
40
|
-
# p.email = 'victor@costan.us'
|
41
|
-
# p.summary = 'Interface with ISO 7816 smart cards.'
|
42
|
-
# p.url = 'http://www.costan.us/smartcard'
|
43
|
-
#
|
44
|
-
# p.need_tar_gz = false
|
45
|
-
# p.clean_pattern += ['ext/**/*.manifest', 'ext/**/*_autogen.h']
|
46
|
-
# p.rdoc_pattern = /^(lib|bin|tasks|ext)|^BUILD|^README|^CHANGELOG|^TODO|^LICENSE|^COPYING$/
|
47
|
-
#
|
48
|
-
# p.eval = proc do |p|
|
49
|
-
# if Platform.windows?
|
50
|
-
# p.files += ['lib/smartcard/pcsc.so']
|
51
|
-
# p.platform = Gem::Platform::CURRENT
|
52
|
-
#
|
53
|
-
# # take out the extension info from the gemspec
|
54
|
-
# task :postcompile_hacks => [:compile] do
|
55
|
-
# p.extensions.clear
|
56
|
-
# end
|
57
|
-
#
|
58
|
-
# task :package => [ :clean, :compile, :postcompile_hacks ]
|
59
|
-
# end
|
60
|
-
# end
|
61
|
-
# end
|
62
|
-
#
|
63
|
-
# if $0 == __FILE__
|
64
|
-
# Rake.application = Rake::Application.new
|
65
|
-
# Rake.application.run
|
66
|
-
# end
|
27
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
28
|
+
else
|
29
|
+
end
|
30
|
+
else
|
31
|
+
end
|
32
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: smartcard
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.2
|
5
5
|
platform: x86-mswin32-60
|
6
6
|
authors:
|
7
7
|
- Victor Costan
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2009-06-01 00:00:00 -04:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -64,9 +64,12 @@ files:
|
|
64
64
|
- test/test_smoke.rb
|
65
65
|
- tests/ts_pcsc_ext.rb
|
66
66
|
- smartcard.gemspec
|
67
|
+
- Rakefile
|
67
68
|
- lib/smartcard/pcsc.so
|
68
69
|
has_rdoc: true
|
69
70
|
homepage: http://www.costan.us/smartcard
|
71
|
+
licenses: []
|
72
|
+
|
70
73
|
post_install_message:
|
71
74
|
rdoc_options:
|
72
75
|
- --line-numbers
|
@@ -88,14 +91,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
88
91
|
requirements:
|
89
92
|
- - ">="
|
90
93
|
- !ruby/object:Gem::Version
|
91
|
-
version: "
|
94
|
+
version: "1.2"
|
92
95
|
version:
|
93
96
|
requirements: []
|
94
97
|
|
95
98
|
rubyforge_project: smartcard
|
96
|
-
rubygems_version: 1.
|
99
|
+
rubygems_version: 1.3.4
|
97
100
|
signing_key:
|
98
|
-
specification_version:
|
101
|
+
specification_version: 3
|
99
102
|
summary: Interface with ISO 7816 smart cards.
|
100
103
|
test_files:
|
101
104
|
- test/test_containers.rb
|