private static string TranslateMinorStatusCode(uint status, Krb5Interop.GssOidDesc oid) { var context = IntPtr.Zero; var buffer = default(Krb5Interop.GssBufferStruct); Krb5Interop.gss_display_status(out var _, status, GssCMechCode, ref oid, ref context, ref buffer); return(buffer.value == IntPtr.Zero ? string.Empty : Marshal.PtrToStringAnsi(buffer.value)); }
private static string FormatGssMessage(string message, uint majorStatus, uint minorStatus, Krb5Interop.GssOidDesc oid) { var majorMessage = TranslateMajorStatusCode(majorStatus); var minorMessage = TranslateMinorStatusCode(minorStatus, oid); return($"{message}{Environment.NewLine}" + $"GSS Major: ({majorStatus:x8}) {majorMessage}{Environment.NewLine}" + $"GSS Minor: ({minorStatus:x8}) {minorMessage}"); }
public GssException(string message, uint majorStatus, uint minorStatus, Krb5Interop.GssOidDesc oid) : base(FormatGssMessage(message, majorStatus, minorStatus, oid)) { }