smartcard 0.2.0-mswin32 → 0.2.1-mswin32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +4 -0
 - data/README +22 -15
 - data/ext/smartcard_pcsc/extconf.rb +6 -2
 - data/ext/smartcard_pcsc/pcsc_card.c +20 -3
 - data/ext/smartcard_pcsc/pcsc_constants.c +10 -8
 - data/ext/smartcard_pcsc/pcsc_context.c +5 -1
 - data/lib/smartcard/pcsc.so +0 -0
 - data/smartcard.gemspec +5 -3
 - data/tests/ts_pcsc_ext.rb +5 -1
 - metadata +2 -2
 
    
        data/CHANGELOG
    CHANGED
    
    
    
        data/README
    CHANGED
    
    | 
         @@ -1,22 +1,29 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            +smartcard+ aims to become the standard support library for smart-card development on ruby.
         
     | 
| 
      
 2 
     | 
    
         
            +
            Right now, the project offers a PC/SC binding that is working on ruby 1.8, under
         
     | 
| 
      
 3 
     | 
    
         
            +
            Linux, OSX, and Windows. Future plans include a high level abstraction for the PC/SC binding 
         
     | 
| 
      
 4 
     | 
    
         
            +
            (plus any other bindings people need), and an interface for Java cards.
         
     | 
| 
       2 
5 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            At the moment, 'smartcard' offers a PC/SC binding that is working on ruby 1.8, under
         
     | 
| 
       5 
     | 
    
         
            -
            linux, osx, and windows. Future plans include a high level abstraction for the PC/SC binding 
         
     | 
| 
       6 
     | 
    
         
            -
            (and any other bindings people need), and an interface for Java cards.
         
     | 
| 
      
 6 
     | 
    
         
            +
            = Installation
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
      
 8 
     | 
    
         
            +
            	gem install smartcard
         
     | 
| 
      
 9 
     | 
    
         
            +
            Windows:: Select the <tt>win32</tt> gem.
         
     | 
| 
      
 10 
     | 
    
         
            +
            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] for details. The file also contains package lists for popular distributions.
         
     | 
| 
       9 
12 
     | 
    
         | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
            with it. For the legalese version, please see the 'LICENSE' file.
         
     | 
| 
      
 13 
     | 
    
         
            +
            = Documentation
         
     | 
| 
       12 
14 
     | 
    
         | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
      
 15 
     | 
    
         
            +
            The documentation you see was generated with RDoc. If you install the +smartcard+ gem, you should be
         
     | 
| 
      
 16 
     | 
    
         
            +
            able to use ri to see the documentation. If you're using the SVN version, you can <tt>rake doc</tt> to build
         
     | 
| 
      
 17 
     | 
    
         
            +
            the HTML documentation yourself.
         
     | 
| 
       14 
18 
     | 
    
         | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
            able to use ri to see the documentation. If you're using the SVN version, you can use rdoc to
         
     | 
| 
       17 
     | 
    
         
            -
            build the HTML and RI documentation yourself.
         
     | 
| 
      
 19 
     | 
    
         
            +
            = License
         
     | 
| 
       18 
20 
     | 
    
         | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
      
 21 
     | 
    
         
            +
            +smartcard+ is released under the MIT license. This means you're free to do whatever you want
         
     | 
| 
      
 22 
     | 
    
         
            +
            with it. However, it'd be nice to let the developers know if you plan to include this in a
         
     | 
