- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何使用 [out] 在 ecall 中返回一个未知大小的指针?我知道的当前方法要求在调用 ecall 时设置指针的大小,例如:
[out, size=len] int *p, size_t len
有没有另一种方法,在调用 ecall 函数时不必指定指针的大小?
最佳答案
您似乎需要 EDL 生成的代码来从 enclave 获取未知长度的数据(在调用时)。
选项 1 是提供一个足够大的缓冲区来接收数据:
public int ecall_test(
uint32_t data_capacity,
[out, size=data_capacity] uint8_t* data,
[out] uint32_t* data_size
);
可信实现可以用最多 data_capacity
字节的数据填充缓冲区,并返回 data_size
中的实际长度。边缘函数代码仍然会从受信任的输出缓冲区复制 data_capacity
字节,但你应该没问题,因为你的 data_size
<data_capacity
字节将被占用照顾。
选项 2 是两步过程:第一个 ecall 请求可信方法将要返回的实际数据长度,然后是另一个提供实际数据的调用。
public int ecall_test_1(
[out] uint32_t* data_size
);
public int ecall_test_2(
uint32_t data_size,
[out, size=data_size] uint8_t* data,
);
边缘代码需要提前知道缓冲区的大小,并且它无法接受仅来自可信函数的数据长度(在这种情况下,无法分配相应的缓冲区来承载数据拷贝不受信任的一方)。
关于c++ - 如何在 sgx ecall 中返回未知大小的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49769792/
我有一个类似于以下的 (C#) 函数。 private static bool SpecialCase = false; public void Foo() { if (SpecialCase
如何使用 [out] 在 ecall 中返回一个未知大小的指针?我知道的当前方法要求在调用 ecall 时设置指针的大小,例如: [out, size=len] int *p, size_t len
RISC-V的ECALL编码中的PRIV字段是什么意思?是否应该对调用 ECALL 的模式进行编码? 最佳答案 字段的名称是“funct3”。对于许多 32 位指令,它是操作码的第二部分。 ECALL
我的理解是scall和ecall在riscv中是一样的。但是,qemu riscv scall 实现与spike ecall 实现不同。你能解释一下区别吗?谢谢。 最佳答案 QEMU 目前对于 RIS
在 RISC-V 伪内核 (pk) 或 Linux 下运行的程序中系统调用的调用约定是什么? 查看由 riscv-gnu-toolchain 生成的代码,规则似乎是: 系统调用号传入 a7 系统调用参
我是一名优秀的程序员,十分优秀!