{"id":20841151,"url":"https://github.com/iotexproject/ioconnect","last_synced_at":"2026-03-04T18:31:32.953Z","repository":{"id":209031111,"uuid":"722824672","full_name":"iotexproject/ioConnect","owner":"iotexproject","description":"An embedded SDK for abstracting firmware development for DePIN hardware, providing examples of device registration and DID-based encrypted communication using the ioID module.","archived":false,"fork":false,"pushed_at":"2025-02-10T14:33:45.000Z","size":3298,"stargazers_count":7,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-05-08T22:06:55.421Z","etag":null,"topics":["depin","did","esp32","iot","raspberri-pi","sdk"],"latest_commit_sha":null,"homepage":"https://docs.iotex.io/depin-infra-modules-dim/ioconnect-hardware-sdk","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/iotexproject.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2023-11-24T03:26:17.000Z","updated_at":"2025-03-25T04:58:56.000Z","dependencies_parsed_at":"2024-04-22T15:26:59.693Z","dependency_job_id":"bdf1f2a8-8dcf-4506-8dca-779f64290821","html_url":"https://github.com/iotexproject/ioConnect","commit_stats":null,"previous_names":["machinefi/deviceconnect-sdk","machinefi/ioconnect-sdk","iotexproject/ioconnect"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/iotexproject/ioConnect","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iotexproject%2FioConnect","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iotexproject%2FioConnect/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iotexproject%2FioConnect/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iotexproject%2FioConnect/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iotexproject","download_url":"https://codeload.github.com/iotexproject/ioConnect/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iotexproject%2FioConnect/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30089329,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-04T18:31:08.343Z","status":"ssl_error","status_checked_at":"2026-03-04T18:31:07.708Z","response_time":59,"last_error":"SSL_read: 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":["depin","did","esp32","iot","raspberri-pi","sdk"],"created_at":"2024-11-18T01:19:00.577Z","updated_at":"2026-03-04T18:31:32.926Z","avatar_url":"https://github.com/iotexproject.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ioConnect\n\nAn embedded SDK for connecting smart devices to Web3\n\n![SDK_Design_Overall](./doc/image/SDK_Design_Overall.png)\n\nioConnect SDK is based on the previously developed PSACrypto SDK and adds implementations of protocols such as DID, DIDDoc, JOSE, and DIDComm on top of ARM PSA functionality. It is implemented in C language and enhances the cross-platform compatibility of the SDK.\n\nThe ioConnect SDK is primarily divided into two parts: the Core Layer and the Platform Adaptation Layer (PAL). The Core Layer provides functionality independent of the hardware platform, including implementations of PSA, DID, JOSE, and other protocols. The PAL layer optimizes the code according to the specific characteristics of different hardware platforms. For example, for the ESP platform, the SDK relies on its event messaging mechanism for code optimization, while for the Arduino platform, it implements communication functionality by inheriting the base class.\n\n![ioConnect_repo](./doc/image/ioConnect_repo.png)\n\nIn the file structure of the Core Layer:\n\nThe `psa` and `crypto` folders primarily implement the Platform Security Architecture (PSA), which allows developers to use standardized and unified APIs to handle cryptography-related functions without concerning themselves with specific code implementation.\n\nThe `dids` folder mainly implements the functionality of the DID, DIDComm, and Verifiable Credential protocols, making it convenient for developers to handle operations related to these protocols. For example, developers can easily generate DID and DIDDoc information for their devices by calling methods provided by the DID component. They can also communicate with other devices using the DIDComm component.\n\nThe `jose` folder mainly implements the JOSE protocol suite, including JWK, JWS, JWE, and others.\n\n![ioConnect_repo_2](./doc/image/ioConnect_repo_2.png)\n\nIn the file structure of the Platform Adaptation Layer (PAL), the SDK mainly implements methods for connecting to IoTeX decentralized network nodes. For example, the `DeviceRegister` component provides a method for terminal devices to register with the IoTeX Wallet, and the `Sprout` component allows easy communication with Sprout.\n\n![ioConnect_repo_3](./doc/image/ioConnect_repo_3.png)\n\n\n\n## Build\n\n### \tESP32 :\n\n**[How to Create a Project on the ESP32 Platform](./doc/How_to_Create_a_Project_on_the_ESP32_Platform.md)**\t\t\n\n### \tLinux:\n\n**[How to Create a Project on the Linux](./doc/How_to_Create_a_Project_on_the_Linux.md)**\n\n### \tWindows:\n\n**[How to Create a Project on the Windows](./doc/How_to_Create_a_Project_on_the_Windows.md)**\n\n\n## Core Usage\n\n### \tHow to Generate a DID for a device\n\nPlease view the documentation : **[How to Generate a DID for a device Using ioConnect SDK](./doc/How_to_Generate_a_DID_for_a_device_Using_ioConnectSDK.md)**\n\n\n### \tHow to Generate a DIDDoc\n\nPlease view the documentation : **[How to Generate a DID Document Using ioConnect SDK](./doc/How_to_Generate_a_DID_Document_Using_ioConnectSDK.md)**\n\n### \tHow to Generate a Verifiable Credentials\n\nPlease view the documentation : **[How to Generate a Verifiable Credentials Using ioConnect SDK](./doc/How_to_Generate_a_Verifiable_Credentials_Using_ioConnectSDK.md)**\n\n### \tHow to Generate a JWS\n\nPlease view the documentation : **[How_to generate_a_JWS](./doc/How_to_use_the_ioConnectSDK_to_generate_a_JWS_Serialization.md)**\n\n### \tHow to Generate a JWE\n\nPlease view the documentation : **[How_to generate_a_JWE](./doc/How_to_use_the_ioConnectSDK_to_generate_a_JWE_Serialization.md)**\n\n### \tHow to Generate a JWT\n\nPlease view the documentation : **[How_to generate_a_JWT](./doc/How_to_use_the_ioConnectSDK_to_generate_a_JWT_Serialization.md)**\n\n### \tHow to Generate a DIDComm\n\nPlease view the documentation : **[How_to generate_a_DIDComm](./doc/How_to_use_the_ioConnectSDK_to_generate_a_DIDComm.md)**\n\n\n\n## PAL Usage\n\n### \tHow to Register a Device to [ioid](https://wallet.iotex.io/ioid)\n\nPlease view the documentation : **[How to Register a Device](./doc/Device_Registration.md)**\n\n### \tHow to Communicate with Sprout\n\nPlease view the documentation : **[How to Communicate with Sprout](./doc/Communicating_with_Sprout.md)**\n\n\n\n## Example\n\nWe provide some example projects:\n\n### ESP32: **[ESP32 Examples](./example/esp32/)**\n\n### Linux: **[Linux Examples](./example/linux/)**\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiotexproject%2Fioconnect","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiotexproject%2Fioconnect","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiotexproject%2Fioconnect/lists"}