|
@@ -18,6 +18,7 @@
|
|
|
* GNU General Public License for more details.
|
|
|
******************************************************************************/
|
|
|
|
|
|
+#include <linux/kernel.h>
|
|
|
#include <linux/string.h>
|
|
|
#include <linux/crypto.h>
|
|
|
#include <linux/err.h>
|
|
@@ -27,40 +28,11 @@
|
|
|
#include "iscsi_target_nego.h"
|
|
|
#include "iscsi_target_auth.h"
|
|
|
|
|
|
-static unsigned char chap_asciihex_to_binaryhex(unsigned char val[2])
|
|
|
-{
|
|
|
- unsigned char result = 0;
|
|
|
- /*
|
|
|
- * MSB
|
|
|
- */
|
|
|
- if ((val[0] >= 'a') && (val[0] <= 'f'))
|
|
|
- result = ((val[0] - 'a' + 10) & 0xf) << 4;
|
|
|
- else
|
|
|
- if ((val[0] >= 'A') && (val[0] <= 'F'))
|
|
|
- result = ((val[0] - 'A' + 10) & 0xf) << 4;
|
|
|
- else /* digit */
|
|
|
- result = ((val[0] - '0') & 0xf) << 4;
|
|
|
- /*
|
|
|
- * LSB
|
|
|
- */
|
|
|
- if ((val[1] >= 'a') && (val[1] <= 'f'))
|
|
|
- result |= ((val[1] - 'a' + 10) & 0xf);
|
|
|
- else
|
|
|
- if ((val[1] >= 'A') && (val[1] <= 'F'))
|
|
|
- result |= ((val[1] - 'A' + 10) & 0xf);
|
|
|
- else /* digit */
|
|
|
- result |= ((val[1] - '0') & 0xf);
|
|
|
-
|
|
|
- return result;
|
|
|
-}
|
|
|
-
|
|
|
static int chap_string_to_hex(unsigned char *dst, unsigned char *src, int len)
|
|
|
{
|
|
|
- int i, j = 0;
|
|
|
+ int j = DIV_ROUND_UP(len, 2);
|
|
|
|
|
|
- for (i = 0; i < len; i += 2) {
|
|
|
- dst[j++] = (unsigned char) chap_asciihex_to_binaryhex(&src[i]);
|
|
|
- }
|
|
|
+ hex2bin(dst, src, j);
|
|
|
|
|
|
dst[j] = '\0';
|
|
|
return j;
|