Skip to main content

Cosmian lib SGX

Overview

Python library for code providers using Cosmian Secure Computation.

Example

A simple structure of the code should look like:

$ tree .
.
├── secret_mod.py
└── run.py

where run.py is called the entrypoint and is the only file which can't be encrypted.

The goal of the entrypoint is to manage the I/O of you program whereas other module can hide the Python code you want to keep secret.

Here is an example of a statistical mean code where:

  • Code Provider hides the whole module secret_mod which is decrypted in the SGX enclave
  • Data Providers send bytes of an arbitrary long integer in big-endian as data input for the Code Provider
  • Result Consumers receive bytes of the statistical mean of all input datas represented as IEEE 754 binary64
"""run module."""

from io import BytesIO
import struct
from typing import Iterator

from cosmian_lib_sgx import Enclave


def convert_input(datas: Iterator[BytesIO]) -> Iterator[int]:
    """Transform input data bytes to integer."""
    for data in datas:  # type: BytesIO
        yield int.from_bytes(data.read(), byteorder="big")


def main() -> int:
    """Entrypoint of your code."""
    with Enclave() as enclave:
        # import your ciphered module normally
        import secret_mod

        # convert input data bytes sent by Data Providers
        datas: Iterator[int] = convert_input(enclave.read())

        # apply function of your module on datas
        output: float = secret_mod.custom_mean(datas)

        # convert output result
        result: bytes = struct.pack("d", output)

        # write result for Result Consumers
        enclave.write(result)

    return 0


if __name__ == "__main__":
    main()
"""secret_mod module."""

from typing import Iterator


def custom_mean(input_datas: Iterator[int]) -> float:
    """Statistical mean of input datas."""
    n: int = 0
    mean: float = 0.0

    for x in input_datas:  # type: int
        n += 1
        mean += (x - mean) / n
    
    return mean if n > 0 else float("nan")

Metadata

Release files for cosmian-lib-sgx 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for cosmian-lib-sgx 0.2.1
File Interpreter ABI Platform
cosmian_lib_sgx-0.2.1-py3-none-any.whl Python 3 none any Details

Release files / cosmian_lib_sgx-0.2.1-py3-none-any.whl

Download URL cosmian_lib_sgx-0.2.1-py3-none-any.whl
Size 25.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9c86d35ad6a23456ee0916acd60c5ab7acebeb2c7e83caafcc08f042cb019cc8
BLAKE2b-256 checksum
How to use checksums
4f5b4496156f3f71dd95c747f18f78a027af94e9cd282932da27529f832048a5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.8.14

Security for cosmian-lib-sgx 0.2.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

0.2.1 This release

1 release file No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page