Disable sha1,sha256,sha512 avx,avx2,sse3 crypto implementations.

Re-implement them later, once stable
master
Harshavardhana 10 years ago
parent d58f68ccaa
commit 462808b87a
  1. 9
      cmd/crypto/crypto-options.go
  2. 0
      pkg/crypto/sha1/TODO
  3. 61
      pkg/crypto/sha1/sha1.go
  4. 2
      pkg/crypto/sha1/sha1_amd64.S
  5. 14
      pkg/crypto/sha1/sha1_test.go
  6. 2
      pkg/crypto/sha256/sha256-avx-asm.S
  7. 2
      pkg/crypto/sha256/sha256-avx2-asm.S
  8. 2
      pkg/crypto/sha256/sha256-ssse3-asm.S
  9. 2
      pkg/crypto/sha512/sha512-avx-asm.S
  10. 4
      pkg/crypto/sha512/sha512-avx2-asm.S
  11. 2
      pkg/crypto/sha512/sha512-ssse3-asm.S

@ -17,10 +17,7 @@
package main
import (
"bytes"
"encoding/binary"
"fmt"
"io/ioutil"
"log"
"os"
@ -34,7 +31,7 @@ import (
var Options = []cli.Command{
Md5sum,
Sha1sum,
// Sha1sumFast, // not working
// Sha1sumFast, // TODO
Sha256sum,
Sha512sum,
}
@ -55,6 +52,7 @@ var Sha1sum = cli.Command{
Action: doSha1sum,
}
/* TODO
var Sha1sumFast = cli.Command{
Name: "sha1sum-fast",
Usage: "",
@ -62,6 +60,7 @@ var Sha1sumFast = cli.Command{
`,
Action: doSha1sumFast,
}
*/
var Sha256sum = cli.Command{
Name: "sha256sum",
@ -95,6 +94,7 @@ func doSha1sum(c *cli.Context) {
fmt.Printf("%x", hash)
}
/* TODO
func doSha1sumFast(c *cli.Context) {
buffer, err := ioutil.ReadAll(os.Stdin)
if err != nil {
@ -108,6 +108,7 @@ func doSha1sumFast(c *cli.Context) {
binary.Write(&bytesBuffer, binary.LittleEndian, hash)
fmt.Printf("%x", bytesBuffer.Bytes())
}
*/
func doSha256sum(c *cli.Context) {
hash, err := sha256.Sum(os.Stdin)

@ -24,55 +24,50 @@ package sha1
import "C"
import (
gosha1 "crypto/sha1"
"errors"
"io"
"unsafe"
"github.com/minio-io/minio/pkg/cpu"
)
/*
const (
SHA1_BLOCKSIZE = 64
SHA1_DIGESTSIZE = 20
)
func Sha1(buffer []byte) ([]int32, error) {
if !cpu.HasAVX2() {
// Unsupported processor but do not error out tests
return []int32{0}, nil
}
var shbuf []int32
var cbuffer *C.char
func Sha1(buffer []byte) ([]int32, error) {
if cpu.HasAVX2() {
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")
}
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
rem := length % SHA1_BLOCKSIZE
padded_len := length
if rem > 0 {
padded_len = length + (SHA1_BLOCKSIZE - rem)
}
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...)
}
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))
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
return 0, nil
}
}
*/
func Sum(reader io.Reader) ([]byte, error) {
hash := gosha1.New()
var err error

@ -67,6 +67,7 @@
*
*/
#ifdef HAS_AVX2
#include "asm.S"
#define CTX %rdi /* arg1 */
@ -698,3 +699,4 @@ BSWAP_SHUFB_CTL:
ret
ENDPROC(sha1_transform)
#endif

@ -14,20 +14,6 @@ type MySuite struct{}
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) {
testString := []byte("Test string")
expectedHash, _ := hex.DecodeString("18af819125b70879d36378431c4e8d9bfa6a2599")

@ -47,6 +47,7 @@
# This code schedules 1 block at a time, with 4 lanes per block
########################################################################
#ifdef HAS_AVX
#include "asm.S"
## assume buffers not aligned
@ -491,3 +492,4 @@ _SHUF_00BA:
# shuffle xDxC -> DC00
_SHUF_DC00:
.octa 0x0b0a090803020100FFFFFFFFFFFFFFFF
#endif

@ -48,6 +48,7 @@
# This code schedules 2 blocks at a time, with 4 lanes per block
########################################################################
#ifdef HAS_AVX2
#include "asm.S"
## assume buffers not aligned
@ -768,3 +769,4 @@ _SHUF_00BA:
# shuffle xDxC -> DC00
_SHUF_DC00:
.octa 0x0b0a090803020100FFFFFFFFFFFFFFFF,0x0b0a090803020100FFFFFFFFFFFFFFFF
#endif

@ -46,6 +46,7 @@
#
########################################################################
#ifdef HAS_SSE41
#include "asm.S"
## assume buffers not aligned
@ -504,3 +505,4 @@ _SHUF_00BA:
# shuffle xDxC -> DC00
_SHUF_DC00:
.octa 0x0b0a090803020100FFFFFFFFFFFFFFFF
#endif

@ -47,6 +47,7 @@
#
########################################################################
#ifdef HAS_AVX
#include "asm.S"
.text
@ -419,3 +420,4 @@ K512:
.quad 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c
.quad 0x4cc5d4becb3e42b6,0x597f299cfc657e2a
.quad 0x5fcb6fab3ad6faec,0x6c44198c4a475817
#endif

@ -49,8 +49,7 @@
# This code schedules 1 blocks at a time, with 4 lanes per block
########################################################################
#include "asm.S"
#ifdef HAS_AVX2
.text
# Virtual Registers
@ -739,3 +738,4 @@ PSHUFFLE_BYTE_FLIP_MASK:
MASK_YMM_LO:
.octa 0x00000000000000000000000000000000
.octa 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
#endif

@ -47,6 +47,7 @@
#
########################################################################
#ifdef HAS_SSE41
#include "asm.S"
.text
@ -419,3 +420,4 @@ K512:
.quad 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c
.quad 0x4cc5d4becb3e42b6,0x597f299cfc657e2a
.quad 0x5fcb6fab3ad6faec,0x6c44198c4a475817
#endif

Loading…
Cancel
Save