(self, pkt, s)
| 2115 | |
| 2116 | class _KRBERROR_data_Field(ASN1F_STRING_PacketField): |
| 2117 | def m2i(self, pkt, s): |
| 2118 | val = super(_KRBERROR_data_Field, self).m2i(pkt, s) |
| 2119 | if not val[0].val: |
| 2120 | return val |
| 2121 | if pkt.errorCode.val in [14, 24, 25, 36]: |
| 2122 | # 14: KDC_ERR_ETYPE_NOSUPP |
| 2123 | # 24: KDC_ERR_PREAUTH_FAILED |
| 2124 | # 25: KDC_ERR_PREAUTH_REQUIRED |
| 2125 | # 36: KRB_AP_ERR_BADMATCH |
| 2126 | return MethodData(val[0].val, _underlayer=pkt), val[1] |
| 2127 | elif pkt.errorCode.val in [6, 7, 12, 13, 18, 29, 32, 41, 60, 62]: |
| 2128 | # 6: KDC_ERR_C_PRINCIPAL_UNKNOWN |
| 2129 | # 7: KDC_ERR_S_PRINCIPAL_UNKNOWN |
| 2130 | # 12: KDC_ERR_POLICY |
| 2131 | # 13: KDC_ERR_BADOPTION |
| 2132 | # 18: KDC_ERR_CLIENT_REVOKED |
| 2133 | # 29: KDC_ERR_SVC_UNAVAILABLE |
| 2134 | # 32: KRB_AP_ERR_TKT_EXPIRED |
| 2135 | # 41: KRB_AP_ERR_MODIFIED |
| 2136 | # 60: KRB_ERR_GENERIC |
| 2137 | # 62: KERB_ERR_TYPE_EXTENDED |
| 2138 | try: |
| 2139 | return KERB_ERROR_DATA(val[0].val, _underlayer=pkt), val[1] |
| 2140 | except BER_Decoding_Error: |
| 2141 | if pkt.errorCode.val in [18, 12]: |
| 2142 | # Some types can also happen in FAST sessions |
| 2143 | # 18: KDC_ERR_CLIENT_REVOKED |
| 2144 | return MethodData(val[0].val, _underlayer=pkt), val[1] |
| 2145 | elif pkt.errorCode.val == 7: |
| 2146 | # This looks like an undocumented structure. |
| 2147 | # 7: KDC_ERR_S_PRINCIPAL_UNKNOWN |
| 2148 | return KERB_ERROR_UNK(val[0].val, _underlayer=pkt), val[1] |
| 2149 | raise |
| 2150 | elif pkt.errorCode.val == 69: |
| 2151 | # KRB_AP_ERR_USER_TO_USER_REQUIRED |
| 2152 | return KRB_TGT_REP(val[0].val, _underlayer=pkt), val[1] |
| 2153 | return val |
| 2154 | |
| 2155 | |
| 2156 | class KRB_ERROR(ASN1_Packet): |
nothing calls this directly
no test coverage detected