/usr/include/hpdf_encrypt.h is in libhpdf-dev 2.2.1-1ubuntu2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 | /*
* << Haru Free PDF Library >> -- hpdf_encrypt.h
*
* URL: http://libharu.org
*
* Copyright (c) 1999-2006 Takeshi Kanno <takeshi_kanno@est.hi-ho.ne.jp>
* Copyright (c) 2007-2009 Antony Dovgal <tony@daylessday.org>
*
* Permission to use, copy, modify, distribute and sell this software
* and its documentation for any purpose is hereby granted without fee,
* provided that the above copyright notice appear in all copies and
* that both that copyright notice and this permission notice appear
* in supporting documentation.
* It is provided "as is" without express or implied warranty.
*
*------------------------------------------------------------------------------
*
* The code implements MD5 message-digest algorithm is based on the code
* written by Colin Plumb.
* The copyright of it is as follows.
*
* This code implements the MD5 message-digest algorithm.
* The algorithm is due to Ron Rivest. This code was
* written by Colin Plumb in 1993, no copyright is claimed.
* This code is in the public domain; do with it what you wish.
*
* Equivalent code is available from RSA Data Security, Inc.
* This code has been tested against that, and is equivalent,
* except that you don't need to include two pages of legalese
* with every copy.
*
* To compute the message digest of a chunk of bytes, declare an
* MD5Context structure, pass it to MD5Init, call MD5Update as
* needed on buffers full of bytes, and then call MD5Final, which
* will fill a supplied 16-byte array with the digest.
*
*---------------------------------------------------------------------------*/
#ifndef HPDF_ENCRYPT_H
#define HPDF_ENCRYPT_H
#include "hpdf_mmgr.h"
#ifdef __cplusplus
extern "C" {
#endif
/*----------------------------------------------------------------------------*/
/*----- encrypt-dict ---------------------------------------------------------*/
#define HPDF_ID_LEN 16
#define HPDF_PASSWD_LEN 32
#define HPDF_ENCRYPT_KEY_MAX 16
#define HPDF_MD5_KEY_LEN 16
#define HPDF_PERMISSION_PAD 0xFFFFFFC0
#define HPDF_ARC4_BUF_SIZE 256
typedef struct HPDF_MD5Context
{
HPDF_UINT32 buf[4];
HPDF_UINT32 bits[2];
HPDF_BYTE in[64];
} HPDF_MD5_CTX;
typedef struct _HPDF_ARC4_Ctx_Rec {
HPDF_BYTE idx1;
HPDF_BYTE idx2;
HPDF_BYTE state[HPDF_ARC4_BUF_SIZE];
} HPDF_ARC4_Ctx_Rec;
typedef struct _HPDF_Encrypt_Rec *HPDF_Encrypt;
typedef struct _HPDF_Encrypt_Rec {
HPDF_EncryptMode mode;
/* key_len must be a multiple of 8, and between 40 to 128 */
HPDF_UINT key_len;
/* owner-password (not encrypted) */
HPDF_BYTE owner_passwd[HPDF_PASSWD_LEN];
/* user-password (not encrypted) */
HPDF_BYTE user_passwd[HPDF_PASSWD_LEN];
/* owner-password (encrypted) */
HPDF_BYTE owner_key[HPDF_PASSWD_LEN];
/* user-password (encrypted) */
HPDF_BYTE user_key[HPDF_PASSWD_LEN];
HPDF_INT permission;
HPDF_BYTE encrypt_id[HPDF_ID_LEN];
HPDF_BYTE encryption_key[HPDF_MD5_KEY_LEN + 5];
HPDF_BYTE md5_encryption_key[HPDF_MD5_KEY_LEN];
HPDF_ARC4_Ctx_Rec arc4ctx;
} HPDF_Encrypt_Rec;
void
HPDF_MD5Init (struct HPDF_MD5Context *ctx);
void
HPDF_MD5Update (struct HPDF_MD5Context *ctx,
const HPDF_BYTE *buf,
HPDF_UINT32 len);
void
HPDF_MD5Final (HPDF_BYTE digest[16],
struct HPDF_MD5Context *ctx);
void
HPDF_PadOrTrancatePasswd (const char *pwd,
HPDF_BYTE *new_pwd);
void
HPDF_Encrypt_Init (HPDF_Encrypt attr);
void
HPDF_Encrypt_CreateUserKey (HPDF_Encrypt attr);
void
HPDF_Encrypt_CreateOwnerKey (HPDF_Encrypt attr);
void
HPDF_Encrypt_CreateEncryptionKey (HPDF_Encrypt attr);
void
HPDF_Encrypt_InitKey (HPDF_Encrypt attr,
HPDF_UINT32 object_id,
HPDF_UINT16 gen_no);
void
HPDF_Encrypt_Reset (HPDF_Encrypt attr);
void
HPDF_Encrypt_CryptBuf (HPDF_Encrypt attr,
const HPDF_BYTE *src,
HPDF_BYTE *dst,
HPDF_UINT len);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* _HPDF_ENCRYPT_H */
|