public byte[] GetBytes() { byte[] array = new byte[this.GetByteCountToSerializeToken()]; int num = 0; SerializedSecurityAccessToken.serializedSecurityAccessTokenCookie.CopyTo(array, num); num += SerializedSecurityAccessToken.serializedSecurityAccessTokenCookie.Length; array[num++] = 1; SerializedSecurityAccessToken.SerializeStringToByteArray(this.UserSid, array, ref num); SerializedSecurityAccessToken.SerializeSidArrayToByteArray(this.GroupSids, array, ref num); SerializedSecurityAccessToken.SerializeSidArrayToByteArray(this.RestrictedGroupSids, array, ref num); return(array); }
private static void SerializeSidArrayToByteArray(SidStringAndAttributes[] sidArray, byte[] byteArray, ref int byteIndex) { if (sidArray == null || sidArray.Length == 0) { for (int i = 0; i < 4; i++) { byteArray[byteIndex++] = 0; } return; } BitConverter.GetBytes(sidArray.Length).CopyTo(byteArray, byteIndex); byteIndex += 4; foreach (SidStringAndAttributes sidStringAndAttributes in sidArray) { SerializedSecurityAccessToken.SerializeStringToByteArray(sidStringAndAttributes.SecurityIdentifier, byteArray, ref byteIndex); BitConverter.GetBytes(sidStringAndAttributes.Attributes).CopyTo(byteArray, byteIndex); byteIndex += 4; } }