internal static bool Parse(KerberosAuthorizationDataPACEntryType type, byte[] data, out KerberosAuthorizationDataPACEntry entry) { entry = null; if (data.Length < 12) { return(false); } int upn_length = BitConverter.ToUInt16(data, 0); int upn_offset = BitConverter.ToUInt16(data, 2); int dns_length = BitConverter.ToUInt16(data, 4); int dns_offset = BitConverter.ToUInt16(data, 6); KerberosUpnDnsInfoFlags flags = (KerberosUpnDnsInfoFlags)BitConverter.ToInt32(data, 8); if (upn_length + upn_offset > data.Length || dns_length + dns_offset > data.Length) { return(false); } string upn = Encoding.Unicode.GetString(data, upn_offset, upn_length); string dns = Encoding.Unicode.GetString(data, dns_offset, dns_length); entry = new KerberosAuthorizationDataPACUpnDnsInfo(type, data, flags, upn, dns); return(true); }
private KerberosAuthorizationDataPACUpnDnsInfo(KerberosAuthorizationDataPACEntryType type, byte[] data, KerberosUpnDnsInfoFlags flags, string upn, string dns) : base(type, data) { Flags = flags; UserPrincipalName = upn; DnsDomainName = dns; }