Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jklmnn/stotp
SPARK TOTP library
https://github.com/jklmnn/stotp
2fa 2fa-security ada base32 formal-verification hotp spark totp
Last synced: 1 day ago
JSON representation
SPARK TOTP library
- Host: GitHub
- URL: https://github.com/jklmnn/stotp
- Owner: jklmnn
- License: lgpl-3.0
- Created: 2018-10-12T20:14:44.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2018-12-12T07:42:45.000Z (almost 6 years ago)
- Last Synced: 2024-07-31T20:40:20.847Z (4 months ago)
- Topics: 2fa, 2fa-security, ada, base32, formal-verification, hotp, spark, totp
- Language: Ada
- Size: 58.6 KB
- Stars: 7
- Watchers: 4
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# STOTP
STOTP is an implementation of the time based one time pad (TOTP) written in SPARK.
It currently only supports SHA-1 but since it is based on the [libsparkcrypto](https://github.com/Componolit/libsparkcrypto/) further algorithms can be added.The library includes a toolset to generate tokens for twe factor authentication from provided base32 keys:
- [Base32 encoder/decoder](https://github.com/jklmnn/STOTP/blob/master/src/base32.ads) (without padding support)
- [HOTP implementation](https://github.com/jklmnn/STOTP/blob/master/src/otp-h.ads) ([RFC 4226](https://tools.ietf.org/html/rfc4226))
- [TOTP implementation](https://github.com/jklmnn/STOTP/blob/master/src/otp-t.ads) ([RFC 6238](https://tools.ietf.org/html/rfc6238))
- [OTP Value generator for different lengths](https://github.com/jklmnn/STOTP/blob/master/src/otp.ads)The code proves for the absence of runtime errors and the correctness of its dependencies.
## Usage
### Requirements
To build the project the [GNAT GPL toolchain](https://www.adacore.com/download/) is required.
### Build
- `$ git clone --recursive https://github.com/jklmnn/STOTP.git`
- `$ cd STOTP`
- `$ gprbuild -P stotp.gpr`### Prove
- `$ gnatprove -P stotp.gpr`
### Example
The project file builds an example application that takes a base32 key and generates the current TOTP token:
- `$ ./build/generate_2fa_token `
### Tests
The project also builds some simple tests to check the outputs of core packages.
These are executables in the `build` directory prefixed with `test_` and all of them should only output `TRUE` one or multiple times.### Basic usage
To get a basic understanding in how to use the library take a look at the files in `examples` and `tests`.
Also all specifications in `src` are annotated. Further documentation might probably follow