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.0.tar.gz (4.7 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.0-py3-none-any.whl (6.4 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for libfiat-0.1.0.tar.gz
Algorithm Hash digest
SHA256 34f691818bac9b2c71581990a466a858fe6454dab75db4bfe23032cbfa4daaaa
MD5 892ad0bc935d5087064f120d4b414353
BLAKE2b-256 3ac8d7d90654644d1949d448ec10a8f1773abc751cbaff04d358ffa0350b72e1

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for libfiat-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 32966bd714d0ac600f297633fcb3d691a1eca1f1e3e9b1214b059a9d7f046b03
MD5 952e56f02defb8e2cdfc738e068d73a1
BLAKE2b-256 0625662118a621d0dae70762f3015b2988b5724b9f2b75840c8410c9c71e1f48

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