public byte[] AddMetadataHeader(VaultMetadata metadata, byte[] encryptedVaultBytes) { byte[] metadataBytes = CreateVaultMetadataHeader(metadata); byte[] finalBytes = new byte[metadataBytes.Length + encryptedVaultBytes.Length + this.HeaderSeperator.Length]; metadataBytes.CopyTo(finalBytes, 0); HeaderSeperator.CopyTo(finalBytes, metadataBytes.Length); encryptedVaultBytes.CopyTo(finalBytes, metadataBytes.Length + HeaderSeperator.Length); return(finalBytes); }
private byte[] CreateVaultMetadataHeader(VaultMetadata vaultMetadata) { int versionBytesCount = sizeof(long); var versionBytes = BitConverter.GetBytes(vaultMetadata.Version); var createLocationBytes = BitConverter.GetBytes((int)vaultMetadata.CreateLocation); var headerBytes = new byte[TotalHeaderLength]; versionBytes.CopyTo(headerBytes, 0); createLocationBytes.CopyTo(headerBytes, versionBytesCount); return(headerBytes); }
public VaultMetadata GetVaultFileMetadata(byte[] vaultFileBytesWithMetadata) { int versionBytesCount = sizeof(long); int createLocationBytesCount = sizeof(int); byte[] metadataBytes = GetVaultFileMetadataHeader(vaultFileBytesWithMetadata); var result = new VaultMetadata(); if (metadataBytes != null) { var versionBytes = metadataBytes.Take(versionBytesCount).ToArray(); var createLocationBytes = metadataBytes.Skip(versionBytesCount).Take(createLocationBytesCount).ToArray(); result.Version = BitConverter.ToInt64(versionBytes, 0); result.CreateLocation = (VaultCreateLocation)BitConverter.ToInt32(createLocationBytes, 0); } return(result); }