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.6 Application Acquisition and Contractual Agreement Protocol<br />

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

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

( short ) this . MACedDataTag . l e n g t h )<br />

766 ;<br />

767 copyPointer += 2 ;<br />

768 short l e n g t h = ( short ) phMacGenerator . s i g n ( this . r e c e i v i n g B u f f e r ,<br />

769 i n b u f f O f f s e t , inbuffLength , i n b u f f , copyPointer ) ;<br />

770 this . shortToBytes ( i n b u f f , ( short ) ( copyPointer − ( short ) 2) , l e n g t h ) ;<br />

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

772 return true ;<br />

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

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

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

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

777 return phMacGenerator . v e r i f y ( 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 />

778 inbuffLength , i n b u f f , ( short )<br />

779 ( i n b u f f O f f s e t + inbuffLength +<br />

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

781 }<br />

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

783 }<br />

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

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

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

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

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

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

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

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

792 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 , i n b u f f l e n g t h ,<br />

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

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

( short )<br />

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

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

797 return true ;<br />

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

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

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

801 ( 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 />

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

803 }<br />

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

805 }<br />

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

807 return ( short ) ( ( ( ArrayBytes [ 0 ]

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

Saved successfully!

Ooh no, something went wrong!