dh_groups.h revision a54fa5fb807eaeff45464139b5a7759f060cec68
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Diffie-Hellman groups
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Copyright (c) 2007, Jouni Malinen <j@w1.fi>
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This software may be distributed under the terms of the BSD license.
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * See README for more details.
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef DH_GROUPS_H
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define DH_GROUPS_H
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct dh_group {
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	int id;
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	const u8 *generator;
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	size_t generator_len;
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	const u8 *prime;
17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)	size_t prime_len;
18868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)	const u8 *order;
193551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)	size_t order_len;
203551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)	unsigned int safe_prime:1;
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const struct dh_group * dh_groups_get(int id);
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct wpabuf * dh_init(const struct dh_group *dh, struct wpabuf **priv);
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)struct wpabuf * dh_derive_shared(const struct wpabuf *peer_public,
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				 const struct wpabuf *own_private,
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				 const struct dh_group *dh);
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* DH_GROUPS_H */
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)