public static byte[] ConvertPartitionInformation(byte[] originalSignature, MailboxSignatureFlags originalSignatureFlags, PartitionInformation partitionInformation)
        {
            MailboxSignatureSectionsContainer mailboxSignatureSectionsContainer;

            if (originalSignatureFlags == MailboxSignatureFlags.GetLegacy)
            {
                mailboxSignatureSectionsContainer = MailboxSignatureSectionsContainer.Create(MailboxSignatureSectionType.BasicInformation, new MailboxSignatureConverter.MailboxBasicInformationSectionCreator(originalSignature));
            }
            else
            {
                mailboxSignatureSectionsContainer = MailboxSignatureSectionsContainer.Parse(originalSignature, NullMailboxSignatureSectionProcessor.Instance);
            }
            int num = partitionInformation.Serialize(null, 0);

            byte[] array = new byte[num];
            partitionInformation.Serialize(array, 0);
            mailboxSignatureSectionsContainer.UpdateSection(new MailboxSignatureSectionMetadata(MailboxSignatureSectionType.PartitionInformation, 1, 1, array.Length), array);
            return(mailboxSignatureSectionsContainer.Serialize());
        }
        public static byte[] ConvertTenantHint(byte[] originalSignature, MailboxSignatureFlags originalSignatureFlags, TenantPartitionHint tenantHint)
        {
            MailboxSignatureSectionsContainer mailboxSignatureSectionsContainer;

            if (originalSignatureFlags == MailboxSignatureFlags.GetLegacy)
            {
                mailboxSignatureSectionsContainer = MailboxSignatureSectionsContainer.Create(MailboxSignatureSectionType.BasicInformation, new MailboxSignatureConverter.MailboxBasicInformationSectionCreator(originalSignature));
            }
            else
            {
                mailboxSignatureSectionsContainer = MailboxSignatureSectionsContainer.Parse(originalSignature, NullMailboxSignatureSectionProcessor.Instance);
            }
            if (tenantHint == null)
            {
                tenantHint = TenantPartitionHint.FromOrganizationId(OrganizationId.ForestWideOrgId);
            }
            byte[] persistablePartitionHint = tenantHint.GetPersistablePartitionHint();
            int    num = TenantHintHelper.SerializeTenantHint(persistablePartitionHint, null, 0);

            byte[] array = new byte[num];
            TenantHintHelper.SerializeTenantHint(persistablePartitionHint, array, 0);
            mailboxSignatureSectionsContainer.UpdateSection(new MailboxSignatureSectionMetadata(MailboxSignatureSectionType.TenantHint, 1, 1, persistablePartitionHint.Length), array);
            return(mailboxSignatureSectionsContainer.Serialize());
        }
 public static byte[] ExtractMailboxBasicInfo(byte[] signatureBlob)
 {
     MailboxSignatureConverter.MailboxBasicInformationExtractor mailboxBasicInformationExtractor = new MailboxSignatureConverter.MailboxBasicInformationExtractor();
     MailboxSignatureSectionsContainer.Parse(signatureBlob, mailboxBasicInformationExtractor);
     return(mailboxBasicInformationExtractor.MailboxBasicInformation);
 }