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 }