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.7 Application Binding Protocol - Local<br />

88 pMessage [ 2 ] = ( byte ) 3 2 ;<br />

89 pMessage [ 0 ] = ( byte ) 6 8 ;<br />

90 generateEncryptedData ( ( short ) pMessage [ 0 ] , ( short ) pMessage [ 2 ] ,<br />

91 SerTpmKey) ;<br />

92 myTPMRef. v a l i d a t e A p p l i c a t i o n s ( pMessage ) ;<br />

93 generatedDecryptedData ( ( short ) 68 , ( short ) 64 , SerTpmKey) ;<br />

94 sessionKey = (AESKey) KeyBuilder . buildKey ( KeyBuilder .TYPE_AES,<br />

95 KeyBuilder .LENGTH_AES_128, f a l s e ) ;<br />

96 sessionKey . setKey ( pMessage , ( short ) (100) ) ;<br />

97 myServerClientAppKey = (AESKey) KeyBuilder . buildKey<br />

98 ( KeyBuilder .TYPE_AES,<br />

99 KeyBuilder .LENGTH_AES_128, f a l s e ) ;<br />

100 byte [ ] keyGenerationArray = JCSystem . makeTransientByteArray (<br />

101 ( short ) 16 , JCSystem .MEMORY_TYPE_TRANSIENT_DESELECT) ;<br />

102 myServerAppRandomData . generateData ( keyGenerationArray , (short ) 0 ,<br />

103 ( short ) keyGenerationArray . l e n g t h ) ;<br />

104 myServerClientAppKey . setKey ( keyGenerationArray , ( short ) 0) ;<br />

105 <strong>for</strong> ( short i = 0 ; i < 1 6 ; i ++) {<br />

106 RandomNumberClient [ i ] = (byte ) 0xFF ;<br />

107 }<br />

108 myServerClientAppKey . getKey ( pMessage , ( short ) 68) ;<br />

109 U t i l . arrayCopyNonAtomic ( RandomNumberClient , ( short ) 0 , p_Message ,<br />

110 ( short ) 84 , ( short )<br />

111 RandomNumberClient . l e n g t h ) ;<br />

112 U t i l . arrayCopyNonAtomic ( RandomNumberServer , ( short ) 0 , p_Message ,<br />

113 ( short ) 100 , ( short )<br />

114 RandomNumberServer . l e n g t h ) ;<br />

115 generateEncryptedData ( ( short ) 68 , ( short ) 48 , sessionKey ) ;<br />

116 U t i l . arrayCopyNonAtomic ( TokenValue , ( short ) 0 , pMessage , ( short )<br />

117 116 , ( short ) TokenValue . l e n g t h ) ;<br />

118 xorRandomNumberCS ( ( short ) 120) ;<br />

119 generateEncryptedData ( ( short ) 116 , ( short ) 20 ,<br />

120 myServerClientAppKey ) ;<br />

121 generateSignatureData ( ( short ) 116 , ( short ) 32) ;<br />

122 return ;<br />

123 }<br />

124 i f ( s t a g e == 2) {<br />

125 generatedDecryptedData ( ( short ) 4 , ( short ) 32 ,<br />

126 myServerClientAppKey ) ;<br />

127 i f ( ( byte ) U t i l . arrayCompare ( TokenValue , ( short ) 0 , pMessage ,<br />

128 ( short ) 14 , ( short ) 4) == ( byte ) 0) {<br />

129 return ;<br />

130 } else {<br />

131 ISOException . throwIt ( ( short ) 0xFFFF) ;<br />

132 }<br />

133 } else {<br />

134 ISOException . throwIt ( ( short ) 0 x6300 ) ;<br />

135 }<br />

136 }<br />

137 protected void xorRandomNumberCS ( short s t a r t ) {<br />

138 <strong>for</strong> ( short i = 0 ; i < ( short ) 1 6 ; i ++, s t a r t++) {<br />

371

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

Saved successfully!

Ooh no, something went wrong!