init: v1.0.0
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
package simd
|
||||
|
||||
import (
|
||||
"encoding/hex"
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"xdx.jelly/xgcl/sm/sm4"
|
||||
)
|
||||
|
||||
func TestEncrypt4(t *testing.T) {
|
||||
key, _ := hex.DecodeString("AF07B5BDDF77A3727E9E5FEC48DA1D9E")
|
||||
// test 4 blocks for aesni
|
||||
src, _ := hex.DecodeString(
|
||||
"B358A63B7587FCCB46CD41FFE778D5C1" +
|
||||
"B358A63B7587FCCB46CD41FFE778D5C1" +
|
||||
"B358A63B7587FCCB46CD41FFE778D5C1" +
|
||||
"B358A63B7587FCCB46CD41FFE778D5C1",
|
||||
)
|
||||
|
||||
dst := make([]byte, len(src))
|
||||
encKey := make([]uint32, 32)
|
||||
decKey := make([]uint32, 32)
|
||||
sm4.ExpandKey(key, encKey, decKey)
|
||||
encrypt4(dst, src, encKey)
|
||||
// dst = 6845268B 91394C00 6648E71A 2D6D68C1 * 4
|
||||
for i := 0; i < 64; i++ {
|
||||
fmt.Printf("%02x ", dst[i])
|
||||
if i > 0 && (i+1)%16 == 0 {
|
||||
fmt.Println()
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func TestMMSet(t *testing.T) {
|
||||
// src := []byte{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
|
||||
src := []uint32{0x01234567, 0x89abcdef, 0xfedcba98, 0x76543210}
|
||||
dst := make([]byte, 16)
|
||||
mmSet(dst, src)
|
||||
fmt.Printf("%x\n", dst)
|
||||
}
|
||||
|
||||
// 67452301 efcdab89 98badcfe 10325476
|
||||
|
||||
func TestMMExtLoad32(t *testing.T) {
|
||||
dst := make([]byte, 16)
|
||||
mmExtLoad32(dst)
|
||||
fmt.Printf("%x\n", dst)
|
||||
}
|
||||
|
||||
func printBlock4(s []byte) {
|
||||
for i := 0; i < 64; i++ {
|
||||
fmt.Printf("%02x", s[i])
|
||||
if i > 0 && (i+1)%4 == 0 {
|
||||
fmt.Print(" ")
|
||||
}
|
||||
if i > 0 && (i+1)%16 == 0 {
|
||||
fmt.Println()
|
||||
}
|
||||
}
|
||||
}
|
||||
func TestTranspose(t *testing.T) {
|
||||
var src = make([]byte, 64)
|
||||
for i := 0; i < 64; i++ {
|
||||
src[i] = byte(i)
|
||||
}
|
||||
|
||||
dst := make([]byte, 64)
|
||||
mmTranspose(dst, src)
|
||||
|
||||
printBlock4(src)
|
||||
fmt.Println("----------")
|
||||
printBlock4(dst)
|
||||
}
|
||||
Reference in New Issue
Block a user