public void PublicKey () { StrongNamePublicKeyBlob snpkb = new StrongNamePublicKeyBlob (pk); Assert.IsTrue (snpkb.Equals (snpkb), "Equals(Self)"); Assert.IsFalse (snpkb.Equals (null), "Equals(null)"); Assert.AreEqual ("00240000048000009400000006020000002400005253413100040000010001003DBD7208C62B0EA8C1C058072B635F7C9ABDCB22DB20B2A9DADAEFE800642F5D8DEB7802F7A5367728D7558D1468DBEB2409D02B131B926E2E59544AAC18CFC909023F4FA83E94001FC2F11A27477D1084F514B861621A0C66ABD24C4B9FC90F3CD8920FF5FFCED76E5C6FB1F57DD356F96727A4A5485B079344004AF8FFA4CB", snpkb.ToString (), "ToString(pk)"); StrongNamePublicKeyBlob snpkb2 = new StrongNamePublicKeyBlob (pk); Assert.IsTrue (snpkb.Equals (snpkb2), "Equals()-true"); StrongNamePublicKeyBlob snpkb3 = new StrongNamePublicKeyBlob (bad); Assert.IsFalse (snpkb.Equals (snpkb3), "Equals()-false"); // non standard get hash code - why ??? Assert.AreEqual (snpkb2.GetHashCode (), snpkb.GetHashCode (), "GetHashCode-0"); // the first 4 bytes has code has been fixed in 2.0 beta 1 // Historical data: // #elif NET_1_1 // // It seems to be the first four bytes of the public key data // // which seems like non sense as all valid public key will have the same header ? // Assert.AreEqual (2359296, snpkb.GetHashCode (), "GetHashCode-1"); // Assert.AreEqual (2359296, snpkb2.GetHashCode (), "GetHashCode-2"); // Assert.AreEqual (2989, snpkb3.GetHashCode (), "GetHashCode-3"); // byte[] header = { 0x00, 0x24, 0x00, 0x00 }; // StrongNamePublicKeyBlob snpkb4 = new StrongNamePublicKeyBlob (header); // Assert.AreEqual (2359296, snpkb4.GetHashCode (), "GetHashCode-4"); // #endif }
internal bool IsSubsetOf(SNIP target) { if ((PublicKey != null) && PublicKey.Equals(target.PublicKey)) { return(true); } if (!IsNameSubsetOf(target.Name)) { return(false); } if ((AssemblyVersion != null) && !AssemblyVersion.Equals(target.AssemblyVersion)) { return(false); } // in case PermissionState.None was used in the constructor if (PublicKey == null) { return(target.PublicKey == null); } return(false); }
public override bool IsSubsetOf(IPermission target) { // Handle the easy cases first. if (target == null) { return(blob == null); } else if (!(target is StrongNameIdentityPermission)) { throw new ArgumentException(_("Arg_PermissionMismatch")); } // Check blob subset conditions. StrongNameIdentityPermission t; t = ((StrongNameIdentityPermission)target); if (blob != null && !blob.Equals(t.blob)) { return(false); } // Check name subset conditions. if (name != null && name != t.name) { return(false); } // Check version subset conditions. if (version != null && version != t.version) { return(false); } // It is a subset. return(true); }