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

149 byte [ ] temp = new byte [ pMessage [ 0 ] ] ;<br />

150 pMessage [ 1 ] = ( byte ) AESCipher . doFinal ( pMessage , ( short ) 4 , ( short )<br />

151 ( pMessage [ 0 ] − 4) , temp , ( short ) 0) ;<br />

152 pMessage [ 3 ] += pMessage [ 1 ] ;<br />

153 pMessage [ 0 ] −= ( byte ) paddingbytes ;<br />

154 U t i l . arrayCopyNonAtomic ( temp , ( short ) 0 , pMessage , pMessage [ 0 ] ,<br />

155 ( short ) pMessage [ 1 ] ) ;<br />

156 }<br />

157 protected void encryptData ( short s t a r t , short length , AESKey Key) {<br />

158 short paddingbytes = 0 ;<br />

159 i f ( ( short ) ( l e n g t h % 16) != 0) {<br />

160 paddingbytes = ( short ) (16 −( l e n g t h % 16) ) ;<br />

161 }<br />

162 byte [ ] temp = JCSystem . makeTransientByteArray ( ( short ) ( l e n g t h +<br />

163 paddingbytes ) , JCSystem .CLEAR_ON_DESELECT) ;<br />

164 AESCipher . i n i t (Key , Cipher .MODE_ENCRYPT) ;<br />

165 U t i l . arrayCopyNonAtomic ( pMessage , ( short ) s t a r t , temp , ( short ) 0 ,<br />

166 ( short ) l e n g t h ) ;<br />

167 i f ( paddingbytes != 0) {<br />

168 <strong>for</strong> ( short i = 0 ; i < paddingbytes ; i ++, l e n g t h++) {<br />

169 temp [ ( short ) ( l e n g t h ) ] = ( byte ) 0xFF ;<br />

170 }<br />

171 }<br />

172 AESCipher . doFinal ( temp , ( short ) 0 , ( short ) length , pMessage , ( short )<br />

173 s t a r t ) ;<br />

174 }<br />

175 protected void generateSignatureData ( ) {<br />

176 byte [ ] s i g B u f f = JCSystem . makeTransientByteArray ( ( short ) 256 ,<br />

177 JCSystem .CLEAR_ON_DESELECT) ;<br />

178 short sigLen = 0 ;<br />

179 myClientAppSignature . i n i t ( client_SignKeyPair . g e t P r i v a t e ( ) ,<br />

180 Cipher .MODE_ENCRYPT) ;<br />

181 sigLen = myClientAppSignature . doFinal ( pMessage , ( short ) 4 , ( short )<br />

182 64 , s i g B u f f , ( short ) 0) ;<br />

183 U t i l . arrayCopyNonAtomic ( s i g B u f f , ( short ) 0 , pMessage , ( short ) 4 ,<br />

184 sigLen ) ;<br />

185 pMessage [ 2 ] = ( byte ) sigLen ;<br />

186 }<br />

187 protected void generatedDecryptedData ( short s t a r t , short length ,<br />

188 AESKey Key) {<br />

189 byte [ ] tempBuff = JCSystem . makeTransientByteArray ( length ,<br />

190 JCSystem .MEMORY_TYPE_TRANSIENT_DESELECT) ;<br />

191 AESCipher . i n i t (Key , Cipher .MODE_DECRYPT) ;<br />

192 U t i l . arrayCopyNonAtomic ( pMessage , s t a r t , tempBuff , ( short ) 0 ,<br />

193 ( short ) l e n g t h ) ;<br />

194 AESCipher . doFinal ( tempBuff , ( short ) 0 , ( short ) length , pMessage ,<br />

195 ( short ) s t a r t ) ;<br />

196 }<br />

197 protected boolean v e r i f y SignedData ( short s t a r t , short l e n g t h ) {<br />

198 myClientAppSignature . i n i t ( s e r v e r V e r i f i c a t i o n K e y ,<br />

199 Cipher .MODE_DECRYPT) ;<br />

368

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

Saved successfully!

Ooh no, something went wrong!