public static KerberosAuthorizeMessage BuildNew(byte[] data) { KerberosAuthorizeMessage kerberosAuthorizeMessage = new KerberosAuthorizeMessage(); KerberosAuthorizeMessageBuilder.Build(kerberosAuthorizeMessage, data); return(kerberosAuthorizeMessage); }
public static void Build(KerberosAuthorizeMessage kerberosAuthorizeMessage, byte[] data) { Asn1Parser asn1Parser = new Asn1Parser(); MemoryStream memoryStream = new MemoryStream(data); asn1Parser.LoadData((Stream)memoryStream); Asn1Node rootNode = asn1Parser.RootNode; KerberosAuthorizeMessageBuilder.BuildRoot(kerberosAuthorizeMessage, rootNode); }
private static void BuildRoot(KerberosAuthorizeMessage msg, Asn1Node root) { if (root.ChildNodeCount == 2L) { Asn1Node childNode = root.GetChildNode(0); if (((int)childNode.Tag & 31) != 6) { throw new Exception("OBJECT_IDENTIFIER expected. (path: " + childNode.Path + ")"); } msg.MechType = new MechType(childNode.GetDataStr(false)); msg.NegotiationToken = (NegotiationToken) new NegTokenInit(); KerberosAuthorizeMessageBuilder.BuildNegotiateTokenInit((NegTokenInit)msg.NegotiationToken, root.GetChildNode(1).GetChildNode(0)); } else { if (root.ChildNodeCount != 1L) { return; } msg.NegotiationToken = (NegotiationToken) new NegTokenInit(); KerberosAuthorizeMessageBuilder.BuildNegotiateTokenInit((NegTokenInit)msg.NegotiationToken, root.GetChildNode(0)); } }