diff options
author | Kenny Root <kroot@google.com> | 2010-10-13 15:00:07 -0700 |
---|---|---|
committer | Kenny Root <kroot@google.com> | 2010-10-13 18:25:33 -0700 |
commit | 95a68893125105f131ee1b4eaef1dc16da1ef789 (patch) | |
tree | 636bc7b250128f4fcc79149b446bcc0aa70b1224 /include | |
parent | 91a2e551666d749b7c6d8d85169d16b9928fa5cc (diff) | |
download | frameworks_native-95a68893125105f131ee1b4eaef1dc16da1ef789.zip frameworks_native-95a68893125105f131ee1b4eaef1dc16da1ef789.tar.gz frameworks_native-95a68893125105f131ee1b4eaef1dc16da1ef789.tar.bz2 |
OBB: use PBKDF2 for key generation.
Switch to using PBKDF2 for the key generation for OBBs. Any previously
generated OBBs will stop being read correctly. A small pbkdf2gen program
is available to allow generation of appropriate keys with the salts.
Bug: 3059950
Change-Id: If4305c989fd692fd1150eb270dbf751e09c37295
Diffstat (limited to 'include')
-rw-r--r-- | include/utils/ObbFile.h | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/include/utils/ObbFile.h b/include/utils/ObbFile.h index 5243f50..47559cd 100644 --- a/include/utils/ObbFile.h +++ b/include/utils/ObbFile.h @@ -27,6 +27,7 @@ namespace android { // OBB flags (bit 0) #define OBB_OVERLAY (1 << 0) +#define OBB_SALTED (1 << 1) class ObbFile : public RefBase { protected: @@ -70,6 +71,26 @@ public: mFlags = flags; } + const unsigned char* getSalt(size_t* length) const { + if ((mFlags & OBB_SALTED) == 0) { + *length = 0; + return NULL; + } + + *length = sizeof(mSalt); + return mSalt; + } + + bool setSalt(const unsigned char* salt, size_t length) { + if (length != sizeof(mSalt)) { + return false; + } + + memcpy(mSalt, salt, sizeof(mSalt)); + mFlags |= OBB_SALTED; + return true; + } + bool isOverlay() { return (mFlags & OBB_OVERLAY) == OBB_OVERLAY; } @@ -103,6 +124,12 @@ private: /* Flags for this OBB type. */ int32_t mFlags; + /* Whether the file is salted. */ + bool mSalted; + + /* The encryption salt. */ + unsigned char mSalt[8]; + const char* mFileName; size_t mFileSize; |