| 515 | } |
| 516 | |
| 517 | bool parseNegToken(unsigned char* token, int tokenSize, unsigned char** parsedToken, unsigned long *parsedTokenLen) { |
| 518 | SPNEGO_TOKEN_HANDLE hSpnegoToken = NULL; |
| 519 | int nError = 0L; |
| 520 | unsigned char* pbMechToken = NULL; |
| 521 | |
| 522 | if (spnegoInitFromBinary(token, tokenSize, &hSpnegoToken) != SPNEGO_E_SUCCESS){ |
| 523 | printf("\nCannot parse SPNEGO NegTokenInit token\n"); |
| 524 | return false; |
| 525 | } |
| 526 | |
| 527 | nError = spnegoGetMechToken(hSpnegoToken, NULL, parsedTokenLen); |
| 528 | if (SPNEGO_E_BUFFER_TOO_SMALL == nError) |
| 529 | { |
| 530 | |
| 531 | // Allocate a properly sized buffer and retry. |
| 532 | pbMechToken = (unsigned char*)malloc(*parsedTokenLen); |
| 533 | |
| 534 | if (spnegoGetMechToken(hSpnegoToken, pbMechToken, parsedTokenLen)!= SPNEGO_E_SUCCESS) |
| 535 | { |
| 536 | printf("\nCannot get MechToken content from SPNEGO NegTokenInit token\n"); |
| 537 | return false; |
| 538 | } |
| 539 | } |
| 540 | *parsedToken = pbMechToken; |
| 541 | return true; |
| 542 | } |
| 543 | |
| 544 | bool genNegTokenTarg(unsigned char* ntlmssp, int ntlmssp_len, unsigned char** generatedToken, unsigned long* generatedTokenLen) { |
| 545 | unsigned char* pbRespToken = NULL; |
no test coverage detected