18d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/*
28d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * Diffie-Hellman groups
38d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * Copyright (c) 2007, Jouni Malinen <j@w1.fi>
48d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt *
5c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt * This software may be distributed under the terms of the BSD license.
6c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt * See README for more details.
78d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */
88d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
98d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifndef DH_GROUPS_H
108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define DH_GROUPS_H
118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct dh_group {
138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	int id;
148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	const u8 *generator;
158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	size_t generator_len;
168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	const u8 *prime;
178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	size_t prime_len;
18a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt	const u8 *order;
19a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt	size_t order_len;
20a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt	unsigned int safe_prime:1;
218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt};
228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtconst struct dh_group * dh_groups_get(int id);
248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct wpabuf * dh_init(const struct dh_group *dh, struct wpabuf **priv);
258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct wpabuf * dh_derive_shared(const struct wpabuf *peer_public,
268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt				 const struct wpabuf *own_private,
278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt				 const struct dh_group *dh);
288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* DH_GROUPS_H */
30