fix rebase + migrate SubtleCrypto to new local

This commit is contained in:
Karl Seguin
2026-01-19 07:36:14 +08:00
parent b46d3b22e2
commit 0edc1fcec7
2 changed files with 18 additions and 18 deletions

View File

@@ -314,10 +314,10 @@ pub const Entry = struct {
pub const Mark = struct { pub const Mark = struct {
_proto: *Entry, _proto: *Entry,
_detail: ?js.Object.Global, _detail: ?js.Value.Global,
const Options = struct { const Options = struct {
detail: ?js.Object = null, detail: ?js.Value = null,
startTime: ?f64 = null, startTime: ?f64 = null,
}; };
@@ -362,10 +362,10 @@ pub const Mark = struct {
pub const Measure = struct { pub const Measure = struct {
_proto: *Entry, _proto: *Entry,
_detail: ?js.Object.Global, _detail: ?js.Value.Global,
const Options = struct { const Options = struct {
detail: ?js.Object = null, detail: ?js.Value = null,
start: ?TimestampOrMark, start: ?TimestampOrMark,
end: ?TimestampOrMark, end: ?TimestampOrMark,
duration: ?f64 = null, duration: ?f64 = null,
@@ -378,7 +378,7 @@ pub const Measure = struct {
pub fn init( pub fn init(
name: []const u8, name: []const u8,
maybe_detail: ?js.Object, maybe_detail: ?js.Value,
start_timestamp: f64, start_timestamp: f64,
end_timestamp: f64, end_timestamp: f64,
maybe_duration: ?f64, maybe_duration: ?f64,
@@ -405,7 +405,7 @@ pub const Measure = struct {
return m; return m;
} }
pub fn getDetail(self: *const Measure) ?js.Object.Global { pub fn getDetail(self: *const Measure) ?js.Value.Global {
return self._detail; return self._detail;
} }

View File

@@ -95,10 +95,10 @@ pub fn generateKey(
page: *Page, page: *Page,
) !js.Promise { ) !js.Promise {
const key_or_pair = CryptoKey.init(algorithm, extractable, key_usages, page) catch |err| { 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 /// 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")) { 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 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 }); 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. /// Derive a secret key from a master key.
@@ -139,14 +139,14 @@ pub fn deriveBits(
.ecdh_or_x25519 => |p| { .ecdh_or_x25519 => |p| {
const name = p.name; const name = p.name;
if (std.mem.eql(u8, name, "X25519")) { 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")) { if (std.mem.eql(u8, name, "ECDH")) {
log.warn(.not_implemented, "SubtleCrypto.deriveBits", .{ .name = name }); 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 => { .hmac => {
// Verify algorithm. // Verify algorithm.
if (!algorithm.isHMAC()) { if (!algorithm.isHMAC()) {
return page.js.rejectPromise(@errorName(error.InvalidAccessError)); return page.js.local.?.rejectPromise(@errorName(error.InvalidAccessError));
} }
// Call sign for HMAC. // Call sign for HMAC.
const result = key.signHMAC(data, page) catch |err| { 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 => { else => {
log.warn(.not_implemented, "SubtleCrypto.sign", .{ .key_type = key._type }); 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) { if (signed != null) {
// CRYPTO_memcmp compare in constant time so prohibits time-based attacks. // CRYPTO_memcmp compare in constant time so prohibits time-based attacks.
const res = crypto.CRYPTO_memcmp(signed, @ptrCast(signature.ptr), signature.len); 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. // X25519.