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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

C.8 Application Binding Protocol - Distributed<br />

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

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

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

534 try {<br />

535 copyPointer = U t i l . arrayCopyNonAtomic ( this . MACedDataTag ,<br />

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

537 this . MACedDataTag . l e n g t h ) ;<br />

538 copyPointer += 2 ;<br />

539 } catch ( Exception ce ) {<br />

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

541 }<br />

542 try {<br />

543 short l e n g t h = ( short ) phMacGenerator . s i g n<br />

544 ( this . r e c e i v i n g B u f f e r , i n b u f f O f f s e t ,<br />

545 inbuffLength , i n b u f f , copyPointer ) ;<br />

546 this . shortToBytes ( i n b u f f , ( short ) ( copyPointer − ( short ) 2) ,<br />

547 l e n g t h ) ;<br />

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

549 } catch ( Exception ce ) {<br />

550 ISOException . throwIt ( ( short ) 0 x0987 ) ;<br />

551 }<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 />

403

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

Saved successfully!

Ooh no, something went wrong!