Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
G
go-ipfs
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
jihao
go-ipfs
Commits
1439a53b
提交
1439a53b
authored
9月 19, 2014
作者:
Juan Batiz-Benet
提交者:
Brian Tiger Chow
9月 22, 2014
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
handshake: bugfix (secure -> insecure chan) + logs
上级
f41817c8
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
9 行增加
和
2 行删除
+9
-2
handshake.go
crypto/spipe/handshake.go
+9
-2
没有找到文件。
crypto/spipe/handshake.go
浏览文件 @
1439a53b
...
@@ -5,6 +5,7 @@ package spipe
...
@@ -5,6 +5,7 @@ package spipe
import
(
import
(
"bytes"
"bytes"
"errors"
"errors"
"fmt"
"strings"
"strings"
"crypto/aes"
"crypto/aes"
...
@@ -48,6 +49,7 @@ func (s *SecurePipe) handshake() error {
...
@@ -48,6 +49,7 @@ func (s *SecurePipe) handshake() error {
return
err
return
err
}
}
// u.DOut("handshake: %s <--> %s\n", s.local.ID.Pretty(), s.remote.ID.Pretty())
myPubKey
,
err
:=
s
.
local
.
PubKey
.
Bytes
()
myPubKey
,
err
:=
s
.
local
.
PubKey
.
Bytes
()
if
err
!=
nil
{
if
err
!=
nil
{
return
err
return
err
...
@@ -65,6 +67,7 @@ func (s *SecurePipe) handshake() error {
...
@@ -65,6 +67,7 @@ func (s *SecurePipe) handshake() error {
return
err
return
err
}
}
// u.POut("sending encoded handshake\n")
s
.
insecure
.
Out
<-
encoded
s
.
insecure
.
Out
<-
encoded
// Parse their Propose packet and generate an Exchange packet.
// Parse their Propose packet and generate an Exchange packet.
...
@@ -73,9 +76,10 @@ func (s *SecurePipe) handshake() error {
...
@@ -73,9 +76,10 @@ func (s *SecurePipe) handshake() error {
select
{
select
{
case
<-
s
.
ctx
.
Done
()
:
case
<-
s
.
ctx
.
Done
()
:
return
ErrClosed
return
ErrClosed
case
resp
=
<-
s
.
Duplex
.
In
:
case
resp
=
<-
s
.
insecure
.
In
:
}
}
// u.POut("received encoded handshake\n")
proposeResp
:=
new
(
Propose
)
proposeResp
:=
new
(
Propose
)
err
=
proto
.
Unmarshal
(
resp
,
proposeResp
)
err
=
proto
.
Unmarshal
(
resp
,
proposeResp
)
if
err
!=
nil
{
if
err
!=
nil
{
...
@@ -98,6 +102,7 @@ func (s *SecurePipe) handshake() error {
...
@@ -98,6 +102,7 @@ func (s *SecurePipe) handshake() error {
}
else
if
s
.
remote
.
ID
==
nil
{
}
else
if
s
.
remote
.
ID
==
nil
{
s
.
remote
.
ID
=
remoteID
s
.
remote
.
ID
=
remoteID
}
}
// u.POut("Remote Peer Identified as %s\n", s.remote.ID.Pretty())
exchange
,
err
:=
selectBest
(
SupportedExchanges
,
proposeResp
.
GetExchanges
())
exchange
,
err
:=
selectBest
(
SupportedExchanges
,
proposeResp
.
GetExchanges
())
if
err
!=
nil
{
if
err
!=
nil
{
...
@@ -114,6 +119,7 @@ func (s *SecurePipe) handshake() error {
...
@@ -114,6 +119,7 @@ func (s *SecurePipe) handshake() error {
return
err
return
err
}
}
// u.POut("Selected %s %s %s\n", exchange, cipherType, hashType)
epubkey
,
done
,
err
:=
ci
.
GenerateEKeyPair
(
exchange
)
// Generate EphemeralPubKey
epubkey
,
done
,
err
:=
ci
.
GenerateEKeyPair
(
exchange
)
// Generate EphemeralPubKey
var
handshake
bytes
.
Buffer
// Gather corpus to sign.
var
handshake
bytes
.
Buffer
// Gather corpus to sign.
...
@@ -153,6 +159,7 @@ func (s *SecurePipe) handshake() error {
...
@@ -153,6 +159,7 @@ func (s *SecurePipe) handshake() error {
theirHandshake
.
Write
(
encoded
)
theirHandshake
.
Write
(
encoded
)
theirHandshake
.
Write
(
exchangeResp
.
GetEpubkey
())
theirHandshake
.
Write
(
exchangeResp
.
GetEpubkey
())
// u.POut("Remote Peer Identified as %s\n", s.remote.ID.Pretty())
ok
,
err
:=
s
.
remote
.
PubKey
.
Verify
(
theirHandshake
.
Bytes
(),
exchangeResp
.
GetSignature
())
ok
,
err
:=
s
.
remote
.
PubKey
.
Verify
(
theirHandshake
.
Bytes
(),
exchangeResp
.
GetSignature
())
if
err
!=
nil
{
if
err
!=
nil
{
return
err
return
err
...
@@ -180,7 +187,7 @@ func (s *SecurePipe) handshake() error {
...
@@ -180,7 +187,7 @@ func (s *SecurePipe) handshake() error {
select
{
select
{
case
<-
s
.
ctx
.
Done
()
:
case
<-
s
.
ctx
.
Done
()
:
return
ErrClosed
return
ErrClosed
case
resp2
=
<-
s
.
Duplex
.
In
:
case
resp2
=
<-
s
.
In
:
}
}
if
bytes
.
Compare
(
resp2
,
finished
)
!=
0
{
if
bytes
.
Compare
(
resp2
,
finished
)
!=
0
{
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论