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

139 pMessage [ s t a r t ] = ( byte ) ( RandomNumberServer [ i ] |<br />

140 RandomNumberClient [ i ] ) ;<br />

141 }<br />

142 }<br />

143 protected void generateEncryptedData ( short s t a r t , short length ,<br />

144 AESKey Key) {<br />

145 short paddingbytes = 0 ;<br />

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

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

148 }<br />

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

150 paddingbytes ) , JCSystem .MEMORY_TYPE_TRANSIENT_DESELECT) ;<br />

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

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

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

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

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

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

157 }<br />

158 }<br />

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

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

161 }<br />

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

163 AESKey Key) {<br />

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

165 JCSystem .MEMORY_TYPE_TRANSIENT_DESELECT) ;<br />

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

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

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

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

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

171 }<br />

172 protected void generateSignatureData ( short s t a r t , short l e n g t h ) {<br />

173 byte [ ] s i g B u f f = JCSystem . makeTransientByteArray ( ( short ) (64+2) ,<br />

174 JCSystem .MEMORY_TYPE_TRANSIENT_DESELECT) ;<br />

175 myServerAppSignature . i n i t ( server_SignKeyPair . g e t P r i v a t e ( ) ,<br />

176 Cipher .MODE_ENCRYPT) ;<br />

177 i f ( l e n g t h < 64) {<br />

178 <strong>for</strong> ( short i = 0 ; i < ( short ) 3 2 ; i ++) {<br />

179 pMessage [ ( short ) ( s t a r t + l e n g t h + i ) ] = ( byte ) 0x5A ;<br />

180 }<br />

181 }<br />

182 myServerAppSignature . doFinal ( pMessage , ( short ) s t a r t , ( short ) 64 ,<br />

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

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

185 ( short ) 64) ;<br />

186 }<br />

187 protected boolean v e r i f y SignedData ( ) {<br />

188 myServerAppSignature . i n i t ( myClientVerificationKey ,<br />

189 Cipher .MODE_DECRYPT) ;<br />

372

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

Saved successfully!

Ooh no, something went wrong!