xref: /freebsd/contrib/wpa/src/crypto/dh_groups.h (revision 5b9c547c)
139beb93cSSam Leffler /*
239beb93cSSam Leffler  * Diffie-Hellman groups
339beb93cSSam Leffler  * Copyright (c) 2007, Jouni Malinen <j@w1.fi>
439beb93cSSam Leffler  *
5f05cddf9SRui Paulo  * This software may be distributed under the terms of the BSD license.
6f05cddf9SRui Paulo  * See README for more details.
739beb93cSSam Leffler  */
839beb93cSSam Leffler 
939beb93cSSam Leffler #ifndef DH_GROUPS_H
1039beb93cSSam Leffler #define DH_GROUPS_H
1139beb93cSSam Leffler 
1239beb93cSSam Leffler struct dh_group {
1339beb93cSSam Leffler 	int id;
1439beb93cSSam Leffler 	const u8 *generator;
1539beb93cSSam Leffler 	size_t generator_len;
1639beb93cSSam Leffler 	const u8 *prime;
1739beb93cSSam Leffler 	size_t prime_len;
18*5b9c547cSRui Paulo 	const u8 *order;
19*5b9c547cSRui Paulo 	size_t order_len;
20*5b9c547cSRui Paulo 	unsigned int safe_prime:1;
2139beb93cSSam Leffler };
2239beb93cSSam Leffler 
2339beb93cSSam Leffler const struct dh_group * dh_groups_get(int id);
2439beb93cSSam Leffler struct wpabuf * dh_init(const struct dh_group *dh, struct wpabuf **priv);
2539beb93cSSam Leffler struct wpabuf * dh_derive_shared(const struct wpabuf *peer_public,
2639beb93cSSam Leffler 				 const struct wpabuf *own_private,
2739beb93cSSam Leffler 				 const struct dh_group *dh);
2839beb93cSSam Leffler 
2939beb93cSSam Leffler #endif /* DH_GROUPS_H */
30