Compilation environment fixes to make make install work correctly.
[crypto.git] / lib / silccrypt / silcdh.h
index 68d36764c48c7d332f11efbb82d062a774738dd3..c04bb06eded3600962d92ba19d0420eefbdcbd12 100644 (file)
@@ -1,41 +1,40 @@
-/****h* silccrypt/SilcDH/silcdh.h
- *
- * NAME
- *
- * silcdh.h
- *
- * COPYRIGHT
- *
- * Author: Pekka Riikonen <priikone@poseidon.pspt.fi>
- *
- * Copyright (C) 2001 Pekka Riikonen
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
+/*
+
+  silcdh.h
+
+  Author: Pekka Riikonen <priikone@silcnet.org>
+
+  Copyright (C) 2001 - 2008 Pekka Riikonen
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; version 2 of the License.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+*/
+
+/****h* silccrypt/Diffie Hellman Interface
  *
  * DESCRIPTION
  *
  * PKCS #3 compliant Diffie Hellman key agreement protocol implementation.
  * This is used as part of SKE (SILC Key Exchange) protocol.
+ *
  ***/
 
 #ifndef SILCDH_H
 #define SILCDH_H
 
 #include "silcmp.h"
-#include "silcrng.h"
 
-/****s* silccrypt/SilcDH/SilcDH
+/****s* silccrypt/SilcDH
  *
  * NAME
- * 
+ *
  *    typedef struct SilcDHStruct *SilcDH;
  *
  * DESCRIPTION
@@ -50,37 +49,35 @@ typedef struct SilcDHStruct *SilcDH;
 /* Diffie Hellman context. This includes the DH parameters including the
    negotiated key material. */
 struct SilcDHStruct {
-  SilcMPInt *g;             /* Global base (generator) */
-  SilcMPInt *p;                  /* Global prime (modulus, prime) */
-  SilcMPInt *lpf;                /* Largest prime factor (prime) */
-  SilcMPInt *my_x;               /* x, My private value (random) */
-  SilcMPInt *my_y;               /* y, My public value (y = g ^ x mod p) */
-  SilcMPInt *your_y;     /* y', Your public value (y' = g ^ x' mod p) */
-  SilcMPInt *z;                  /* The computed secret key (z = y' ^ x mod p) */
-
-  SilcRng rng;           /* RNG */
+  SilcMPInt *g;                     /* Global base (generator) */
+  SilcMPInt *p;                     /* Global prime (modulus, prime) */
+  SilcMPInt *lpf;           /* Largest prime factor (prime) */
+  SilcMPInt *my_x;          /* x, My private value (random) */
+  SilcMPInt *my_y;          /* y, My public value (y = g ^ x mod p) */
+  SilcMPInt *your_y;        /* y', Your public value (y' = g ^ x' mod p) */
+  SilcMPInt *z;                     /* The computed secret key (z = y' ^ x mod p) */
 };
 
-/****f* silccrypt/SilcDH/silc_dh_alloc
+/****f* silccrypt/silc_dh_alloc
  *
  * SYNOPSIS
- *    
- *    SilcDH silc_dh_alloc(SilcRng rng, SilcMPInt *g, SilcMPInt *p, SilcMPInt *lpf);
- * 
+ *
+ *    SilcDH silc_dh_alloc(SilcMPInt *g, SilcMPInt *p, SilcMPInt *lpf);
+ *
  * DESCRIPTION
  *
- *    Allocate SilcDH context. The `rng' must be initialized random number 
- *    generator context, the `g' is the public base generator used in the 
- *    negotiation, the `p' is the public prime used in the negotiation and
- *    the `lpf' is largest prime factor of p defined publicly as well. The
- *    `lpf' is optional and if it is not supplied then the private values
- *    generated satifies 0 < x < p - 1 instead of 0 < x < lpf. Returns NULL
- *    on error or allocated SilcDH context on success. 
+ *    Allocate SilcDH context. The `g' is the public base generator used
+ *    in the negotiation, the `p' is the public prime used in the
+ *    negotiation and the `lpf' is largest prime factor of p defined
+ *    publicly as well. The `lpf' is optional and if it is not supplied
+ *    then the private values generated satifies 0 < x < p - 1 instead
+ *    of 0 < x < lpf. Returns NULL on error or allocated SilcDH context
+ *    on success.
  *
  ***/
-SilcDH silc_dh_alloc(SilcRng rng, SilcMPInt *g, SilcMPInt *p, SilcMPInt *lpf);
+SilcDH silc_dh_alloc(SilcMPInt *g, SilcMPInt *p, SilcMPInt *lpf);
 
