Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
G
go-ipfs
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
jihao
go-ipfs
Commits
84262be0
提交
84262be0
authored
3月 01, 2015
作者:
Henry
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
godep&x/crypto: updated multihash and moved to x/crypto for blowfish
上级
6cc6a800
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
19 个修改的文件
包含
152 行增加
和
88 行删除
+152
-88
Godeps.json
Godeps/Godeps.json
+10
-12
Makefile
...ps/_workspace/src/github.com/jbenet/go-multihash/Makefile
+1
-1
sum.go
Godeps/_workspace/src/github.com/jbenet/go-multihash/sum.go
+1
-1
block.go
Godeps/_workspace/src/golang.org/x/crypto/blowfish/block.go
+0
-0
blowfish_test.go
...rkspace/src/golang.org/x/crypto/blowfish/blowfish_test.go
+0
-0
cipher.go
Godeps/_workspace/src/golang.org/x/crypto/blowfish/cipher.go
+0
-0
const.go
Godeps/_workspace/src/golang.org/x/crypto/blowfish/const.go
+0
-0
doc.go
Godeps/_workspace/src/golang.org/x/crypto/sha3/doc.go
+20
-22
hashes.go
Godeps/_workspace/src/golang.org/x/crypto/sha3/hashes.go
+0
-0
keccakf.go
Godeps/_workspace/src/golang.org/x/crypto/sha3/keccakf.go
+0
-0
register.go
Godeps/_workspace/src/golang.org/x/crypto/sha3/register.go
+0
-0
sha3.go
Godeps/_workspace/src/golang.org/x/crypto/sha3/sha3.go
+17
-50
sha3_test.go
Godeps/_workspace/src/golang.org/x/crypto/sha3/sha3_test.go
+0
-0
shake.go
Godeps/_workspace/src/golang.org/x/crypto/sha3/shake.go
+0
-0
keccakKats.json.deflate
...golang.org/x/crypto/sha3/testdata/keccakKats.json.deflate
+0
-0
xor.go
Godeps/_workspace/src/golang.org/x/crypto/sha3/xor.go
+16
-0
xor_generic.go
...ps/_workspace/src/golang.org/x/crypto/sha3/xor_generic.go
+28
-0
xor_unaligned.go
.../_workspace/src/golang.org/x/crypto/sha3/xor_unaligned.go
+58
-0
al.go
p2p/crypto/secio/al.go
+1
-2
没有找到文件。
Godeps/Godeps.json
浏览文件 @
84262be0
...
...
@@ -15,16 +15,6 @@
"Rev"
:
"35bc42037350f0078e3c974c6ea690f1926603ab"
},
{
"ImportPath"
:
"code.google.com/p/go.crypto/blowfish"
,
"Comment"
:
"null-236"
,
"Rev"
:
"69e2a90ed92d03812364aeb947b7068dc42e561e"
},
{
"ImportPath"
:
"code.google.com/p/go.crypto/sha3"
,
"Comment"
:
"null-236"
,
"Rev"
:
"69e2a90ed92d03812364aeb947b7068dc42e561e"
},
{
"ImportPath"
:
"code.google.com/p/gogoprotobuf/io"
,
"Rev"
:
"6c980277330804e94257ac7ef70a3adbe1641059"
},
...
...
@@ -188,8 +178,8 @@
},
{
"ImportPath"
:
"github.com/jbenet/go-multihash"
,
"Comment"
:
"0.1.0-3
3-g4e09420
"
,
"Rev"
:
"
4e09420ceb2db37a5fbb149821b9e63d88d47218
"
"Comment"
:
"0.1.0-3
6-g87e53a9
"
,
"Rev"
:
"
87e53a9d2875a18a7863b351d22f912545e6b3a3
"
},
{
"ImportPath"
:
"github.com/jbenet/go-peerstream"
,
...
...
@@ -236,6 +226,14 @@
"Rev"
:
"ce8acff4829e0c2458a67ead32390ac0a381c862"
},
{
"ImportPath"
:
"golang.org/x/crypto/blowfish"
,
"Rev"
:
"1351f936d976c60a0a48d728281922cf63eafb8d"
},
{
"ImportPath"
:
"golang.org/x/crypto/sha3"
,
"Rev"
:
"1351f936d976c60a0a48d728281922cf63eafb8d"
},
{
"ImportPath"
:
"golang.org/x/net/context"
,
"Rev"
:
"b6fdb7d8a4ccefede406f8fe0f017fb58265054c"
},
...
...
Godeps/_workspace/src/github.com/jbenet/go-multihash/Makefile
浏览文件 @
84262be0
...
...
@@ -7,5 +7,5 @@ go_test: go_deps
go
test
-race
-cpu
=
5
-v
./...
go_deps
:
go get
code.google.com/p/go.
crypto/sha3
go get
golang.org/x/
crypto/sha3
go get github.com/jbenet/go-base58
Godeps/_workspace/src/github.com/jbenet/go-multihash/sum.go
浏览文件 @
84262be0
...
...
@@ -7,7 +7,7 @@ import (
"errors"
"fmt"
sha3
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/
code.google.com/p/go.
crypto/sha3"
sha3
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/
golang.org/x/
crypto/sha3"
)
var
ErrSumNotSupported
=
errors
.
New
(
"Function not implemented. Complain to lib maintainer."
)
...
...
Godeps/_workspace/src/
code.google.com/p/go.
crypto/blowfish/block.go
→
Godeps/_workspace/src/
golang.org/x/
crypto/blowfish/block.go
浏览文件 @
84262be0
File moved
Godeps/_workspace/src/
code.google.com/p/go.
crypto/blowfish/blowfish_test.go
→
Godeps/_workspace/src/
golang.org/x/
crypto/blowfish/blowfish_test.go
浏览文件 @
84262be0
File moved
Godeps/_workspace/src/
code.google.com/p/go.
crypto/blowfish/cipher.go
→
Godeps/_workspace/src/
golang.org/x/
crypto/blowfish/cipher.go
浏览文件 @
84262be0
File moved
Godeps/_workspace/src/
code.google.com/p/go.
crypto/blowfish/const.go
→
Godeps/_workspace/src/
golang.org/x/
crypto/blowfish/const.go
浏览文件 @
84262be0
File moved
Godeps/_workspace/src/
code.google.com/p/go.
crypto/sha3/doc.go
→
Godeps/_workspace/src/
golang.org/x/
crypto/sha3/doc.go
浏览文件 @
84262be0
...
...
@@ -12,7 +12,8 @@
// Guidance
//
// If you aren't sure what function you need, use SHAKE256 with at least 64
// bytes of output.
// bytes of output. The SHAKE instances are faster than the SHA3 instances;
// the latter have to allocate memory to conform to the hash.Hash interface.
//
// If you need a secret-key MAC (message authentication code), prepend the
// secret key to the input, hash with SHAKE256 and read at least 32 bytes of
...
...
@@ -21,45 +22,42 @@
//
// Security strengths
//
// The SHA3-x
functions have a security strength against preimage attacks of x
//
bits. Since they only produce x bits of output, their collision-resistance
//
is only x/2
bits.
// The SHA3-x
(x equals 224, 256, 384, or 512) functions have a security
//
strength against preimage attacks of x bits. Since they only produce "x"
//
bits of output, their collision-resistance is only "x/2"
bits.
//
// The SHAKE-
x functions have a generic security strength of x bits against
//
all attacks, provided that at least 2x bits of their output is used.
//
Requesting more than 2x bits of output does not increase the collision-
// resistance of the SHAKE functions.
// The SHAKE-
256 and -128 functions have a generic security strength of 256 and
//
128 bits against all attacks, provided that at least 2x bits of their output
//
is used. Requesting more than 64 or 32 bytes of output, respectively, does
//
not increase the collision-
resistance of the SHAKE functions.
//
//
// The sponge construction
//
// A sponge builds a pseudo-random function from a p
seudo-random permutation,
//
by applying the permutation to a state of "rate + capacity" bytes, but
// hiding "capacity" of the bytes.
// A sponge builds a pseudo-random function from a p
ublic pseudo-random
//
permutation, by applying the permutation to a state of "rate + capacity"
//
bytes, but
hiding "capacity" of the bytes.
//
// A sponge starts out with a zero state. To hash an input using a sponge, up
// to "rate" bytes of the input are XORed into the sponge's state. The sponge
//
has thus been "filled up" and the permutation is applied
. This process is
//
is then "full" and the permutation is applied to "empty" it
. This process is
// repeated until all the input has been "absorbed". The input is then padded.
// The digest is "squeezed" from the sponge
by the same method, except tha
t
// output is copied out.
// The digest is "squeezed" from the sponge
in the same way, except that outpu
t
// output is copied out
instead of input being XORed in
.
//
// A sponge is parameterized by its generic security strength, which is equal
// to half its capacity; capacity + rate is equal to the permutation's width.
//
// Since the KeccakF-1600 permutation is 1600 bits (200 bytes) wide, this means
// that
security_strength ==
(1600 - bitrate) / 2.
// that
the security strength of a sponge instance is equal to
(1600 - bitrate) / 2.
//
//
// Recommendations
, detailed
// Recommendations
//
// The SHAKE functions are recommended for most new uses. They can produce
// output of arbitrary length. SHAKE256, with an output length of at least
// 64 bytes, provides 256-bit security against all attacks.
//
// The Keccak team recommends SHAKE256 for most applications upgrading from
// SHA2-512. (NIST chose a much stronger, but much slower, sponge instance
// for SHA3-512.)
// 64 bytes, provides 256-bit security against all attacks. The Keccak team
// recommends it for most applications upgrading from SHA2-512. (NIST chose a
// much stronger, but much slower, sponge instance for SHA3-512.)
//
// The SHA-3 functions are "drop-in" replacements for the SHA-2 functions.
// They produce output of the same length, with the same security strengths
...
...
Godeps/_workspace/src/
code.google.com/p/go.
crypto/sha3/hashes.go
→
Godeps/_workspace/src/
golang.org/x/
crypto/sha3/hashes.go
浏览文件 @
84262be0
File moved
Godeps/_workspace/src/
code.google.com/p/go.
crypto/sha3/keccakf.go
→
Godeps/_workspace/src/
golang.org/x/
crypto/sha3/keccakf.go
浏览文件 @
84262be0
File moved
Godeps/_workspace/src/
code.google.com/p/go.
crypto/sha3/register.go
→
Godeps/_workspace/src/
golang.org/x/
crypto/sha3/register.go
浏览文件 @
84262be0
File moved
Godeps/_workspace/src/
code.google.com/p/go.
crypto/sha3/sha3.go
→
Godeps/_workspace/src/
golang.org/x/
crypto/sha3/sha3.go
浏览文件 @
84262be0
...
...
@@ -4,10 +4,6 @@
package
sha3
import
(
"encoding/binary"
)
// spongeDirection indicates the direction bytes are flowing through the sponge.
type
spongeDirection
int
...
...
@@ -30,25 +26,25 @@ type state struct {
buf
[]
byte
// points into storage
rate
int
// the number of bytes of state to use
// dsbyte contains the "domain separation"
value
and the first bit of
// the padding.
In sections 6.1 and 6.2 of [1], the SHA-3 and SHAKE
//
functions are defined with bits appended to the message: SHA-3
//
functions have 01 and SHAKE functions have 1111. Because of the way
//
that bits are numbered from the LSB upwards, that ends up as
//
00000010b and 00001111b, respectively. Then the padding rule from
//
section 5.1 is applied to pad to a multiple of the rate, which
//
involves adding a 1 bit, zero or more zero bits and then a final one
//
bit. The first one bit from the padding is merged into the dsbyte
//
value giving 00000110b (0x06) and 00011111b (0x1f), respectively.
//
//
[1] http://csrc.nist.gov/publications/drafts/fips-202/fips_202_draft.pdf,
// dsbyte contains the "domain separation"
bits
and the first bit of
// the padding.
Sections 6.1 and 6.2 of [1] separate the outputs of the
//
SHA-3 and SHAKE functions by appending bitstrings to the message.
//
Using a little-endian bit-ordering convention, these are "01" for SHA-3
//
and "1111" for SHAKE, or 00000010b and 00001111b, respectively. Then the
//
padding rule from section 5.1 is applied to pad the message to a multiple
//
of the rate, which involves adding a "1" bit, zero or more "0" bits, and
//
a final "1" bit. We merge the first "1" bit from the padding into dsbyte,
//
giving 00000110b (0x06) and 00011111b (0x1f).
//
[1] http://csrc.nist.gov/publications/drafts/fips-202/fips_202_draft.pdf
//
"Draft FIPS 202: SHA-3 Standard: Permutation-Based Hash and
//
Extendable-Output Functions (May 2014)"
dsbyte
byte
storage
[
maxRate
]
byte
// Specific to SHA-3 and SHAKE.
fixedOutput
bool
// whether this is a fixed-ouput-length instance
outputLen
int
// the default output size in bytes
state
spongeDirection
//
current direction of the sponge
state
spongeDirection
//
whether the sponge is absorbing or squeezing
}
// BlockSize returns the rate of sponge underlying this hash function.
...
...
@@ -79,35 +75,6 @@ func (d *state) clone() *state {
return
&
ret
}
// xorIn xors a buffer into the state, byte-swapping to
// little-endian as necessary; it returns the number of bytes
// copied, including any zeros appended to the bytestring.
func
(
d
*
state
)
xorIn
(
buf
[]
byte
)
{
n
:=
len
(
buf
)
/
8
for
i
:=
0
;
i
<
n
;
i
++
{
a
:=
binary
.
LittleEndian
.
Uint64
(
buf
)
d
.
a
[
i
]
^=
a
buf
=
buf
[
8
:
]
}
if
len
(
buf
)
!=
0
{
// XOR in the last partial ulint64.
a
:=
uint64
(
0
)
for
i
,
v
:=
range
buf
{
a
|=
uint64
(
v
)
<<
uint64
(
8
*
i
)
}
d
.
a
[
n
]
^=
a
}
}
// copyOut copies ulint64s to a byte buffer.
func
(
d
*
state
)
copyOut
(
b
[]
byte
)
{
for
i
:=
0
;
len
(
b
)
>=
8
;
i
++
{
binary
.
LittleEndian
.
PutUint64
(
b
,
d
.
a
[
i
])
b
=
b
[
8
:
]
}
}
// permute applies the KeccakF-1600 permutation. It handles
// any input-output buffering.
func
(
d
*
state
)
permute
()
{
...
...
@@ -115,7 +82,7 @@ func (d *state) permute() {
case
spongeAbsorbing
:
// If we're absorbing, we need to xor the input into the state
// before applying the permutation.
d
.
xorIn
(
d
.
buf
)
xorIn
(
d
,
d
.
buf
)
d
.
buf
=
d
.
storage
[
:
0
]
keccakF1600
(
&
d
.
a
)
case
spongeSqueezing
:
...
...
@@ -123,7 +90,7 @@ func (d *state) permute() {
// copying more output.
keccakF1600
(
&
d
.
a
)
d
.
buf
=
d
.
storage
[
:
d
.
rate
]
d
.
copyOut
(
d
.
buf
)
copyOut
(
d
,
d
.
buf
)
}
}
...
...
@@ -151,7 +118,7 @@ func (d *state) padAndPermute(dsbyte byte) {
d
.
permute
()
d
.
state
=
spongeSqueezing
d
.
buf
=
d
.
storage
[
:
d
.
rate
]
d
.
copyOut
(
d
.
buf
)
copyOut
(
d
,
d
.
buf
)
}
// Write absorbs more data into the hash's state. It produces an error
...
...
@@ -168,7 +135,7 @@ func (d *state) Write(p []byte) (written int, err error) {
for
len
(
p
)
>
0
{
if
len
(
d
.
buf
)
==
0
&&
len
(
p
)
>=
d
.
rate
{
// The fast path; absorb a full "rate" bytes of input and apply the permutation.
d
.
xorIn
(
p
[
:
d
.
rate
])
xorIn
(
d
,
p
[
:
d
.
rate
])
p
=
p
[
d
.
rate
:
]
keccakF1600
(
&
d
.
a
)
}
else
{
...
...
Godeps/_workspace/src/
code.google.com/p/go.
crypto/sha3/sha3_test.go
→
Godeps/_workspace/src/
golang.org/x/
crypto/sha3/sha3_test.go
浏览文件 @
84262be0
差异被折叠。
点击展开。
Godeps/_workspace/src/
code.google.com/p/go.
crypto/sha3/shake.go
→
Godeps/_workspace/src/
golang.org/x/
crypto/sha3/shake.go
浏览文件 @
84262be0
File moved
Godeps/_workspace/src/
code.google.com/p/go.crypto/sha3
/keccakKats.json.deflate
→
Godeps/_workspace/src/
golang.org/x/crypto/sha3/testdata
/keccakKats.json.deflate
浏览文件 @
84262be0
File moved
Godeps/_workspace/src/golang.org/x/crypto/sha3/xor.go
0 → 100644
浏览文件 @
84262be0
// Copyright 2015 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// +build !amd64,!386 appengine
package
sha3
var
(
xorIn
=
xorInGeneric
copyOut
=
copyOutGeneric
xorInUnaligned
=
xorInGeneric
copyOutUnaligned
=
copyOutGeneric
)
const
xorImplementationUnaligned
=
"generic"
Godeps/_workspace/src/golang.org/x/crypto/sha3/xor_generic.go
0 → 100644
浏览文件 @
84262be0
// Copyright 2015 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package
sha3
import
"encoding/binary"
// xorInGeneric xors the bytes in buf into the state; it
// makes no non-portable assumptions about memory layout
// or alignment.
func
xorInGeneric
(
d
*
state
,
buf
[]
byte
)
{
n
:=
len
(
buf
)
/
8
for
i
:=
0
;
i
<
n
;
i
++
{
a
:=
binary
.
LittleEndian
.
Uint64
(
buf
)
d
.
a
[
i
]
^=
a
buf
=
buf
[
8
:
]
}
}
// copyOutGeneric copies ulint64s to a byte buffer.
func
copyOutGeneric
(
d
*
state
,
b
[]
byte
)
{
for
i
:=
0
;
len
(
b
)
>=
8
;
i
++
{
binary
.
LittleEndian
.
PutUint64
(
b
,
d
.
a
[
i
])
b
=
b
[
8
:
]
}
}
Godeps/_workspace/src/golang.org/x/crypto/sha3/xor_unaligned.go
0 → 100644
浏览文件 @
84262be0
// Copyright 2015 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// +build amd64 386
// +build !appengine
package
sha3
import
"unsafe"
func
xorInUnaligned
(
d
*
state
,
buf
[]
byte
)
{
bw
:=
(
*
[
maxRate
/
8
]
uint64
)(
unsafe
.
Pointer
(
&
buf
[
0
]))
n
:=
len
(
buf
)
if
n
>=
72
{
d
.
a
[
0
]
^=
bw
[
0
]
d
.
a
[
1
]
^=
bw
[
1
]
d
.
a
[
2
]
^=
bw
[
2
]
d
.
a
[
3
]
^=
bw
[
3
]
d
.
a
[
4
]
^=
bw
[
4
]
d
.
a
[
5
]
^=
bw
[
5
]
d
.
a
[
6
]
^=
bw
[
6
]
d
.
a
[
7
]
^=
bw
[
7
]
d
.
a
[
8
]
^=
bw
[
8
]
}
if
n
>=
104
{
d
.
a
[
9
]
^=
bw
[
9
]
d
.
a
[
10
]
^=
bw
[
10
]
d
.
a
[
11
]
^=
bw
[
11
]
d
.
a
[
12
]
^=
bw
[
12
]
}
if
n
>=
136
{
d
.
a
[
13
]
^=
bw
[
13
]
d
.
a
[
14
]
^=
bw
[
14
]
d
.
a
[
15
]
^=
bw
[
15
]
d
.
a
[
16
]
^=
bw
[
16
]
}
if
n
>=
144
{
d
.
a
[
17
]
^=
bw
[
17
]
}
if
n
>=
168
{
d
.
a
[
18
]
^=
bw
[
18
]
d
.
a
[
19
]
^=
bw
[
19
]
d
.
a
[
20
]
^=
bw
[
20
]
}
}
func
copyOutUnaligned
(
d
*
state
,
buf
[]
byte
)
{
ab
:=
(
*
[
maxRate
]
uint8
)(
unsafe
.
Pointer
(
&
d
.
a
[
0
]))
copy
(
buf
,
ab
[
:
])
}
var
(
xorIn
=
xorInUnaligned
copyOut
=
copyOutUnaligned
)
const
xorImplementationUnaligned
=
"unaligned"
p2p/crypto/secio/al.go
浏览文件 @
84262be0
...
...
@@ -13,8 +13,7 @@ import (
"crypto/sha512"
"hash"
bfish
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/go.crypto/blowfish"
bfish
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/golang.org/x/crypto/blowfish"
ci
"github.com/jbenet/go-ipfs/p2p/crypto"
)
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论