Home | History | Annotate | Download | only in crypto
      1 /*
      2  * WPA Supplicant / shared MSCHAPV2 helper functions / RFC 2433 / RFC 2759
      3  * Copyright (c) 2004-2007, Jouni Malinen <j (at) w1.fi>
      4  *
      5  * This program is free software; you can redistribute it and/or modify
      6  * it under the terms of the GNU General Public License version 2 as
      7  * published by the Free Software Foundation.
      8  *
      9  * Alternatively, this software may be distributed under the terms of BSD
     10  * license.
     11  *
     12  * See README and COPYING for more details.
     13  */
     14 
     15 #ifndef MS_FUNCS_H
     16 #define MS_FUNCS_H
     17 
     18 void generate_nt_response(const u8 *auth_challenge, const u8 *peer_challenge,
     19 			  const u8 *username, size_t username_len,
     20 			  const u8 *password, size_t password_len,
     21 			  u8 *response);
     22 void generate_nt_response_pwhash(const u8 *auth_challenge,
     23 				 const u8 *peer_challenge,
     24 				 const u8 *username, size_t username_len,
     25 				 const u8 *password_hash,
     26 				 u8 *response);
     27 void generate_authenticator_response(const u8 *password, size_t password_len,
     28 				     const u8 *peer_challenge,
     29 				     const u8 *auth_challenge,
     30 				     const u8 *username, size_t username_len,
     31 				     const u8 *nt_response, u8 *response);
     32 void generate_authenticator_response_pwhash(
     33 	const u8 *password_hash,
     34 	const u8 *peer_challenge, const u8 *auth_challenge,
     35 	const u8 *username, size_t username_len,
     36 	const u8 *nt_response, u8 *response);
     37 void nt_challenge_response(const u8 *challenge, const u8 *password,
     38 			   size_t password_len, u8 *response);
     39 
     40 void challenge_response(const u8 *challenge, const u8 *password_hash,
     41 			u8 *response);
     42 void nt_password_hash(const u8 *password, size_t password_len,
     43 		      u8 *password_hash);
     44 void hash_nt_password_hash(const u8 *password_hash, u8 *password_hash_hash);
     45 void get_master_key(const u8 *password_hash_hash, const u8 *nt_response,
     46 		    u8 *master_key);
     47 void get_asymetric_start_key(const u8 *master_key, u8 *session_key,
     48 			     size_t session_key_len, int is_send,
     49 			     int is_server);
     50 int __must_check encrypt_pw_block_with_password_hash(
     51 	const u8 *password, size_t password_len,
     52 	const u8 *password_hash, u8 *pw_block);
     53 int __must_check new_password_encrypted_with_old_nt_password_hash(
     54 	const u8 *new_password, size_t new_password_len,
     55 	const u8 *old_password, size_t old_password_len,
     56 	u8 *encrypted_pw_block);
     57 void nt_password_hash_encrypted_with_block(const u8 *password_hash,
     58 					   const u8 *block, u8 *cypher);
     59 void old_nt_password_hash_encrypted_with_new_nt_password_hash(
     60 	const u8 *new_password, size_t new_password_len,
     61 	const u8 *old_password, size_t old_password_len,
     62 	u8 *encrypted_password_hash);
     63 
     64 #endif /* MS_FUNCS_H */
     65