/ GUNRPG.Infrastructure / Security / RunValidationSignature.cs
RunValidationSignature.cs
 1  namespace GUNRPG.Security;
 2  
 3  public sealed class RunValidationSignature
 4  {
 5      private readonly byte[] _finalStateHash;
 6      private readonly byte[] _signature;
 7  
 8      public RunValidationSignature(
 9          Guid runId,
10          Guid playerId,
11          byte[] finalStateHash,
12          Guid serverId,
13          byte[] signature)
14      {
15          RunId = runId;
16          PlayerId = playerId;
17          _finalStateHash = AuthorityCrypto.CloneAndValidateSha256Hash(finalStateHash);
18          ServerId = serverId;
19          _signature = AuthorityCrypto.CloneAndValidateSignature(signature);
20      }
21  
22      public Guid RunId { get; }
23  
24      public Guid PlayerId { get; }
25  
26      public byte[] FinalStateHash => (byte[])_finalStateHash.Clone();
27  
28      public Guid ServerId { get; }
29  
30      public byte[] Signature => (byte[])_signature.Clone();
31  
32      internal byte[] SignatureBytes => _signature;
33  
34      internal byte[] ComputePayloadHash() =>
35          AuthorityCrypto.ComputeRunValidationPayloadHash(RunId, PlayerId, _finalStateHash);
36  }