44 #define SHA1_BLOCK_SIZE 64 45 #define MD5_BLOCK_SIZE 64 92 elog(
ERROR,
"could not update %s context",
"MD5");
101 elog(
ERROR,
"could not initialize %s context",
"MD5");
110 elog(
ERROR,
"could not finalize %s context",
"MD5");
142 elog(
ERROR,
"could not update %s context",
"SHA1");
151 elog(
ERROR,
"could not initialize %s context",
"SHA1");
160 elog(
ERROR,
"could not finalize %s context",
"SHA1");
216 #define INT_MAX_KEY (512/8) 217 #define INT_MAX_IV (128/8) 278 else if (klen <= 192 / 8)
280 else if (klen <= 256 / 8)
285 memcpy(&cx->
keybuf, key, klen);
288 memcpy(cx->
iv, iv, 128 / 8);
317 memcpy(res, data, dlen);
322 memcpy(cx->
iv, res + dlen - 16, 16);
345 memcpy(res, data, dlen);
350 memcpy(cx->
iv, data + dlen - 16, 16);
431 memcpy(res, data, dlen);
456 memcpy(res, data, dlen);
534 {
"blowfish",
"bf-cbc"},
535 {
"aes",
"aes-128-cbc"},
536 {
"aes-ecb",
"aes-128-ecb"},
537 {
"aes-cbc",
"aes-128-cbc"},
538 {
"aes-128",
"aes-128-cbc"},
539 {
"rijndael",
"aes-128-cbc"},
540 {
"rijndael-128",
"aes-128-cbc"},
552 for (p = int_digest_list; p->
name; p++)
573 for (i = 0; int_ciphers[
i].
name; i++)
574 if (strcmp(int_ciphers[i].name, name) == 0)
576 c = int_ciphers[
i].
load();
int pg_cryptohash_final(pg_cryptohash_ctx *ctx, uint8 *dest, size_t len)
static const struct int_cipher int_ciphers[]
static PgChecksumMode mode
void aes_cbc_encrypt(rijndael_ctx *ctx, uint8 *iva, uint8 *data, unsigned len)
void init_sha384(PX_MD *h)
PX_Cipher *(* load)(void)
static PX_Cipher * bf_cbc_load(void)
static int bf_decrypt(PX_Cipher *c, const uint8 *data, unsigned dlen, uint8 *res)
static PX_Cipher * bf_ecb_load(void)
static const struct int_digest int_digest_list[]
static void intctx_free(PX_Cipher *c)
#define SHA1_DIGEST_LENGTH
static unsigned int_sha1_block_len(PX_MD *h)
static PX_Cipher * bf_load(int mode)
unsigned(* block_size)(PX_Cipher *c)
void aes_cbc_decrypt(rijndael_ctx *ctx, uint8 *iva, uint8 *data, unsigned len)
void blowfish_encrypt_cbc(uint8 *blk, int len, BlowfishContext *ctx)
int(* decrypt)(PX_Cipher *c, const uint8 *data, unsigned dlen, uint8 *res)
const char * px_resolve_alias(const PX_Alias *list, const char *name)
uint8 keybuf[INT_MAX_KEY]
int pg_strcasecmp(const char *s1, const char *s2)
void(* free)(PX_Cipher *c)
static void int_sha1_free(PX_MD *h)
static void int_md5_reset(PX_MD *h)
void aes_set_key(rijndael_ctx *ctx, const uint8 *key, unsigned keybits, int enc)
static unsigned rj_block_size(PX_Cipher *c)
void pfree(void *pointer)
int cx(PlannerInfo *root, Gene *tour1, Gene *tour2, Gene *offspring, int num_gene, City *city_table)
void blowfish_decrypt_ecb(uint8 *blk, int len, BlowfishContext *ctx)
unsigned(* block_size)(PX_MD *h)
static int rj_encrypt(PX_Cipher *c, const uint8 *data, unsigned dlen, uint8 *res)
static void int_sha1_update(PX_MD *h, const uint8 *data, unsigned dlen)
void aes_ecb_decrypt(rijndael_ctx *ctx, uint8 *data, unsigned len)
static int rj_init(PX_Cipher *c, const uint8 *key, unsigned klen, const uint8 *iv)
#define MD5_DIGEST_LENGTH
void(* update)(PX_MD *h, const uint8 *data, unsigned dlen)
static unsigned rj_key_size(PX_Cipher *c)
void(* finish)(PX_MD *h, uint8 *dst)
unsigned(* iv_size)(PX_Cipher *c)
void blowfish_setiv(BlowfishContext *ctx, const uint8 *iv)
void init_sha224(PX_MD *h)
static void init_md5(PX_MD *h)
static unsigned int_md5_len(PX_MD *h)
static unsigned int_sha1_len(PX_MD *h)
unsigned(* key_size)(PX_Cipher *c)
void init_sha256(PX_MD *h)
static unsigned rj_iv_size(PX_Cipher *c)
static int bf_init(PX_Cipher *c, const uint8 *key, unsigned klen, const uint8 *iv)
int(* encrypt)(PX_Cipher *c, const uint8 *data, unsigned dlen, uint8 *res)
unsigned(* result_size)(PX_MD *h)
static void int_md5_finish(PX_MD *h, uint8 *dst)
static int rj_real_init(struct int_ctx *cx, int dir)
static unsigned int_md5_block_len(PX_MD *h)
void blowfish_setkey(BlowfishContext *ctx, const uint8 *key, short keybytes)
void * palloc0(Size size)
static unsigned bf_key_size(PX_Cipher *c)
static int bf_encrypt(PX_Cipher *c, const uint8 *data, unsigned dlen, uint8 *res)
void init_sha512(PX_MD *h)
pg_cryptohash_ctx * pg_cryptohash_create(pg_cryptohash_type type)
static int rj_decrypt(PX_Cipher *c, const uint8 *data, unsigned dlen, uint8 *res)
int(* init)(PX_Cipher *c, const uint8 *key, unsigned klen, const uint8 *iv)
int pg_cryptohash_init(pg_cryptohash_ctx *ctx)
void aes_ecb_encrypt(rijndael_ctx *ctx, uint8 *data, unsigned len)
void blowfish_encrypt_ecb(uint8 *blk, int len, BlowfishContext *ctx)
static unsigned bf_block_size(PX_Cipher *c)
int pg_cryptohash_update(pg_cryptohash_ctx *ctx, const uint8 *data, size_t len)
static void int_sha1_reset(PX_MD *h)
static PX_Cipher * rj_128_ecb(void)
static void int_sha1_finish(PX_MD *h, uint8 *dst)
static PX_Cipher * rj_load(int mode)
void blowfish_decrypt_cbc(uint8 *blk, int len, BlowfishContext *ctx)
static void init_sha1(PX_MD *h)
static unsigned bf_iv_size(PX_Cipher *c)
static PX_Cipher * rj_128_cbc(void)
static const PX_Alias int_aliases[]
static void int_md5_free(PX_MD *h)
void pg_cryptohash_free(pg_cryptohash_ctx *ctx)
int px_find_digest(const char *name, PX_MD **res)
void px_memset(void *ptr, int c, size_t len)
static void int_md5_update(PX_MD *h, const uint8 *data, unsigned dlen)
int px_find_cipher(const char *name, PX_Cipher **res)