public DeviceConsistencyMessage(DeviceConsistencyCommitment commitment, IdentityKeyPair identityKeyPair) { try { byte[] signatureBytes = Curve.CalculateVrfSignature(identityKeyPair.GetPrivateKey(), commitment.ToByteArray()); byte[] vrfOutputBytes = Curve.VerifyVrfSignature(identityKeyPair.GetPublicKey().GetPublicKey(), commitment.ToByteArray(), signatureBytes); _generation = commitment.GetGeneration(); _signature = new DeviceConsistencySignature(signatureBytes, vrfOutputBytes); _serialized = SignalProtos.DeviceConsistencyCodeMessage.CreateBuilder() .SetGeneration((uint)commitment.GetGeneration()) .SetSignature(ByteString.CopyFrom(_signature.GetSignature())) .Build() .ToByteArray(); } catch (InvalidKeyException e) { Debug.Assert(false); throw e; } catch (VrfSignatureVerificationFailedException e) { Debug.Assert(false); throw e; } }
public DeviceConsistencyMessage(DeviceConsistencyCommitment commitment, IdentityKeyPair identityKeyPair) { try { byte[] signatureBytes = Curve.calculateVrfSignature(identityKeyPair.getPrivateKey(), commitment.toByteArray()); byte[] vrfOutputBytes = Curve.verifyVrfSignature(identityKeyPair.getPublicKey().getPublicKey(), commitment.toByteArray(), signatureBytes); this.generation = commitment.getGeneration(); this.signature = new DeviceConsistencySignature(signatureBytes, vrfOutputBytes); this.serialized = new DeviceConsistencyCodeMessage { Generation = (uint)commitment.getGeneration(), Signature = ByteString.CopyFrom(signature.getSignature()) }.ToByteArray(); } catch (InvalidKeyException e) { Debug.Assert(false); throw e; } catch (VrfSignatureVerificationFailedException e) { Debug.Assert(false); throw e; } }
public DeviceConsistencyMessage(DeviceConsistencyCommitment commitment, byte[] serialized, IdentityKey identityKey) { try { SignalProtos.DeviceConsistencyCodeMessage message = SignalProtos.DeviceConsistencyCodeMessage.ParseFrom(serialized); byte[] vrfOutputBytes = Curve.VerifyVrfSignature(identityKey.GetPublicKey(), commitment.ToByteArray(), message.Signature.ToByteArray()); _generation = (int)message.Generation; _signature = new DeviceConsistencySignature(message.Signature.ToByteArray(), vrfOutputBytes); _serialized = serialized; } catch (InvalidProtocolBufferException e) { throw new InvalidMessageException(e); } catch (InvalidKeyException e) { throw new InvalidMessageException(e); } catch (VrfSignatureVerificationFailedException e) { throw new InvalidMessageException(e); } }