Files
UnrealEngineUWP/Engine/Source/Developer/PakFileUtilities/Private/SignedArchiveWriter.h
ryan durand 471d972e62 Updating copyright for Engine Developer.
#rnx
#rb none


#ROBOMERGE-SOURCE: CL 10869240 via CL 10869516 via CL 10869902
#ROBOMERGE-BOT: (v613-10869866)

[CL 10870584 by ryan durand in Main branch]
2019-12-26 15:32:37 -05:00

49 lines
1.2 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "Serialization/Archive.h"
#include "Serialization/MemoryWriter.h"
#include "Math/BigInt.h"
#include "IPlatformFilePak.h"
/**
* Wrapper for writing and signing an archive
*/
class FSignedArchiveWriter : public FArchive
{
/** Buffer to sign */
TArray<uint8> Buffer;
/** Buffer writer */
FMemoryWriter BufferArchive;
/** The actual pak archive */
FArchive& PakWriter;
/** The filename of the signature file that accompanies the pak */
FString PakSignaturesFilename;
/** Size of the archive on disk (including signatures) */
int64 SizeOnDisk;
/** Data size (excluding signatures) */
int64 PakSize;
/** Signing key */
const FRSAKeyHandle SigningKey;
/** Hashes */
TArray<TPakChunkHash> ChunkHashes;
/**
* Serializes and signs a buffer
*/
void SerializeBufferAndSign();
public:
FSignedArchiveWriter(FArchive& InPak, const FString& InPakFilename, const FRSAKeyHandle InSigningKey);
virtual ~FSignedArchiveWriter();
// FArchive interface
virtual bool Close() override;
virtual void Serialize(void* Data, int64 Length) override;
virtual int64 Tell() override;
virtual int64 TotalSize() override;
virtual void Seek(int64 InPos) override;
};