@@ -0,0 +1,49 @@
|
||||
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")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user