From 0edc1fcec79ec77d90539da64c2a02deda82cac5 Mon Sep 17 00:00:00 2001 From: Karl Seguin Date: Mon, 19 Jan 2026 07:36:14 +0800 Subject: [PATCH] fix rebase + migrate SubtleCrypto to new local --- src/browser/webapi/Performance.zig | 12 ++++++------ src/browser/webapi/SubtleCrypto.zig | 24 ++++++++++++------------ 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/browser/webapi/Performance.zig b/src/browser/webapi/Performance.zig index c49d65db..fef02036 100644 --- a/src/browser/webapi/Performance.zig +++ b/src/browser/webapi/Performance.zig @@ -314,10 +314,10 @@ pub const Entry = struct { pub const Mark = struct { _proto: *Entry, - _detail: ?js.Object.Global, + _detail: ?js.Value.Global, const Options = struct { - detail: ?js.Object = null, + detail: ?js.Value = null, startTime: ?f64 = null, }; @@ -362,10 +362,10 @@ pub const Mark = struct { pub const Measure = struct { _proto: *Entry, - _detail: ?js.Object.Global, + _detail: ?js.Value.Global, const Options = struct { - detail: ?js.Object = null, + detail: ?js.Value = null, start: ?TimestampOrMark, end: ?TimestampOrMark, duration: ?f64 = null, @@ -378,7 +378,7 @@ pub const Measure = struct { pub fn init( name: []const u8, - maybe_detail: ?js.Object, + maybe_detail: ?js.Value, start_timestamp: f64, end_timestamp: f64, maybe_duration: ?f64, @@ -405,7 +405,7 @@ pub const Measure = struct { return m; } - pub fn getDetail(self: *const Measure) ?js.Object.Global { + pub fn getDetail(self: *const Measure) ?js.Value.Global { return self._detail; } diff --git a/src/browser/webapi/SubtleCrypto.zig b/src/browser/webapi/SubtleCrypto.zig index 8a8e733f..fd1b3db6 100644 --- a/src/browser/webapi/SubtleCrypto.zig +++ b/src/browser/webapi/SubtleCrypto.zig @@ -95,10 +95,10 @@ pub fn generateKey( page: *Page, ) !js.Promise { const key_or_pair = CryptoKey.init(algorithm, extractable, key_usages, page) catch |err| { - return page.js.rejectPromise(@errorName(err)); + return page.js.local.?.rejectPromise(@errorName(err)); }; - return page.js.resolvePromise(key_or_pair); + return page.js.local.?.resolvePromise(key_or_pair); } /// Exports a key: that is, it takes as input a CryptoKey object and gives you @@ -114,7 +114,7 @@ pub fn exportKey( } if (std.mem.eql(u8, format, "raw")) { - return page.js.resolvePromise(js.ArrayBuffer{ .values = key._key }); + return page.js.local.?.resolvePromise(js.ArrayBuffer{ .values = key._key }); } const is_unsupported = std.mem.eql(u8, format, "pkcs8") or @@ -124,7 +124,7 @@ pub fn exportKey( log.warn(.not_implemented, "SubtleCrypto.exportKey", .{ .format = format }); } - return page.js.rejectPromise(@errorName(error.NotSupported)); + return page.js.local.?.rejectPromise(@errorName(error.NotSupported)); } /// Derive a secret key from a master key. @@ -139,14 +139,14 @@ pub fn deriveBits( .ecdh_or_x25519 => |p| { const name = p.name; if (std.mem.eql(u8, name, "X25519")) { - return page.js.resolvePromise(base_key.deriveBitsX25519(p.public, length, page)); + return page.js.local.?.resolvePromise(base_key.deriveBitsX25519(p.public, length, page)); } if (std.mem.eql(u8, name, "ECDH")) { log.warn(.not_implemented, "SubtleCrypto.deriveBits", .{ .name = name }); } - return page.js.rejectPromise(@errorName(error.NotSupported)); + return page.js.local.?.rejectPromise(@errorName(error.NotSupported)); }, }; } @@ -183,19 +183,19 @@ pub fn sign( .hmac => { // Verify algorithm. if (!algorithm.isHMAC()) { - return page.js.rejectPromise(@errorName(error.InvalidAccessError)); + return page.js.local.?.rejectPromise(@errorName(error.InvalidAccessError)); } // Call sign for HMAC. const result = key.signHMAC(data, page) catch |err| { - return page.js.rejectPromise(@errorName(err)); + return page.js.local.?.rejectPromise(@errorName(err)); }; - return page.js.resolvePromise(result); + return page.js.local.?.resolvePromise(result); }, else => { log.warn(.not_implemented, "SubtleCrypto.sign", .{ .key_type = key._type }); - return page.js.rejectPromise(@errorName(error.InvalidAccessError)); + return page.js.local.?.rejectPromise(@errorName(error.InvalidAccessError)); }, }; } @@ -453,10 +453,10 @@ pub const CryptoKey = struct { if (signed != null) { // CRYPTO_memcmp compare in constant time so prohibits time-based attacks. const res = crypto.CRYPTO_memcmp(signed, @ptrCast(signature.ptr), signature.len); - return page.js.resolvePromise(res == 0); + return page.js.local.?.resolvePromise(res == 0); } - return page.js.resolvePromise(false); + return page.js.local.?.resolvePromise(false); } // X25519.