package rongxing import ( "crypto/rand" "crypto/rsa" "testing" ) func TestMD5Upper(t *testing.T) { if got := MD5Upper(""); got != "D41D8CD98F00B204E9800998ECF8427E" { t.Fatalf("MD5Upper empty = %s", got) } if got := MD5Upper(" hello "); got != MD5Upper("hello") { t.Fatalf("MD5Upper should trim spaces") } } func TestBuildSignContent(t *testing.T) { params := map[string]interface{}{ "account": "haiyukeji", "password": "cGFzcw==", "appId": "hykj", "timestamp": int64(1710000000000), "sign": "ignored", } got := BuildSignContent(params) want := "account=haiyukeji&appId=hykj&password=cGFzcw==×tamp=1710000000000" if got != want { t.Fatalf("BuildSignContent mismatch\ngot: %s\nwant: %s", got, want) } } func TestSignSHA256WithRSA(t *testing.T) { key, err := rsa.GenerateKey(rand.Reader, 1024) if err != nil { t.Fatalf("generate key: %v", err) } sig, err := SignSHA256WithRSA("account=a&appId=b", key) if err != nil { t.Fatalf("sign: %v", err) } if sig == "" { t.Fatal("empty signature") } } func TestParsePrivateKeyPKCS8Base64(t *testing.T) { // 与对接文档一致的 PKCS#8 Base64(无 PEM 头) raw := "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAI1eWDx325U/DCpaw+394555voDNwKyfg6rAIBYGSmJDmUyCi6c8LeqVtYnmtUMJrTDrfUWFG7jQ+mQy65rXMY7zrZ0Cc+orP7uRgrvCBsH1775KuSji8TkVbEBw+Upro7FuNkutBItNxZCvcpFpNqNBwCCkCK1xscVN8gErxc7/AgMBAAECgYAL/ZVHWU7Ni5TyrLmTBwAjWD+RX9V4iGkb3QLiGCayZS05NGNq/ytrCvqxMSY6HIKAZ6Du+hmXvr+JXll/slvyGs1ETOgDi7563RAT/2TVicZF16IM2d7nhK6eTJffmiG2ZZC8n043F0QNposleEIMhM251iT1xiwZfg+QqHB0EQJBAI+BFcbYl+Vxpxdouvuwq11gYMTNepcGdY3OaPZzW4sQA41s+6aZhZ7tAk65Tk7PgLfdU2yimBKNkJstlSUT1w8CQQD8MKjAi5wngnDO+04n5mt5EotpNy6xpvkQP2izL0FWKmvwZtc0ihJpxa64vfo4+1jE8YXx1/qGe16A15fmywkRAkAbImVjvAC8ucjGfF8eyEEe3uJtVA0iEW6Y6bafIyDkIpsJWtoanlzNuDL/f7p23HWSTp8/o17t4ya8sNnKsP2xAkEArIQc7JqUl/KDeRQwwtq9anVlKPS23JB8kMDPvsP0zhz2+d1gGnDZZ8HzZC2RnqlScGdIWciFeLmsTDcvkpISAQJANaQU0uKBPvgMx+uedbCbn9MfYmpEiONHblrINH8WAa3Z1pr7R0wBUog1fEWimnxOX5wGwsGmDOMw5B+4xJ4Zfw==" key, err := ParsePrivateKey(raw) if err != nil { t.Fatalf("ParsePrivateKey: %v", err) } if key == nil { t.Fatal("nil key") } if _, err := SignSHA256WithRSA("account=haiyukeji&appId=hykj", key); err != nil { t.Fatalf("sign with parsed key: %v", err) } } func TestEncodePasswordBase64(t *testing.T) { if got := EncodePasswordBase64("haiyukeji@123"); got != "aGFpeXVrZWppQDEyMw==" { t.Fatalf("EncodePasswordBase64 = %s", got) } }