|
pidgin 2.14.4
|
Purple Cipher API. More...
#include <glib.h>#include <string.h>Go to the source code of this file.
Data Structures | |
| struct | _PurpleCipherOps |
| The operations of a cipher. More... | |
Macros | |
| #define | PURPLE_CIPHER(obj) ((PurpleCipher *)(obj)) |
| PurpleCipher typecast helper | |
| #define | PURPLE_CIPHER_OPS(obj) ((PurpleCipherOps *)(obj)) |
| PurpleCipherInfo typecase helper | |
| #define | PURPLE_CIPHER_CONTEXT(obj) ((PurpleCipherContext *)(obj)) |
| PurpleCipherContext typecast helper. | |
Typedefs | |
| typedef struct _PurpleCipher | PurpleCipher |
| A handle to a PurpleCipher | |
| typedef struct _PurpleCipherOps | PurpleCipherOps |
| Ops for a PurpleCipher | |
| typedef struct _PurpleCipherContext | PurpleCipherContext |
| A context for a PurpleCipher | |
| typedef enum _PurpleCipherBatchMode | PurpleCipherBatchMode |
| Modes for batch encrypters. | |
| typedef enum _PurpleCipherCaps | PurpleCipherCaps |
| The operation flags for a cipher. | |
Enumerations | |
| enum | _PurpleCipherBatchMode { PURPLE_CIPHER_BATCH_MODE_ECB , PURPLE_CIPHER_BATCH_MODE_CBC } |
| Modes for batch encrypters. More... | |
| enum | _PurpleCipherCaps { PURPLE_CIPHER_CAPS_SET_OPT = 1 << 1 , PURPLE_CIPHER_CAPS_GET_OPT = 1 << 2 , PURPLE_CIPHER_CAPS_INIT = 1 << 3 , PURPLE_CIPHER_CAPS_RESET = 1 << 4 , PURPLE_CIPHER_CAPS_UNINIT = 1 << 5 , PURPLE_CIPHER_CAPS_SET_IV = 1 << 6 , PURPLE_CIPHER_CAPS_APPEND = 1 << 7 , PURPLE_CIPHER_CAPS_DIGEST = 1 << 8 , PURPLE_CIPHER_CAPS_ENCRYPT = 1 << 9 , PURPLE_CIPHER_CAPS_DECRYPT = 1 << 10 , PURPLE_CIPHER_CAPS_SET_SALT = 1 << 11 , PURPLE_CIPHER_CAPS_GET_SALT_SIZE = 1 << 12 , PURPLE_CIPHER_CAPS_SET_KEY = 1 << 13 , PURPLE_CIPHER_CAPS_GET_KEY_SIZE = 1 << 14 , PURPLE_CIPHER_CAPS_SET_BATCH_MODE = 1 << 15 , PURPLE_CIPHER_CAPS_GET_BATCH_MODE = 1 << 16 , PURPLE_CIPHER_CAPS_GET_BLOCK_SIZE = 1 << 17 , PURPLE_CIPHER_CAPS_SET_KEY_WITH_LEN = 1 << 18 , PURPLE_CIPHER_CAPS_UNKNOWN = 1 << 19 } |
| The operation flags for a cipher. More... | |
Functions | |
PurpleCipher API <br> | |
| const gchar * | purple_cipher_get_name (PurpleCipher *cipher) |
| Gets a cipher's name. | |
| guint | purple_cipher_get_capabilities (PurpleCipher *cipher) |
| Gets a cipher's capabilities. | |
| gboolean | purple_cipher_digest_region (const gchar *name, const guchar *data, size_t data_len, size_t in_len, guchar digest[], size_t *out_len) |
| Gets a digest from a cipher. | |
PurpleCiphers API <br> | |
| PurpleCipher * | purple_ciphers_find_cipher (const gchar *name) |
| Finds a cipher by it's name. | |
| PurpleCipher * | purple_ciphers_register_cipher (const gchar *name, PurpleCipherOps *ops) |
| Registers a cipher as a usable cipher. | |
| gboolean | purple_ciphers_unregister_cipher (PurpleCipher *cipher) |
| Unregisters a cipher. | |
| GList * | purple_ciphers_get_ciphers (void) |
| Gets the list of ciphers. | |
PurpleCipher Subsystem API <br> | |
| gpointer | purple_ciphers_get_handle (void) |
| Gets the handle to the cipher subsystem. | |
| void | purple_ciphers_init (void) |
| Initializes the cipher core. | |
| void | purple_ciphers_uninit (void) |
| Uninitializes the cipher core. | |
PurpleCipherContext API <br> | |
| void | purple_cipher_context_set_option (PurpleCipherContext *context, const gchar *name, gpointer value) |
| Sets the value an option on a cipher context. | |
| gpointer | purple_cipher_context_get_option (PurpleCipherContext *context, const gchar *name) |
| Gets the vale of an option on a cipher context. | |
| PurpleCipherContext * | purple_cipher_context_new (PurpleCipher *cipher, void *extra) |
| Creates a new cipher context and initializes it. | |
| PurpleCipherContext * | purple_cipher_context_new_by_name (const gchar *name, void *extra) |
| Creates a new cipher context by the cipher name and initializes it. | |
| void | purple_cipher_context_reset (PurpleCipherContext *context, gpointer extra) |
| Resets a cipher context to it's default value. | |
| void | purple_cipher_context_destroy (PurpleCipherContext *context) |
| Destorys a cipher context and deinitializes it. | |
| void | purple_cipher_context_set_iv (PurpleCipherContext *context, guchar *iv, size_t len) |
| Sets the initialization vector for a context. | |
| void | purple_cipher_context_append (PurpleCipherContext *context, const guchar *data, size_t len) |
| Appends data to the context. | |
| gboolean | purple_cipher_context_digest (PurpleCipherContext *context, size_t in_len, guchar digest[], size_t *out_len) |
| Digests a context. | |
| gboolean | purple_cipher_context_digest_to_str (PurpleCipherContext *context, size_t in_len, gchar digest_s[], size_t *out_len) |
| Converts a guchar digest into a hex string. | |
| gint | purple_cipher_context_encrypt (PurpleCipherContext *context, const guchar data[], size_t len, guchar output[], size_t *outlen) |
| Encrypts data using the context. | |
| gint | purple_cipher_context_decrypt (PurpleCipherContext *context, const guchar data[], size_t len, guchar output[], size_t *outlen) |
| Decrypts data using the context. | |
| void | purple_cipher_context_set_salt (PurpleCipherContext *context, guchar *salt) |
| Sets the salt on a context. | |
| size_t | purple_cipher_context_get_salt_size (PurpleCipherContext *context) |
| Gets the size of the salt if the cipher supports it. | |
| void | purple_cipher_context_set_key (PurpleCipherContext *context, const guchar *key) |
| Sets the key on a context. | |
| size_t | purple_cipher_context_get_key_size (PurpleCipherContext *context) |
| Gets the key size for a context. | |
| void | purple_cipher_context_set_batch_mode (PurpleCipherContext *context, PurpleCipherBatchMode mode) |
| Sets the batch mode of a context. | |
| PurpleCipherBatchMode | purple_cipher_context_get_batch_mode (PurpleCipherContext *context) |
| Gets the batch mode of a context. | |
| size_t | purple_cipher_context_get_block_size (PurpleCipherContext *context) |
| Gets the block size of a context. | |
| void | purple_cipher_context_set_key_with_len (PurpleCipherContext *context, const guchar *key, size_t len) |
| Sets the key with a given length on a context. | |
| void | purple_cipher_context_set_data (PurpleCipherContext *context, gpointer data) |
| Sets the cipher data for a context. | |
| gpointer | purple_cipher_context_get_data (PurpleCipherContext *context) |
| Gets the cipher data for a context. | |
Purple Cipher HTTP Digest Helper Functions <br> | |
| gchar * | purple_cipher_http_digest_calculate_session_key (const gchar *algorithm, const gchar *username, const gchar *realm, const gchar *password, const gchar *nonce, const gchar *client_nonce) |
| Calculates a session key for HTTP Digest authentation. | |
| gchar * | purple_cipher_http_digest_calculate_response (const gchar *algorithm, const gchar *method, const gchar *digest_uri, const gchar *qop, const gchar *entity, const gchar *nonce, const gchar *nonce_count, const gchar *client_nonce, const gchar *session_key) |
| Calculate a response for HTTP Digest authentication. | |
| #define PURPLE_CIPHER | ( | obj | ) | ((PurpleCipher *)(obj)) |
| #define PURPLE_CIPHER_CONTEXT | ( | obj | ) | ((PurpleCipherContext *)(obj)) |
| #define PURPLE_CIPHER_OPS | ( | obj | ) | ((PurpleCipherOps *)(obj)) |
| typedef struct _PurpleCipher PurpleCipher |
| typedef struct _PurpleCipherContext PurpleCipherContext |
| typedef struct _PurpleCipherOps PurpleCipherOps |
| enum _PurpleCipherCaps |
The operation flags for a cipher.
| void purple_cipher_context_append | ( | PurpleCipherContext * | context, |
| const guchar * | data, | ||
| size_t | len | ||
| ) |
Appends data to the context.
| context | The context to append data to |
| data | The data to append |
| len | The length of the data |
| gint purple_cipher_context_decrypt | ( | PurpleCipherContext * | context, |
| const guchar | data[], | ||
| size_t | len, | ||
| guchar | output[], | ||
| size_t * | outlen | ||
| ) |
Decrypts data using the context.
| context | The context |
| data | The data to encrypt |
| len | The length of the returned value |
| output | The output buffer |
| outlen | The len of data that was outputed |
| void purple_cipher_context_destroy | ( | PurpleCipherContext * | context | ) |
Destorys a cipher context and deinitializes it.
| context | The cipher context to destory |
| gboolean purple_cipher_context_digest | ( | PurpleCipherContext * | context, |
| size_t | in_len, | ||
| guchar | digest[], | ||
| size_t * | out_len | ||
| ) |
Digests a context.
| context | The context to digest |
| in_len | The length of the buffer |
| digest | The return buffer for the digest |
| out_len | The length of the returned value |
| gboolean purple_cipher_context_digest_to_str | ( | PurpleCipherContext * | context, |
| size_t | in_len, | ||
| gchar | digest_s[], | ||
| size_t * | out_len | ||
| ) |
Converts a guchar digest into a hex string.
| context | The context to get a digest from |
| in_len | The length of the buffer |
| digest_s | The return buffer for the string digest |
| out_len | The length of the returned value |
| gint purple_cipher_context_encrypt | ( | PurpleCipherContext * | context, |
| const guchar | data[], | ||
| size_t | len, | ||
| guchar | output[], | ||
| size_t * | outlen | ||
| ) |
Encrypts data using the context.
| context | The context |
| data | The data to encrypt |
| len | The length of the data |
| output | The output buffer |
| outlen | The len of data that was outputed |
| PurpleCipherBatchMode purple_cipher_context_get_batch_mode | ( | PurpleCipherContext * | context | ) |
Gets the batch mode of a context.
| context | The context whose batch mode to get |
| size_t purple_cipher_context_get_block_size | ( | PurpleCipherContext * | context | ) |
Gets the block size of a context.
| context | The context whose block size to get |
| gpointer purple_cipher_context_get_data | ( | PurpleCipherContext * | context | ) |
Gets the cipher data for a context.
| context | The context whose cipher data to get |
| size_t purple_cipher_context_get_key_size | ( | PurpleCipherContext * | context | ) |
Gets the key size for a context.
| context | The context whose key size to get |
| gpointer purple_cipher_context_get_option | ( | PurpleCipherContext * | context, |
| const gchar * | name | ||
| ) |
Gets the vale of an option on a cipher context.
| context | The cipher context |
| name | The name of the option |
| size_t purple_cipher_context_get_salt_size | ( | PurpleCipherContext * | context | ) |
Gets the size of the salt if the cipher supports it.
| context | The context whose salt size to get |
| PurpleCipherContext * purple_cipher_context_new | ( | PurpleCipher * | cipher, |
| void * | extra | ||
| ) |
Creates a new cipher context and initializes it.
| cipher | The cipher to use |
| extra | Extra data for the specific cipher |
| PurpleCipherContext * purple_cipher_context_new_by_name | ( | const gchar * | name, |
| void * | extra | ||
| ) |
Creates a new cipher context by the cipher name and initializes it.
| name | The cipher's name |
| extra | Extra data for the specific cipher |
| void purple_cipher_context_reset | ( | PurpleCipherContext * | context, |
| gpointer | extra | ||
| ) |
Resets a cipher context to it's default value.
| context | The context to reset |
| extra | Extra data for the specific cipher |
| void purple_cipher_context_set_batch_mode | ( | PurpleCipherContext * | context, |
| PurpleCipherBatchMode | mode | ||
| ) |
Sets the batch mode of a context.
| context | The context whose batch mode to set |
| mode | The batch mode under which the cipher should operate |
| void purple_cipher_context_set_data | ( | PurpleCipherContext * | context, |
| gpointer | data | ||
| ) |
Sets the cipher data for a context.
| context | The context whose cipher data to set |
| data | The cipher data to set |
| void purple_cipher_context_set_iv | ( | PurpleCipherContext * | context, |
| guchar * | iv, | ||
| size_t | len | ||
| ) |
Sets the initialization vector for a context.
| context | The context to set the IV to |
| iv | The initialization vector to set |
| len | The len of the IV |
| void purple_cipher_context_set_key | ( | PurpleCipherContext * | context, |
| const guchar * | key | ||
| ) |
Sets the key on a context.
| context | The context whose key to set |
| key | The key |
| void purple_cipher_context_set_key_with_len | ( | PurpleCipherContext * | context, |
| const guchar * | key, | ||
| size_t | len | ||
| ) |
Sets the key with a given length on a context.
| context | The context whose key to set |
| key | The key |
| len | The length of the key |
| void purple_cipher_context_set_option | ( | PurpleCipherContext * | context, |
| const gchar * | name, | ||
| gpointer | value | ||
| ) |
Sets the value an option on a cipher context.
| context | The cipher context |
| name | The name of the option |
| value | The value to set |
| void purple_cipher_context_set_salt | ( | PurpleCipherContext * | context, |
| guchar * | salt | ||
| ) |
Sets the salt on a context.
| context | The context whose salt to set |
| salt | The salt |
| gboolean purple_cipher_digest_region | ( | const gchar * | name, |
| const guchar * | data, | ||
| size_t | data_len, | ||
| size_t | in_len, | ||
| guchar | digest[], | ||
| size_t * | out_len | ||
| ) |
Gets a digest from a cipher.
| name | The cipher's name |
| data | The data to hash |
| data_len | The length of the data |
| in_len | The length of the buffer |
| digest | The returned digest |
| out_len | The length written |
TRUE if successful, FALSE otherwise | guint purple_cipher_get_capabilities | ( | PurpleCipher * | cipher | ) |
Gets a cipher's capabilities.
| cipher | The cipher handle |
| const gchar * purple_cipher_get_name | ( | PurpleCipher * | cipher | ) |
Gets a cipher's name.
| cipher | The cipher handle |
| gchar * purple_cipher_http_digest_calculate_response | ( | const gchar * | algorithm, |
| const gchar * | method, | ||
| const gchar * | digest_uri, | ||
| const gchar * | qop, | ||
| const gchar * | entity, | ||
| const gchar * | nonce, | ||
| const gchar * | nonce_count, | ||
| const gchar * | client_nonce, | ||
| const gchar * | session_key | ||
| ) |
Calculate a response for HTTP Digest authentication.
See RFC 2617 for more information.
| algorithm | The hash algorithm to use |
| method | The HTTP method in use |
| digest_uri | The URI from the initial request |
| qop | The "quality of protection" |
| entity | The entity body |
| nonce | The nonce provided by the server |
| nonce_count | The nonce count |
| client_nonce | The nonce provided by the client |
| session_key | The session key from purple_cipher_http_digest_calculate_session_key() |
NULL if an error occurred. | gchar * purple_cipher_http_digest_calculate_session_key | ( | const gchar * | algorithm, |
| const gchar * | username, | ||
| const gchar * | realm, | ||
| const gchar * | password, | ||
| const gchar * | nonce, | ||
| const gchar * | client_nonce | ||
| ) |
Calculates a session key for HTTP Digest authentation.
See RFC 2617 for more information.
| algorithm | The hash algorithm to use |
| username | The username provided by the user |
| realm | The authentication realm provided by the server |
| password | The password provided by the user |
| nonce | The nonce provided by the server |
| client_nonce | The nonce provided by the client |
NULL if an error occurred. | PurpleCipher * purple_ciphers_find_cipher | ( | const gchar * | name | ) |
Finds a cipher by it's name.
| name | The name of the cipher to find |
NULL | GList * purple_ciphers_get_ciphers | ( | void | ) |
Gets the list of ciphers.
| gpointer purple_ciphers_get_handle | ( | void | ) |
Gets the handle to the cipher subsystem.
| PurpleCipher * purple_ciphers_register_cipher | ( | const gchar * | name, |
| PurpleCipherOps * | ops | ||
| ) |
Registers a cipher as a usable cipher.
| name | The name of the new cipher |
| ops | The cipher ops to register |
NULL if it failed | gboolean purple_ciphers_unregister_cipher | ( | PurpleCipher * | cipher | ) |
Unregisters a cipher.
| cipher | The cipher handle to unregister |