06.11.2014 Views

A User Centric Security Model for Tamper-Resistant Devices

A User Centric Security Model for Tamper-Resistant Devices

A User Centric Security Model for Tamper-Resistant Devices

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

C.11 Implementation Helper Classes<br />

253 byte [ ] hex = new byte [ 2 ∗ inArray . l e n g t h ] ;<br />

254 int index = 0 ;<br />

255 <strong>for</strong> ( byte b : inArray ) {<br />

256 int v = b & 0xFF ;<br />

257 hex [ index++] = HEX_CHAR_TABLE[ v >>> 4 ] ;<br />

258 hex [ index++] = HEX_CHAR_TABLE[ v & 0xF ] ;<br />

259 }<br />

260 try {<br />

261 return new S t r i n g ( hex , "ASCII" ) ;<br />

262 } catch ( Exception cE ) {<br />

263 System . out . p r i n t l n ( " Exception in bytesToString : " +<br />

264 cE . getMessage ( ) ) ;<br />

265 }<br />

266 return " Error " ;<br />

267 }<br />

268 }<br />

C.11.2<br />

CAMS Implementation<br />

The implementation of the helper function discussed in this section provides the functionality<br />

of a Card Application Management System (CAMS) that provides an interface to the<br />

smart card.<br />

1 package j a v a c a r d t e r m i n a l ;<br />

2 import java . u t i l . ∗ ;<br />

3 import javax . smartcardio . ∗ ;<br />

4 import java . math . B i g I n t e g e r ;<br />

5 import java . i o . FileOutputStream ;<br />

6 import java . i o . PrintWriter ;<br />

7 public class Terminal {<br />

8 long protocolStartTime = 0 ;<br />

9 long protocolEndTime = 0 ;<br />

10 TerminalFactory myTerminal = TerminalFactory . g e t D e f a u l t ( ) ;<br />

11 CardTerminals myCardTerminals = myTerminal . t e r m i n a l s ( ) ;<br />

12 L i s t < CardTerminal > l i s t T e r m i n a l = null ;<br />

13 Card myCard = null ;<br />

14 CardChannel myCardChannel = null ;<br />

15 CardTerminal myCardTerminal = null ;<br />

16 ProtocolHandler myProtocolHandler = new ProtocolHandler ( ) ;<br />

17 ProtocolHandlerSCIn myProtocolHanlderSCIn = new ProtocolHandlerSCIn ( ) ;<br />

18 private s t a t i c f i n a l int TimeOut = 1 0 ;<br />

19 private s t a t i c f i n a l int MAX_APDU_SIZE = 1028;<br />

20 private ConstructedTLV messageIncoming =<br />

ConstructedTLV . getConstructedTLV ( ) ;<br />

21 private s t a t i c f i n a l byte [ ] CMD_APPLICATION_SELECT = {<br />

22 ( byte ) 0x00 , ( byte ) 0xA4 , ( byte ) 0x04 , ( byte ) 0x00 , ( byte ) 0x09 ,<br />

( byte ) 0xD0 ,<br />

23 ( byte ) 0x00 , ( byte ) 0x00 , ( byte ) 0x00 , ( byte ) 0x62 , ( byte ) 0x02 ,<br />

( byte ) 0x01 ,<br />

24 ( byte ) 0x0C , ( byte ) 0x08 } ;<br />

25 private s t a t i c f i n a l byte [ ] CMD_APPLICATION_INITIALISATION = {<br />

439

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!