TrustCore SDK NanoSec API reference  version 7.0
eap_mschapv2.h
Go to the documentation of this file.
1 /*
2  * eap_mschapv2.h
3  *
4  * EAP MSCHAP v2 Helper Functions
5  *
6  * Copyright 2019-2024 DigiCert, Inc. All Rights Reserved.
7  * Proprietary and Confidential Material.
8  *
9  */
10 
32 #ifndef __EAP_MSCHAP_H__
33 #define __EAP_MSCHAP_H__
34 
35 #ifdef __cplusplus
36 extern "C" {
37 #endif
38 
39 #if (defined(__ENABLE_MOCANA_EAP_PEER__) || defined(__ENABLE_MOCANA_EAP_AUTH__))
40 
41 #define MSCHAPV2_CHALLENGE (1)
42 #define MSCHAPV2_RESPONSE (2)
43 #define MSCHAPV2_SUCCESS (3)
44 #define MSCHAPV2_FAILURE (4)
45 
46 #define MSCHAPV2_RESP_LENGTH (49)
47 #define MSCHAPV2_CHAL_LENGTH (16)
48 #define MSCHAPV2_AUTHENTICATOR_LENGTH (42)
49 
107 MOC_EXTERN MSTATUS
108 EAP_MSCHAPProcessPeer (ubyte *appSessionHdl,
109  ubyte *data,ubyte4 datalen,
110  ubyte *UserName,ubyte4 UserNameLen,
111  ubyte *passwordString,ubyte4 passLen,
112  ubyte *peerChallenge,ubyte *authChallenge,
113  ubyte *NtAuthenticator,
114  ubyte **eapRespData, ubyte4 *eapRespLen);
115 
152 MOC_EXTERN MSTATUS
153 EAP_MSCHAPstartRequest (ubyte *appSessionHdl,
154  ubyte * identity, ubyte2 identityLen,
155  ubyte * challenge,
156  ubyte **eapReqData, ubyte4 *eapReqLen);
157 
215 MOC_EXTERN MSTATUS
216 EAP_MSCHAPProcessAuth (ubyte *appSessionHdl,
217  ubyte *data,ubyte4 datalen,
218  ubyte *UserName,ubyte4 UserNameLen,
219  ubyte *succMsg,ubyte4 succMsgLen,
220  ubyte *failMsg,ubyte4 failMsgLen,
221  ubyte *passwordString,ubyte4 passLen,
222  ubyte *authChallenge,ubyte *NtResponse,
223  ubyte **eapReqData, ubyte4 *eapReqLen);
224 
284 MOC_EXTERN MSTATUS
285 EAP_MSCHAPpeerResponse (ubyte *appSessionHdl,
286  ubyte *data,ubyte2 datalen,
287  ubyte *passwordString,ubyte2 passLen,
288  ubyte * peerResponse/*NT */,
289  ubyte * peerChallenge,
290  ubyte * authChallenge,
291  ubyte * UserName,ubyte2 UserNameLen,
292  ubyte **eapRespData, ubyte4 *eapRespLen,
293  byteBoolean *cmp);
294 
344 MOC_EXTERN MSTATUS EAP_MSCHAPgenerateAuthenticatorResponse(
345  ubyte * Password,
346  ubyte2 PasswordLen,
347  ubyte* NtResponse,
348  ubyte* PeerChallenge,
349  ubyte* AuthenticatorChallenge,
350  ubyte* UserName,
351  ubyte2 UserNameLen,
352  ubyte* AuthenticatorResponse);
353 
405 MOC_EXTERN MSTATUS EAP_MSCHAPcheckAuthenticatorResponse(
406  ubyte * Password,
407  ubyte2 PasswordLen,
408  ubyte * NtResponse,
409  ubyte * PeerChallenge,
410  ubyte * AuthenticatorChallenge,
411  ubyte * UserName,
412  ubyte2 UserNameLen,
413  ubyte* ReceivedResponse,
414  byteBoolean * ResponseOK);
415 
459 MOC_EXTERN MSTATUS EAP_MSCHAPgenerateNTResponse(
460  ubyte * AuthenticatorChallenge,
461  ubyte * PeerChallenge,
462  ubyte * UserName,
463  ubyte2 UserNameLen,
464  ubyte * Password,
465  ubyte2 PasswordLen,
466  ubyte * Response);
467 
501 MOC_EXTERN MSTATUS
502 EAP_MSCHAPv0generateNTResponse(ubyte * AuthenticatorChallenge,
503  ubyte * Password,
504  ubyte2 PasswordLen,
505  ubyte * Response);
506 
548 MOC_EXTERN MSTATUS
550  ubyte* masterKey ,
551  ubyte* sessionKey ,
552  ubyte2 sessionKeyLen,
553  byteBoolean send,
554  byteBoolean server);
555 
593 MOC_EXTERN MSTATUS
595  ubyte * Password,
596  ubyte2 PasswordLen,
597  ubyte* NtResponse,
598  ubyte* MasterKey);
599 
628 MOC_EXTERN void
629 EAP_MSCHAPbin2hex (const ubyte *szBin, sbyte *szHex, ubyte4 len);
630 
663 MOC_EXTERN MSTATUS
665  ubyte* Challenge,
666  ubyte* PasswordHash,
667  ubyte* Response);
668 
702 MOC_EXTERN MSTATUS
704  ubyte * PasswordHash,
705  ubyte * PasswordHashHash);
706 
738 MOC_EXTERN MSTATUS EAP_MSCHAPNtPasswordHash(
739  ubyte * Password,
740  ubyte2 PasswordLen,
741  ubyte * PasswordHash);
742 
772 MOC_EXTERN MSTATUS
773 EAP_MSCHAPV2_getChallenge(ubyte *buf);
774 
775 #endif /* ((defined(__ENABLE_MOCANA_EAP_PEER__) || defined(__ENABLE_MOCANA_EAP_AUTH__)) */
776 
777 #ifdef __cplusplus
778 }
779 #endif
780 
781 #endif /* __EAP_MSCHAP_H__ */
MOC_EXTERN MSTATUS EAP_MSCHAPgenerateNTResponse(ubyte *AuthenticatorChallenge, ubyte *PeerChallenge, ubyte *UserName, ubyte2 UserNameLen, ubyte *Password, ubyte2 PasswordLen, ubyte *Response)
Build an MS-CHAP-V2 NT response.
MOC_EXTERN MSTATUS EAP_MSCHAPpeerResponse(ubyte *appSessionHdl, ubyte *data, ubyte2 datalen, ubyte *passwordString, ubyte2 passLen, ubyte *peerResponse, ubyte *peerChallenge, ubyte *authChallenge, ubyte *UserName, ubyte2 UserNameLen, ubyte **eapRespData, ubyte4 *eapRespLen, byteBoolean *cmp)
Determine whether an authenticator response to a peer challenge is valid and build the resultant SUCC...
MOC_EXTERN MSTATUS EAP_MSCHAPNtPasswordHash(ubyte *Password, ubyte2 PasswordLen, ubyte *PasswordHash)
Get a password hash (using MD4).
MOC_EXTERN MSTATUS EAP_MSCHAPgenerateSessionKey(ubyte *masterKey, ubyte *sessionKey, ubyte2 sessionKeyLen, byteBoolean send, byteBoolean server)
Generate a send/receive client/server session key.
MOC_EXTERN MSTATUS EAP_MSCHAPChallengeResponse(ubyte *Challenge, ubyte *PasswordHash, ubyte *Response)
Build an MSCHAP v0 response to the specified challenge and password hash.
MOC_EXTERN MSTATUS EAP_MSCHAPHashNtPasswordHash(ubyte *PasswordHash, ubyte *PasswordHashHash)
Get an irreversible hash of a password hash (using MD4).
MOC_EXTERN MSTATUS EAP_MSCHAPgenerateAuthenticatorResponse(ubyte *Password, ubyte2 PasswordLen, ubyte *NtResponse, ubyte *PeerChallenge, ubyte *AuthenticatorChallenge, ubyte *UserName, ubyte2 UserNameLen, ubyte *AuthenticatorResponse)
Generate an authenticator response.
MOC_EXTERN MSTATUS EAP_MSCHAPProcessAuth(ubyte *appSessionHdl, ubyte *data, ubyte4 datalen, ubyte *UserName, ubyte4 UserNameLen, ubyte *succMsg, ubyte4 succMsgLen, ubyte *failMsg, ubyte4 failMsgLen, ubyte *passwordString, ubyte4 passLen, ubyte *authChallenge, ubyte *NtResponse, ubyte **eapReqData, ubyte4 *eapReqLen)
Determine whether a peer response is valid, build the resultant SUCCESS/FAIL response, and if SUCCESS, send the response.
MOC_EXTERN MSTATUS EAP_MSCHAPv0generateNTResponse(ubyte *AuthenticatorChallenge, ubyte *Password, ubyte2 PasswordLen, ubyte *Response)
Build an MS-CHAP-V0 NT response.
MOC_EXTERN MSTATUS EAP_MSCHAPcheckAuthenticatorResponse(ubyte *Password, ubyte2 PasswordLen, ubyte *NtResponse, ubyte *PeerChallenge, ubyte *AuthenticatorChallenge, ubyte *UserName, ubyte2 UserNameLen, ubyte *ReceivedResponse, byteBoolean *ResponseOK)
Determine an MSCHAP authenticator response's status and include it in a new EAP response.
MOC_EXTERN MSTATUS EAP_MSCHAPgenerateMasterKey(ubyte *Password, ubyte2 PasswordLen, ubyte *NtResponse, ubyte *MasterKey)
Generate an MSK (master session key).
MOC_EXTERN MSTATUS EAP_MSCHAPstartRequest(ubyte *appSessionHdl, ubyte *identity, ubyte2 identityLen, ubyte *challenge, ubyte **eapReqData, ubyte4 *eapReqLen)
Build a challenge request.
MOC_EXTERN MSTATUS EAP_MSCHAPV2_getChallenge(ubyte *buf)
Get a 16-byte challenge value for an MSCHAPv2 exchange.
MOC_EXTERN void EAP_MSCHAPbin2hex(const ubyte *szBin, sbyte *szHex, ubyte4 len)
Get a hexadecimal representation of binary data.
MOC_EXTERN MSTATUS EAP_MSCHAPProcessPeer(ubyte *appSessionHdl, ubyte *data, ubyte4 datalen, ubyte *UserName, ubyte4 UserNameLen, ubyte *passwordString, ubyte4 passLen, ubyte *peerChallenge, ubyte *authChallenge, ubyte *NtAuthenticator, ubyte **eapRespData, ubyte4 *eapRespLen)
Build a response to send to the authenticator.