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.9 Plat<strong>for</strong>m Binding Protocol<br />

552 return true ;<br />

553 } else i f (macMode == S i g n a t u r e .MODE_VERIFY) {<br />

554 try {<br />

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

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

557 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 />

558 return phMacGenerator . v e r i f y ( this . r e c e i v i n g B u f f e r ,<br />

559 i n b u f f O f f s e t , inbuffLength , i n b u f f , ( short ) ( i n b u f f O f f s e t +<br />

560 inbuffLength + this . PTLVDataOffset ) , ( short ) 16) ;<br />

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

562 ISOException . throwIt ( ( short ) 0xC1C2) ;<br />

563 }<br />

564 }<br />

565 return f a l s e ;<br />

566 }<br />

567 boolean signGenerate ( byte [ ] i n b u f f , short i n b u f f O f f s e t , short<br />

568 i n b u f f l e n g t h , Key kpSign , short signMode ) {<br />

569 i f ( signMode == S i g n a t u r e .MODE_SIGN) {<br />

570 copyPointer = U t i l . arrayCopyNonAtomic ( this . SignedDataTag ,<br />

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

572 this . SignedDataTag . l e n g t h ) ;<br />

573 copyPointer += ( short ) 2 ;<br />

574 phSign . i n i t ( ( RSAPrivateKey ) kpSign , S i g n a t u r e .MODE_SIGN) ;<br />

575 s i g n l e n g t h = phSign . s i g n ( i n b u f f , ( short ) i n b u f f O f f s e t ,<br />

576 i n b u f f l e n g t h , i n b u f f , copyPointer ) ;<br />

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

578 ( short ) 2) , s i g n l e n g t h ) ;<br />

579 copyPointer += s i g n l e n g t h ;<br />

580 return true ;<br />

581 } else i f ( signMode == S i g n a t u r e .MODE_VERIFY) {<br />

582 phSign . i n i t ( ( RSAPublicKey ) kpSign , S i g n a t u r e .MODE_VERIFY) ;<br />

583 return phSign . v e r i f y ( i n b u f f , i n b u f f O f f s e t , i n b u f f l e n g t h , i n b u f f ,<br />

584 ( short ) ( i n b u f f O f f s e t + i n b u f f l e n g t h +<br />

585 this . PTLVDataOffset ) , ( short ) 64) ;<br />

586 }<br />

587 return f a l s e ;<br />

588 }<br />

589 public s t a t i c short bytesToShort ( byte [ ] ArrayBytes ) {<br />

590 return ( short ) ( ( ( ArrayBytes [ 0 ] <br />

600 ( short ) 0 x0008 ) ;<br />

601 Array [ ( short ) ( a r r a y O f f s e t + ( short ) 1) ] = ( byte ) ( inShort & ( short )<br />

602 0x00FF ) ;<br />

429

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

Saved successfully!

Ooh no, something went wrong!