public string signUrl(string url) { string Nonce, ss, s; if (LoggedIn) { int fclientnonce = (int)(DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond / (1000 * 60 * 5)); // valid for 5*60*1000 ms = 5 minutes; Nonce = fclientnonce.ToString("X"); while (Nonce.Length < 8) { Nonce = '0' + Nonce; } if (Nonce.Length > 8) { Nonce = Nonce.Substring(Nonce.Length - 8, 8); } ss = crc32(url, crc32(Nonce, SessionPrivateKey)).ToString("X"); while (ss.Length < 8) { ss = '0' + ss; } s = url.IndexOf("?") == -1 ? url + "?session_signature=" : url + "&session_signature="; return(s + SessionIDHexa8 + Nonce + ss); } else { return(url); } }