618
if (asn1_header_decode(&ctx, &end, &cls, &con, &tag) == 0) {
619
/* Check if we have reached the end of the blob, but with
620
no mechListMic (e.g. NTLMSSP instead of KRB5) */
621
if (ctx.error == ASN1_ERR_DEC_EMPTY)
622
goto decode_negtoken_exit;
623
cFYI(1, "Error decoding last part negTokenInit exit3");
625
} else if ((cls != ASN1_CTX) || (con != ASN1_CON)) {
626
/* tag = 3 indicating mechListMIC */
627
cFYI(1, "Exit 4 cls = %d con = %d tag = %d end = %p (%d)",
628
cls, con, tag, end, *end);
633
if (asn1_header_decode(&ctx, &end, &cls, &con, &tag) == 0) {
634
cFYI(1, "Error decoding last part negTokenInit exit5");
636
} else if ((cls != ASN1_UNI) || (con != ASN1_CON)
637
|| (tag != ASN1_SEQ)) {
638
cFYI(1, "cls = %d con = %d tag = %d end = %p (%d)",
639
cls, con, tag, end, *end);
643
if (asn1_header_decode(&ctx, &end, &cls, &con, &tag) == 0) {
644
cFYI(1, "Error decoding last part negTokenInit exit 7");
646
} else if ((cls != ASN1_CTX) || (con != ASN1_CON)) {
647
cFYI(1, "Exit 8 cls = %d con = %d tag = %d end = %p (%d)",
648
cls, con, tag, end, *end);
653
if (asn1_header_decode(&ctx, &end, &cls, &con, &tag) == 0) {
654
cFYI(1, "Error decoding last part negTokenInit exit9");
656
} else if ((cls != ASN1_UNI) || (con != ASN1_PRI)
657
|| (tag != ASN1_GENSTR)) {
658
cFYI(1, "Exit10 cls = %d con = %d tag = %d end = %p (%d)",
659
cls, con, tag, end, *end);
662
cFYI(1, "Need to call asn1_octets_decode() function for %s",
663
ctx.pointer); /* is this UTF-8 or ASCII? */
664
decode_negtoken_exit:
618
* We currently ignore anything at the end of the SPNEGO blob after
619
* the mechTypes have been parsed, since none of that info is
620
* used at the moment.