mplang-nightly 0.1.dev163__py3-none-any.whl → 0.1.dev164__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- mplang/device.py +4 -18
- mplang/kernels/mock_tee.py +0 -3
- mplang/ops/tee.py +7 -21
- {mplang_nightly-0.1.dev163.dist-info → mplang_nightly-0.1.dev164.dist-info}/METADATA +1 -1
- {mplang_nightly-0.1.dev163.dist-info → mplang_nightly-0.1.dev164.dist-info}/RECORD +8 -8
- {mplang_nightly-0.1.dev163.dist-info → mplang_nightly-0.1.dev164.dist-info}/WHEEL +0 -0
- {mplang_nightly-0.1.dev163.dist-info → mplang_nightly-0.1.dev164.dist-info}/entry_points.txt +0 -0
- {mplang_nightly-0.1.dev163.dist-info → mplang_nightly-0.1.dev164.dist-info}/licenses/LICENSE +0 -0
mplang/device.py
CHANGED
@@ -207,15 +207,8 @@ def _d2d(to_dev_id: str, obj: MPObject) -> MPObject:
|
|
207
207
|
assert len(frm_dev.members) == 1 and len(to_dev.members) == 1
|
208
208
|
frm_rank = frm_dev.members[0].rank
|
209
209
|
tee_rank = to_dev.members[0].rank
|
210
|
-
platform = to_dev.config.get("platform")
|
211
|
-
if not platform:
|
212
|
-
raise ValueError(
|
213
|
-
f"TEE device '{to_dev_id}' is missing 'platform' in its config."
|
214
|
-
)
|
215
210
|
# Ensure sessions (both directions) exist for this PPU<->TEE pair
|
216
|
-
sess_p, sess_t = _ensure_tee_session(
|
217
|
-
frm_dev_id, to_dev_id, frm_rank, tee_rank, platform
|
218
|
-
)
|
211
|
+
sess_p, sess_t = _ensure_tee_session(frm_dev_id, to_dev_id, frm_rank, tee_rank)
|
219
212
|
# Bytes-only path: pack -> enc -> p2p -> dec -> unpack (with static out type)
|
220
213
|
obj_ty = TensorType.from_obj(obj)
|
221
214
|
b = simp.runAt(frm_rank, builtin.pack)(obj)
|
@@ -229,15 +222,8 @@ def _d2d(to_dev_id: str, obj: MPObject) -> MPObject:
|
|
229
222
|
assert len(frm_dev.members) == 1 and len(to_dev.members) == 1
|
230
223
|
tee_rank = frm_dev.members[0].rank
|
231
224
|
ppu_rank = to_dev.members[0].rank
|
232
|
-
platform = frm_dev.config.get("platform")
|
233
|
-
if not platform:
|
234
|
-
raise ValueError(
|
235
|
-
f"TEE device '{frm_dev_id}' is missing 'platform' in its config."
|
236
|
-
)
|
237
225
|
# Ensure bidirectional session established for this pair
|
238
|
-
sess_p, sess_t = _ensure_tee_session(
|
239
|
-
to_dev_id, frm_dev_id, ppu_rank, tee_rank, platform
|
240
|
-
)
|
226
|
+
sess_p, sess_t = _ensure_tee_session(to_dev_id, frm_dev_id, ppu_rank, tee_rank)
|
241
227
|
obj_ty = TensorType.from_obj(obj)
|
242
228
|
b = simp.runAt(tee_rank, builtin.pack)(obj)
|
243
229
|
ct = simp.runAt(tee_rank, crypto.enc)(b, sess_t)
|
@@ -259,7 +245,7 @@ def _d2d(to_dev_id: str, obj: MPObject) -> MPObject:
|
|
259
245
|
|
260
246
|
|
261
247
|
def _ensure_tee_session(
|
262
|
-
frm_dev_id: str, to_dev_id: str, frm_rank: int, tee_rank: int
|
248
|
+
frm_dev_id: str, to_dev_id: str, frm_rank: int, tee_rank: int
|
263
249
|
) -> tuple[MPObject, MPObject]:
|
264
250
|
"""Ensure a TEE session (sess_p at sender, sess_t at TEE) exists.
|
265
251
|
|
@@ -281,7 +267,7 @@ def _ensure_tee_session(
|
|
281
267
|
|
282
268
|
# 2) Send quote to sender and attest to obtain TEE pk
|
283
269
|
quote_at_sender = mpi.p2p(tee_rank, frm_rank, quote)
|
284
|
-
tee_pk_at_sender = simp.runAt(frm_rank, tee.attest)(quote_at_sender
|
270
|
+
tee_pk_at_sender = simp.runAt(frm_rank, tee.attest)(quote_at_sender)
|
285
271
|
|
286
272
|
# 3) Sender generates its ephemeral keypair and sends its pk to TEE
|
287
273
|
v_sk, v_pk = simp.runAt(frm_rank, crypto.kem_keygen)(_TEE_KEM_SUITE)
|
mplang/kernels/mock_tee.py
CHANGED
@@ -64,9 +64,6 @@ def _tee_attest(pfunc: PFunction, quote: object) -> NDArray[np.uint8]:
|
|
64
64
|
stacklevel=3,
|
65
65
|
)
|
66
66
|
quote = np.asarray(quote, dtype=np.uint8)
|
67
|
-
platform = pfunc.attrs.get("platform")
|
68
|
-
if platform is None:
|
69
|
-
raise ValueError("missing required 'platform' attribute in PFunction")
|
70
67
|
|
71
68
|
if quote.size != 33:
|
72
69
|
raise ValueError("mock quote must be 33 bytes (1 header + 32 pk)")
|
mplang/ops/tee.py
CHANGED
@@ -14,11 +14,7 @@
|
|
14
14
|
|
15
15
|
from __future__ import annotations
|
16
16
|
|
17
|
-
from jax.tree_util import PyTreeDef, tree_flatten
|
18
|
-
|
19
17
|
from mplang.core.dtype import UINT8
|
20
|
-
from mplang.core.mpobject import MPObject
|
21
|
-
from mplang.core.pfunc import PFunction
|
22
18
|
from mplang.core.tensor import TensorType
|
23
19
|
from mplang.ops.base import stateless_mod
|
24
20
|
|
@@ -32,20 +28,10 @@ def quote_gen(pk: TensorType) -> TensorType:
|
|
32
28
|
return TensorType(UINT8, (-1,))
|
33
29
|
|
34
30
|
|
35
|
-
@_TEE_MOD.
|
36
|
-
def attest(
|
37
|
-
quote
|
38
|
-
)
|
39
|
-
"""
|
40
|
-
|
41
|
-
|
42
|
-
outs_info = [TensorType(UINT8, (32,))] # pk is always 32 bytes for x25519
|
43
|
-
pfunc = PFunction(
|
44
|
-
fn_type="tee.attest",
|
45
|
-
ins_info=ins_info,
|
46
|
-
outs_info=outs_info,
|
47
|
-
platform=platform,
|
48
|
-
)
|
49
|
-
_, treedef = tree_flatten(outs_info[0])
|
50
|
-
|
51
|
-
return pfunc, [quote], treedef
|
31
|
+
@_TEE_MOD.simple_op()
|
32
|
+
def attest(quote: TensorType) -> TensorType:
|
33
|
+
"""TEE quote verification returning the attested TEE public key.
|
34
|
+
API (mock): attest(quote: u8[33]) -> tee_pk: u8[32]
|
35
|
+
"""
|
36
|
+
_ = quote # Mark as used for the decorator
|
37
|
+
return TensorType(UINT8, (32,))
|
@@ -1,6 +1,6 @@
|
|
1
1
|
mplang/__init__.py,sha256=ofO-F-CNoVIxpMpTJtTJoQtKegJcHwcOJLzoVispiyc,1852
|
2
2
|
mplang/api.py,sha256=ssmv0_CyZPFORhOUJ84Jo6NwRJSK7_Ono3n7ZjEg4sA,3058
|
3
|
-
mplang/device.py,sha256=
|
3
|
+
mplang/device.py,sha256=oFdu_XGaJ7AaSePCg1IEQmt6pVoJ3YWHzFyFX4UQBGM,12552
|
4
4
|
mplang/analysis/__init__.py,sha256=CTHFvRsi-nFngojqjn08UaR3RY9i7CJ7T2UdR95kCrk,1056
|
5
5
|
mplang/analysis/diagram.py,sha256=ffwgD12gL1_KH1uJ_EYkjmIlDrfxYJJkWj-wHl09_Xk,19520
|
6
6
|
mplang/core/__init__.py,sha256=lWxlEKfRwX7FNDzgyKZ1fiDMaCiqkyg0j5mKlZD_v7g,2244
|
@@ -31,7 +31,7 @@ mplang/kernels/base.py,sha256=-YV4Aj5fs6GT4ehS6Tyi8WQ-amxn5edHTFJRQzyjHXY,3826
|
|
31
31
|
mplang/kernels/builtin.py,sha256=nSuM79cn7M6M27A6Y8ycilXT_qAlB1ktkwkRX6dv_VQ,7052
|
32
32
|
mplang/kernels/context.py,sha256=n-Z7fz7HjHb3UY380iZcasmn2sK-OQUGEIWJk2-fT18,13602
|
33
33
|
mplang/kernels/crypto.py,sha256=s7R0yd4Fk5cI2Qd3LpLc-kmbVuk8fFsbKbfKi43R0aE,3892
|
34
|
-
mplang/kernels/mock_tee.py,sha256=
|
34
|
+
mplang/kernels/mock_tee.py,sha256=N8Ft50sD0t1V3-NfkGfQxYa6N5nJcz7uuwXEVj1F_mc,2310
|
35
35
|
mplang/kernels/phe.py,sha256=8-_1IFPOaGECGj9mbYja8XoqbMYnYqfpDNVyMJd8J1Y,65247
|
36
36
|
mplang/kernels/spu.py,sha256=LkM8tNzhwTa8lufNgClHfnI4LNu25cdWLQZdJsMDEO8,9301
|
37
37
|
mplang/kernels/sql_duckdb.py,sha256=UN1Ev6-MxF_-65zMExUsLScC9PlmEIEcN8YziIoX_rY,1724
|
@@ -45,7 +45,7 @@ mplang/ops/jax_cc.py,sha256=42czYg3hNQbI_nUebXnshlU8ULwM-oBDe_TQoApLNVA,7802
|
|
45
45
|
mplang/ops/phe.py,sha256=SatswExjZWPed8y3qA33BCwIWbvsgHCuCAz_pv2RLLw,6790
|
46
46
|
mplang/ops/spu.py,sha256=UHr5DSoqG08xDYER_11OsMVjGGNXXxsvkFoVvXU8uik,4989
|
47
47
|
mplang/ops/sql.py,sha256=HyY2i5aGC5W7r62JryFSjQCUDXH3kQz82YADwn4z5uc,2015
|
48
|
-
mplang/ops/tee.py,sha256=
|
48
|
+
mplang/ops/tee.py,sha256=bOpS_BXG12D6bONikzdF2yt0oVZj9Jyd0g_3IXP8VgE,1281
|
49
49
|
mplang/protos/v1alpha1/mpir_pb2.py,sha256=Bros37t-4LMJbuUYVSM65rImUYTtZDhNTIADGbZCKp0,7522
|
50
50
|
mplang/protos/v1alpha1/mpir_pb2.pyi,sha256=GwXR4wPB_kB_36iYS9x-cGI9KDKFMq89KhdLhW_xmvE,19342
|
51
51
|
mplang/protos/v1alpha1/mpir_pb2_grpc.py,sha256=xYOs94SXiNYAlFodACnsXW5QovLsHY5tCk3p76RH5Zc,158
|
@@ -70,8 +70,8 @@ mplang/utils/crypto.py,sha256=rvPomBFtznRHc3RPi6Aip9lsU8zW2oxBqGv1K3vn7Rs,1052
|
|
70
70
|
mplang/utils/func_utils.py,sha256=vCJcZmu0bEbqhOQKdpttV2_MBllIcPSN0b8U4WjNGGo,5164
|
71
71
|
mplang/utils/spu_utils.py,sha256=S3L9RBkBe2AvSuMSQQ12cBY5Y1NPthubvErSX_7nj1A,4158
|
72
72
|
mplang/utils/table_utils.py,sha256=aC-IZOKkSmFkpr3NZchLM0Wt0GOn-rg_xHBHREWBwAU,2202
|
73
|
-
mplang_nightly-0.1.
|
74
|
-
mplang_nightly-0.1.
|
75
|
-
mplang_nightly-0.1.
|
76
|
-
mplang_nightly-0.1.
|
77
|
-
mplang_nightly-0.1.
|
73
|
+
mplang_nightly-0.1.dev164.dist-info/METADATA,sha256=7TEhvNRPHlSW4___A1ctr8Jo4fM36TiDKx-9JSQsjWE,16547
|
74
|
+
mplang_nightly-0.1.dev164.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
75
|
+
mplang_nightly-0.1.dev164.dist-info/entry_points.txt,sha256=mG1oJT-GAjQR834a62_QIWb7litzWPPyVnwFqm-rWuY,55
|
76
|
+
mplang_nightly-0.1.dev164.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
77
|
+
mplang_nightly-0.1.dev164.dist-info/RECORD,,
|
File without changes
|
{mplang_nightly-0.1.dev163.dist-info → mplang_nightly-0.1.dev164.dist-info}/entry_points.txt
RENAMED
File without changes
|
{mplang_nightly-0.1.dev163.dist-info → mplang_nightly-0.1.dev164.dist-info}/licenses/LICENSE
RENAMED
File without changes
|