50 lines
1.5 KiB
Go
50 lines
1.5 KiB
Go
package crypt
|
|
|
|
import (
|
|
"bytes"
|
|
"testing"
|
|
)
|
|
|
|
// TestCoreAesEncryptDecryptExRoundTrip 校验新增的 CoreAesDecryptEx 与 CoreAesEncryptEx 互逆。
|
|
func TestCoreAesEncryptDecryptExRoundTrip(t *testing.T) {
|
|
key := "h5-m3u8-ticket-key-roundtrip-000000000000"
|
|
plains := [][]byte{
|
|
[]byte(""),
|
|
[]byte("a"),
|
|
[]byte(`{"u":10086,"p":"v3/av/a.m3u8","e":1737000000}`),
|
|
bytes.Repeat([]byte("x"), 512),
|
|
}
|
|
for _, plain := range plains {
|
|
enc, err := CoreAesEncryptEx(plain, 12, key)
|
|
if err != nil {
|
|
t.Fatalf("encrypt: %v", err)
|
|
}
|
|
dec, err := CoreAesDecryptEx(enc, 12, key)
|
|
if err != nil {
|
|
t.Fatalf("decrypt: %v", err)
|
|
}
|
|
if !bytes.Equal(dec, plain) {
|
|
t.Fatalf("round trip mismatch: got %q want %q", dec, plain)
|
|
}
|
|
}
|
|
}
|
|
|
|
// TestCoreAesDecryptExRejectsShort 确保短于 nonce 的非法输入不 panic 且返回错误。
|
|
func TestCoreAesDecryptExRejectsShort(t *testing.T) {
|
|
if _, err := CoreAesDecryptEx([]byte{1, 2, 3}, 12, "key"); err == nil {
|
|
t.Fatal("expected error for input shorter than nonce")
|
|
}
|
|
}
|
|
|
|
// TestCoreAesDecryptExWrongKey 用错误密钥解密不应还原出原文。
|
|
func TestCoreAesDecryptExWrongKey(t *testing.T) {
|
|
enc, err := CoreAesEncryptEx([]byte("secret-payload"), 12, "key-a-000000000000000000000000000000")
|
|
if err != nil {
|
|
t.Fatalf("encrypt: %v", err)
|
|
}
|
|
dec, err := CoreAesDecryptEx(enc, 12, "key-b-111111111111111111111111111111")
|
|
if err == nil && string(dec) == "secret-payload" {
|
|
t.Fatal("wrong key must not recover plaintext")
|
|
}
|
|
}
|