private void HandleServerKeyExchange(ReadableBuffer messageBuffer) { HandshakeHash.HashData(messageBuffer); var parser = new ServerKeyExchangeParser(messageBuffer); _signatureScheme = parser.SignatureScheme; _certificate.CheckSignature(_cryptoProvider.HashProvider, _signatureScheme, parser.Signature, parser.Data); KeyExchange.SetPeerKey(parser.Key, _certificate, _signatureScheme); }
private Span<byte> HandleClientKeyExchange(ReadableBuffer messageBuffer) { var span = messageBuffer.ToSpan(); HandshakeHash.HashData(span); span = span.Slice(HandshakeFraming.HeaderSize); KeyExchange.SetPeerKey(new BigEndianAdvancingSpan(span), _certificate, _signatureScheme); _secretSchedule.GenerateMasterSecret(dispose: true); _state = HandshakeState.WaitingForChangeCipherSpec; return span; }