protected static byte[] CHUIDFull(UInt16 fascnAgencyCode, UInt16 fascnSystemSiteCode, UInt32 fascnCredentialNumber, IEnumerable <byte> guid, byte[] expirationDate) { if (null == expirationDate) { throw new ArgumentNullException("expirationDate"); } if (8 != expirationDate.Count()) { throw new ArgumentException("expirationDate: array should be of size 8"); } ServiceExtensions.CheckCryptoLibary(); var value = buildTLV(0x30, FASCN(fascnAgencyCode, fascnSystemSiteCode, fascnCredentialNumber)).Concat(buildTLV(0x34, GUID(guid))) .Concat(buildTLV(0x35, expirationDate)); return(buildTLV(0xEE, value.Concat(buildTLV(0x3E, Crypto.CryptoUtils.SignCHUIDByRandomKeyPair(value))))); }