{"id":20020542,"url":"https://github.com/jklmnn/stotp","last_synced_at":"2025-05-05T01:30:42.044Z","repository":{"id":87047780,"uuid":"152803016","full_name":"jklmnn/STOTP","owner":"jklmnn","description":"SPARK TOTP library","archived":false,"fork":false,"pushed_at":"2018-12-12T07:42:45.000Z","size":60,"stargazers_count":7,"open_issues_count":0,"forks_count":1,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-07-31T20:40:20.847Z","etag":null,"topics":["2fa","2fa-security","ada","base32","formal-verification","hotp","spark","totp"],"latest_commit_sha":null,"homepage":null,"language":"Ada","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jklmnn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-10-12T20:14:44.000Z","updated_at":"2021-06-17T20:30:55.000Z","dependencies_parsed_at":null,"dependency_job_id":"a0ffddcc-b063-468d-bbdb-7b1099870bd5","html_url":"https://github.com/jklmnn/STOTP","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jklmnn%2FSTOTP","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jklmnn%2FSTOTP/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jklmnn%2FSTOTP/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jklmnn%2FSTOTP/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jklmnn","download_url":"https://codeload.github.com/jklmnn/STOTP/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252422921,"owners_count":21745515,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["2fa","2fa-security","ada","base32","formal-verification","hotp","spark","totp"],"created_at":"2024-11-13T08:32:52.109Z","updated_at":"2025-05-05T01:30:41.165Z","avatar_url":"https://github.com/jklmnn.png","language":"Ada","funding_links":[],"categories":[],"sub_categories":[],"readme":"# STOTP\nSTOTP is an implementation of the time based one time pad (TOTP) written in SPARK.\nIt currently only supports SHA-1 but since it is based on the [libsparkcrypto](https://github.com/Componolit/libsparkcrypto/) further algorithms can be added.\n\nThe library includes a toolset to generate tokens for twe factor authentication from provided base32 keys:\n\n - [Base32 encoder/decoder](https://github.com/jklmnn/STOTP/blob/master/src/base32.ads) (without padding support)\n - [HOTP implementation](https://github.com/jklmnn/STOTP/blob/master/src/otp-h.ads) ([RFC 4226](https://tools.ietf.org/html/rfc4226))\n - [TOTP implementation](https://github.com/jklmnn/STOTP/blob/master/src/otp-t.ads) ([RFC 6238](https://tools.ietf.org/html/rfc6238))\n - [OTP Value generator for different lengths](https://github.com/jklmnn/STOTP/blob/master/src/otp.ads)\n\nThe code proves for the absence of runtime errors and the correctness of its dependencies.\n\n## Usage\n\n### Requirements\n\nTo build the project the [GNAT GPL toolchain](https://www.adacore.com/download/) is required.\n\n### Build\n \n - `$ git clone --recursive https://github.com/jklmnn/STOTP.git`\n - `$ cd STOTP`\n - `$ gprbuild -P stotp.gpr`\n\n### Prove\n\n - `$ gnatprove -P stotp.gpr`\n\n### Example\n\nThe project file builds an example application that takes a base32 key and generates the current TOTP token:\n\n - `$ ./build/generate_2fa_token \u003cbase32 key\u003e`\n\n### Tests\n\nThe project also builds some simple tests to check the outputs of core packages.\nThese are executables in the `build` directory prefixed with `test_` and all of them should only output `TRUE` one or multiple times.\n\n### Basic usage\n\nTo get a basic understanding in how to use the library take a look at the files in `examples` and `tests`.\nAlso all specifications in `src` are annotated. Further documentation might probably follow\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjklmnn%2Fstotp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjklmnn%2Fstotp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjklmnn%2Fstotp/lists"}