-/****f* silccrypt/SilcDH/silc_dh_free
+/****f* silccrypt/silc_dh_free
  *
  * SYNOPSIS
  *
@@ -88,89 +85,89 @@ SilcDH silc_dh_alloc(SilcRng rng, SilcMPInt *g, SilcMPInt *p, SilcMPInt *lpf);
  *
  * DESCRIPTION
  *
- *    Frees the SilcDH context. Does not free the RNG context given in the 
- *    allocation. Frees all the allocated data inside the SilcDH context. 
+ *    Free the SilcDH context. Frees all the allocated data inside the
+ *    SilcDH context.
  *
  ***/
 void silc_dh_free(SilcDH dh);
 
-/****f* silccrypt/SilcDH/silc_dh_generate_private
+/****f* silccrypt/silc_dh_generate_private
  *
  * SYNOPSIS
  *
- *    int silc_dh_generate_private(SilcDH dh, SilcMPInt **x);
+ *    SilcBool silc_dh_generate_private(SilcDH dh, const SilcMPInt **x);
  *
  * DESCRIPTION
  *
  *    Generates random private value `x' such that 0 < x < lpf at most of
  *    length of lpf. Returns FALSE if the random number could not be generated.
  *    Returns the generated value into `x' pointer sent as argument, unless
- *    the `x' is NULL. The returned `x' must no be freed by the caller. 
+ *    the `x' is NULL. The returned `x' must not be freed by the caller.
  *
  ***/
-int silc_dh_generate_private(SilcDH dh, SilcMPInt **x);
+SilcBool silc_dh_generate_private(SilcDH dh, const SilcMPInt **x);
 
-/****f* silccrypt/SilcDH/silc_dh_compute_public
+/****f* silccrypt/silc_dh_compute_public
  *
  * SYNOPSIS
  *
- *    int silc_dh_compute_public(SilcDH dh, SilcMPInt **y);
+ *    SilcBool silc_dh_compute_public(SilcDH dh, const SilcMPInt **y);
  *
  * DESCRIPTION
  *
  *    Computes the public key y = g ^ x mod p, and returns it to the `y'
  *    pointer sent as argument, unless the `y' is NULL. Returns FALSE if
  *    the computation could not be performed. The returned `y' must not be
- *    freed by the caller. 
+ *    freed by the caller.
  *
  ***/
-int silc_dh_compute_public(SilcDH dh, SilcMPInt **y);
+SilcBool silc_dh_compute_public(SilcDH dh, const SilcMPInt **y);
 
-/****f* silccrypt/SilcDH/silc_dh_remote_public
+/****f* silccrypt/silc_dh_remote_public
  *
  * SYNOPSIS
  *
- *    int silc_dh_compute_public(SilcDH dh, SilcMPInt **y);
+ *    SilcBool silc_dh_compute_public(SilcDH dh, SilcMPInt *y);
  *
  * DESCRIPTION
  *
  *    Sets the remote end's public value y' into the SilcDH context.
- *    This must be done before computing the secret key. Returns FALSE 
- *    on error. 
+ *    This must be done before computing the secret key. Returns FALSE
+ *    on error.
  *
  ***/
-int silc_dh_set_remote_public(SilcDH dh, SilcMPInt *y);
+SilcBool silc_dh_set_remote_public(SilcDH dh, SilcMPInt *y);
 
-/****f* silccrypt/SilcDH/silc_dh_compute_key
+/****f* silccrypt/silc_dh_compute_key
  *
  * SYNOPSIS
  *
- *    int silc_dh_compute_key(SilcDH dh, SilcMPInt **z);
+ *    SilcBool silc_dh_compute_key(SilcDH dh, const SilcMPInt **z);
  *
  * DESCRIPTION
  *
  *    Computes the secret key z = y' ^ x mod p, and returns the key to the
  *    `z' pointer sent as argument, unless the `z' is NULL. Returns FALSE if
  *    the computation could not be performed. The returned `z' must not be
- *    freed by the caller. 
+ *    freed by the caller.
  *
  ***/
-int silc_dh_compute_key(SilcDH dh, SilcMPInt **z);
+SilcBool silc_dh_compute_key(SilcDH dh, const SilcMPInt **z);
 
-/****f* silccrypt/SilcDH/silc_dh_remote_public
+/****f* silccrypt/silc_dh_compute_key_data
  *
  * SYNOPSIS
  *
- *    int silc_dh_compute_key_data(SilcDH dh, unsigned char **z, 
- *                                 uint32 *z_len);
+ *    SilcBool silc_dh_compute_key_data(SilcDH dh, unsigned char **z,
+ *                                  SilcUInt32 *z_len);
  *
  * DESCRIPTION
  *
  *    Same as above but returns the computed secret key as octet binary
- *    string. 
+ *    string.  The caller must free the returned binary string.
  *
  ***/
-int silc_dh_compute_key_data(SilcDH dh, unsigned char **z, 
-                            uint32 *z_len);
+SilcBool silc_dh_compute_key_data(SilcDH dh, unsigned char **z,
+                             SilcUInt32 *z_len);
 
 #endif