diff options
author | tsepez <tsepez@chromium.org> | 2016-12-16 11:16:19 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-12-16 11:16:19 -0800 |
commit | ad3cd2aeff15bd31aa38544063075d910ac63823 (patch) | |
tree | 19b41babfdd6348b0400ad18702215e2d064f558 /core/fdrm/crypto/fx_crypt.h | |
parent | 47fb8c06acd0ff9ea50c8c2d7f67510ea5c28577 (diff) | |
download | pdfium-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.h | 60 |
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]); |