1 /*      $OpenBSD: dh.h,v 1.7 2001/06/26 17:27:23 markus Exp $   */
   2 
   3 #ifndef _DH_H
   4 #define _DH_H
   5 
   6 #pragma ident   "%Z%%M% %I%     %E% SMI"
   7 
   8 #ifdef __cplusplus
   9 extern "C" {
  10 #endif
  11 
  12 
  13 /*
  14  * Copyright (c) 2000 Niels Provos.  All rights reserved.
  15  *
  16  * Redistribution and use in source and binary forms, with or without
  17  * modification, are permitted provided that the following conditions
  18  * are met:
  19  * 1. Redistributions of source code must retain the above copyright
  20  *    notice, this list of conditions and the following disclaimer.
  21  * 2. Redistributions in binary form must reproduce the above copyright
  22  *    notice, this list of conditions and the following disclaimer in the
  23  *    documentation and/or other materials provided with the distribution.
  24  *
  25  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
  26  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  27  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
  28  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
  29  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
  30  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  31  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  32  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  33  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  34  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  35  */
  36 
  37 struct dhgroup {
  38         int size;
  39         BIGNUM *g;
  40         BIGNUM *p;
  41 };
  42 
  43 DH      *choose_dh(int, int, int);
  44 DH      *dh_new_group_asc(const char *, const char *);
  45 DH      *dh_new_group(BIGNUM *, BIGNUM *);
  46 DH      *dh_new_group1(void);
  47 
  48 void     dh_gen_key(DH *, int);
  49 int      dh_pub_is_valid(DH *, BIGNUM *);
  50 
  51 int      dh_estimate(int);
  52 
  53 #define DH_GRP_MIN      1024
  54 #define DH_GRP_MAX      8192
  55 
  56 #ifdef __cplusplus
  57 }
  58 #endif
  59 
  60 #endif /* _DH_H */