{"id":37131446,"url":"https://github.com/ubirch/ubirch-protocol-sim","last_synced_at":"2026-01-14T15:14:17.705Z","repository":{"id":43636513,"uuid":"226344933","full_name":"ubirch/ubirch-protocol-sim","owner":"ubirch","description":"ubirch-protocol on a SIM (SIM, eSIM, SmartCard)","archived":false,"fork":false,"pushed_at":"2021-03-22T20:27:07.000Z","size":2080,"stargazers_count":4,"open_issues_count":1,"forks_count":5,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-04-15T23:02:01.039Z","etag":null,"topics":["blockchain","crypto","sim","smartcard","ubirch-protocol"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ubirch.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}},"created_at":"2019-12-06T14:18:35.000Z","updated_at":"2024-03-07T22:07:10.000Z","dependencies_parsed_at":"2022-08-20T09:41:09.263Z","dependency_job_id":null,"html_url":"https://github.com/ubirch/ubirch-protocol-sim","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ubirch/ubirch-protocol-sim","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ubirch%2Fubirch-protocol-sim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ubirch%2Fubirch-protocol-sim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ubirch%2Fubirch-protocol-sim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ubirch%2Fubirch-protocol-sim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ubirch","download_url":"https://codeload.github.com/ubirch/ubirch-protocol-sim/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ubirch%2Fubirch-protocol-sim/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28424063,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T13:30:50.153Z","status":"ssl_error","status_checked_at":"2026-01-14T13:29:08.907Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["blockchain","crypto","sim","smartcard","ubirch-protocol"],"created_at":"2026-01-14T15:14:17.103Z","updated_at":"2026-01-14T15:14:17.690Z","avatar_url":"https://github.com/ubirch.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![blockchain on a sim](https://github.com/ubirch/ubirch-protocol-sim/raw/master/docs/ubirch-protocol-sim.png)](https://ubirch.com)\n\n# ubirch-protocol on a SIM\n\nThis repository contains example code, how to use the [ubirch-protocol](//github.com/ubirch/ubirch-protocol) \nin conjunction with the SIM application (SIGNiT) by \n[G+D (Giesecke+Devrient)](//www.gi-de.com/) and [ubirch GmbH](//ubirch.com/). The SIM card application wraps the required\nfunctionality to run the ubirch-protocol on any (embedded) device that has access to a \nmodem or smart card capabilities.\n\nThe requirement is an interface that can send APDU commands to the SIM card application. \nThis most often will be a modem that supports the standard `AT+CSIM` command (3GPP TS 27.007).\n\n- [SIGNiT Customer Manual](docs/SIGNiT%20Customer%20Manual%20v4.pdf) (PDF)\n- [Micropython Example Code](micropython/main.py) (.py)\n- [Golang Example Code](go/main/main.go) (.go)\n\n### Requirements\n\n- a [SIM card](https://1nce.com) with the ubirch applet installed\n- basic connectivity (via mobile network, wifi or other)\n- a Modem that supports the AT+CSIM commands to send APDU commands to the SIM card\n- registered [ubirch account](https://console.demo.ubirch.com/)\n\n## Support\n\nIf you are having problems, please contact us using our [help desk](https://ubirch.atlassian.net/servicedesk/customer/portal/1).\n\n## Signing/Chaining messages\n\nThe optimal way to work with the ubirch-protocol is to hash the actual data you want to\nsend and use the responding bytes as the payload of the [UPP](//github.com/ubirch/ubirch-protocol#basic-message-format).\nThis hash can be used as a key to identify the message on the server side. The hash must\nbe unique per messages, it should optimally contain a sequence number or timestamp.\n\n# Examples\n \nWhile it is possible to implement the full protocol without the need for additional\ncode, we have opted to provide an implementation in MicroPython, which can be used on\nembedded devices, such as the [Pycom GPy](//pycom.io/product/gpy/).\n\nAdditionally, other implementations provide an interface to the SIM application.\n\n### Go\n\nThe Go implementation can be compiled and cross compiled to a number of architectures.\nThis example also has a little micropython proxy that can be installed on a Pycom GPy or FiPy,\nso it can be used instead of a directly connected modem.\n\n### MicroPython\n\nThe MicroPython implementation can be loaded on any GPy device and will do the following\nsteps:\n\n\u003e Currently the generation will only work with Pycom devices, if the key ID is only\n\u003e 1 (one) byte long. This is due to a buffer length issue with the underlying python\n\u003e implementation.\n\n1. Initialize the SIM card and unlock the application with a PIN code.\n2. Generate a new key pair and store it on the SIM card (fails if already generated).\n3. Register the generated public key with the ubirch key server.\n4. Create a signed [UPP](//github.com/ubirch/ubirch-protocol#basic-message-format) from some data (`{\"ts\":1234,\"data\":\"random\"}`).\n5. Send the signed message to the ubirch backend (`https://niomon.demo.ubirch.com`).\n6. Verify the signed [UPP](//github.com/ubirch/ubirch-protocol#basic-message-format) by feeding it back to the SIM card application.\n\nTODO:\n\n- Verify the [UPP](//github.com/ubirch/ubirch-protocol#basic-message-format) and check blockchain anchoring (`//niomon.demo.ubirch.com/api/verify`)*\n\n\u003e __*__ Sending data to the ubirch backend requires an API token. \n\n## Development\n\n### Key Generation\n\nGenerating a key, always use the UUID as the title of the key entry and use the key ID\nto access the key (signing key and verifying key need two different IDs!). The UUID will\nbe automatically placed into the [UPP](//github.com/ubirch/ubirch-protocol#basic-message-format)\nas the required identity id.\n\n# LICENSE\n\n```\nCopyright 2019 ubirch GmbH\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n   http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fubirch%2Fubirch-protocol-sim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fubirch%2Fubirch-protocol-sim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fubirch%2Fubirch-protocol-sim/lists"}