
स्मार्ट कार्ड (संपर्कों वाले ICC-आधारित कार्ड) बनाने के लिए एक फ्रेमवर्क।
प्रोजेक्ट को रिकर्सिवली क्लोन करना आवश्यक है। केवल ZIP डाउनलोड करना पर्याप्त नहीं है।
Software ICC (या swICC) एक फ्रेमवर्क है जो अधिकांश प्रकार के स्मार्ट कार्ड विकसित करने का आसान और लचीला तरीका प्रदान करता है। यह किसी भी swICC-आधारित कार्ड को PC/SC इंटरफ़ेस के माध्यम से PC से जोड़ने की अनुमति देता है (swICC PC/SC रीडर का उपयोग करके), जो स्मार्ट कार्ड को PC से जोड़ने के लिए वास्तविक मानक है।
./test/data/disk में मौजूद हैं। FS को .swiccfs फ़ाइल के रूप में डिस्क पर सहेजा जा सकता है, और वापस कार्ड में लोड किया जा सकता है।make, cmake, और gcc चाहिए। कोई अतिरिक्त रनटाइम निर्भरता नहीं।sudo apt-get install make cmake gccgit clone --recurse-submodules [email protected]:tomasz-lisowski/swicc.gitcd swiccmake main-dbg (बिल्डिंग के बारे में अधिक जानकारी के लिए ./doc/install.md देखें)।./build/libswicc.a से लिंक करें (जैसे -Llib/swicc/build -lswicc) और include पथ में ./include जोड़ें (जैसे -Ilib/swicc/include)।#include <swicc/swicc.h> जोड़ें।न्यूनतम स्मार्ट कार्ड बनाने के लिए निम्नलिखित करें:
./build/libswicc.a मौजूद है।mkdir cardcd card./card डायरेक्टरी के अंदर main.c फ़ाइल में निम्नलिखित कोड कॉपी करें।#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <swicc/swicc.h>
swicc_net_client_st client_ctx = {0U};
static void sig_exit_handler(__attribute__((unused)) int signum)
{
fprintf(stderr, "Shutting down...\n");
swicc_net_client_destroy(&client_ctx);
fflush(NULL);
exit(0);
}
int32_t main(int32_t const argc, char const *const argv[const argc])
{
swicc_disk_st disk = {0U};
swicc_ret_et ret = swicc_diskjs_disk_create(&disk, "../test/data/disk/006-in.json");
if (ret == SWICC_RET_SUCCESS)
{
swicc_st swicc_ctx = {0U};
ret = swicc_fs_disk_mount(&swicc_ctx, &disk);
if (ret == SWICC_RET_SUCCESS)
{
ret = swicc_net_client_sig_register(sig_exit_handler);
if (ret == SWICC_RET_SUCCESS)
{
ret =
swicc_net_client_create(&client_ctx, "127.0.0.1", "37324");
if (ret == SWICC_RET_SUCCESS)
{
ret = swicc_net_client(&swicc_ctx, &client_ctx);
if (ret != SWICC_RET_SUCCESS)
{
fprintf(stderr, "Failed to run network client.\n");
}
swicc_net_client_destroy(&client_ctx);
}
else
{
fprintf(stderr, "Failed to create a client.\n");
}
}
else
{
fprintf(stderr, "Failed to register signal handler.\n");
}
swicc_terminate(&swicc_ctx);
}
else
{
fprintf(stderr, "Failed to mount disk.\n");
swicc_disk_unload(&disk);
}
}
else
{
fprintf(stderr, "Failed to create disk.\n");
}
return 0;
}
gcc main.c -I../include -L../build -lswicc -o card.elf चलाएँ।./card.elf जो कार्ड को कार्ड रीडर से जोड़ देगा।pcsc_scan (pcsc-tools पैकेज का हिस्सा) कार्ड के कुछ विवरण दिखाएगा।कस्टम कार्ड लागू करने के लिए, नेटवर्क क्लाइंट चलाने से पहले swicc_apduh_pro_register के माध्यम से एक APDU demuxer पंजीकृत करना आवश्यक है, साथ ही APDU हैंडलर भी जो प्राप्त कमांड के आधार पर demuxer द्वारा कॉल किए जाते हैं। फ्रेमवर्क का अधिक उन्नत तरीके से उपयोग करने का एक अच्छा उदाहरण swSIM प्रोजेक्ट है, जो swICC का उपयोग करके एक SIM कार्ड लागू करता है।