//public void WriteMsAuthentication(HeaderNames header, AuthSchemes scheme, ByteArrayPart targetname, ByteArrayPart realm, bool version, bool crlf) //{ // ByteArrayPart name; // switch (header) // { // case HeaderNames.ProxyAuthenticate: // name = C.Proxy_Authenticate; // break; // case HeaderNames.WwwAuthenticate: // name = C.WWW_Authenticate; // break; // case HeaderNames.AuthenticationInfo: // name = C.Authentication_Info; // break; // case HeaderNames.ProxyAuthenticationInfo: // name = C.Proxy_Authentication_Info; // break; // default: // throw new ArgumentException(); // } // Write(name, C.HCOLON, C.SP, scheme == AuthSchemes.Ntlm ? C.NTLM : C.Kerberos, C.SP); // if (scheme == AuthSchemes.Kerberos) // Write(C.targetname, C.EQUAL, C.DQUOTE, C.sip, C.SLASH, targetname, C.DQUOTE, C.COMMA); // else // Write(C.targetname, C.EQUAL, C.DQUOTE, targetname, C.DQUOTE, C.COMMA); // Write(C.realm, C.EQUAL, C.DQUOTE, realm, C.DQUOTE); // if (version == true) // Write(C.COMMA, C.version, C.EQUAL, 3); // Write(crlf == true ? C.CRLF : C.COMMA); //} //public void WriteMsAuthenticationInfo(ByteArrayPart opaque, int snum, ByteArrayPart srand, ByteArrayPart rspauth) //{ // Write(C.opaque, C.EQUAL, C.DQUOTE, opaque, C.DQUOTE, C.COMMA); // Write(C.qop, C.EQUAL, C.DQUOTE, C.auth, C.DQUOTE, C.COMMA); // Write(C.snum, C.EQUAL, C.DQUOTE, snum, C.DQUOTE, C.COMMA); // Write(C.srand, C.EQUAL, C.DQUOTE, srand, C.DQUOTE, C.COMMA); // Write(C.rspauth, C.EQUAL, C.DQUOTE, rspauth, C.DQUOTE, C.CRLF); //} //public void WriteMsAuthentication(ByteArrayPart opaque, ByteArrayPart gssapiData) //{ // Write(C.opaque, C.EQUAL, C.DQUOTE, opaque, C.DQUOTE, C.COMMA); // Write(C.gssapi_data, C.EQUAL, C.DQUOTE, gssapiData, C.DQUOTE, C.CRLF); //} public void WriteAuthenticationInfo(bool proxy, AuthSchemes scheme, ByteArrayPart targetname, ByteArrayPart realm, int opaque, int snum, int srand, ArraySegment <byte> rspauth) { Write(proxy ? C.Proxy_Authentication_Info : C.Authentication_Info, C.HCOLON, C.SP, scheme == AuthSchemes.Ntlm ? C.NTLM : C.Kerberos, C.SP); Write(C.targetname, C.EQUAL, C.DQUOTE); if (scheme == AuthSchemes.Kerberos) { Write(C.sip, C.SLASH); } Write(targetname, C.DQUOTE, C.COMMA); Write(C.realm, C.EQUAL, C.DQUOTE, realm, C.DQUOTE); Write(C.COMMA, C.opaque, C.EQUAL, C.DQUOTE); WriteAsHex8(opaque); Write(C.DQUOTE); Write(C.COMMA, C.qop, C.EQUAL, C.DQUOTE, C.auth, C.DQUOTE); Write(C._snum__, snum, C.DQUOTE); Write(C._srand__); WriteAsHex8(srand); Write(C.DQUOTE); Write(C._rspauth__); WriteAsHex(rspauth); Write(C.DQUOTE); Write(C.CRLF); }
public bool TryGetCredentialsByTargetname(AuthSchemes scheme, ByteArrayPart targetname, out Credentials credentials, out bool proxy) { int length = targetname.Length + ((scheme == AuthSchemes.Kerberos) ? 4 : 0); for (int i = 0; i < Count.AuthorizationCount; i++) { if (Authorization[i].AuthScheme == scheme) { if (Authorization[i].Targetname.Length == length && Authorization[i].Targetname.EndWith(targetname)) { credentials = Authorization[i]; proxy = false; return(true); } } } for (int i = 0; i < Count.ProxyAuthorizationCount; i++) { if (ProxyAuthorization[i].AuthScheme == scheme) { if (ProxyAuthorization[i].Targetname.Length == length && ProxyAuthorization[i].Targetname.EndWith(targetname)) { credentials = ProxyAuthorization[i]; proxy = true; return(true); } } } credentials = new Credentials(); proxy = false; return(false); }
public Credentials GetCredentialsByRealm(AuthSchemes scheme, ByteArrayPart realm) { Credentials credentials; TryGetCredentialsByRealm(scheme, realm, out credentials); return(credentials); }
public Credentials GetCredentialsByTargetname(AuthSchemes scheme, ByteArrayPart targetname, out bool proxy) { Credentials credentials; TryGetCredentialsByTargetname(scheme, targetname, out credentials, out proxy); return(credentials); }
public void SetDefaultValue(int index) { this.AuthScheme = AuthSchemes.None; this.AuthAlgorithm = AuthAlgorithms.None; this.Qop.SetDefaultValue(index); this.Nonce.SetDefaultValue(index); this.Realm.SetDefaultValue(index); this.Opaque.SetDefaultValue(index); this.Stale = false; }
public SecurityAssociation(int opaque, AuthSchemes scheme, ByteArrayPart targetname) //, SafeCredHandle credentials) { this.scheme = scheme; this.targetname = targetname.DeepCopy(); this.Opaque = opaque; this.contextHandle = new SafeCtxtHandle(); this.expireTime = DateTime.MaxValue; this.idleTime = DateTime.MaxValue; this.idleTimeUpdatedByExpires = false; this.outSnum = 0; this.inCnum = 0; //_SlidingWindow.SetAll(false); }
public static int Generate(AuthSchemes scheme, int srand, int snum, ByteArrayPart targetname, SipMessageWriter writer, ref byte[] bytes) { int length = 0; Write(scheme.ToUtf8Bytes(), ref bytes, ref length); WriteAsHex8(srand, ref bytes, ref length); Write(snum, ref bytes, ref length); Write(SipMicrosoftAuthentication.realm, ref bytes, ref length); if (scheme == AuthSchemes.Kerberos) { Write(sip_, targetname, ref bytes, ref length); } else { Write(targetname, ref bytes, ref length); } Write(writer.CallId, ref bytes, ref length); Write(writer.CSeq, ref bytes, ref length); Write(writer.Method.ToByteArrayPart(), ref bytes, ref length); Write(writer.FromAddrspec, ref bytes, ref length); Write(writer.FromTag, ref bytes, ref length); Write(writer.ToAddrspec, ref bytes, ref length); Write(writer.ToTag, ref bytes, ref length); // TODO: sip P-Asserted-Identity WriteEmpty(ref bytes, ref length); // TODO: tel P-Asserted-Identity WriteEmpty(ref bytes, ref length); if (writer.Expires != int.MinValue) { Write(writer.Expires, ref bytes, ref length); } else { WriteEmpty(ref bytes, ref length); } if (writer.IsResponse) { Write(writer.StatusCode, ref bytes, ref length); } //SIPServer.Tracer.Info("SignatureBuffer:" + Encoding.UTF8.GetString(bytes, 0, length)); return(length); }
public void SetDefaultValue() { AuthScheme = AuthSchemes.None; AuthAlgorithm = AuthAlgorithms.None; NonceCountBytes.SetDefaultValue(); MessageQop.SetDefaultValue(); DigestUri.SetDefaultValue(); Nonce.SetDefaultValue(); Realm.SetDefaultValue(); Cnonce.SetDefaultValue(); Opaque.SetDefaultValue(); Response.SetDefaultValue(); Username.SetDefaultValue(); NonceCount = int.MinValue; HasResponse = false; OnSetDefaultValue(); }
public static int Generate(AuthSchemes scheme, int srand, int snum, ByteArrayPart targetname, SipMessageReader reader, ref byte[] bytes) { int length = 0; Write(scheme.ToUtf8Bytes(), ref bytes, ref length); WriteAsHex8(srand, ref bytes, ref length); Write(snum, ref bytes, ref length); Write(SipMicrosoftAuthentication.realm, ref bytes, ref length); if (scheme == AuthSchemes.Kerberos) { Write(sip_, targetname, ref bytes, ref length); } else { Write(targetname, ref bytes, ref length); } Write(reader.CallId, ref bytes, ref length); Write(reader.CSeq.Value, ref bytes, ref length); Write(reader.Method.ToByteArrayPart(), ref bytes, ref length); Write(reader.From.AddrSpec.Value, ref bytes, ref length); Write(reader.From.Tag, ref bytes, ref length); Write(reader.To.AddrSpec.Value, ref bytes, ref length); Write(reader.To.Tag, ref bytes, ref length); // TODO: sip P-Asserted-Identity WriteEmpty(ref bytes, ref length); // TODO: tel P-Asserted-Identity WriteEmpty(ref bytes, ref length); if (reader.Expires != int.MinValue) { Write(reader.Expires, ref bytes, ref length); } else { WriteEmpty(ref bytes, ref length); } if (reader.IsResponse) { Write(reader.StatusCode.Value, ref bytes, ref length); } return(length); }
public void WriteAuthenticateMs(bool proxy, AuthSchemes scheme, ByteArrayPart targetname, ByteArrayPart realm, int opaque) { Write(proxy ? C.Proxy_Authenticate : C.WWW_Authenticate, C.HCOLON, C.SP, scheme == AuthSchemes.Ntlm ? C.NTLM : C.Kerberos, C.SP); Write(C.targetname, C.EQUAL, C.DQUOTE); if (scheme == AuthSchemes.Kerberos) { Write(C.sip, C.SLASH); } Write(targetname, C.DQUOTE, C.COMMA); Write(C.realm, C.EQUAL, C.DQUOTE, realm, C.DQUOTE); Write(C.COMMA, C.version, C.EQUAL, 3); Write(C.COMMA, C.opaque, C.EQUAL, C.DQUOTE); WriteAsHex8(opaque); Write(C.DQUOTE, C.CRLF); }
public void SetDefaultValue(int index) { this.AuthScheme = AuthSchemes.None; this.AuthAlgorithm = AuthAlgorithms.None; this.NonceCountBytes.SetDefaultValue(index); this.MessageQop.SetDefaultValue(index); this.DigestUri.SetDefaultValue(index); this.Realm.SetDefaultValue(index); this.Opaque.SetDefaultValue(index); this.Nonce.SetDefaultValue(index); this.Cnonce.SetDefaultValue(index); this.Response.SetDefaultValue(index); this.Username.SetDefaultValue(index); this.Targetname.SetDefaultValue(index); this.GssapiData.SetDefaultValue(index); this.NonceCount = -2147483648; this.Cnum = -2147483648; this.Crand = -2147483648; this.Version = -2147483648; this.HasResponse = false; this.HasGssapiData = false; }
public bool TryGetCredentialsByRealm(AuthSchemes scheme, ByteArrayPart realm, out Credentials credentials) { for (int i = 0; i < Count.AuthorizationCount; i++) { if (Authorization[i].AuthScheme == scheme && Authorization[i].Realm.Equals(realm)) { credentials = Authorization[i]; return(true); } } for (int i = 0; i < Count.ProxyAuthorizationCount; i++) { if (ProxyAuthorization[i].AuthScheme == scheme && ProxyAuthorization[i].Realm.Equals(realm)) { credentials = ProxyAuthorization[i]; return(true); } } credentials = new Credentials(); return(false); }
public bool TryGetCredentialsByRealm(AuthSchemes scheme, ByteArrayPart realm, out Credentials credentials) { for (int i = 0; i < Count.AuthorizationCount; i++) { if (Authorization[i].AuthScheme == scheme && Authorization[i].Realm.Equals(realm)) { credentials = Authorization[i]; return true; } } for (int i = 0; i < Count.ProxyAuthorizationCount; i++) { if (ProxyAuthorization[i].AuthScheme == scheme && ProxyAuthorization[i].Realm.Equals(realm)) { credentials = ProxyAuthorization[i]; return true; } } credentials = new Credentials(); return false; }
public bool TryGetCredentialsByTargetname(AuthSchemes scheme, ByteArrayPart targetname, out Credentials credentials, out bool proxy) { int length = targetname.Length + ((scheme == AuthSchemes.Kerberos) ? 4 : 0); for (int i = 0; i < Count.AuthorizationCount; i++) { if (Authorization[i].AuthScheme == scheme) if (Authorization[i].Targetname.Length == length && Authorization[i].Targetname.EndWith(targetname)) { credentials = Authorization[i]; proxy = false; return true; } } for (int i = 0; i < Count.ProxyAuthorizationCount; i++) { if (ProxyAuthorization[i].AuthScheme == scheme) if (ProxyAuthorization[i].Targetname.Length == length && ProxyAuthorization[i].Targetname.EndWith(targetname)) { credentials = ProxyAuthorization[i]; proxy = true; return true; } } credentials = new Credentials(); proxy = false; return false; }
public Credentials GetCredentialsByTargetname(AuthSchemes scheme, ByteArrayPart targetname, out bool proxy) { Credentials credentials; TryGetCredentialsByTargetname(scheme, targetname, out credentials, out proxy); return credentials; }
public static byte[] ToUtf8Bytes(this AuthSchemes schemes) { return(Converters.authSchemes[(int)schemes]); }
//public void WriteMsAuthentication(HeaderNames header, AuthSchemes scheme, ByteArrayPart targetname, ByteArrayPart realm, bool version, bool crlf) //{ // ByteArrayPart name; // switch (header) // { // case HeaderNames.ProxyAuthenticate: // name = C.Proxy_Authenticate; // break; // case HeaderNames.WwwAuthenticate: // name = C.WWW_Authenticate; // break; // case HeaderNames.AuthenticationInfo: // name = C.Authentication_Info; // break; // case HeaderNames.ProxyAuthenticationInfo: // name = C.Proxy_Authentication_Info; // break; // default: // throw new ArgumentException(); // } // Write(name, C.HCOLON, C.SP, scheme == AuthSchemes.Ntlm ? C.NTLM : C.Kerberos, C.SP); // if (scheme == AuthSchemes.Kerberos) // Write(C.targetname, C.EQUAL, C.DQUOTE, C.sip, C.SLASH, targetname, C.DQUOTE, C.COMMA); // else // Write(C.targetname, C.EQUAL, C.DQUOTE, targetname, C.DQUOTE, C.COMMA); // Write(C.realm, C.EQUAL, C.DQUOTE, realm, C.DQUOTE); // if (version == true) // Write(C.COMMA, C.version, C.EQUAL, 3); // Write(crlf == true ? C.CRLF : C.COMMA); //} //public void WriteMsAuthenticationInfo(ByteArrayPart opaque, int snum, ByteArrayPart srand, ByteArrayPart rspauth) //{ // Write(C.opaque, C.EQUAL, C.DQUOTE, opaque, C.DQUOTE, C.COMMA); // Write(C.qop, C.EQUAL, C.DQUOTE, C.auth, C.DQUOTE, C.COMMA); // Write(C.snum, C.EQUAL, C.DQUOTE, snum, C.DQUOTE, C.COMMA); // Write(C.srand, C.EQUAL, C.DQUOTE, srand, C.DQUOTE, C.COMMA); // Write(C.rspauth, C.EQUAL, C.DQUOTE, rspauth, C.DQUOTE, C.CRLF); //} //public void WriteMsAuthentication(ByteArrayPart opaque, ByteArrayPart gssapiData) //{ // Write(C.opaque, C.EQUAL, C.DQUOTE, opaque, C.DQUOTE, C.COMMA); // Write(C.gssapi_data, C.EQUAL, C.DQUOTE, gssapiData, C.DQUOTE, C.CRLF); //} public void WriteAuthenticationInfo(bool proxy, AuthSchemes scheme, ByteArrayPart targetname, ByteArrayPart realm, int opaque, int snum, int srand, ArraySegment<byte> rspauth) { Write(proxy ? C.Proxy_Authentication_Info : C.Authentication_Info, C.HCOLON, C.SP, scheme == AuthSchemes.Ntlm ? C.NTLM : C.Kerberos, C.SP); Write(C.targetname, C.EQUAL, C.DQUOTE); if (scheme == AuthSchemes.Kerberos) Write(C.sip, C.SLASH); Write(targetname, C.DQUOTE, C.COMMA); Write(C.realm, C.EQUAL, C.DQUOTE, realm, C.DQUOTE); Write(C.COMMA, C.opaque, C.EQUAL, C.DQUOTE); WriteAsHex8(opaque); Write(C.DQUOTE); Write(C.COMMA, C.qop, C.EQUAL, C.DQUOTE, C.auth, C.DQUOTE); Write(C._snum__, snum, C.DQUOTE); Write(C._srand__); WriteAsHex8(srand); Write(C.DQUOTE); Write(C._rspauth__); WriteAsHex(rspauth); Write(C.DQUOTE); Write(C.CRLF); }
public void WriteAuthenticateMs(bool proxy, AuthSchemes scheme, ByteArrayPart targetname, ByteArrayPart realm, int opaque, ArraySegment<byte> gssapiData) { Write(proxy ? C.Proxy_Authenticate : C.WWW_Authenticate, C.HCOLON, C.SP, scheme == AuthSchemes.Ntlm ? C.NTLM : C.Kerberos, C.SP); Write(C.targetname, C.EQUAL, C.DQUOTE); if (scheme == AuthSchemes.Kerberos) Write(C.sip, C.SLASH); Write(targetname, C.DQUOTE, C.COMMA); Write(C.realm, C.EQUAL, C.DQUOTE, realm, C.DQUOTE); Write(C.COMMA, C.version, C.EQUAL, 3); Write(C.COMMA, C.opaque, C.EQUAL, C.DQUOTE); WriteAsHex8(opaque); Write(C.DQUOTE, C.COMMA); Write(C.gssapi_data, C.EQUAL, C.DQUOTE); WriteAsBase64(gssapiData); Write(C.DQUOTE, C.CRLF); }
public Credentials GetCredentialsByRealm(AuthSchemes scheme, ByteArrayPart realm) { Credentials credentials; TryGetCredentialsByRealm(scheme, realm, out credentials); return credentials; }