1181111Sdes/* $OpenBSD: dh.h,v 1.10 2008/06/26 09:19:40 djm Exp $ */ 276259Sgreen 369587Sgreen/* 469587Sgreen * Copyright (c) 2000 Niels Provos. All rights reserved. 569587Sgreen * 669587Sgreen * Redistribution and use in source and binary forms, with or without 769587Sgreen * modification, are permitted provided that the following conditions 869587Sgreen * are met: 969587Sgreen * 1. Redistributions of source code must retain the above copyright 1069587Sgreen * notice, this list of conditions and the following disclaimer. 1169587Sgreen * 2. Redistributions in binary form must reproduce the above copyright 1269587Sgreen * notice, this list of conditions and the following disclaimer in the 1369587Sgreen * documentation and/or other materials provided with the distribution. 1469587Sgreen * 1569587Sgreen * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 1669587Sgreen * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 1769587Sgreen * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 1869587Sgreen * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 1969587Sgreen * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 2069587Sgreen * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2169587Sgreen * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2269587Sgreen * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2369587Sgreen * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 2469587Sgreen * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2569587Sgreen */ 2669587Sgreen#ifndef DH_H 2769587Sgreen#define DH_H 2869587Sgreen 2969587Sgreenstruct dhgroup { 3069587Sgreen int size; 3169587Sgreen BIGNUM *g; 3269587Sgreen BIGNUM *p; 3369587Sgreen}; 3469587Sgreen 3592555SdesDH *choose_dh(int, int, int); 3676259SgreenDH *dh_new_group_asc(const char *, const char *); 3776259SgreenDH *dh_new_group(BIGNUM *, BIGNUM *); 3876259SgreenDH *dh_new_group1(void); 39137015SdesDH *dh_new_group14(void); 4069587Sgreen 4192555Sdesvoid dh_gen_key(DH *, int); 4292555Sdesint dh_pub_is_valid(DH *, BIGNUM *); 4376259Sgreen 4492555Sdesint dh_estimate(int); 4576259Sgreen 4676259Sgreen#define DH_GRP_MIN 1024 4776259Sgreen#define DH_GRP_MAX 8192 4876259Sgreen 49181111Sdes/* 50181111Sdes * Values for "type" field of moduli(5) 51181111Sdes * Specifies the internal structure of the prime modulus. 52181111Sdes */ 53181111Sdes#define MODULI_TYPE_UNKNOWN (0) 54181111Sdes#define MODULI_TYPE_UNSTRUCTURED (1) 55181111Sdes#define MODULI_TYPE_SAFE (2) 56181111Sdes#define MODULI_TYPE_SCHNORR (3) 57181111Sdes#define MODULI_TYPE_SOPHIE_GERMAIN (4) 58181111Sdes#define MODULI_TYPE_STRONG (5) 59181111Sdes 60181111Sdes/* 61181111Sdes * Values for "tests" field of moduli(5) 62181111Sdes * Specifies the methods used in checking for primality. 63181111Sdes * Usually, more than one test is used. 64181111Sdes */ 65181111Sdes#define MODULI_TESTS_UNTESTED (0x00) 66181111Sdes#define MODULI_TESTS_COMPOSITE (0x01) 67181111Sdes#define MODULI_TESTS_SIEVE (0x02) 68181111Sdes#define MODULI_TESTS_MILLER_RABIN (0x04) 69181111Sdes#define MODULI_TESTS_JACOBI (0x08) 70181111Sdes#define MODULI_TESTS_ELLIPTIC (0x10) 71181111Sdes 72181111Sdes 7369587Sgreen#endif 74