summaryrefslogtreecommitdiff
path: root/contrib/pgcrypto/API
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/pgcrypto/API')
-rw-r--r--contrib/pgcrypto/API163
1 files changed, 163 insertions, 0 deletions
diff --git a/contrib/pgcrypto/API b/contrib/pgcrypto/API
new file mode 100644
index 0000000000..8127f70393
--- /dev/null
+++ b/contrib/pgcrypto/API
@@ -0,0 +1,163 @@
+
+C API for pgcrypto
+==================
+
+
+UN*X crypt()
+============
+
+#include <px-crypt.h>
+
+char *
+px_crypt(const char *psw, const char *salt, char *buf, unsigned buflen);
+
+ returns buf or NULL for error.
+
+unsigned px_gen_salt(const char *salt_type, char *dst, int rounds);
+
+ returns salt size. dst should be PX_MAX_SALT_LEN bytes.
+ 'rounds' is algorithm specific. 0 means default for
+ that algorithm.
+
+Random
+======
+
+int px_rand_get_bytes(uint8 *dst, int num)
+
+
+Crypto "objects"
+================
+
+PX_MD - Message digest
+PX_HMAC - HMAC (Hash MAC)
+PX_Cipher - cipher+mode: provided by libs
+PX_Combo - higher-level encryption -> padding, [MD]
+
+Objects are activated with following functions:
+
+int px_find_digest(const char *name, PX_MD **res);
+int px_find_hmac(const char *name, PX_HMAC **res);
+int px_find_cipher(const char *name, PX_Cipher **res);
+int px_find_combo(const char *name, PX_Combo **res);
+
+ returns 0 on success, < 0 on error. If successful,
+ *res contains pointer to new object.
+
+Message Digest
+==============
+
+uint px_md_result_size(PX_MD *md)
+
+ returns final result size in bytes
+
+void px_md_reset(PX_MD *md)
+
+ resets md to clean state
+
+uint px_md_block_size(PX_MD *md)
+
+ return algorithm block size in bytes
+
+void px_md_update(PX_MD *md, const uint8 *data, uint dlen)
+
+ updates hash state with new data
+
+void px_md_finish(PX_MD *md, uint8 *buf)
+
+ puts final hash state into buf. buf should have room
+ for px_md_result_size() bytes.
+
+void px_md_free(PX_MD *md)
+
+ frees resources.
+
+HMAC (Hash Message Authentication Code)
+=======================================
+
+int px_hmac_init(PX_HMAC *hmac, const uint8 *key, uint klen)
+
+ initalized hmac state with key.
+
+uint px_hmac_result_size(PX_HMAC *md)
+
+ returns final result size in bytes
+
+void px_hmac_reset(PX_HMAC *md)
+
+ resets md to state after _init()
+
+uint px_hmac_block_size(PX_HMAC *md)
+
+ return algorithm block size in bytes
+
+void px_hmac_update(PX_HMAC *md, const uint8 *data, uint dlen)
+
+ updates hash state with new data
+
+void px_hmac_finish(PX_HMAC *md, uint8 *buf)
+
+ puts final hash state into buf. buf should have room
+ for px_hmac_result_size() bytes.
+
+void px_hmac_free(PX_HMAC *md)
+
+ frees resources.
+
+
+Cipher
+======
+
+uint px_cipher_key_size(PX_Cipher *c)
+
+ returns max key size in bytes
+
+uint px_cipher_block_size(PX_Cipher *c)
+
+ returns cipher+mode block size in bytes. So blowfish
+ in CFB mode should return 1.
+
+uint px_cipher_iv_size(PX_Cipher *c)
+
+ returns IV size in bytes.
+
+int px_cipher_init(PX_Cipher *c, uint8 *key, uint klen, uint8 *iv)
+
+ initializes cipher with supplied key and iv.
+
+int px_cipher_encrypt(PX_Cipher *c, uint8 *data, uint dlen, uint8 *res)
+
+ encrypts data. res must have room for dlen bytes.
+ data must be multiple of px_cipher_block_size().
+
+int px_cipher_decrypt(PX_Cipher *c, uint8 *data, uint dlen, uint8 *res)
+
+ decrypts data. res must have room for dlen bytes.
+
+void px_cipher_free(PX_Cipher *c)
+
+ frees resources assiocated.
+
+PX_Combo
+========
+
+uint px_combo_encrypt_len(PX_Combo *c, uint dlen)
+
+ calculates max result length for dlen of data.
+
+uint px_combo_decrypt_len(PX_Combo *c, uint dlen)
+
+ calculates result length for dlen of data.
+
+int px_combo_init(PX_Combo *c, uint8 *key, uint klen, uint8 *iv, uint ivlen)
+
+ initializes c with key and iv. If cipher uses fixed length keys,
+ key will be padded with zeroes to needed length.
+
+int px_combo_encrypt(PX_Combo *c, uint8 *data, uint dlen, uint8 *res, uint rlen)
+
+int px_combo_decrypt(PX_Combo *c, uint8 *data, uint dlen, uint8 *res, uint rlen)
+
+void px_combo_free(PX_Combo *c)
+
+ frees resources assiocated.
+