compatibility fix of rumtime and legacy node

This commit is contained in:
cmachsocket
2026-09-14 21:13:16 +08:00
parent a8c781fd64
commit 9a16c89714
2 changed files with 8 additions and 3 deletions
+3 -2
View File
@@ -151,7 +151,8 @@ const decrypt = (cipher) => {
}
const aesEcbEncrypt = (key, plaintext) => {
const cipher = crypto.createCipheriv(`aes-${key.length * 8}-ecb`, key, null)
// 某些运行时不允许使用 null 作为 IV,因此使用 Buffer.alloc(0) ,同时与上下文deriveX25519AesKey等函数保持一致
const cipher = crypto.createCipheriv(`aes-${key.length * 8}-ecb`, key, Buffer.alloc(0))
return Buffer.concat([cipher.update(Buffer.from(plaintext)), cipher.final()])
}
@@ -159,7 +160,7 @@ const aesEcbDecrypt = (key, ciphertext) => {
const decipher = crypto.createDecipheriv(
`aes-${key.length * 8}-ecb`,
key,
null,
Buffer.alloc(0),
)
return Buffer.concat([decipher.update(ciphertext), decipher.final()])
}
+5 -1
View File
@@ -440,7 +440,11 @@ const createRequest = async (uri, data, options) => {
!cookie.NMTID
) {
NMTID_RETRIES_LEFT--
answer.cookie = setCookies.map((x) => {
answer.cookie = (
typeof res.headers['set-cookie'] === 'string' // node 20 版本以前,可能解析为String
? [res.headers['set-cookie']]
: res.headers['set-cookie'] || []
).map((x) => {
const cleaned = cleanCookie(x)
const match = x.match(/(?:^|;\s*)NMTID=([^;]+)/)
if (match) {