{"id":50415942,"url":"https://github.com/Orange-OpenSource/IoT-SAFE-APDU-library","last_synced_at":"2026-06-16T22:00:35.233Z","repository":{"id":108874554,"uuid":"304009633","full_name":"Orange-OpenSource/IoT-SAFE-APDU-library","owner":"Orange-OpenSource","description":"APDU library to communicate with a GSMA IoT SAFE applet ( https://www.gsma.com/iot/iot-safe)","archived":false,"fork":false,"pushed_at":"2021-07-12T06:38:17.000Z","size":171,"stargazers_count":21,"open_issues_count":6,"forks_count":13,"subscribers_count":19,"default_branch":"master","last_synced_at":"2026-04-21T09:54:15.009Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Orange-OpenSource.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-10-14T12:34:35.000Z","updated_at":"2024-08-10T08:09:30.000Z","dependencies_parsed_at":"2023-04-06T12:58:52.842Z","dependency_job_id":null,"html_url":"https://github.com/Orange-OpenSource/IoT-SAFE-APDU-library","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Orange-OpenSource/IoT-SAFE-APDU-library","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Orange-OpenSource%2FIoT-SAFE-APDU-library","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Orange-OpenSource%2FIoT-SAFE-APDU-library/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Orange-OpenSource%2FIoT-SAFE-APDU-library/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Orange-OpenSource%2FIoT-SAFE-APDU-library/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Orange-OpenSource","download_url":"https://codeload.github.com/Orange-OpenSource/IoT-SAFE-APDU-library/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Orange-OpenSource%2FIoT-SAFE-APDU-library/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34425024,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-16T02:00:06.860Z","response_time":126,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2026-05-31T06:00:23.623Z","updated_at":"2026-06-16T22:00:35.228Z","avatar_url":"https://github.com/Orange-OpenSource.png","language":"C","funding_links":[],"categories":["Protocols"],"sub_categories":["Others"],"readme":"# IoT SAFE APDU library\n\n## Library\n\nThis library is compliant with the\n[GSMA IoT SAFE interface](https://www.gsma.com/iot/wp-content/uploads/2019/12/IoT.05-v1-IoT-Security-Applet-Interface-Description.pdf).\nIt allows the user to use the (e)SIM as a keystore.\n\nFor now, the library implements a subset of this specification, namely:\n * Compute signature – Init\n * Compute signature – Update\n * Get data – application (to retrieve metadata about the applet)\n * Get data – object list (to retrieve metadata about the public and private\n   key)\n * Get random (to retrieve a better random number than the one provided by the\n   Rich OS)\n * Read file (to retrieve the client certificate associated to the private key)\n\nBy plugging this library to a (D)TLS library such as mbedTLS, it allows the user\nto implement the first scenario of the standard: safely open a secure (D)TLS\nchannel with a private key strongly protected by the (e)SIM hardware.\n\nDebug information can be enabled through the IOT_SAFE_ENABLE_DEBUG compilation\nflag.\n\n## Examples\n\nThis library has been tested with applets from two different manufacturers on:\n * Arduino MKR NB 1500\n * STM32 Nucleo-WB55 with Orange Live Booster (Sequans Monarch GMS01Q)\n * Orange LoRa Explorer with Orange Live Booster (Sequans Monarch GMS01Q)\n * Linux (RPi)\n\n### Arduino\n\nOn Arduino, this library forwards the IoT SAFE commands from the Rich OS to the\napplet thanks to AT CSIM commands (which must be supported by the modem).\n\nThe Arduino samples use\n[ArduinoBearSSL](https://github.com/arduino-libraries/ArduinoBearSSL) in version\n1.7.0.\n\n#### Arduino MKR NB 1500\n\nFive examples are available:\n * a basic example (without any network connection)\n * an example establishing a mutual MQTTS connection with Orange Live Objects\n * an example establishing a mutual MQTTS connection with Azure IoT Hub\n * an example establishing a mutual MQTTS connection with AWS IoT Core\n   (through just-in-time registration)\n * an example establishing a mutual MQTTS connection with Orange Live Objects\n   or AWS IoT Core\n\nThe LiveObjects Arduino MKR NB 1500 sample has been tested over Ethernet (using\nan Ethernet shield and the SIM card for IoT SAFE only) as well as over\ncellular connectivity.\n\nThe Azure IoT Hub and AWS IoT Core samples have been tested over cellular\nconnectivity.\n\n#### Arduino with [Orange Live Booster (Sequans Monarch GMS01Q)](https://blog.liveobjects.orange-business.com/gms01q-stmod)\n\nTo manage the Sequans Monarch GMS01Q modem, this library uses\n[TinyGSM](https://github.com/vshymanskyy/TinyGSM) which is licensed under\nLGPL-3.0.\n\nTwo examples are available:\n * an example establishing a mutual MQTTS connection with Orange Live Objects\n * an example establishing a mutual MQTTS connection with Orange Live Objects\n   or AWS IoT Core\n\nThe Arduino with Orange Live Booster sample has been tested over cellular\nconnectivity. This sample also depends on\n[Time](https://github.com/PaulStoffregen/Time) which is licensed under\nLGPL-2.1.\n\nThis sample has been tested with two different Arduinos:\n * STM32 Nucleo-WB55 running\n[Arduino_Core_STM32](https://github.com/stm32duino/Arduino_Core_STM32)\n * [Orange LoRa Explorer](https://market.datavenue.orange-business.com/sodaq-orange-lorar-explorer-8719324913065-868-mhz.html)\n\n### Linux and PCSC lite\n\nIf there is no modem, this library can forward the IoT SAFE commands from a\nLinux-base system to the applet if the (e)SIM is inserted in a smart card\nreader. In this case, the library depends on\n[PCSC lite](https://pcsclite.apdu.fr/) which is mainly licensed under\nBSD-3-Clause: https://github.com/LudovicRousseau/PCSC/blob/master/COPYING.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FOrange-OpenSource%2FIoT-SAFE-APDU-library","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FOrange-OpenSource%2FIoT-SAFE-APDU-library","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FOrange-OpenSource%2FIoT-SAFE-APDU-library/lists"}