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.5 Secure and Trusted Channel Protocol Smart Card<br />

237 apdu . setOutgoingLength ( ( short ) copyPointer ) ;<br />

238 apdu . sendBytesLong ( r e c e i v i n g B u f f e r , ( short ) 0 , ( short ) copyPointer ) ;<br />

239 } else i f ( this . r e c e i v i n g B u f f e r [ 3 ] == this . MessageHandlerTagTwo [ 3 ] ) {<br />

240 i f ( processSecondMsg ( r e c e i v i n g B u f f e r ) ) {<br />

241 return ;<br />

242 } else {<br />

243 ISOException . throwIt ( ( short ) 0xFA17) ;<br />

244 }<br />

245 return ;<br />

246 } else {<br />

247 ISOException . throwIt ( ProtocolHandler .SW_ERROR_INS) ;<br />

248 }<br />

249 JCSystem . r e q u e s t O b j e c t D e l e t i o n ( ) ;<br />

250 }<br />

251 private void generateResponse ( short msgNumber) {<br />

252 short childPM1 = 0 ;<br />

253 short childPM2 = 0 ;<br />

254 copyPointer = 0 ;<br />

255 i f (msgNumber == 1) {<br />

256 copyPointer = U t i l . arrayCopy ( this . SCProtocolInitiatorTag , ( short ) 0 ,<br />

257 this . r e c e i v i n g B u f f e r , copyPointer ,<br />

258 ( short )<br />

259 this . S C P r o t o c o l I n i t i a t o r T a g . l e n g t h ) ;<br />

260 randomDataGen . generateData ( this . SCRandomNumberArray ,<br />

261 this . PTLVDataOffset , ( short ) 16) ;<br />

262 childPM1 = copyPointer ;<br />

263 copyPointer += 2 ;<br />

264 phMacGeneratorKey . setKey ( this . SCRandomNumberArray ,<br />

265 this . PTLVDataOffset ) ;<br />

266 phMacGenerator . i n i t ( phMacGeneratorKey , S i g n a t u r e .MODE_SIGN,<br />

267 I n i t i a l i s a t i o n V e c t o r , ( short ) 0 , ( short )<br />

268 I n i t i a l i s a t i o n V e c t o r . l e n g t h ) ;<br />

269 short l e n g t h = 0 ;<br />

270 l e n g t h = phMacGenerator . s i g n (SCDHData , ( short ) this . PTLVDataOffset ,<br />

271 ( short ) (SCDHData . l e n g t h −<br />

272 this . PTLVDataOffset ) ,<br />

273 this . r e c e i v i n g B u f f e r , copyPointer ) ;<br />

274 copyPointer += l e n g t h ;<br />

275 this . shortToBytes ( this . r e c e i v i n g B u f f e r , childPM1 , l e n g t h ) ;<br />

276 return ;<br />

277 } else i f (msgNumber == 2) {<br />

278 this . dhKeyConGen( this . SPDHChanllengerArray , this . PTLVDataOffset ,<br />

279 ProtocolHandler .GEN_DHKEY) ;<br />

280 keygenerator ( ) ;<br />

281 childPM1 = ( short ) 6 ;<br />

282 copyPointer = U t i l . arrayCopyNonAtomic ( this . MessageHandlerTagTwo ,<br />

283 ( short ) 0 , this . r e c e i v i n g B u f f e r , copyPointer , ( short )<br />

284 this . MessageHandlerTagTwo . l e n g t h ) ;<br />

285 copyPointer = U t i l . arrayCopyNonAtomic ( this . SCDHData , ( short ) 0 ,<br />

286 this . r e c e i v i n g B u f f e r , ( short ) copyPointer , ( short )<br />

287 this . SCDHData . l e n g t h ) ;<br />

318

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

Saved successfully!

Ooh no, something went wrong!