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

715 JCSystem .MEMORY_TYPE_TRANSIENT_DESELECT) ;<br />

716 short p o i n t e r = 0 ;<br />

717 p o i n t e r = U t i l . arrayCopyNonAtomic ( this . SPRandomNumberArray ,<br />

718 this . PTLVDataOffset , keyGenMacData , ( short ) pointer , ( short ) 16) ;<br />

719 p o i n t e r = U t i l . arrayCopyNonAtomic ( this . SCRandomNumberArray ,<br />

720 this . PTLVDataOffset , keyGenMacData , ( short ) pointer , ( short ) 16) ;<br />

721 p o i n t e r = U t i l . arrayCopyNonAtomic ( SCSPDHGeneratedValue , ( short ) 16 ,<br />

722 keyGenMacData , ( short ) pointer , ( short ) 16) ;<br />

723 <strong>for</strong> ( short i = 4 8 ; i < 6 4 ; i ++) {<br />

724 keyGenMacData [ i ] = ( byte ) 0x02 ;<br />

725 }<br />

726 phMacGenerator . s i g n ( keyGenMacData , ( short ) 0 , ( short )<br />

727 keyGenMacData . length , SCSPDHGeneratedValue ,<br />

( short )<br />

728 0) ;<br />

729 this . phCipherKey . setKey ( SCSPDHGeneratedValue , ( short ) 0) ;<br />

730 <strong>for</strong> ( short i = 4 8 ; i < 6 4 ; i ++) {<br />

731 keyGenMacData [ i ] = ( byte ) 0x03 ;<br />

732 }<br />

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

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

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

736 phMacGenerator . s i g n ( keyGenMacData , ( short ) 0 , ( short )<br />

737 keyGenMacData . length , SCSPDHGeneratedValue ,<br />

( short )<br />

738 0) ;<br />

739 this . phMacGeneratorKey . setKey ( SCSPDHGeneratedValue , ( short ) 0) ;<br />

740 SCSPDHGeneratedValue = null ;<br />

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

742 }<br />

743 void messageEncryption ( byte [ ] i n b u f f , short i n b u f f O f f s e t , short<br />

744 inbuffLength ) {<br />

745 syCipher . i n i t ( phCipherKey , Cipher .MODE_ENCRYPT, I n i t i a l i s a t i o n V e c t o r ,<br />

746 ( short ) 0 , ( short ) 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 />

747 this . shortToBytes ( i n b u f f , ( short ) ( i n b u f f O f f s e t − 3) , ( short ) syCipher<br />

748 . doFinal ( i n b u f f , i n b u f f O f f s e t , inbuffLength , i n b u f f ,<br />

749 i n b u f f O f f s e t ) ) ;<br />

750 }<br />

751 void phDecryption ( byte [ ] i n b u f f , short i n b u f f O f f s e t , short inbuffLength )<br />

752 {<br />

753 syCipher . i n i t ( phCipherKey , Cipher .MODE_DECRYPT, I n i t i a l i s a t i o n V e c t o r ,<br />

754 ( short ) 0 , ( short ) 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 />

755 syCipher . doFinal ( i n b u f f , i n b u f f O f f s e t , inbuffLength , i n b u f f ,<br />

756 i n b u f f O f f s e t ) ;<br />

757 }<br />

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

759 inbuffLength , short macMode) {<br />

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

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

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

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

348

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

Saved successfully!

Ooh no, something went wrong!