| #ifndef _IPXE_MSCHAPV2_H | |
| #define _IPXE_MSCHAPV2_H | |
| /** @file | |
| * | |
| * MS-CHAPv2 authentication | |
| * | |
| */ | |
| FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); | |
| FILE_SECBOOT ( PERMITTED ); | |
| #include <stdint.h> | |
| /** An MS-CHAPv2 challenge */ | |
| struct mschapv2_challenge { | |
| /** Raw bytes */ | |
| uint8_t byte[16]; | |
| } __attribute__ (( packed )); | |
| /** An MS-CHAPv2 NT response */ | |
| struct mschapv2_nt_response { | |
| /** DES-encrypted blocks */ | |
| uint8_t block[3][8]; | |
| } __attribute__ (( packed )); | |
| /** An MS-CHAPv2 challenge response */ | |
| struct mschapv2_response { | |
| /** Peer challenge */ | |
| struct mschapv2_challenge peer; | |
| /** Reserved, must be zero */ | |
| uint8_t reserved[8]; | |
| /** NT response */ | |
| struct mschapv2_nt_response nt; | |
| /** Flags, must be zero */ | |
| uint8_t flags; | |
| } __attribute__ (( packed )); | |
| /** An MS-CHAPv2 authenticator response */ | |
| struct mschapv2_auth { | |
| /** Authenticator response string | |
| * | |
| * This is an unterminated 42-byte string of the form | |
| * "S=<auth_string>" where <auth_string> is the upper-cased | |
| * hexadecimal encoding of the actual authenticator response | |
| * value. Joy. | |
| */ | |
| char wtf[42]; | |
| } __attribute__ (( packed )); | |
| extern void mschapv2_response ( const char *username, const char *password, | |
| const struct mschapv2_challenge *challenge, | |
| const struct mschapv2_challenge *peer, | |
| struct mschapv2_response *response ); | |
| extern void mschapv2_auth ( const char *username, const char *password, | |
| const struct mschapv2_challenge *challenge, | |
| const struct mschapv2_response *response, | |
| struct mschapv2_auth *auth ); | |
| #endif /* _IPXE_MSCHAPV2_H */ |