76 lines
1.5 KiB
Go
76 lines
1.5 KiB
Go
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)
|
|
}
|