mirror of
https://github.com/minio/minio.git
synced 2024-12-24 22:25:54 -05:00
Disable sha1,sha256,sha512 avx,avx2,sse3 crypto implementations.
Re-implement them later, once stable
This commit is contained in:
parent
d58f68ccaa
commit
462808b87a
@ -17,10 +17,7 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
|
||||||
"encoding/binary"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
|
||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
@ -34,7 +31,7 @@ import (
|
|||||||
var Options = []cli.Command{
|
var Options = []cli.Command{
|
||||||
Md5sum,
|
Md5sum,
|
||||||
Sha1sum,
|
Sha1sum,
|
||||||
// Sha1sumFast, // not working
|
// Sha1sumFast, // TODO
|
||||||
Sha256sum,
|
Sha256sum,
|
||||||
Sha512sum,
|
Sha512sum,
|
||||||
}
|
}
|
||||||
@ -55,6 +52,7 @@ var Sha1sum = cli.Command{
|
|||||||
Action: doSha1sum,
|
Action: doSha1sum,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* TODO
|
||||||
var Sha1sumFast = cli.Command{
|
var Sha1sumFast = cli.Command{
|
||||||
Name: "sha1sum-fast",
|
Name: "sha1sum-fast",
|
||||||
Usage: "",
|
Usage: "",
|
||||||
@ -62,6 +60,7 @@ var Sha1sumFast = cli.Command{
|
|||||||
`,
|
`,
|
||||||
Action: doSha1sumFast,
|
Action: doSha1sumFast,
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
var Sha256sum = cli.Command{
|
var Sha256sum = cli.Command{
|
||||||
Name: "sha256sum",
|
Name: "sha256sum",
|
||||||
@ -95,6 +94,7 @@ func doSha1sum(c *cli.Context) {
|
|||||||
fmt.Printf("%x", hash)
|
fmt.Printf("%x", hash)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* TODO
|
||||||
func doSha1sumFast(c *cli.Context) {
|
func doSha1sumFast(c *cli.Context) {
|
||||||
buffer, err := ioutil.ReadAll(os.Stdin)
|
buffer, err := ioutil.ReadAll(os.Stdin)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -108,6 +108,7 @@ func doSha1sumFast(c *cli.Context) {
|
|||||||
binary.Write(&bytesBuffer, binary.LittleEndian, hash)
|
binary.Write(&bytesBuffer, binary.LittleEndian, hash)
|
||||||
fmt.Printf("%x", bytesBuffer.Bytes())
|
fmt.Printf("%x", bytesBuffer.Bytes())
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
func doSha256sum(c *cli.Context) {
|
func doSha256sum(c *cli.Context) {
|
||||||
hash, err := sha256.Sum(os.Stdin)
|
hash, err := sha256.Sum(os.Stdin)
|
||||||
|
0
pkg/crypto/sha1/TODO
Normal file
0
pkg/crypto/sha1/TODO
Normal file
@ -24,55 +24,50 @@ package sha1
|
|||||||
import "C"
|
import "C"
|
||||||
import (
|
import (
|
||||||
gosha1 "crypto/sha1"
|
gosha1 "crypto/sha1"
|
||||||
"errors"
|
|
||||||
"io"
|
"io"
|
||||||
"unsafe"
|
|
||||||
|
|
||||||
"github.com/minio-io/minio/pkg/cpu"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
/*
|
||||||
const (
|
const (
|
||||||
SHA1_BLOCKSIZE = 64
|
SHA1_BLOCKSIZE = 64
|
||||||
SHA1_DIGESTSIZE = 20
|
SHA1_DIGESTSIZE = 20
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
func Sha1(buffer []byte) ([]int32, error) {
|
func Sha1(buffer []byte) ([]int32, error) {
|
||||||
if !cpu.HasAVX2() {
|
if cpu.HasAVX2() {
|
||||||
// Unsupported processor but do not error out tests
|
var shbuf []int32
|
||||||
return []int32{0}, nil
|
var cbuffer *C.char
|
||||||
|
|
||||||
|
shbuf = make([]int32, SHA1_DIGESTSIZE)
|
||||||
|
var length = len(buffer)
|
||||||
|
if length == 0 {
|
||||||
|
return []int32{0}, errors.New("Invalid input")
|
||||||
|
}
|
||||||
|
|
||||||
|
rem := length % SHA1_BLOCKSIZE
|
||||||
|
padded_len := length
|
||||||
|
|
||||||
|
if rem > 0 {
|
||||||
|
padded_len = length + (SHA1_BLOCKSIZE - rem)
|
||||||
|
}
|
||||||
|
|
||||||
|
rounds := padded_len / SHA1_BLOCKSIZE
|
||||||
|
pad := padded_len - length
|
||||||
|
if pad > 0 {
|
||||||
|
s := make([]byte, pad)
|
||||||
|
// Expand with new padded blocks to the byte array
|
||||||
|
buffer = append(buffer, s...)
|
||||||
|
}
|
||||||
|
|
||||||
|
cshbuf := (*C.int32_t)(unsafe.Pointer(&shbuf[0]))
|
||||||
|
cbuffer = (*C.char)(unsafe.Pointer(&buffer[0]))
|
||||||
|
C.sha1_transform(cshbuf, cbuffer, C.size_t(rounds))
|
||||||
|
|
||||||
|
return 0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
var shbuf []int32
|
|
||||||
var cbuffer *C.char
|
|
||||||
|
|
||||||
shbuf = make([]int32, SHA1_DIGESTSIZE)
|
|
||||||
var length = len(buffer)
|
|
||||||
if length == 0 {
|
|
||||||
return []int32{0}, errors.New("Invalid input")
|
|
||||||
}
|
|
||||||
|
|
||||||
rem := length % SHA1_BLOCKSIZE
|
|
||||||
padded_len := length
|
|
||||||
|
|
||||||
if rem > 0 {
|
|
||||||
padded_len = length + (SHA1_BLOCKSIZE - rem)
|
|
||||||
}
|
|
||||||
|
|
||||||
rounds := padded_len / SHA1_BLOCKSIZE
|
|
||||||
pad := padded_len - length
|
|
||||||
if pad > 0 {
|
|
||||||
s := make([]byte, pad)
|
|
||||||
// Expand with new padded blocks to the byte array
|
|
||||||
buffer = append(buffer, s...)
|
|
||||||
}
|
|
||||||
|
|
||||||
cshbuf := (*C.int32_t)(unsafe.Pointer(&shbuf[0]))
|
|
||||||
cbuffer = (*C.char)(unsafe.Pointer(&buffer[0]))
|
|
||||||
C.sha1_transform(cshbuf, cbuffer, C.size_t(rounds))
|
|
||||||
|
|
||||||
return shbuf, nil
|
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
func Sum(reader io.Reader) ([]byte, error) {
|
func Sum(reader io.Reader) ([]byte, error) {
|
||||||
hash := gosha1.New()
|
hash := gosha1.New()
|
||||||
var err error
|
var err error
|
||||||
|
@ -67,6 +67,7 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifdef HAS_AVX2
|
||||||
#include "asm.S"
|
#include "asm.S"
|
||||||
|
|
||||||
#define CTX %rdi /* arg1 */
|
#define CTX %rdi /* arg1 */
|
||||||
@ -698,3 +699,4 @@ BSWAP_SHUFB_CTL:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
ENDPROC(sha1_transform)
|
ENDPROC(sha1_transform)
|
||||||
|
#endif
|
||||||
|
@ -14,20 +14,6 @@ type MySuite struct{}
|
|||||||
|
|
||||||
var _ = Suite(&MySuite{})
|
var _ = Suite(&MySuite{})
|
||||||
|
|
||||||
func (s *MySuite) TestSha1(c *C) {
|
|
||||||
data_1 := []byte("Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.")
|
|
||||||
|
|
||||||
data_2 := []byte("Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.")
|
|
||||||
|
|
||||||
sha, err := Sha1(data_1)
|
|
||||||
c.Assert(err, IsNil)
|
|
||||||
|
|
||||||
newsha, newerr := Sha1(data_2)
|
|
||||||
c.Assert(newerr, IsNil)
|
|
||||||
|
|
||||||
c.Assert(sha, DeepEquals, newsha)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *MySuite) TestStreamingSha1(c *C) {
|
func (s *MySuite) TestStreamingSha1(c *C) {
|
||||||
testString := []byte("Test string")
|
testString := []byte("Test string")
|
||||||
expectedHash, _ := hex.DecodeString("18af819125b70879d36378431c4e8d9bfa6a2599")
|
expectedHash, _ := hex.DecodeString("18af819125b70879d36378431c4e8d9bfa6a2599")
|
||||||
|
@ -47,6 +47,7 @@
|
|||||||
# This code schedules 1 block at a time, with 4 lanes per block
|
# This code schedules 1 block at a time, with 4 lanes per block
|
||||||
########################################################################
|
########################################################################
|
||||||
|
|
||||||
|
#ifdef HAS_AVX
|
||||||
#include "asm.S"
|
#include "asm.S"
|
||||||
|
|
||||||
## assume buffers not aligned
|
## assume buffers not aligned
|
||||||
@ -491,3 +492,4 @@ _SHUF_00BA:
|
|||||||
# shuffle xDxC -> DC00
|
# shuffle xDxC -> DC00
|
||||||
_SHUF_DC00:
|
_SHUF_DC00:
|
||||||
.octa 0x0b0a090803020100FFFFFFFFFFFFFFFF
|
.octa 0x0b0a090803020100FFFFFFFFFFFFFFFF
|
||||||
|
#endif
|
||||||
|
@ -48,6 +48,7 @@
|
|||||||
# This code schedules 2 blocks at a time, with 4 lanes per block
|
# This code schedules 2 blocks at a time, with 4 lanes per block
|
||||||
########################################################################
|
########################################################################
|
||||||
|
|
||||||
|
#ifdef HAS_AVX2
|
||||||
#include "asm.S"
|
#include "asm.S"
|
||||||
|
|
||||||
## assume buffers not aligned
|
## assume buffers not aligned
|
||||||
@ -768,3 +769,4 @@ _SHUF_00BA:
|
|||||||
# shuffle xDxC -> DC00
|
# shuffle xDxC -> DC00
|
||||||
_SHUF_DC00:
|
_SHUF_DC00:
|
||||||
.octa 0x0b0a090803020100FFFFFFFFFFFFFFFF,0x0b0a090803020100FFFFFFFFFFFFFFFF
|
.octa 0x0b0a090803020100FFFFFFFFFFFFFFFF,0x0b0a090803020100FFFFFFFFFFFFFFFF
|
||||||
|
#endif
|
||||||
|
@ -46,6 +46,7 @@
|
|||||||
#
|
#
|
||||||
########################################################################
|
########################################################################
|
||||||
|
|
||||||
|
#ifdef HAS_SSE41
|
||||||
#include "asm.S"
|
#include "asm.S"
|
||||||
|
|
||||||
## assume buffers not aligned
|
## assume buffers not aligned
|
||||||
@ -504,3 +505,4 @@ _SHUF_00BA:
|
|||||||
# shuffle xDxC -> DC00
|
# shuffle xDxC -> DC00
|
||||||
_SHUF_DC00:
|
_SHUF_DC00:
|
||||||
.octa 0x0b0a090803020100FFFFFFFFFFFFFFFF
|
.octa 0x0b0a090803020100FFFFFFFFFFFFFFFF
|
||||||
|
#endif
|
||||||
|
@ -47,6 +47,7 @@
|
|||||||
#
|
#
|
||||||
########################################################################
|
########################################################################
|
||||||
|
|
||||||
|
#ifdef HAS_AVX
|
||||||
#include "asm.S"
|
#include "asm.S"
|
||||||
|
|
||||||
.text
|
.text
|
||||||
@ -419,3 +420,4 @@ K512:
|
|||||||
.quad 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c
|
.quad 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c
|
||||||
.quad 0x4cc5d4becb3e42b6,0x597f299cfc657e2a
|
.quad 0x4cc5d4becb3e42b6,0x597f299cfc657e2a
|
||||||
.quad 0x5fcb6fab3ad6faec,0x6c44198c4a475817
|
.quad 0x5fcb6fab3ad6faec,0x6c44198c4a475817
|
||||||
|
#endif
|
||||||
|
@ -49,8 +49,7 @@
|
|||||||
# This code schedules 1 blocks at a time, with 4 lanes per block
|
# This code schedules 1 blocks at a time, with 4 lanes per block
|
||||||
########################################################################
|
########################################################################
|
||||||
|
|
||||||
#include "asm.S"
|
#ifdef HAS_AVX2
|
||||||
|
|
||||||
.text
|
.text
|
||||||
|
|
||||||
# Virtual Registers
|
# Virtual Registers
|
||||||
@ -739,3 +738,4 @@ PSHUFFLE_BYTE_FLIP_MASK:
|
|||||||
MASK_YMM_LO:
|
MASK_YMM_LO:
|
||||||
.octa 0x00000000000000000000000000000000
|
.octa 0x00000000000000000000000000000000
|
||||||
.octa 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
.octa 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||||
|
#endif
|
||||||
|
@ -47,6 +47,7 @@
|
|||||||
#
|
#
|
||||||
########################################################################
|
########################################################################
|
||||||
|
|
||||||
|
#ifdef HAS_SSE41
|
||||||
#include "asm.S"
|
#include "asm.S"
|
||||||
|
|
||||||
.text
|
.text
|
||||||
@ -419,3 +420,4 @@ K512:
|
|||||||
.quad 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c
|
.quad 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c
|
||||||
.quad 0x4cc5d4becb3e42b6,0x597f299cfc657e2a
|
.quad 0x4cc5d4becb3e42b6,0x597f299cfc657e2a
|
||||||
.quad 0x5fcb6fab3ad6faec,0x6c44198c4a475817
|
.quad 0x5fcb6fab3ad6faec,0x6c44198c4a475817
|
||||||
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user