]> git.proxmox.com Git - mirror_edk2.git/blob - MdeModulePkg/Universal/Network/IScsiDxe/IScsiCHAP.h
[Change summary]:
[mirror_edk2.git] / MdeModulePkg / Universal / Network / IScsiDxe / IScsiCHAP.h
1 /** @file
2 The header file of CHAP configuration.
3
4 Copyright (c) 2004 - 2009, Intel Corporation.<BR>
5 All rights reserved. This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
9
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
13 **/
14
15 #ifndef _ISCSI_CHAP_H_
16 #define _ISCSI_CHAP_H_
17
18 #define ISCSI_CHAP_AUTH_INFO_GUID \
19 { \
20 0x786ec0ac, 0x65ae, 0x4d1b, {0xb1, 0x37, 0xd, 0x11, 0xa, 0x48, 0x37, 0x97} \
21 }
22
23 extern EFI_GUID mIScsiCHAPAuthInfoGuid;
24
25 #define ISCSI_AUTH_METHOD_CHAP "CHAP"
26
27 #define ISCSI_KEY_CHAP_ALGORITHM "CHAP_A"
28 #define ISCSI_KEY_CHAP_IDENTIFIER "CHAP_I"
29 #define ISCSI_KEY_CHAP_CHALLENGE "CHAP_C"
30 #define ISCSI_KEY_CHAP_NAME "CHAP_N"
31 #define ISCSI_KEY_CHAP_RESPONSE "CHAP_R"
32
33 #define ISCSI_CHAP_ALGORITHM_MD5 5
34
35 #define ISCSI_CHAP_AUTH_MAX_LEN 1024
36 ///
37 /// MD5_HASHSIZE
38 ///
39 #define ISCSI_CHAP_RSP_LEN 16
40
41 #define ISCSI_CHAP_INITIAL 0
42 #define ISCSI_CHAP_STEP_ONE 1
43 #define ISCSI_CHAP_STEP_TWO 2
44 #define ISCSI_CHAP_STEP_THREE 3
45 #define ISCSI_CHAP_STEP_FOUR 4
46
47 #pragma pack(1)
48
49 typedef struct _ISCSI_CHAP_AUTH_CONFIG_NVDATA {
50 UINT8 CHAPType;
51 CHAR8 CHAPName[ISCSI_CHAP_NAME_MAX_LEN];
52 CHAR8 CHAPSecret[ISCSI_CHAP_SECRET_STORAGE];
53 CHAR8 ReverseCHAPName[ISCSI_CHAP_NAME_MAX_LEN];
54 CHAR8 ReverseCHAPSecret[ISCSI_CHAP_SECRET_STORAGE];
55 } ISCSI_CHAP_AUTH_CONFIG_NVDATA;
56
57 #pragma pack()
58
59 ///
60 /// ISCSI CHAP Authentication Data
61 ///
62 typedef struct _ISCSI_CHAP_AUTH_DATA {
63 ISCSI_CHAP_AUTH_CONFIG_NVDATA AuthConfig;
64 UINT32 InIdentifier;
65 UINT8 InChallenge[ISCSI_CHAP_AUTH_MAX_LEN];
66 UINT32 InChallengeLength;
67 //
68 // Calculated CHAP Response (CHAP_R) value
69 //
70 UINT8 CHAPResponse[ISCSI_CHAP_RSP_LEN];
71
72 //
73 // Auth-data to be sent out for mutual authentication
74 //
75 UINT32 OutIdentifier;
76 UINT8 OutChallenge[ISCSI_CHAP_AUTH_MAX_LEN];
77 UINT32 OutChallengeLength;
78 } ISCSI_CHAP_AUTH_DATA;
79
80 /**
81 This function checks the received iSCSI Login Response during the security
82 negotiation stage.
83
84 @param[in] Conn The iSCSI connection.
85
86 @retval EFI_SUCCESS The Login Response passed the CHAP validation.
87 @retval EFI_OUT_OF_RESOURCES Failed to allocate memory.
88 @retval EFI_PROTOCOL_ERROR Some kind of protocol error happend.
89 @retval Others Other errors as indicated.
90 **/
91 EFI_STATUS
92 IScsiCHAPOnRspReceived (
93 IN ISCSI_CONNECTION *Conn
94 );
95 /**
96 This function fills the CHAP authentication information into the login PDU
97 during the security negotiation stage in the iSCSI connection login.
98
99 @param[in] Conn The iSCSI connection.
100 @param[in, out] Pdu The PDU to send out.
101
102 @retval EFI_SUCCESS All check passed and the phase-related CHAP
103 authentication info is filled into the iSCSI PDU.
104 @retval EFI_OUT_OF_RESOURCES Failed to allocate memory.
105 @retval EFI_PROTOCOL_ERROR Some kind of protocol error happend.
106 **/
107 EFI_STATUS
108 IScsiCHAPToSendReq (
109 IN ISCSI_CONNECTION *Conn,
110 IN OUT NET_BUF *Pdu
111 );
112
113 #endif