summaryrefslogtreecommitdiff
path: root/core/fdrm/crypto/fx_crypt.h
diff options
context:
space:
mode:
authortsepez <tsepez@chromium.org>2016-12-16 11:16:19 -0800
committerCommit bot <commit-bot@chromium.org>2016-12-16 11:16:19 -0800
commitad3cd2aeff15bd31aa38544063075d910ac63823 (patch)
tree19b41babfdd6348b0400ad18702215e2d064f558 /core/fdrm/crypto/fx_crypt.h
parent47fb8c06acd0ff9ea50c8c2d7f67510ea5c28577 (diff)
downloadpdfium-ad3cd2aeff15bd31aa38544063075d910ac63823.tar.xz
Better tests for password protected documents.chromium/2954
- Add unit tests for sha256 implementation. - Remove void* types from API in favor of correct actual types. Review-Url: https://codereview.chromium.org/2577223002
Diffstat (limited to 'core/fdrm/crypto/fx_crypt.h')
-rw-r--r--core/fdrm/crypto/fx_crypt.h60
1 files changed, 46 insertions, 14 deletions
diff --git a/core/fdrm/crypto/fx_crypt.h b/core/fdrm/crypto/fx_crypt.h
index fe043dcb12..a498f4e19b 100644
--- a/core/fdrm/crypto/fx_crypt.h
+++ b/core/fdrm/crypto/fx_crypt.h
@@ -13,17 +13,37 @@
extern "C" {
#endif
-struct CRYPT_rc4_context {
+typedef struct {
int32_t x;
int32_t y;
int32_t m[256];
-};
+} CRYPT_rc4_context;
-struct CRYPT_md5_context {
+typedef struct {
uint32_t total[2];
uint32_t state[4];
uint8_t buffer[64];
-};
+} CRYPT_md5_context;
+
+typedef struct {
+ unsigned int h[5];
+ unsigned char block[64];
+ int blkused;
+ unsigned int lenhi;
+ unsigned int lenlo;
+} CRYPT_sha1_context;
+
+typedef struct {
+ uint32_t total[2];
+ uint32_t state[8];
+ uint8_t buffer[64];
+} CRYPT_sha256_context;
+
+typedef struct {
+ uint64_t total[2];
+ uint64_t state[8];
+ uint8_t buffer[128];
+} CRYPT_sha384_context;
void CRYPT_ArcFourCryptBlock(uint8_t* data,
uint32_t size,
@@ -35,6 +55,7 @@ void CRYPT_ArcFourSetup(CRYPT_rc4_context* context,
void CRYPT_ArcFourCrypt(CRYPT_rc4_context* context,
uint8_t* data,
uint32_t size);
+
void CRYPT_AESSetKey(void* context,
uint32_t blocklen,
const uint8_t* key,
@@ -49,28 +70,39 @@ void CRYPT_AESEncrypt(void* context,
uint8_t* dest,
const uint8_t* src,
uint32_t size);
-void CRYPT_MD5Generate(const uint8_t* data, uint32_t size, uint8_t digest[16]);
+
void CRYPT_MD5Start(CRYPT_md5_context* context);
void CRYPT_MD5Update(CRYPT_md5_context* context,
const uint8_t* data,
uint32_t size);
void CRYPT_MD5Finish(CRYPT_md5_context* context, uint8_t digest[16]);
+void CRYPT_MD5Generate(const uint8_t* data, uint32_t size, uint8_t digest[16]);
+
+void CRYPT_SHA1Start(CRYPT_sha1_context* context);
+void CRYPT_SHA1Update(CRYPT_sha1_context* context,
+ const uint8_t* data,
+ uint32_t size);
+void CRYPT_SHA1Finish(CRYPT_sha1_context* context, uint8_t digest[20]);
void CRYPT_SHA1Generate(const uint8_t* data, uint32_t size, uint8_t digest[20]);
-void CRYPT_SHA1Start(void* context);
-void CRYPT_SHA1Update(void* context, const uint8_t* data, uint32_t size);
-void CRYPT_SHA1Finish(void* context, uint8_t digest[20]);
+
+void CRYPT_SHA256Start(CRYPT_sha256_context* context);
+void CRYPT_SHA256Update(CRYPT_sha256_context* context,
+ const uint8_t* data,
+ uint32_t size);
+void CRYPT_SHA256Finish(CRYPT_sha256_context* context, uint8_t digest[32]);
void CRYPT_SHA256Generate(const uint8_t* data,
uint32_t size,
uint8_t digest[32]);
-void CRYPT_SHA256Start(void* context);
-void CRYPT_SHA256Update(void* context, const uint8_t* data, uint32_t size);
-void CRYPT_SHA256Finish(void* context, uint8_t digest[32]);
-void CRYPT_SHA384Start(void* context);
-void CRYPT_SHA384Update(void* context, const uint8_t* data, uint32_t size);
-void CRYPT_SHA384Finish(void* context, uint8_t digest[48]);
+
+void CRYPT_SHA384Start(CRYPT_sha384_context* context);
+void CRYPT_SHA384Update(CRYPT_sha384_context* context,
+ const uint8_t* data,
+ uint32_t size);
+void CRYPT_SHA384Finish(CRYPT_sha384_context* context, uint8_t digest[48]);
void CRYPT_SHA384Generate(const uint8_t* data,
uint32_t size,
uint8_t digest[48]);
+
void CRYPT_SHA512Start(void* context);
void CRYPT_SHA512Update(void* context, const uint8_t* data, uint32_t size);
void CRYPT_SHA512Finish(void* context, uint8_t digest[64]);