node build fixed
This commit is contained in:
194
seanime-2.9.10/internal/goja/goja_bindings/crypto_test.go
Normal file
194
seanime-2.9.10/internal/goja/goja_bindings/crypto_test.go
Normal file
@@ -0,0 +1,194 @@
|
||||
package goja_bindings
|
||||
|
||||
import (
|
||||
"seanime/internal/util"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/dop251/goja"
|
||||
gojabuffer "github.com/dop251/goja_nodejs/buffer"
|
||||
gojarequire "github.com/dop251/goja_nodejs/require"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestGojaCrypto(t *testing.T) {
|
||||
vm := goja.New()
|
||||
defer vm.ClearInterrupt()
|
||||
|
||||
registry := new(gojarequire.Registry)
|
||||
registry.Enable(vm)
|
||||
gojabuffer.Enable(vm)
|
||||
BindCrypto(vm)
|
||||
BindConsole(vm, util.NewLogger())
|
||||
|
||||
_, err := vm.RunString(`
|
||||
async function run() {
|
||||
|
||||
try {
|
||||
|
||||
console.log("\nTesting Buffer encoding/decoding")
|
||||
|
||||
const originalString = "Hello, this is a string to encode!"
|
||||
const base64String = Buffer.from(originalString).toString("base64")
|
||||
|
||||
console.log("Original String:", originalString)
|
||||
console.log("Base64 Encoded:", base64String)
|
||||
|
||||
const decodedString = Buffer.from(base64String, "base64").toString("utf-8")
|
||||
|
||||
console.log("Base64 Decoded:", decodedString)
|
||||
|
||||
}
|
||||
catch (e) {
|
||||
console.error(e)
|
||||
}
|
||||
|
||||
try {
|
||||
|
||||
console.log("\nTesting AES")
|
||||
|
||||
let message = "seanime"
|
||||
let key = CryptoJS.enc.Utf8.parse("secret key")
|
||||
|
||||
|
||||
console.log("Message:", message)
|
||||
|
||||
let encrypted = CryptoJS.AES.encrypt(message, key)
|
||||
console.log("Encrypted without IV:", encrypted) // map[iv toString]
|
||||
console.log("Encrypted.toString():", encrypted.toString()) // AoHrnhJfbRht2idLHM82WdkIEpRbXufnA6+ozty9fbk=
|
||||
console.log("Encrypted.toString(CryptoJS.enc.Base64):", encrypted.toString(CryptoJS.enc.Base64)) // AoHrnhJfbRht2idLHM82WdkIEpRbXufnA6+ozty9fbk=
|
||||
|
||||
let decrypted = CryptoJS.AES.decrypt(encrypted, key)
|
||||
console.log("Decrypted:", decrypted.toString(CryptoJS.enc.Utf8))
|
||||
|
||||
let iv = CryptoJS.enc.Utf8.parse("3134003223491201")
|
||||
encrypted = CryptoJS.AES.encrypt(message, key, { iv: iv })
|
||||
console.log("Encrypted with IV:", encrypted) // map[iv toString]
|
||||
|
||||
decrypted = CryptoJS.AES.decrypt(encrypted, key)
|
||||
console.log("Decrypted without IV:", decrypted.toString(CryptoJS.enc.Utf8))
|
||||
|
||||
decrypted = CryptoJS.AES.decrypt(encrypted, key, { iv: iv })
|
||||
console.log("Decrypted with IV:", decrypted.toString(CryptoJS.enc.Utf8)) // seanime
|
||||
|
||||
}
|
||||
catch (e) {
|
||||
console.error(e)
|
||||
}
|
||||
|
||||
try {
|
||||
|
||||
console.log("\nTesting encoders")
|
||||
|
||||
console.log("")
|
||||
let a = CryptoJS.enc.Utf8.parse("Hello, World!")
|
||||
console.log("Base64 Parsed:", a)
|
||||
let b = CryptoJS.enc.Base64.stringify(a)
|
||||
console.log("Base64 Stringified:", b)
|
||||
let c = CryptoJS.enc.Base64.parse(b)
|
||||
console.log("Base64 Parsed:", c)
|
||||
let d = CryptoJS.enc.Utf8.stringify(c)
|
||||
console.log("Base64 Stringified:", d)
|
||||
console.log("")
|
||||
|
||||
let words = CryptoJS.enc.Latin1.parse("Hello, World!")
|
||||
console.log("Latin1 Parsed:", words)
|
||||
let latin1 = CryptoJS.enc.Latin1.stringify(words)
|
||||
console.log("Latin1 Stringified", latin1)
|
||||
|
||||
words = CryptoJS.enc.Hex.parse("48656c6c6f2c20576f726c6421")
|
||||
console.log("Hex Parsed:", words)
|
||||
let hex = CryptoJS.enc.Hex.stringify(words)
|
||||
console.log("Hex Stringified", hex)
|
||||
|
||||
words = CryptoJS.enc.Utf8.parse("")
|
||||
console.log("Utf8 Parsed:", words)
|
||||
let utf8 = CryptoJS.enc.Utf8.stringify(words)
|
||||
console.log("Utf8 Stringified", utf8)
|
||||
|
||||
words = CryptoJS.enc.Utf16.parse("Hello, World!")
|
||||
console.log("Utf16 Parsed:", words)
|
||||
let utf16 = CryptoJS.enc.Utf16.stringify(words)
|
||||
console.log("Utf16 Stringified", utf16)
|
||||
|
||||
words = CryptoJS.enc.Utf16LE.parse("Hello, World!")
|
||||
console.log("Utf16LE Parsed:", words)
|
||||
utf16 = CryptoJS.enc.Utf16LE.stringify(words)
|
||||
console.log("Utf16LE Stringified", utf16)
|
||||
}
|
||||
catch (e) {
|
||||
console.error("Error:", e)
|
||||
}
|
||||
}
|
||||
`)
|
||||
require.NoError(t, err)
|
||||
|
||||
runFunc, ok := goja.AssertFunction(vm.Get("run"))
|
||||
require.True(t, ok)
|
||||
|
||||
ret, err := runFunc(goja.Undefined())
|
||||
require.NoError(t, err)
|
||||
|
||||
promise := ret.Export().(*goja.Promise)
|
||||
|
||||
for promise.State() == goja.PromiseStatePending {
|
||||
time.Sleep(10 * time.Millisecond)
|
||||
}
|
||||
|
||||
if promise.State() == goja.PromiseStateRejected {
|
||||
err := promise.Result()
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGojaCryptoOpenSSL(t *testing.T) {
|
||||
vm := goja.New()
|
||||
defer vm.ClearInterrupt()
|
||||
|
||||
registry := new(gojarequire.Registry)
|
||||
registry.Enable(vm)
|
||||
gojabuffer.Enable(vm)
|
||||
BindCrypto(vm)
|
||||
BindConsole(vm, util.NewLogger())
|
||||
|
||||
_, err := vm.RunString(`
|
||||
async function run() {
|
||||
|
||||
try {
|
||||
|
||||
console.log("\nTesting Buffer encoding/decoding")
|
||||
|
||||
const payload = "U2FsdGVkX19ZanX9W5jQGgNGOIOBGxhY6gxa1EHnRi3yHL8Ml4cMmQeryf9p04N12VuOjiBas21AcU0Ypc4dB4AWOdc9Cn1wdA2DuQhryUonKYHwV/XXJ53DBn1OIqAvrIAxrN8S2j9Rk5z/F/peu1Kk/d3m82jiKvhTWQcxDeDW8UzCMZbbFnm4qJC3k19+PD5Pal5sBcVTGRXNCpvSSpYb56FcP9Xs+3DyBWhNUqJuO+Wwm3G1J5HhklxCWZ7tcn7TE5Y8d5ORND7t51Padrw4LgEOootqHtfHuBVX6EqlvJslXt0kFgcXJUIO+hw0q5SJ+tiS7o/2OShJ7BCk4XzfQmhFJdBJYGjQ8WPMHYzLuMzDkf6zk2+m7YQtUTXx8SVoLXFOt8gNZeD942snGrWA5+CdYveOfJ8Yv7owoOueMzzYqr5rzG7GVapVI0HzrA24LR4AjRDICqTsJEy6Yg=="
|
||||
const key = "6315b93606d60f48c964b67b14701f3848ef25af01296cf7e6a98c9460e1d2ac"
|
||||
console.log("Original String:", payload)
|
||||
|
||||
const decrypted = CryptoJS.AES.decrypt(payload, key)
|
||||
|
||||
console.log("Decrypted:", decrypted.toString(CryptoJS.enc.Utf8))
|
||||
|
||||
}
|
||||
catch (e) {
|
||||
console.error(e)
|
||||
}
|
||||
|
||||
}
|
||||
`)
|
||||
require.NoError(t, err)
|
||||
|
||||
runFunc, ok := goja.AssertFunction(vm.Get("run"))
|
||||
require.True(t, ok)
|
||||
|
||||
ret, err := runFunc(goja.Undefined())
|
||||
require.NoError(t, err)
|
||||
|
||||
promise := ret.Export().(*goja.Promise)
|
||||
|
||||
for promise.State() == goja.PromiseStatePending {
|
||||
time.Sleep(10 * time.Millisecond)
|
||||
}
|
||||
|
||||
if promise.State() == goja.PromiseStateRejected {
|
||||
err := promise.Result()
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user