{"id":27969126,"url":"https://github.com/xoryouyou/docker-javacard","last_synced_at":"2025-08-05T23:09:38.601Z","repository":{"id":74148014,"uuid":"500373874","full_name":"xoryouyou/docker-javacard","owner":"xoryouyou","description":"Javacard development in docker. Batteries included!","archived":false,"fork":false,"pushed_at":"2024-09-09T19:28:47.000Z","size":8059,"stargazers_count":8,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-05-07T21:08:37.214Z","etag":null,"topics":["cicd","docker","docker-compose","globalplatform","javacard","pcsc"],"latest_commit_sha":null,"homepage":"","language":"Dockerfile","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/xoryouyou.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":"2022-06-06T09:41:29.000Z","updated_at":"2025-04-24T12:09:52.000Z","dependencies_parsed_at":null,"dependency_job_id":"2275d645-1a80-4ec8-9913-ae8a149e286b","html_url":"https://github.com/xoryouyou/docker-javacard","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/xoryouyou/docker-javacard","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xoryouyou%2Fdocker-javacard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xoryouyou%2Fdocker-javacard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xoryouyou%2Fdocker-javacard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xoryouyou%2Fdocker-javacard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xoryouyou","download_url":"https://codeload.github.com/xoryouyou/docker-javacard/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xoryouyou%2Fdocker-javacard/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268987471,"owners_count":24340667,"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","status":"online","status_checked_at":"2025-08-05T02:00:12.334Z","response_time":2576,"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":["cicd","docker","docker-compose","globalplatform","javacard","pcsc"],"created_at":"2025-05-07T21:08:34.355Z","updated_at":"2025-08-05T23:09:38.546Z","avatar_url":"https://github.com/xoryouyou.png","language":"Dockerfile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# docker + javacard = why ?!\n\nWhy you ask? Well I don't know either.\n\nBut the main reasons are I needed it and:\n* I don't want to taint my host system with JCDKs from the early 2000s\n* I don't want to fiddle around with a multitude of system environment variables to build a cap file\n* I don't want to maintain all this for Linux and Windows hosts\n* You get the idea... ;)\n\n\n\nThis repoository takes all the dependencies needed to build a `HelloWorld` applet\nwith the `ant` or the `gradle` toolchain.\n\nIt's meant for local development by mapping the applets sourcecode into the\nrunning containers but is also capable to run in a typical CI/CD pipeline.\n\nJust map the applet into `/applet` and run your tests.\n\n\n# Overview\n\n![docker container overview](.github/docker-overview.png)\n\n\n\n# the `docker compose` way\n\nThis repo is build around `docker compose` to easily handle multiple docker images and build files sharing dependencies.\n\nTo start it jsut run start any service defined in `docker-compose.yml` and \nthe appropriate image should automatically be build.\n\n## ant\n\nStart container:\n* `docker compose run --rm -ti javacard-ant`\n\nRun tests:\n* `ant test`\n\n```\njavacard@4618e2d2a546:/applet$ ant test\nBuildfile: /applet/build.xml\n...\nBUILD SUCCESSFUL\nTotal time: 1 second\n```\nBuild applet:\n* `ant applet`\n\n```\njavacard@d7825490cfe0:/applet$ ant applet\nBuildfile: /applet/build.xml\n      [cap] CAP saved to /applet/build/helloworld.cap\n...\nBUILD SUCCESSFUL\nTotal time: 1 second\n```\n\n## gradle \n\nStart container:\n* `docker compose run --rm -ti javacard-gradle`\n\nRun tests:\n* `gradle test`\n\n```\ngradle@8aa816b693a5:/applet/helloworld$ gradle test\n...\nBUILD SUCCESSFUL in 2s\n3 actionable tasks: 2 executed\n```\nBuild applet:\n* `gradle buildJavaCard`\n\n```\ngradle@3e496b0ab649:/applet$ gradle buildjavacard\n...\nBUILD SUCCESSFUL in 3s\n1 actionable task: 1 executed\n```\n\n\n# the `docker` way\n\nWhen you don't want to use fancy `docker-compose.yml` and need barebones docker containers just use the steps below.\n\n## build\nIf you want you can build the images by hand via\n\nFor ant:\n* `docker build -t javacard-ant -f docker/ant.Dockerfile .`\n\nFor gradle:\n* `docker build -t javacard-gradle -f docker/gradle.Dockerfile .`\n\n## run\n\nFor example (keep in mind to map your volumes manually now)\n* `docker run --rm -ti $PWD/examples/ant/helloworld:/applet javacard`\n\n\n# USB image to install applets to physical card\n\nTo finally install the build cap file on a physical card \nyou can use the `javacard-usb` docker image.\n\nIn the `docker-compose.yml` maps the hosts systems `/dev/bus/usb`\ninto the container so the cardreader can be accessed.\n\n\n\nList cardreaders with `pcsc_scan`\n```\nroot@55557e33ca3f:/applet# pcsc_scan \nUsing reader plug'n play mechanism\nScanning present readers...\n0: Alcor Micro AU9540 00 00\n \nSun Jun  5 18:14:09 2022\n Reader 0: Alcor Micro AU9540 00 00\n  Event number: 1\n  Card state: Card removed, \n```\n\n\nQuery the card with `globalplatformpro`\n```\nroot@a14755c4d73f:/javacard# java -jar gp.jar -list\nWarning: no keys given, using default test key 404142434445464748494A4B4C4D4E4F\nISD: A000000151000000 (OP_READY)\n...\n```\n\n# Sources\n\n* Oracle Javacard SDKs  https://github.com/martinpaljak/oracle_javacard_sdks\n* GlobalPlatformPro https://github.com/martinpaljak/GlobalPlatformPro\n* Ant Javacard https://github.com/martinpaljak/ant-javacard\n* Gradle Template https://github.com/crocs-muni/javacard-gradle-template-edu\n* jcardsim https://github.com/licel/jcardsim\n* Inspiration https://github.com/MrSuicideParrot/Make-JavaCards-Great-Again\n* HelloWorld Applet https://github.com/devrandom/javacard-helloworld\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxoryouyou%2Fdocker-javacard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxoryouyou%2Fdocker-javacard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxoryouyou%2Fdocker-javacard/lists"}