internal static ProvisioningProfile Load(BinaryReader reader)
            {
                var profile = new ProvisioningProfile();
                MobileProvisionDistributionType type;
                int count;

                profile.FileName     = reader.ReadString();
                profile.LastModified = new DateTime(reader.ReadInt64(), DateTimeKind.Utc);

                profile.Name = reader.ReadString();
                profile.Uuid = reader.ReadString();
                Enum.TryParse(reader.ReadString(), out type);
                profile.Distribution   = type;
                profile.CreationDate   = new DateTime(reader.ReadInt64(), DateTimeKind.Utc);
                profile.ExpirationDate = new DateTime(reader.ReadInt64(), DateTimeKind.Utc);

                count = reader.ReadInt32();
                for (int i = 0; i < count; i++)
                {
                    MobileProvisionPlatform platform;

                    Enum.TryParse(reader.ReadString(), out platform);
                    profile.Platforms.Add(platform);
                }

                profile.ApplicationIdentifier = reader.ReadString();

                count = reader.ReadInt32();
                for (int i = 0; i < count; i++)
                {
                    profile.DeveloperCertificates.Add(DeveloperCertificate.Load(reader));
                }

                return(profile);
            }
            internal static DeveloperCertificate Load(BinaryReader reader)
            {
                var certificate = new DeveloperCertificate();

                certificate.Name       = reader.ReadString();
                certificate.Thumbprint = reader.ReadString();
                return(certificate);
            }