Skip to main content

A Python 3 client for interacting with FIAT-based firmware

Project description

The context for FIAT is somewhat standard for physical implementation, e.g., side-channel attacks. At a (very) high level, it can be modelled as follows

+---------------------------+                 +--------------------------+
|          client           |                 |          target          |
+===========================+                 +==========================+
|                           | ----- req ----> | kernel layer             |
|                           | <---- ack ----- |~~~~~~~~~~~~~~~~~~~~~~~~~~|
|                           |                 | driver layer: SPRs, GPRs |
|                           |                 |~~~~~~~~~~~~~~~~~~~~~~~~~~|
|                           | <-- trigger --- |  board layer: UART, GPIO |
+---------------------------+                 +--------------------------+

in the sense that there are two parties, a client (or user) and a target, who interact synchronously: the client transmits a req(uest) to the target, the target performs some computation, then the target transmits an ack(nowledgement) to the client, FIAT structures the target implementation into

  1. a kernel layer, i.e., the use-case specific functionality of interest,
  2. a board layer, i.e., infrastructure related to the hardware, or board said functionality is executed on,
  3. a driver layer, which uses the board layer to provide an interface to the kernel,

noting the state is reflected by a set of special- and general-purpose registers. The goal is to support both

  • the target implementation, e.g., by providing the board and driver layers, plus a build system, meaning the developer need only configure and implement the kernel layer, and
  • the client implementation, e.g., by providing a library that manages low-level interaction with a given target implementation,

while at least attempting to balance simplicity against flexibility.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

libfiat-0.1.1.tar.gz (5.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

libfiat-0.1.1-py3-none-any.whl (6.6 kB view details)

Uploaded Python 3

File details

Details for the file libfiat-0.1.1.tar.gz.

File metadata

  • Download URL: libfiat-0.1.1.tar.gz
  • Upload date:
  • Size: 5.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-httpx/0.28.1

File hashes

Hashes for libfiat-0.1.1.tar.gz
Algorithm Hash digest
SHA256 cf9d7b1c228ef72db10e590623d940e80a8a58fd4c066a87e398da543501c75a
MD5 536af6b9f6dc1b91ad2093c671508636
BLAKE2b-256 d5be59001a94160fc6ec42668725f3949184dee27329de18d0394491ff79b9f9

See more details on using hashes here.

File details

Details for the file libfiat-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: libfiat-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 6.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-httpx/0.28.1

File hashes

Hashes for libfiat-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 25fb6c535f9f8acb8a93b60189140d6e7be9f5f617254f06c7f093472936a6d3
MD5 bd6d86f85a79eda1958e2d536ffa1dd4
BLAKE2b-256 c4a306ebdc8b44603624289246c9d3db15b7d71624abace1660d8407c6354276

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page