mw_cipher.h(3)

NAME
mw_cipher.h -

SYNOPSIS

#include <glib.h>
#include 'mw_common.h'

  Data Structures
struct mwCipher
A cipher.
struct mwCipherInstance
An instance of a cipher.

  Typedefs
typedef struct mwCipherInstance *(* mwCipherInstantiator )(struct mwCipher *cipher, struct mwChannel *chan)
Obtain an instance of a given cipher, which can be used for the processing of a single channel.
typedef int(* mwCipherProcessor )(struct mwCipherInstance *ci, struct mwOpaque *data)
Process (encrypt or decrypt, depending) the given data.

  Enumerations
enum mwCipherType { mwCipher_RC2_40 = 0x0000, mwCipher_RC2_128 = 0x0001 }
Common cipher types.

  Functions
void mwCipher_free (struct mwCipher *cipher)
destroy a cipher
const char * mwCipher_getDesc (struct mwCipher *cipher)
const char * mwCipher_getName (struct mwCipher *cipher)
struct mwSession * mwCipher_getSession (struct mwCipher *cipher)
guint16 mwCipher_getType (struct mwCipher *cipher)
struct mwCipher * mwCipher_new_RC2_128 (struct mwSession *s)
struct mwCipher * mwCipher_new_RC2_40 (struct mwSession *s)
struct mwCipherInstance * mwCipher_newInstance (struct mwCipher *cipher, struct mwChannel *channel)
struct mwEncryptItem * mwCipherInstance_accept (struct mwCipherInstance *ci)
Accept a cipher offered to our channel.
void mwCipherInstance_accepted (struct mwCipherInstance *ci, struct mwEncryptItem *item)
Indicates an offered cipher has been accepted.
int mwCipherInstance_decrypt (struct mwCipherInstance *ci, struct mwOpaque *data)
decrypt data
int mwCipherInstance_encrypt (struct mwCipherInstance *ci, struct mwOpaque *data)
encrypt data
void mwCipherInstance_free (struct mwCipherInstance *ci)
destroy a cipher instance
struct mwChannel * mwCipherInstance_getChannel (struct mwCipherInstance *ci)
reference the channel a cipher instance is attached to
struct mwCipher * mwCipherInstance_getCipher (struct mwCipherInstance *ci)
reference the parent cipher of an instance
struct mwEncryptItem * mwCipherInstance_offer (struct mwCipherInstance *ci)
Offer a cipher.
void mwCipherInstance_offered (struct mwCipherInstance *ci, struct mwEncryptItem *item)
Indicates a cipher has been offered to our channel.

void mwDecrypt (const guchar *key, gsize keylen, guchar *iv, struct mwOpaque *in, struct mwOpaque *out)
Decrypt data using an expanded form of the given key.
void mwDecryptExpanded (const int *ekey, guchar *iv, struct mwOpaque *in, struct mwOpaque *out)
Decrypt data using an already expanded key.
void mwEncrypt (const guchar *key, gsize keylen, guchar *iv, struct mwOpaque *in, struct mwOpaque *out)
Encrypt data using an expanded form of the given key.
void mwEncryptExpanded (const int *ekey, guchar *iv, struct mwOpaque *in, struct mwOpaque *out)
Encrypt data using an already-expanded key.
void mwIV_init (guchar *iv)
Setup an Initialization Vector.
void mwKeyExpand (int *ekey, const guchar *key, gsize keylen)
Expand a variable-length key into a 128-byte key (represented as an an array of 64 ints).
void mwKeyRandom (guchar *key, gsize keylen)
generate some pseudo-random bytes

void mwMpi_calculateDHShared (struct mwMpi *shared_key, struct mwMpi *remote_key, struct mwMpi *private_key)
sets the shared key value based on the remote and private keys, using the Sametime Prime and Base
void mwMpi_export (struct mwMpi *i, struct mwOpaque *o)
Export a value into an opaque.
void mwMpi_free (struct mwMpi *i)
destroy an mpi value
void mwMpi_import (struct mwMpi *i, struct mwOpaque *o)
Import a value from an opaque.
struct mwMpi * mwMpi_new ()
prepare a new mpi value
void mwMpi_randDHKeypair (struct mwMpi *private_key, struct mwMpi *public_key)
sets private to a randomly generated value, and calculates public using the Sametime Prime and Base
void mwMpi_setDHBase (struct mwMpi *i)
set a big integer to the Sametime Base value
void mwMpi_setDHPrime (struct mwMpi *i)
set a big integer to the Sametime Prime value

Typedef Documentation

  typedef struct mwCipherInstance*(* mwCipherInstantiator)(struct mwCipher *cipher, struct mwChannel *chan)

