go.crypto/ssh: implement ECDH.
Implement elliptic-curve Diffie-Hellman, including host key signature verification. Moves host key cryptographic verification to ClientConn.handshake(), so RSA host keys are also verified. Fixes golang/go#6158. R=dave, agl CC=golang-dev https://golang.org/cl/13021045
This commit is contained in:
committed by
Adam Langley
parent
b725ff72eb
commit
d7d50b0a7c
+19
-13
@@ -291,22 +291,28 @@ func marshalSignature(to []byte, sig *signature) []byte {
|
||||
return to
|
||||
}
|
||||
|
||||
func parseSignature(in []byte) (out *signature, rest []byte, ok bool) {
|
||||
var sigBytes, format []byte
|
||||
sig := new(signature)
|
||||
func parseSignatureBody(in []byte) (out *signature, rest []byte, ok bool) {
|
||||
var format []byte
|
||||
if format, in, ok = parseString(in); !ok {
|
||||
return
|
||||
}
|
||||
|
||||
out = &signature{
|
||||
Format: string(format),
|
||||
}
|
||||
|
||||
if out.Blob, in, ok = parseString(in); !ok {
|
||||
return
|
||||
}
|
||||
|
||||
return out, in, ok
|
||||
}
|
||||
|
||||
func parseSignature(in []byte) (out *signature, rest []byte, ok bool) {
|
||||
var sigBytes []byte
|
||||
if sigBytes, rest, ok = parseString(in); !ok {
|
||||
return
|
||||
}
|
||||
|
||||
if format, sigBytes, ok = parseString(sigBytes); !ok {
|
||||
return
|
||||
}
|
||||
sig.Format = string(format)
|
||||
|
||||
if sig.Blob, sigBytes, ok = parseString(sigBytes); !ok {
|
||||
return
|
||||
}
|
||||
|
||||
return sig, rest, ok
|
||||
return parseSignatureBody(sigBytes)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user