Files
UnrealEngineUWP/Engine/Source/Developer/PakFileUtilities/Private/KeyGenerator.h
Jack Porter 079be7f538 Merging //UE4/Dev-Main to Dev-Mobile (//UE4/Dev-Mobile)
#rb None
#jira 0

[CL 4293080 by Jack Porter in Dev-Mobile branch]
2018-08-16 13:53:43 -04:00

49 lines
1.1 KiB
C

// Copyright 1998-2018 Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "Math/BigInt.h"
/**
* Encryption keys: public and private
*/
struct FKeyPair
{
/** Public decryption key */
FEncryptionKey PublicKey;
/** Private encryption key */
FEncryptionKey PrivateKey;
friend FArchive& operator<<(FArchive& Ar, FKeyPair& Pair)
{
Ar << Pair.PublicKey.Exponent;
Ar << Pair.PublicKey.Modulus;
Ar << Pair.PrivateKey.Exponent;
Ar << Pair.PrivateKey.Modulus;
return Ar;
}
bool IsValid() const
{
return !PrivateKey.Exponent.IsZero()
&& !PrivateKey.Modulus.IsZero()
&& !PublicKey.Exponent.IsZero()
&& !PublicKey.Modulus.IsZero();
}
};
/**
* Generates a prime number table where the max prime number value is less than MaxValue
*/
void GeneratePrimeNumberTable(int64 MaxValue, const TCHAR* Filename);
/**
* Generates a file with the encryption keys
*/
bool GenerateKeys(const TCHAR* KeyFilename);
bool SaveKeysToFile(const FKeyPair& Keys, const TCHAR* KeyFilename);
bool ReadKeysFromFile(const TCHAR* KeyFilename, FKeyPair& OutKeys);
bool TestKeys(FKeyPair& Pair);