{
  "result": {
    "0.2.2": {
      "name": "certipy",
      "version": "0.2.2",
      "metadata_version": "2.4",
      "summary": "Utility to create and sign CAs and certificates",
      "home_page": "",
      "author": "",
      "author_email": "Thomas Mendoza <mendoza33@llnl.gov>",
      "maintainer": "",
      "maintainer_email": "",
      "license": "BSD 3-Clause License  Copyright (c) 2018, Lawrence Livermore National Security, LLC All rights reserved.  Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:  * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.  * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.  * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ",
      "description": "# Certipy\n\nA simple python tool for creating certificate authorities and certificates on\nthe fly.\n\n## Introduction\n\nCertipy was made to simplify the certificate creation process. To that end,\nCertipy exposes methods for creating and managing certificate authorities,\ncertificates, signing and building trust bundles. Behind the scenes Certipy:\n\n* Manages records of all certificates it creates\n  * External certs can be imported and managed by Certipy\n  * Maintains signing hierarchy\n* Persists certificates to files with appropriate permissions\n\n## Usage\n\n### Command line\n\nCreating a certificate authority:\n\nCertipy defaults to writing certs and certipy.json into a folder called `out`\nin your current directory.\n\n```\n$ certipy foo\nFILES {'ca': '', 'cert': 'out/foo/foo.crt', 'key': 'out/foo/foo.key'}\nIS_CA True\nSERIAL 0\nSIGNEES None\nPARENT_CA\n```\n\nCreating and signing a key-cert pair:\n\n```\n$ certipy bar --ca-name foo\nFILES {'ca': 'out/foo/foo.crt', 'key': 'out/bar/bar.key', 'cert': 'out/bar/bar.crt'}\nIS_CA False\nSERIAL 0\nSIGNEES None\nPARENT_CA foo\n```\n\nRemoval:\n\n```\ncertipy --rm bar\nDeleted:\nFILES {'ca': 'out/foo/foo.crt', 'key': 'out/bar/bar.key', 'cert': 'out/bar/bar.crt'}\nIS_CA False\nSERIAL 0\nSIGNEES None\nPARENT_CA foo\n```\n\n### Code\n\nCreating a certificate authority:\n\n```\nfrom certipy import Certipy\n\ncertipy = Certipy(store_dir='/tmp')\ncertipy.create_ca('foo')\nrecord = certipy.store.get_record('foo')\n```\n\nCreating and signing a key-cert pair:\n\n```\ncertipy.create_signed_pair('bar', 'foo')\nrecord = certipy.store.get_record('bar')\n```\n\nCreating trust:\n\n```\ncertipy.create_ca_bundle('ca-bundle.crt')\n\n# or to trust specific certs only:\ncertipy.create_ca_bundle_for_names('ca-bundle.crt', ['bar'])\n```\n\nRemoval:\n\n```\nrecord = certipy.remove_files('bar')\n```\n\nRecords are dicts with the following structure:\n\n```\n{\n  'serial': 0,\n  'is_ca': true,\n  'parent_ca': 'ca_name',\n  'signees': {\n    'signee_name': 1\n  },\n  'files': {\n    'key': 'path/to/key.key',\n    'cert': 'path/to/cert.crt',\n    'ca': 'path/to/ca.crt',\n  }\n}\n```\n\nThe `signees` will be empty for non-CA certificates. The `signees` field\nis stored as a python `Counter`. These relationships are used to build trust\nbundles.\n\nInformation in Certipy is generally passed around as records which point to\nactual files. For most `_record` methods, there are generally equivalent\n`_file` methods that operate on files themselves. The former will only affect\nrecords in Certipy's store and the latter will affect both (something happens\nto the file, the record for it should change, too).\n\n### Release\n\nCertipy is released under BSD license. For more details see the LICENSE file.\n\nLLNL-CODE-754897\n",
      "keywords": "pki,ssl,tls,certificates",
      "platform": [],
      "classifiers": [
        "Development Status :: 4 - Beta",
        "Intended Audience :: Developers",
        "Topic :: Utilities",
        "License :: OSI Approved :: BSD License",
        "Programming Language :: Python :: 3",
        "Programming Language :: Python :: 3.7",
        "Programming Language :: Python :: 3.8",
        "Programming Language :: Python :: 3.9",
        "Programming Language :: Python :: 3.10",
        "Programming Language :: Python :: 3.11",
        "Programming Language :: Python :: 3.12",
        "Environment :: MetaData :: IBM Python Ecosystem"
      ],
      "download_url": "",
      "supported_platform": [],
      "comment": "",
      "provides": [],
      "requires": [],
      "obsoletes": [],
      "project_urls": [
        "Homepage, https://github.com/LLNL/certipy"
      ],
      "provides_dist": [],
      "obsoletes_dist": [],
      "requires_dist": [
        "cryptography",
        "pytest; extra == \"dev\"",
        "flask; extra == \"dev\"",
        "build; extra == \"dev\"",
        "pre-commit; extra == \"dev\"",
        "ruff; extra == \"dev\"",
        "bump-my-version; extra == \"dev\""
      ],
      "requires_external": [],
      "requires_python": ">=3.7",
      "description_content_type": "text/markdown",
      "provides_extras": [
        "dev"
      ],
      "dynamic": [
        "license-file"
      ],
      "license_expression": "",
      "license_file": [
        "LICENSE",
        "NOTICE"
      ],
      "+links": [
        {
          "rel": "releasefile",
          "hash_spec": "sha256=0b80810704a84179218f4af1081f21a7fc55982b319e4f835bfffb60af371194",
          "hashes": {
            "sha256": "0b80810704a84179218f4af1081f21a7fc55982b319e4f835bfffb60af371194"
          },
          "href": "https://wheels.developerfirst.ibm.com/ppc64le/linux/+f/0b8/0810704a84179/certipy-0.2.2-py3-none-any.whl",
          "log": [
            {
              "what": "upload",
              "who": "ppc64le",
              "when": [
                2026,
                7,
                27,
                12,
                26,
                9
              ],
              "dst": "ppc64le/linux"
            }
          ]
        }
      ]
    },
    "0.2.1": {
      "name": "certipy",
      "version": "0.2.1",
      "metadata_version": "2.1",
      "summary": "Utility to create and sign CAs and certificates",
      "home_page": "",
      "author": "",
      "author_email": "Thomas Mendoza <mendoza33@llnl.gov>",
      "maintainer": "",
      "maintainer_email": "",
      "license": "BSD 3-Clause License  Copyright (c) 2018, Lawrence Livermore National Security, LLC All rights reserved.  Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:  * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.  * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.  * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ",
      "description": "# Certipy\n\nA simple python tool for creating certificate authorities and certificates on\nthe fly.\n\n## Introduction\n\nCertipy was made to simplify the certificate creation process. To that end,\nCertipy exposes methods for creating and managing certificate authorities,\ncertificates, signing and building trust bundles. Behind the scenes Certipy:\n\n* Manages records of all certificates it creates\n  * External certs can be imported and managed by Certipy\n  * Maintains signing hierarchy\n* Persists certificates to files with appropriate permissions\n\n## Usage\n\n### Command line\n\nCreating a certificate authority:\n\nCertipy defaults to writing certs and certipy.json into a folder called `out`\nin your current directory.\n\n```\n$ certipy foo\nFILES {'ca': '', 'cert': 'out/foo/foo.crt', 'key': 'out/foo/foo.key'}\nIS_CA True\nSERIAL 0\nSIGNEES None\nPARENT_CA\n```\n\nCreating and signing a key-cert pair:\n\n```\n$ certipy bar --ca-name foo\nFILES {'ca': 'out/foo/foo.crt', 'key': 'out/bar/bar.key', 'cert': 'out/bar/bar.crt'}\nIS_CA False\nSERIAL 0\nSIGNEES None\nPARENT_CA foo\n```\n\nRemoval:\n\n```\ncertipy --rm bar\nDeleted:\nFILES {'ca': 'out/foo/foo.crt', 'key': 'out/bar/bar.key', 'cert': 'out/bar/bar.crt'}\nIS_CA False\nSERIAL 0\nSIGNEES None\nPARENT_CA foo\n```\n\n### Code\n\nCreating a certificate authority:\n\n```\nfrom certipy import Certipy\n\ncertipy = Certipy(store_dir='/tmp')\ncertipy.create_ca('foo')\nrecord = certipy.store.get_record('foo')\n```\n\nCreating and signing a key-cert pair:\n\n```\ncertipy.create_signed_pair('bar', 'foo')\nrecord = certipy.store.get_record('bar')\n```\n\nCreating trust:\n\n```\ncertipy.create_ca_bundle('ca-bundle.crt')\n\n# or to trust specific certs only:\ncertipy.create_ca_bundle_for_names('ca-bundle.crt', ['bar'])\n```\n\nRemoval:\n\n```\nrecord = certipy.remove_files('bar')\n```\n\nRecords are dicts with the following structure:\n\n```\n{\n  'serial': 0,\n  'is_ca': true,\n  'parent_ca': 'ca_name',\n  'signees': {\n    'signee_name': 1\n  },\n  'files': {\n    'key': 'path/to/key.key',\n    'cert': 'path/to/cert.crt',\n    'ca': 'path/to/ca.crt',\n  }\n}\n```\n\nThe `signees` will be empty for non-CA certificates. The `signees` field\nis stored as a python `Counter`. These relationships are used to build trust\nbundles.\n\nInformation in Certipy is generally passed around as records which point to\nactual files. For most `_record` methods, there are generally equivalent\n`_file` methods that operate on files themselves. The former will only affect\nrecords in Certipy's store and the latter will affect both (something happens\nto the file, the record for it should change, too).\n\n### Release\n\nCertipy is released under BSD license. For more details see the LICENSE file.\n\nLLNL-CODE-754897\n",
      "keywords": "pki,ssl,tls,certificates",
      "platform": [],
      "classifiers": [
        "Development Status :: 4 - Beta",
        "Intended Audience :: Developers",
        "Topic :: Utilities",
        "License :: OSI Approved :: BSD License",
        "Programming Language :: Python :: 3",
        "Programming Language :: Python :: 3.7",
        "Programming Language :: Python :: 3.8",
        "Programming Language :: Python :: 3.9",
        "Programming Language :: Python :: 3.10",
        "Programming Language :: Python :: 3.11",
        "Programming Language :: Python :: 3.12",
        "Environment :: MetaData :: IBM Python Ecosystem"
      ],
      "download_url": "",
      "supported_platform": [],
      "comment": "",
      "provides": [],
      "requires": [],
      "obsoletes": [],
      "project_urls": [
        "Homepage, https://github.com/LLNL/certipy"
      ],
      "provides_dist": [],
      "obsoletes_dist": [],
      "requires_dist": [
        "cryptography",
        "pytest; extra == \"dev\"",
        "flask; extra == \"dev\"",
        "build; extra == \"dev\"",
        "requests; extra == \"dev\"",
        "pre-commit; extra == \"dev\"",
        "ruff; extra == \"dev\"",
        "bump-my-version; extra == \"dev\""
      ],
      "requires_external": [],
      "requires_python": ">=3.7",
      "description_content_type": "text/markdown",
      "provides_extras": [
        "dev"
      ],
      "dynamic": [],
      "license_expression": "",
      "license_file": [],
      "+links": [
        {
          "rel": "releasefile",
          "hash_spec": "sha256=d6739cee2fa2d5c996d3a655fdb0f0bfee454a4621c6a00a707a3265ea158609",
          "hashes": {
            "sha256": "d6739cee2fa2d5c996d3a655fdb0f0bfee454a4621c6a00a707a3265ea158609"
          },
          "href": "https://wheels.developerfirst.ibm.com/ppc64le/linux/+f/d67/39cee2fa2d5c9/certipy-0.2.1-py3-none-any.whl",
          "log": [
            {
              "what": "upload",
              "who": "ppc64le",
              "when": [
                2026,
                7,
                27,
                12,
                26,
                9
              ],
              "dst": "ppc64le/linux"
            }
          ]
        }
      ]
    },
    "0.2.2+ppc64le1": {
      "name": "certipy",
      "version": "0.2.2+ppc64le1",
      "metadata_version": "2.4",
      "summary": "Utility to create and sign CAs and certificates",
      "home_page": "",
      "author": "",
      "author_email": "Thomas Mendoza <mendoza33@llnl.gov>",
      "maintainer": "",
      "maintainer_email": "",
      "license": "BSD 3-Clause License  Copyright (c) 2018, Lawrence Livermore National Security, LLC All rights reserved.  Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:  * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.  * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.  * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ",
      "description": "# Certipy\n\nA simple python tool for creating certificate authorities and certificates on\nthe fly.\n\n## Introduction\n\nCertipy was made to simplify the certificate creation process. To that end,\nCertipy exposes methods for creating and managing certificate authorities,\ncertificates, signing and building trust bundles. Behind the scenes Certipy:\n\n* Manages records of all certificates it creates\n  * External certs can be imported and managed by Certipy\n  * Maintains signing hierarchy\n* Persists certificates to files with appropriate permissions\n\n## Usage\n\n### Command line\n\nCreating a certificate authority:\n\nCertipy defaults to writing certs and certipy.json into a folder called `out`\nin your current directory.\n\n```\n$ certipy foo\nFILES {'ca': '', 'cert': 'out/foo/foo.crt', 'key': 'out/foo/foo.key'}\nIS_CA True\nSERIAL 0\nSIGNEES None\nPARENT_CA\n```\n\nCreating and signing a key-cert pair:\n\n```\n$ certipy bar --ca-name foo\nFILES {'ca': 'out/foo/foo.crt', 'key': 'out/bar/bar.key', 'cert': 'out/bar/bar.crt'}\nIS_CA False\nSERIAL 0\nSIGNEES None\nPARENT_CA foo\n```\n\nRemoval:\n\n```\ncertipy --rm bar\nDeleted:\nFILES {'ca': 'out/foo/foo.crt', 'key': 'out/bar/bar.key', 'cert': 'out/bar/bar.crt'}\nIS_CA False\nSERIAL 0\nSIGNEES None\nPARENT_CA foo\n```\n\n### Code\n\nCreating a certificate authority:\n\n```\nfrom certipy import Certipy\n\ncertipy = Certipy(store_dir='/tmp')\ncertipy.create_ca('foo')\nrecord = certipy.store.get_record('foo')\n```\n\nCreating and signing a key-cert pair:\n\n```\ncertipy.create_signed_pair('bar', 'foo')\nrecord = certipy.store.get_record('bar')\n```\n\nCreating trust:\n\n```\ncertipy.create_ca_bundle('ca-bundle.crt')\n\n# or to trust specific certs only:\ncertipy.create_ca_bundle_for_names('ca-bundle.crt', ['bar'])\n```\n\nRemoval:\n\n```\nrecord = certipy.remove_files('bar')\n```\n\nRecords are dicts with the following structure:\n\n```\n{\n  'serial': 0,\n  'is_ca': true,\n  'parent_ca': 'ca_name',\n  'signees': {\n    'signee_name': 1\n  },\n  'files': {\n    'key': 'path/to/key.key',\n    'cert': 'path/to/cert.crt',\n    'ca': 'path/to/ca.crt',\n  }\n}\n```\n\nThe `signees` will be empty for non-CA certificates. The `signees` field\nis stored as a python `Counter`. These relationships are used to build trust\nbundles.\n\nInformation in Certipy is generally passed around as records which point to\nactual files. For most `_record` methods, there are generally equivalent\n`_file` methods that operate on files themselves. The former will only affect\nrecords in Certipy's store and the latter will affect both (something happens\nto the file, the record for it should change, too).\n\n### Release\n\nCertipy is released under BSD license. For more details see the LICENSE file.\n\nLLNL-CODE-754897\n",
      "keywords": "pki,ssl,tls,certificates",
      "platform": [],
      "classifiers": [
        "Development Status :: 4 - Beta",
        "Intended Audience :: Developers",
        "Topic :: Utilities",
        "License :: OSI Approved :: BSD License",
        "Programming Language :: Python :: 3",
        "Programming Language :: Python :: 3.7",
        "Programming Language :: Python :: 3.8",
        "Programming Language :: Python :: 3.9",
        "Programming Language :: Python :: 3.10",
        "Programming Language :: Python :: 3.11",
        "Programming Language :: Python :: 3.12",
        "Environment :: MetaData :: IBM Python Ecosystem"
      ],
      "download_url": "",
      "supported_platform": [],
      "comment": "",
      "provides": [],
      "requires": [],
      "obsoletes": [],
      "project_urls": [
        "Homepage, https://github.com/LLNL/certipy"
      ],
      "provides_dist": [],
      "obsoletes_dist": [],
      "requires_dist": [
        "cryptography",
        "pytest; extra == \"dev\"",
        "flask; extra == \"dev\"",
        "build; extra == \"dev\"",
        "pre-commit; extra == \"dev\"",
        "ruff; extra == \"dev\"",
        "bump-my-version; extra == \"dev\""
      ],
      "requires_external": [],
      "requires_python": ">=3.7",
      "description_content_type": "text/markdown",
      "provides_extras": "dev",
      "dynamic": "license-file",
      "license_expression": "",
      "license_file": "NOTICE",
      "+links": [
        {
          "rel": "releasefile",
          "hash_spec": "sha256=a4fad2e8edab108cc788cc630d8b39c3e641a06092fce9c5148bf0be14a955db",
          "href": "https://wheels.developerfirst.ibm.com/ppc64le/linux/+f/a4f/ad2e8edab108c/certipy-0.2.2+ppc64le1-py3-none-any.whl",
          "log": [
            {
              "what": "upload",
              "who": "ppc64le",
              "when": [
                2026,
                3,
                16,
                9,
                9,
                3
              ],
              "dst": "ppc64le/linux"
            }
          ]
        }
      ]
    },
    "0.2.1+ppc64le1": {
      "name": "certipy",
      "version": "0.2.1+ppc64le1",
      "metadata_version": "2.1",
      "summary": "Utility to create and sign CAs and certificates",
      "home_page": "",
      "author": "",
      "author_email": "Thomas Mendoza <mendoza33@llnl.gov>",
      "maintainer": "",
      "maintainer_email": "",
      "license": "BSD 3-Clause License  Copyright (c) 2018, Lawrence Livermore National Security, LLC All rights reserved.  Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:  * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.  * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.  * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ",
      "description": "# Certipy\n\nA simple python tool for creating certificate authorities and certificates on\nthe fly.\n\n## Introduction\n\nCertipy was made to simplify the certificate creation process. To that end,\nCertipy exposes methods for creating and managing certificate authorities,\ncertificates, signing and building trust bundles. Behind the scenes Certipy:\n\n* Manages records of all certificates it creates\n  * External certs can be imported and managed by Certipy\n  * Maintains signing hierarchy\n* Persists certificates to files with appropriate permissions\n\n## Usage\n\n### Command line\n\nCreating a certificate authority:\n\nCertipy defaults to writing certs and certipy.json into a folder called `out`\nin your current directory.\n\n```\n$ certipy foo\nFILES {'ca': '', 'cert': 'out/foo/foo.crt', 'key': 'out/foo/foo.key'}\nIS_CA True\nSERIAL 0\nSIGNEES None\nPARENT_CA\n```\n\nCreating and signing a key-cert pair:\n\n```\n$ certipy bar --ca-name foo\nFILES {'ca': 'out/foo/foo.crt', 'key': 'out/bar/bar.key', 'cert': 'out/bar/bar.crt'}\nIS_CA False\nSERIAL 0\nSIGNEES None\nPARENT_CA foo\n```\n\nRemoval:\n\n```\ncertipy --rm bar\nDeleted:\nFILES {'ca': 'out/foo/foo.crt', 'key': 'out/bar/bar.key', 'cert': 'out/bar/bar.crt'}\nIS_CA False\nSERIAL 0\nSIGNEES None\nPARENT_CA foo\n```\n\n### Code\n\nCreating a certificate authority:\n\n```\nfrom certipy import Certipy\n\ncertipy = Certipy(store_dir='/tmp')\ncertipy.create_ca('foo')\nrecord = certipy.store.get_record('foo')\n```\n\nCreating and signing a key-cert pair:\n\n```\ncertipy.create_signed_pair('bar', 'foo')\nrecord = certipy.store.get_record('bar')\n```\n\nCreating trust:\n\n```\ncertipy.create_ca_bundle('ca-bundle.crt')\n\n# or to trust specific certs only:\ncertipy.create_ca_bundle_for_names('ca-bundle.crt', ['bar'])\n```\n\nRemoval:\n\n```\nrecord = certipy.remove_files('bar')\n```\n\nRecords are dicts with the following structure:\n\n```\n{\n  'serial': 0,\n  'is_ca': true,\n  'parent_ca': 'ca_name',\n  'signees': {\n    'signee_name': 1\n  },\n  'files': {\n    'key': 'path/to/key.key',\n    'cert': 'path/to/cert.crt',\n    'ca': 'path/to/ca.crt',\n  }\n}\n```\n\nThe `signees` will be empty for non-CA certificates. The `signees` field\nis stored as a python `Counter`. These relationships are used to build trust\nbundles.\n\nInformation in Certipy is generally passed around as records which point to\nactual files. For most `_record` methods, there are generally equivalent\n`_file` methods that operate on files themselves. The former will only affect\nrecords in Certipy's store and the latter will affect both (something happens\nto the file, the record for it should change, too).\n\n### Release\n\nCertipy is released under BSD license. For more details see the LICENSE file.\n\nLLNL-CODE-754897\n",
      "keywords": "pki,ssl,tls,certificates",
      "platform": [],
      "classifiers": [
        "Development Status :: 4 - Beta",
        "Intended Audience :: Developers",
        "Topic :: Utilities",
        "License :: OSI Approved :: BSD License",
        "Programming Language :: Python :: 3",
        "Programming Language :: Python :: 3.7",
        "Programming Language :: Python :: 3.8",
        "Programming Language :: Python :: 3.9",
        "Programming Language :: Python :: 3.10",
        "Programming Language :: Python :: 3.11",
        "Programming Language :: Python :: 3.12",
        "Environment :: MetaData :: IBM Python Ecosystem"
      ],
      "download_url": "",
      "supported_platform": [],
      "comment": "",
      "provides": [],
      "requires": [],
      "obsoletes": [],
      "project_urls": [
        "Homepage, https://github.com/LLNL/certipy"
      ],
      "provides_dist": [],
      "obsoletes_dist": [],
      "requires_dist": [
        "cryptography",
        "pytest; extra == \"dev\"",
        "flask; extra == \"dev\"",
        "build; extra == \"dev\"",
        "requests; extra == \"dev\"",
        "pre-commit; extra == \"dev\"",
        "ruff; extra == \"dev\"",
        "bump-my-version; extra == \"dev\""
      ],
      "requires_external": [],
      "requires_python": ">=3.7",
      "description_content_type": "text/markdown",
      "provides_extras": "dev",
      "dynamic": "",
      "license_expression": "",
      "license_file": "",
      "+links": [
        {
          "rel": "releasefile",
          "hash_spec": "sha256=17837ce9ebcfb3a0129bd21335d6d302e66a1df9d170f3869409d9dc876664f2",
          "href": "https://wheels.developerfirst.ibm.com/ppc64le/linux/+f/178/37ce9ebcfb3a0/certipy-0.2.1+ppc64le1-py3-none-any.whl",
          "log": [
            {
              "what": "upload",
              "who": "ppc64le",
              "when": [
                2026,
                3,
                16,
                9,
                9,
                3
              ],
              "dst": "ppc64le/linux"
            }
          ]
        }
      ]
    }
  },
  "type": "projectconfig"
}
