summaryrefslogtreecommitdiffstats
path: root/cmds/keystore/keystore.c
diff options
context:
space:
mode:
authorChia-chi Yeh <chiachi@android.com>2009-12-30 10:38:39 +0800
committerChia-chi Yeh <chiachi@android.com>2009-12-30 10:38:39 +0800
commitb78679e18db941fa0c104d728db128cf9ee21dc7 (patch)
tree8ddb03e837ac7663992df244c637007e69c3269e /cmds/keystore/keystore.c
parent872db948a0366cc4d47cd4cd343f625a206b2eed (diff)
downloadframeworks_native-b78679e18db941fa0c104d728db128cf9ee21dc7.zip
frameworks_native-b78679e18db941fa0c104d728db128cf9ee21dc7.tar.gz
frameworks_native-b78679e18db941fa0c104d728db128cf9ee21dc7.tar.bz2
keystore: compute the padding in an intuitive way.
Diffstat (limited to 'cmds/keystore/keystore.c')
-rw-r--r--cmds/keystore/keystore.c10
1 files changed, 3 insertions, 7 deletions
diff --git a/cmds/keystore/keystore.c b/cmds/keystore/keystore.c
index 37155e4..4426874 100644
--- a/cmds/keystore/keystore.c
+++ b/cmds/keystore/keystore.c
@@ -170,16 +170,12 @@ static int8_t encrypt_blob(char *name, AES_KEY *aes_key)
return SYSTEM_ERROR;
}
- length = (blob.length + blob.value - blob.encrypted) % AES_BLOCK_SIZE;
- if (length) {
- length = AES_BLOCK_SIZE - length;
- }
+ length = blob.length + blob.value - blob.encrypted;
+ length = (length + AES_BLOCK_SIZE - 1) / AES_BLOCK_SIZE * AES_BLOCK_SIZE;
- length += blob.length + blob.value - blob.digested;
blob.length = htonl(blob.length);
- MD5(blob.digested, length, blob.digest);
+ MD5(blob.digested, length - (blob.digested - blob.encrypted), blob.digest);
- length += blob.digested - blob.encrypted;
memcpy(vector, blob.vector, AES_BLOCK_SIZE);
AES_cbc_encrypt(blob.encrypted, blob.encrypted, length, aes_key, vector,
AES_ENCRYPT);