{"id":15946280,"url":"https://github.com/mike10004/crxtool","last_synced_at":"2025-10-19T06:30:43.042Z","repository":{"id":26633622,"uuid":"109396729","full_name":"mike10004/crxtool","owner":"mike10004","description":"Tool for packing and unpacking Chrome extension .crx files","archived":false,"fork":false,"pushed_at":"2022-10-04T23:46:37.000Z","size":289,"stargazers_count":4,"open_issues_count":8,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-29T08:11:17.642Z","etag":null,"topics":["chrome-extension","java","library","metadata"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mike10004.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2017-11-03T13:08:01.000Z","updated_at":"2023-10-19T07:27:21.000Z","dependencies_parsed_at":"2022-07-27T08:32:40.741Z","dependency_job_id":null,"html_url":"https://github.com/mike10004/crxtool","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mike10004%2Fcrxtool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mike10004%2Fcrxtool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mike10004%2Fcrxtool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mike10004%2Fcrxtool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mike10004","download_url":"https://codeload.github.com/mike10004/crxtool/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":237073137,"owners_count":19251036,"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","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":["chrome-extension","java","library","metadata"],"created_at":"2024-10-07T09:20:59.754Z","updated_at":"2025-10-19T06:30:37.633Z","avatar_url":"https://github.com/mike10004.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Travis build status](https://img.shields.io/travis/mike10004/crxtool.svg)](https://travis-ci.org/mike10004/crxtool)\n[![AppVeyor build status](https://ci.appveyor.com/api/projects/status/bb3s40548ffj3uf5?svg=true)](https://ci.appveyor.com/project/mike10004/crxtool)\n[![Maven Central](https://img.shields.io/maven-central/v/com.github.mike10004/crxtool.svg)](https://repo1.maven.org/maven2/com/github/mike10004/crxtool/)\n\n# crxtool\n\nLibrary for packing and unpacking Chrome extension `.crx` files.\n\n## Core Library\n\n### Maven Coordinates\n\n    \u003cdependency\u003e\n        \u003cgroupId\u003ecom.github.mike10004\u003c/groupId\u003e\n        \u003cartifactId\u003ecrxtool-core\u003c/artifactId\u003e\n        \u003cversion\u003e0.15\u003c/version\u003e\n    \u003c/dependency\u003e\n\n### Usage\n\n#### Unpacking\n\n    try (InputStream in = new FileInputStream(\"my_extension.crx\") {\n        CrxMetadata metadata = CrxParser.getDefault().parseMetadata(in);\n        System.out.println(\"id = \" + metadata.getId());\n        // handle remainder of stream as a zip archive\n        try (ZipInputStream zin = new ZipInputStream(in)) {\n            // ...\n        }\n    }\n\n#### Packing\n\n    Path extensionDir = new File(\"manifest-parent-dir\").toPath();\n    java.security.KeyPairGenerator keyGen = java.security.KeyPairGenerator.getInstance(\"RSA\");\n    java.security.SecureRandom random = new java.security.SecureRandom();\n    keyGen.initialize(1024, random);\n    java.security.KeyPair keyPair = keyGen.generateKeyPair();\n    try (OutputStream out = new FileOutputStream(\"new_extension.crx\")) {\n        CrxPacker.getDefault().packExtension(extensionDir, keyPair, out);\n    }\n\n## Maven Plugin\n\n### Maven Coordinates\n\n    \u003cplugin\u003e\n        \u003cgroupId\u003ecom.github.mike10004\u003c/groupId\u003e\n        \u003cartifactId\u003ecrxtool-maven-plugin\u003c/artifactId\u003e\n        \u003cversion\u003e0.15\u003c/version\u003e\n    \u003c/plugin\u003e\n\n### Usage\n\nPlace extension source files in `src/main/extension`.\n\n    \u003cbuild\u003e\n        \u003cplugins\u003e\n            \u003cplugin\u003e\n                \u003cgroupId\u003ecom.github.mike10004\u003c/groupId\u003e\n                \u003cartifactId\u003ecrxtool-maven-plugin\u003c/artifactId\u003e\n                \u003cversion\u003e0.15\u003c/version\u003e\n                \u003cexecutions\u003e\n                    \u003cexecution\u003e\n                        \u003cid\u003epack\u003c/id\u003e\n                        \u003cgoals\u003e\n                            \u003cgoal\u003epack-extension\u003c/goal\u003e\n                        \u003c/goals\u003e\n                    \u003c/execution\u003e\n                \u003c/executions\u003e\n            \u003c/plugin\u003e\n            \u003cplugin\u003e\n                \u003cgroupId\u003eorg.codehaus.mojo\u003c/groupId\u003e\n                \u003cartifactId\u003ebuild-helper-maven-plugin\u003c/artifactId\u003e\n                \u003cversion\u003e3.0.0\u003c/version\u003e\n                \u003cexecutions\u003e\n                    \u003cexecution\u003e\n                        \u003cid\u003eattach-artifact\u003c/id\u003e\n                        \u003cgoals\u003e\n                            \u003cgoal\u003eattach-artifact\u003c/goal\u003e\n                        \u003c/goals\u003e\n                        \u003cconfiguration\u003e\n                            \u003cartifacts\u003e\n                                \u003cartifact\u003e\n                                    \u003cfile\u003e${project.build.directory}/${project.artifactId}-${project.version}.crx\u003c/file\u003e\n                                    \u003ctype\u003ecrx\u003c/type\u003e\n                                \u003c/artifact\u003e\n                            \u003c/artifacts\u003e\n                        \u003c/configuration\u003e\n                    \u003c/execution\u003e\n                \u003c/executions\u003e\n            \u003c/plugin\u003e\n        \u003c/plugins\u003e\n    \u003c/build\u003e\n\n## Credits\n\nThe extension ID construction is probably from [this Stack Overflow answer](https://stackoverflow.com/a/2050916/2657036). \nThe make-page-red example extension file in the test resources is from [developer.chrome.com](https://developer.chrome.com/extensions/samples).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmike10004%2Fcrxtool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmike10004%2Fcrxtool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmike10004%2Fcrxtool/lists"}