public bool ValidateCanary(string canaryString) { byte[] userContextIdBinary; byte[] timeStampBinary; byte[] a; if (!Canary.ParseCanary(canaryString, out userContextIdBinary, out timeStampBinary, out a)) { return(false); } if (Canary.IsExpired(timeStampBinary)) { return(false); } byte[] b = Canary.ComputeHash(userContextIdBinary, timeStampBinary, this.LogonUniqueKey); return(Canary.AreEqual(a, b)); }
public static Canary RestoreCanary(string canaryString, string logonUniqueKey) { byte[] userContextIdBinary; byte[] timeStampBinary; byte[] b; if (Canary.ParseCanary(canaryString, out userContextIdBinary, out timeStampBinary, out b)) { if (Canary.IsExpired(timeStampBinary)) { return(null); } byte[] a = Canary.ComputeHash(userContextIdBinary, timeStampBinary, logonUniqueKey); if (Canary.AreEqual(a, b)) { return(new Canary(userContextIdBinary, timeStampBinary, logonUniqueKey)); } } return(null); }