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 {
_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;
}

View File

@@ -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.