Obtain an instance of a given cipher, which can be used for the processing of a single channel.

  typedef int(* mwCipherProcessor)(struct mwCipherInstance *ci, struct mwOpaque *data)

Process (encrypt or decrypt, depending) the given data.

The passed buffer may be freed in processing and be replaced with a freshly allocated buffer. The post-processed buffer must in turn be freed after use

Enumeration Type Documentation

  enum mwCipherType

Common cipher types.

Enumerator:

mwCipher_RC2_40

mwCipher_RC2_128

Function Documentation

  void mwCipher_free (struct mwCipher * cipher)

destroy a cipher

  const char* mwCipher_getDesc (struct mwCipher * cipher)

  const char* mwCipher_getName (struct mwCipher * cipher)

  struct mwSession* mwCipher_getSession (struct mwCipher * cipher) [read]

  guint16 mwCipher_getType (struct mwCipher * cipher)

  struct mwCipher* mwCipher_new_RC2_128 (struct mwSession * s) [read]

  struct mwCipher* mwCipher_new_RC2_40 (struct mwSession * s) [read]

  struct mwCipherInstance* mwCipher_newInstance (struct mwCipher * cipher, struct mwChannel * channel) [read]

  struct mwEncryptItem* mwCipherInstance_accept (struct mwCipherInstance * ci) [read]

Accept a cipher offered to our channel.

  void mwCipherInstance_accepted (struct mwCipherInstance * ci, struct mwEncryptItem * item)

Indicates an offered cipher has been accepted.

  int mwCipherInstance_decrypt (struct mwCipherInstance * ci, struct mwOpaque * data)

decrypt data

  int mwCipherInstance_encrypt (struct mwCipherInstance * ci, struct mwOpaque * data)

encrypt data

  void mwCipherInstance_free (struct mwCipherInstance * ci)

destroy a cipher instance

  struct mwChannel* mwCipherInstance_getChannel (struct mwCipherInstance * ci) [read]

reference the channel a cipher instance is attached to

  struct mwCipher* mwCipherInstance_getCipher (struct mwCipherInstance * ci) [read]

reference the parent cipher of an instance

  struct mwEncryptItem* mwCipherInstance_offer (struct mwCipherInstance * ci) [read]

Offer a cipher.

  void mwCipherInstance_offered (struct mwCipherInstance * ci, struct mwEncryptItem * item)

Indicates a cipher has been offered to our channel.

  void mwDecrypt (const guchar * key, gsize keylen, guchar * iv, struct mwOpaque * in, struct mwOpaque * out)

Decrypt data using an expanded form of the given key.

  void mwDecryptExpanded (const int * ekey, guchar * iv, struct mwOpaque * in, struct mwOpaque * out)

Decrypt data using an already expanded key.

  void mwEncrypt (const guchar * key, gsize keylen, guchar * iv, struct mwOpaque * in, struct mwOpaque * out)

Encrypt data using an expanded form of the given key.

  void mwEncryptExpanded (const int * ekey, guchar * iv, struct mwOpaque * in, struct mwOpaque * out)

Encrypt data using an already-expanded key.

  void mwIV_init (guchar * iv)

Setup an Initialization Vector.

IV must be at least 8 bytes

  void mwKeyExpand (int * ekey, const guchar * key, gsize keylen)

Expand a variable-length key into a 128-byte key (represented as an an array of 64 ints).

  void mwKeyRandom (guchar * key, gsize keylen)

generate some pseudo-random bytes

Cipher Functions

These functions are reused where encryption is necessary outside of a channel (eg. session authentication)

Parameters:
    keylen count of bytes to write into key
    key buffer to write keys into

  void mwMpi_calculateDHShared (struct mwMpi * shared_key, struct mwMpi * remote_key, struct mwMpi * private_key)

sets the shared key value based on the remote and private keys, using the Sametime Prime and Base

  void mwMpi_export (struct mwMpi * i, struct mwOpaque * o)

Export a value into an opaque.

  void mwMpi_free (struct mwMpi * i)

destroy an mpi value

  void mwMpi_import (struct mwMpi * i, struct mwOpaque * o)

Import a value from an opaque.

  struct mwMpi* mwMpi_new () [read]

prepare a new mpi value

  void mwMpi_randDHKeypair (struct mwMpi * private_key, struct mwMpi * public_key)

sets private to a randomly generated value, and calculates public using the Sametime Prime and Base

  void mwMpi_setDHBase (struct mwMpi * i)

set a big integer to the Sametime Base value

  void mwMpi_setDHPrime (struct mwMpi * i)

set a big integer to the Sametime Prime value

Author

Generated automatically by Doxygen for meanwhile from the source code.