| 
      
 23 
     | 
    
         
            +
            distribution (bragging rights are always good). The {LICENSE file}[link://files/LICENSE.html]
         
     | 
| 
      
 24 
     | 
    
         
            +
            has the license in legalese.
         
     | 
| 
       20 
25 
     | 
    
         | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
      
 26 
     | 
    
         
            +
            = Acknowledgements
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
            +smartcard+ is developed by Victor Costan while working as a Research Assistant for MIT.
         
     | 
| 
      
 29 
     | 
    
         
            +
            The work is sponsored by a grant from Quanta Computer Inc (www.quanta.com.tw)
         
     | 
| 
         @@ -3,8 +3,14 @@ require 'mkmf' 
     | 
|
| 
       3 
3 
     | 
    
         
             
            $CFLAGS ||= ''
         
     | 
| 
       4 
4 
     | 
    
         
             
            $LDFLAGS ||= ''
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
      
 6 
     | 
    
         
            +
            pcsc_defines = []
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
       6 
8 
     | 
    
         
             
            if RUBY_PLATFORM =~ /darwin/
         
     | 
| 
       7 
9 
     | 
    
         
             
              $LDFLAGS += ' -framework PCSC'
         
     | 
| 
      
 10 
     | 
    
         
            +
              darwin_version = `uname -r`
         
     | 
| 
      
 11 
     | 
    
         
            +
              if darwin_version =~ /^8./
         
     | 
| 
      
 12 
     | 
    
         
            +
                pcsc_defines.push 'RB_SMARTCARD_OSX_TIGER_HACK'
         
     | 
| 
      
 13 
     | 
    
         
            +
              end
         
     | 
| 
       8 
14 
     | 
    
         
             
            elsif RUBY_PLATFORM =~ /win/
         
     | 
| 
       9 
15 
     | 
    
         
             
              have_library('winscard')
         
     | 
| 
       10 
16 
     | 
    
         
             
            else
         
     | 
| 
         @@ -23,8 +29,6 @@ pcsc_headers = [] 
     | 
|
| 
       23 
29 
     | 
    
         
             
              end
         
     | 
| 
       24 
30 
     | 
    
         
             
            end
         
     | 
| 
       25 
31 
     | 
    
         | 
| 
       26 
     | 
    
         
            -
            pcsc_defines = []
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
32 
     | 
    
         
             
            File.open('pcsc_autogen.h', 'w') do |f|
         
     | 
| 
       29 
33 
     | 
    
         
             
              pcsc_defines.each { |d| f.write "\#define #{d}\n" }
         
     | 
| 
       30 
34 
     | 
    
         
             
              pcsc_headers.each { |h| f.write "\#include #{h}\n" }
         
     | 
| 
         @@ -192,6 +192,10 @@ static VALUE PCSC_Card_get_attribute(VALUE self, VALUE rbAttributeId) { 
     | 
|
| 
       192 
192 
     | 
    
         | 
| 
       193 
193 
     | 
    
         
             
            	attribute_id = NUM2UINT(rbAttributeId);
         
     | 
| 
       194 
194 
     | 
    
         
             
            	attribute_length;
         
     | 
| 
      
 195 
     | 
    
         
            +
            #if defined(RB_SMARTCARD_OSX_TIGER_HACK)
         
     | 
| 
      
 196 
     | 
    
         
            +
            	card->pcsc_error = SCARD_F_INTERNAL_ERROR;
         
     | 
| 
      
 197 
     | 
    
         
            +
            	rb_raise(rb_eRuntimeError, "SCardSetAttrib: not implemented in OSX Tiger");
         
     | 
| 
      
 198 
     | 
    
         
            +
            #else
         
     | 
| 
       195 
199 
     | 
    
         
             
            	card->pcsc_error = SCardGetAttrib(card->card_handle, attribute_id, NULL, &attribute_length);
         
     | 
| 
       196 
200 
     | 
    
         
             
            	if(card->pcsc_error == SCARD_S_SUCCESS) {
         
     | 
| 
       197 
201 
     | 
    
         
             
            		attribute_buffer = ALLOC_N(char, attribute_length);
         
     | 
| 
         @@ -206,6 +210,7 @@ static VALUE PCSC_Card_get_attribute(VALUE self, VALUE rbAttributeId) { 
     | 
|
| 
       206 
210 
     | 
    
         
             
            	}
         
     | 
| 
       207 
211 
     | 
    
         
             
            	if(card->pcsc_error != SCARD_S_SUCCESS)
         
     | 
| 
       208 
212 
     | 
    
         
             
            		rb_raise(rb_eRuntimeError, "SCardGetAttrib: %s", pcsc_stringify_error(card->pcsc_error));	
         
     | 
| 
      
 213 
     | 
    
         
            +
            #endif
         
     | 
| 
       209 
214 
     | 
    
         
             
            	return Qnil;
         
     | 
| 
       210 
215 
     | 
    
         
             
            }
         
     | 
| 
       211 
216 
     | 
    
         | 
| 
         @@ -236,10 +241,15 @@ static VALUE PCSC_Card_set_attribute(VALUE self, VALUE rbAttributeId, VALUE rbAt 
     | 
|
| 
       236 
241 
     | 
    
         
             
            		rb_raise(rb_eArgError, "second argument (attribute buffer) does not convert to a String");
         
     | 
| 
       237 
242 
     | 
    
         
             
            		return self;
         
     | 
| 
       238 
243 
     | 
    
         
             
            	}
         
     | 
| 
       239 
     | 
    
         
            -
             
     | 
| 
       240 
     | 
    
         
            -
             
     | 
| 
      
 244 
     | 
    
         
            +
             
     | 
| 
      
 245 
     | 
    
         
            +
            #if defined(RB_SMARTCARD_OSX_TIGER_HACK)
         
     | 
| 
      
 246 
     | 
    
         
            +
            	card->pcsc_error = SCARD_F_INTERNAL_ERROR;
         
     | 
| 
      
 247 
     | 
    
         
            +
            	rb_raise(rb_eRuntimeError, "SCardSetAttrib: not implemented in OSX Tiger");
         
     | 
| 
      
 248 
     | 
    
         
            +
            #else
         
     | 
| 
      
 249 
     | 
    
         
            +
            	card->pcsc_error = SCardSetAttrib(card->card_handle, attribute_id, (LPSTR)RSTRING(rbFinalAttributeValue)->ptr, RSTRING(rbFinalAttributeValue)->len);
         
     | 
| 
       241 
250 
     | 
    
         
             
            	if(card->pcsc_error != SCARD_S_SUCCESS)
         
     | 
| 
       242 
251 
     | 
    
         
             
            		rb_raise(rb_eRuntimeError, "SCardSetAttrib: %s", pcsc_stringify_error(card->pcsc_error));	
         
     | 
| 
      
 252 
     | 
    
         
            +
            #endif
         
     | 
| 
       243 
253 
     | 
    
         
             
            	return self;
         
     | 
| 
       244 
254 
     | 
    
         
             
            }
         
     | 
| 
       245 
255 
     | 
    
         | 
| 
         @@ -343,10 +353,17 @@ static VALUE PCSC_Card_control(VALUE self, VALUE rbControlCode, VALUE rbSendData 
     | 
|
| 
       343 
353 
     | 
    
         
             
            	recv_length = NUM2UINT(rbMaxRecvBytes);
         
     | 
| 
       344 
354 
     | 
    
         
             
            	recv_buffer = ALLOC_N(char, recv_length);
         
     | 
| 
       345 
355 
     | 
    
         
             
            	if(recv_buffer == NULL) return Qnil;
         
     | 
| 
       346 
     | 
    
         
            -
             
     | 
| 
      
 356 
     | 
    
         
            +
            		
         
     | 
| 
      
 357 
     | 
    
         
            +
            #if defined(RB_SMARTCARD_OSX_TIGER_HACK)
         
     | 
| 
      
 358 
     | 
    
         
            +
            	/* TODO: this will compile and run, but it won't do anything useful */
         
     | 
| 
      
 359 
     | 
    
         
            +
            	card->pcsc_error = SCardControl(card->card_handle,
         
     | 
| 
      
 360 
     | 
    
         
            +
            			(LPSTR)RSTRING(rbFinalSendData)->ptr, RSTRING(rbFinalSendData)->len,
         
     | 
| 
      
 361 
     | 
    
         
            +
            			recv_buffer, &recv_length);
         
     | 
| 
      
 362 
     | 
    
         
            +
            #else
         
     | 
| 
       347 
363 
     | 
    
         
             
            	card->pcsc_error = SCardControl(card->card_handle, control_code,
         
     | 
| 
       348 
364 
     | 
    
         
             
            			(LPSTR)RSTRING(rbFinalSendData)->ptr, RSTRING(rbFinalSendData)->len,
         
     | 
| 
       349 
365 
     | 
    
         
             
            			recv_buffer, recv_length, &recv_length);
         
     | 
| 
      
 366 
     | 
    
         
            +
            #endif
         
     | 
| 
       350 
367 
     | 
    
         
             
            	if(card->pcsc_error != SCARD_S_SUCCESS) {
         
     | 
| 
       351 
368 
     | 
    
         
             
            		xfree(recv_buffer);
         
     | 
| 
       352 
369 
     | 
    
         
             
            		rb_raise(rb_eRuntimeError, "SCardControl: %s", pcsc_stringify_error(card->pcsc_error));
         
     | 
| 
         @@ -50,21 +50,21 @@ void Init_PCSC_Consts() { 
     | 
|
| 
       50 
50 
     | 
    
         
             
            	/* SCARD_F_COMM_ERROR : An internal communications error has been detected. */
         
     | 
| 
       51 
51 
     | 
    
         
             
            	rb_define_const(mPcsc, "SCARD_F_COMM_ERROR", INT2NUM(SCARD_F_COMM_ERROR));
         
     | 
| 
       52 
52 
     | 
    
         
             
            	/* SCARD_F_UNKNOWN_ERROR : An internal error has been detected, but the source is unknown. */
         
     | 
| 
       53 
     | 
    
         
            -
            	rb_define_const(mPcsc, "SCARD_F_UNKNOWN_ERROR", INT2NUM( 
     | 
| 
      
 53 
     | 
    
         
            +
            	rb_define_const(mPcsc, "SCARD_F_UNKNOWN_ERROR", INT2NUM(SCARD_F_UNKNOWN_ERROR));
         
     | 
| 
       54 
54 
     | 
    
         
             
            	/* SCARD_E_INVALID_ATR : An ATR obtained from the registry is not a valid ATR string. */
         
     | 
| 
       55 
     | 
    
         
            -
            	rb_define_const(mPcsc, "SCARD_E_INVALID_ATR", INT2NUM( 
     | 
| 
      
 55 
     | 
    
         
            +
            	rb_define_const(mPcsc, "SCARD_E_INVALID_ATR", INT2NUM(SCARD_E_INVALID_ATR));
         
     | 
| 
       56 
56 
     | 
    
         
             
            	/* SCARD_E_NOT_TRANSACTED : An attempt was made to end a non-existent transaction. */
         
     | 
| 
       57 
     | 
    
         
            -
            	rb_define_const(mPcsc, "SCARD_E_NOT_TRANSACTED", INT2NUM( 
     | 
| 
      
 57 
     | 
    
         
            +
            	rb_define_const(mPcsc, "SCARD_E_NOT_TRANSACTED", INT2NUM(SCARD_E_NOT_TRANSACTED));
         
     | 
| 
       58 
58 
     | 
    
         
             
            	/* SCARD_E_READER_UNAVAILABLE : The specified reader is not currently available for use. */
         
     | 
| 
       59 
     | 
    
         
            -
            	rb_define_const(mPcsc, "SCARD_E_READER_UNAVAILABLE", INT2NUM( 
     | 
| 
      
 59 
     | 
    
         
            +
            	rb_define_const(mPcsc, "SCARD_E_READER_UNAVAILABLE", INT2NUM(SCARD_E_READER_UNAVAILABLE));
         
     | 
| 
       60 
60 
     | 
    
         
             
            	/* SCARD_W_UNSUPPORTED_CARD : The reader cannot communicate with the card, due to ATR string configuration conflicts. */
         
     | 
| 
       61 
     | 
    
         
            -
            	rb_define_const(mPcsc, "SCARD_W_UNSUPPORTED_CARD", INT2NUM( 
     | 
| 
      
 61 
     | 
    
         
            +
            	rb_define_const(mPcsc, "SCARD_W_UNSUPPORTED_CARD", INT2NUM(SCARD_W_UNSUPPORTED_CARD));
         
     | 
| 
       62 
62 
     | 
    
         
             
            	/* SCARD_W_UNRESPONSIVE_CARD : The smart card is not responding to a reset. */
         
     | 
| 
       63 
     | 
    
         
            -
            	rb_define_const(mPcsc, "SCARD_W_UNRESPONSIVE_CARD", INT2NUM( 
     | 
| 
      
 63 
     | 
    
         
            +
            	rb_define_const(mPcsc, "SCARD_W_UNRESPONSIVE_CARD", INT2NUM(SCARD_W_UNRESPONSIVE_CARD));
         
     | 
| 
       64 
64 
     | 
    
         
             
            	/* SCARD_W_UNPOWERED_CARD : Power has been removed from the smart card, so that further communication is not possible. */
         
     | 
| 
       65 
     | 
    
         
            -
            	rb_define_const(mPcsc, "SCARD_W_UNPOWERED_CARD", INT2NUM( 
     | 
| 
      
 65 
     | 
    
         
            +
            	rb_define_const(mPcsc, "SCARD_W_UNPOWERED_CARD", INT2NUM(SCARD_W_UNPOWERED_CARD));
         
     | 
| 
       66 
66 
     | 
    
         
             
            	/* SCARD_W_RESET_CARD : The smart card has been reset, so any shared state information is invalid. */
         
     | 
| 
       67 
     | 
    
         
            -
            	rb_define_const(mPcsc, "SCARD_W_RESET_CARD", INT2NUM( 
     | 
| 
      
 67 
     | 
    
         
            +
            	rb_define_const(mPcsc, "SCARD_W_RESET_CARD", INT2NUM(SCARD_W_RESET_CARD));
         
     | 
| 
       68 
68 
     | 
    
         
             
            	/* SCARD_W_REMOVED_CARD : The smart card has been removed, so further communication is not possible. */
         
     | 
| 
       69 
69 
     | 
    
         
             
            	rb_define_const(mPcsc, "SCARD_W_REMOVED_CARD", INT2NUM(SCARD_W_REMOVED_CARD));
         
     | 
| 
       70 
70 
     | 
    
         
             
            	/* SCARD_E_PCI_TOO_SMALL : The PCI Receive buffer was too small. */
         
     | 
| 
         @@ -113,8 +113,10 @@ void Init_PCSC_Consts() { 
     | 
|
| 
       113 
113 
     | 
    
         
             
            	rb_define_const(mPcsc, "STATE_INUSE", INT2NUM(SCARD_STATE_INUSE));
         
     | 
| 
       114 
114 
     | 
    
         
             
            	/* SCARD_STATE_MUTE : Unresponsive card. */
         
     | 
| 
       115 
115 
     | 
    
         
             
            	rb_define_const(mPcsc, "STATE_MUTE", INT2NUM(SCARD_STATE_MUTE));
         
     | 
| 
      
 116 
     | 
    
         
            +
            #if defined(SCARD_STATE_UNPOWERED)
         
     | 
| 
       116 
117 
     | 
    
         
             
            	/* SCARD_STATE_UNPOWERED : Unpowered card. */
         
     | 
| 
       117 
118 
     | 
    
         
             
            	rb_define_const(mPcsc, "STATE_UNPOWERED", INT2NUM(SCARD_STATE_UNPOWERED));
         
     | 
| 
      
 119 
     | 
    
         
            +
            #endif /* SCARD_STATE_UNPOWERED */
         
     | 
| 
       118 
120 
     | 
    
         | 
| 
       119 
121 
     | 
    
         
             
            	/* INFINITE : Infinite timeout. */
         
     | 
| 
       120 
122 
     | 
    
         
             
            	rb_define_const(mPcsc, "INFINITE_TIMEOUT", INT2NUM(INFINITE));
         
     | 
| 
         @@ -89,8 +89,12 @@ static VALUE PCSC_Context_is_valid(VALUE self) { 
     | 
|
| 
       89 
89 
     | 
    
         
             
            	Data_Get_Struct(self, struct SCardContextEx, context);
         
     | 
| 
       90 
90 
     | 
    
         
             
            	if(context == NULL) return self;
         
     | 
| 
       91 
91 
     | 
    
         | 
| 
       92 
     | 
    
         
            -
             
     | 
| 
      
 92 
     | 
    
         
            +
            #if defined(RB_SMARTCARD_OSX_TIGER_HACK)	
         
     | 
| 
      
 93 
     | 
    
         
            +
            	return Qtrue;
         
     | 
| 
      
 94 
     | 
    
         
            +
            #else
         
     | 
| 
      
 95 
     | 
    
         
            +
            	context->pcsc_error = SCardIsValidContext(context->pcsc_context);
         
     | 
| 
       93 
96 
     | 
    
         
             
            	return (context->pcsc_error == SCARD_S_SUCCESS) ? Qtrue : Qfalse;
         
     | 
| 
      
 97 
     | 
    
         
            +
            #endif
         
     | 
| 
       94 
98 
     | 
    
         
             
            }
         
     | 
| 
       95 
99 
     | 
    
         | 
| 
       96 
100 
     | 
    
         
             
            /* :Document-method: list_reader_groups
         
     | 
    
        data/lib/smartcard/pcsc.so
    CHANGED
    
    | 
         Binary file 
     | 
    
        data/smartcard.gemspec
    CHANGED
    
    | 
         @@ -1,11 +1,11 @@ 
     | 
|
| 
       1 
1 
     | 
    
         | 
| 
       2 
     | 
    
         
            -
            # Gem::Specification for Smartcard-0.2. 
     | 
| 
      
 2 
     | 
    
         
            +
            # Gem::Specification for Smartcard-0.2.1
         
     | 
| 
       3 
3 
     | 
    
         
             
            # Originally generated by Echoe
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
            Gem::Specification.new do |s|
         
     | 
| 
       6 
6 
     | 
    
         
             
              s.name = %q{smartcard}
         
     | 
| 
       7 
     | 
    
         
            -
              s.version = "0.2. 
     | 
| 
       8 
     | 
    
         
            -
              s.date = %q{2007-11- 
     | 
| 
      
 7 
     | 
    
         
            +
              s.version = "0.2.1"
         
     | 
| 
      
 8 
     | 
    
         
            +
              s.date = %q{2007-11-19}
         
     | 
| 
       9 
9 
     | 
    
         
             
              s.summary = %q{Interface with ISO 7816 smart cards.}
         
     | 
| 
       10 
10 
     | 
    
         
             
              s.require_paths = ["lib", "ext"]
         
     | 
| 
       11 
11 
     | 
    
         
             
              s.email = %q{victor@costan.us}
         
     | 
| 
         @@ -24,6 +24,7 @@ end 
     | 
|
| 
       24 
24 
     | 
    
         
             
            # 
         
     | 
| 
       25 
25 
     | 
    
         
             
            # # Needs the 'echoe' gem
         
     | 
| 
       26 
26 
     | 
    
         
             
            # require 'echoe'
         
     | 
| 
      
 27 
     | 
    
         
            +
            # require 'pp'
         
     | 
| 
       27 
28 
     | 
    
         
             
            # 
         
     | 
| 
       28 
29 
     | 
    
         
             
            # Echoe.new('smartcard') do |p|
         
     | 
| 
       29 
30 
     | 
    
         
             
            #   p.project = 'smartcard' # rubyforge project
         
     | 
| 
         @@ -35,6 +36,7 @@ end 
     | 
|
| 
       35 
36 
     | 
    
         
             
            #   
         
     | 
| 
       36 
37 
     | 
    
         
             
            #   p.need_tar_gz = false
         
     | 
| 
       37 
38 
     | 
    
         
             
            #   p.clean_pattern += ['ext/**/*.manifest', 'ext/**/*_autogen.h']
         
     | 
| 
      
 39 
     | 
    
         
            +
            #   p.rdoc_pattern = /^(lib|bin|tasks|ext)|^BUILD|^README|^CHANGELOG|^TODO|^LICENSE|^COPYING$/
         
     | 
| 
       38 
40 
     | 
    
         
             
            #   
         
     | 
| 
       39 
41 
     | 
    
         
             
            #   p.eval = proc do |p|
         
     | 
| 
       40 
42 
     | 
    
         
             
            #     case RUBY_PLATFORM
         
     | 
    
        data/tests/ts_pcsc_ext.rb
    CHANGED
    
    | 
         @@ -99,7 +99,11 @@ card0 = Smartcard::PCSC::Card.new(context, reader0, Smartcard::PCSC::SHARE_SHARE 
     | 
|
| 
       99 
99 
     | 
    
         
             
            card0.begin_transaction
         
     | 
| 
       100 
100 
     | 
    
         
             
            card0.end_transaction Smartcard::PCSC::DISPOSITION_LEAVE
         
     | 
| 
       101 
101 
     | 
    
         | 
| 
      
 102 
     | 
    
         
            +
            begin
         
     | 
| 
       102 
103 
     | 
    
         
             
            card0.reconnect Smartcard::PCSC::SHARE_EXCLUSIVE, Smartcard::PCSC::PROTOCOL_ANY, Smartcard::PCSC::INITIALIZATION_RESET
         
     | 
| 
      
 104 
     | 
    
         
            +
            rescue RuntimeException => e
         
     | 
| 
      
 105 
     | 
    
         
            +
            puts "Card.reconnect threw exception #{e}\n" 
         
     | 
| 
      
 106 
     | 
    
         
            +
            end
         
     | 
| 
       103 
107 
     | 
    
         | 
| 
       104 
108 
     | 
    
         
             
            card_status = card0.status
         
     | 
| 
       105 
109 
     | 
    
         
             
            pp card_status
         
     | 
| 
         @@ -132,4 +136,4 @@ end 
     | 
|
| 
       132 
136 
     | 
    
         | 
| 
       133 
137 
     | 
    
         
             
            puts "Disconnecting and cleaning up\n"
         
     | 
| 
       134 
138 
     | 
    
         
             
            card0.disconnect Smartcard::PCSC::DISPOSITION_LEAVE
         
     | 
| 
       135 
     | 
    
         
            -
            context.release
         
     | 
| 
      
 139 
     | 
    
         
            +
            context.release
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -3,8 +3,8 @@ rubygems_version: 0.9.2 
     | 
|
| 
       3 
3 
     | 
    
         
             
            specification_version: 1
         
     | 
| 
       4 
4 
     | 
    
         
             
            name: smartcard
         
     | 
| 
       5 
5 
     | 
    
         
             
            version: !ruby/object:Gem::Version 
         
     | 
| 
       6 
     | 
    
         
            -
              version: 0.2. 
     | 
| 
       7 
     | 
    
         
            -
            date: 2007-11- 
     | 
| 
      
 6 
     | 
    
         
            +
              version: 0.2.1
         
     | 
| 
      
 7 
     | 
    
         
            +
            date: 2007-11-19 00:00:00 -05:00
         
     | 
| 
       8 
8 
     | 
    
         
             
            summary: Interface with ISO 7816 smart cards.
         
     | 
| 
       9 
9 
     | 
    
         
             
            require_paths: 
         
     | 
| 
       10 
10 
     | 
    
         
             
            - lib
         
     |