ipahcc


Nameipahcc JSON
Version 0.17 PyPI version JSON
download
home_pageNone
SummaryIPA enrollment agent for Red Hat Hybrid Cloud Console
upload_time2024-04-06 08:00:56
maintainerNone
docs_urlNone
authorChristian Heimes
requires_python>=3.6
licenseGPL-3.0-or-later
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # IPA plugin for Hybrid Cloud Console

The *ipa-hcc* plugin provides schema extension of IPA for
Hybrid Cloud Console integration. The plugin must be installed on all FreeIPA
servers, preferable before the server/replica is installed.

If the plugin is installed later, then the local schema cache may be
outdated and ``ipa`` command may not be aware of the new attributes.
In that case the local schema cache can be refreshed by enforcing
a schema check ``ipa -eforce_schema_check=True ping`` or by purging
the cache with ``rm -rf ~/.cache/ipa``.

Installation requires a server upgrade ``ipa-server-upgrade`` and
restart of services ``ipactl restart``. The post transaction hook
of the RPM package takes care of both. A server upgrade can take a
while and can disrupt normal operations on the machine. It is advised
to serialize the operation and install the plugin on one server at a
time.

## Additional host attributes

* *HCCOrgId*: string
* *HCCSubscriptionId*: string
* *HCCInventoryId*: string
* *HCCCertSubject*: string (auto-generated)

## Server config

* *HCCOrgId*: string
* *HCCDomainId*: string

## Host groups

Host group ``hcc-enrollment`` is created on server upgrade. Hosts with
a ``HCCSubscriptionId`` are automatically added to the host group by
an **automember rule**.

## certmap rule

A certmap rule ``rhsm-cert`` matches subject of RHSM certificates to host's
``HCCCertSubject` attribute.

## service principal

Each IPA server has a ``hcc-enrollment/$FQDN`` service with role
``HCC Enrollment Administrators``.

## Indexes

* Index on ``HCCSubscriptionId`` for presence and equality
* Index on ``HCCInventoryId`` for presence and equality
* Index on ``HCCCertSubject`` for presence and equality
* Uniqueness of ``HCCCertSubject`` attributes

## Command line extension

```
$ ipa host-mod --help
  ...
  --hccsubscriptionid=STR
  --hccinventoryid=STR
  ...
$ ipa host-show host.test.example
  ...
  organization id: 42
  subscription id: 1f84492f-a824-41b8-8ccd-a4e9e1ab2f3d
  inventory id: e98a6828-faf2-4917-8f0f-7af27fad3683
  RHSM certificate subject: O=42,CN=1f84492f-a824-41b8-8ccd-a4e9e1ab2f3d
  ...
$ ipa config-mod --help
  ...
  --hccorgid=STR  organization id
  --hccdomainid=STR  domain id
  ...
```

## Internal IPA API extension

The `hccjwk` plugin adds internal APIs:
*  ``hccjwk_add``
*  ``hccjwk_find``
*  ``hccjwk_show``
*  ``hccjwk_revoke``
*  ``hccjwk_del``


## Roles / Privileges / Permissions

* Permission
  * ``System: Read HCC config attributes``
  * ``System: Read HCC host attributes``
  * ``System: Modify HCC host attributes``
  * ``System: Read HCC JWKs``
  * ``System: Add HCC JWK``
  * ``System: Delete HCC JWK``
  * ``System: Modify HCC JWK``
* Privilege ``HCC Host Administrators`` that grants permissions
  * ``System: Add Hosts`` (IPA permission)
  * ``System: Modify HCC host attributes`` (IPA permission)
  * ``System: Read HCC config attributes``
  * ``System: Read HCC host attributes``
  * ``System: Modify HCC host attributes``
* Privilege ``HCC JWK Administrators`` that grants permissions
  * ``System: Read HCC JWKs``
  * ``System: Add HCC JWK``
  * ``System: Delete HCC JWK``
  * ``System: Modify HCC JWK``
* Role ``HCC Enrollment Administrators`` with privileges
  * ``HCC Host Administrators``
  * ``HCC JWK Administrators``

## Schema / server updater

The update file `85-hcc.update` for `ipa-server-upgrade` creates:

- host group `hcc-enrollment`
- automember rule for host group
- certmap rule `rhsm-cert`
- additional role and privileges
- new indexes and unique constraint
- runs `update_hcc` update plugin

The `update_hcc` update plugin:

- modifies KRB5 KDC config file to trust the RHSM certificate chain and
  restarts the service if necessary.
- checks HCCOrgId setting in IPA's global configuration. If the
  option is not set, then it sets the value based on the subject org
  name of server's RHSM certificate (`/etc/pki/consumer/cert.pem`).
- set/update HCCSubscriptionId of the server's host entry based on the
  subject CN of the server's RHSM certificate.

The update file `86-hcc-enrollment-service.update` runs the
`update_hcc_enrollment_service` plugin, whoch

- creates service account `hcc-enrollment/$FQDN@$REALM`
- adds the service to the `HCC Enrollment Administrators` role
- creates or validates the keytab for `hcc-enrollment/$FQDN@$REALM`
  service account


## Server test setup

1) Prepare host

```
$ hostnamectl set-hostname ipaserver.ipahcc.test
$ vi /etc/hosts
# add public IPv4 address to /etc/hosts
$ dnf install ipa-server ipa-server-dns
```

2) Install an IPA server with DNS

```
$ ipa-server-install -n ipahcc.test -r IPAHCC.TEST -p DMSecret123 -a Secret123 \
     --setup-dns --auto-forwarders --no-dnssec-validation -U
```

3) Configure `trusted_network` ACL in `/etc/named/*.conf` and
`systemctl restart named.service`, e.g.

```
# /etc/named/ipa-ext.conf
acl "trusted_network" {
   localnets;
   localhost;
   10.0.0.0/8;
};
```

```
# /etc/named/ipa-options-ext.conf
allow-recursion { trusted_network; };
allow-query-cache { trusted_network; };
listen-on-v6 { any; };
dnssec-validation no;
```

4) Add client hostname to DNS

```
$ kinit admin
$ ipa dnsrecord-add ipahcc.test ipaclient1 --a-rec=...
```

5) Create a [Red Hat API](https://access.redhat.com/articles/3626371) refresh
token and save it in `/etc/ipa/hcc/refresh_token`.

```
cat > /etc/ipa/hcc/refresh_token
...
EOF
chown ipahcc:root /etc/ipa/hcc/refresh_token
chmod 640 /etc/ipa/hcc/refresh_token
```

**WARNING** the token has the same privileges as your user
account.

6) Install plugin and other services

```
dnf install 'dnf-command(copr)'
dnf copr enable @podengo/ipa-hcc
dnf install --refresh ipa-hcc-server
```

**NOTE** It is possible to install a server/replica with `ipa-hcc-server`
package pre-installed. Both variants are supported and yield the same result.
The token and `/etc/ipa/hcc.conf` must be set before the server is installed.

## Client test setup

1) Install packages

RHEL 8.8+ or RHEL 9.2+
```
dnf install 'dnf-command(copr)'
dnf copr enable @podengo/ipa-hcc
dnf install --refresh ipa-client ipa-hcc-client
```

3) Configure DNS and hostname. The client must be able to discover its
IPA domain and IPA servers with DNS SRV discovery.

4) Enable the auto-enrollment service

```
systemctl enable ipa-hcc-auto-enrollment.service
```

5) Register system with RHSM and Insights

RHEL >= 8:

```
rhc connect
```

RHEL 7:

```
subscription-manager register ...
insights-client --register
rhc connect
```

The `ipa-hcc-auto-enrollment.service` triggers after `rhc` starts the
`rhcd` service. The enrollment service runs the script
`ipa-hcc-auto-enrollment.py`, which uses DNS SRV discovery to locate
IPA servers, connects to `/hcc` WSGI app to self-register the
host and finally runs `ipa-client-install`.

## Client test setup (step by step)

1) Copy `/var/lib/ipa-client/pki/kdc-ca-bundle.pem` from server to client.

2) Register system with RHSM and Insights

```
rhc connect
```

Older RHEL versions may require manual registration with insights

```
insights-client --register
```

3) Self-register host with IdM

```
curl \
  --cacert /root/kdc-ca-bundle.pem \
  --cert /etc/pki/consumer/cert.pem \
  --key /etc/pki/consumer/key.pem \
  https://ipaserver.hmsidm.test/hcc
```

4) Enroll host with IdM

```
ipa-client-install \
  --pkinit-identity=FILE:/etc/pki/consumer/cert.pem,/etc/pki/consumer/key.pem \
  --pkinit-anchor=FILE:/root/kdc-ca-bundle.pem \
  --server ipaserver.hmsidm.test --domain hmsidm.test -U -N
```

## Notes

- IPA's KDC plugin caches certmap rules for 5 minutes. For rapid testing
  restart the KDC with ``systemctl restart krb5kdc.service``. See
  ``ipa_kdc_certauth.c``: ``DEFAULT_CERTMAP_LIFETIME``.
- ``ipa certmap-match`` is only implemented for users. It cannot be used
  to test cert mappings for hosts.

## Workarounds

IdM does not implement [#9272](https://pagure.io/freeipa/issue/9272)
*"Install CA certificates only for PKINIT or TLS client auth"*, yet.

- Apache HTTPd is configured to load extra CA certs for client cert
  authentication from CA path `/usr/share/ipa-hcc/cacerts/`.
- Kerberos KDC loads extra PKINIT trust anchors from
  `DIR:/usr/share/ipa-hcc/cacerts`.

## Known issues

### Global authentication types affect host auth

* Affects: RHEL 8.9, 9.3, and earlier
* Ticket: https://pagure.io/freeipa/issue/9485

IPA's KDC KDB plugin has a known issue related to global user auth
configuration. If an admin sets a global policy for user auth types and does
not include `pkinit`, then the KDC refuses cert authentication for hosts.

```shell
$ ipa config-mod --user-auth-type=password --user-auth-type=otp
$ ipa config-show
...
Default user authentication types: password, otp
```

`ipa-client-install` fails with:
```
kinit: KDC policy rejects request while getting initial credentials
```

and `/var/log/krb5kdc.log` contains:
```
PKINIT pre-authentication not allowed for this user.: host/host.ipa.example@IPA.EXAMPLE for krbtgt/IPA.EXAMPLE@IPA.EXAMPLE, KDC policy rejects request
```

Workaround: also enable `pkinit`:
```shell
ipa config-mod --user-auth-type=password --user-auth-type=otp --user-auth-type=pkinit
```

## Development and Testing

See `CONTRIBUTING.md` for how to contribute to this repository.

See `DEVELOPMENT.md` for instructions how to set up local development
environment and how to utilize `idm-ci` for testing.

## License

See file 'COPYING' for use and warranty information

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "ipahcc",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.6",
    "maintainer_email": null,
    "keywords": null,
    "author": "Christian Heimes",
    "author_email": "Christian Heimes <cheimes@redhat.com>",
    "download_url": "https://files.pythonhosted.org/packages/bb/92/eebf175d1e74aa965116240d9d692ab32daaa39f9be95e725ba4f6c64c89/ipahcc-0.17.tar.gz",
    "platform": "any",
    "description": "# IPA plugin for Hybrid Cloud Console\n\nThe *ipa-hcc* plugin provides schema extension of IPA for\nHybrid Cloud Console integration. The plugin must be installed on all FreeIPA\nservers, preferable before the server/replica is installed.\n\nIf the plugin is installed later, then the local schema cache may be\noutdated and ``ipa`` command may not be aware of the new attributes.\nIn that case the local schema cache can be refreshed by enforcing\na schema check ``ipa -eforce_schema_check=True ping`` or by purging\nthe cache with ``rm -rf ~/.cache/ipa``.\n\nInstallation requires a server upgrade ``ipa-server-upgrade`` and\nrestart of services ``ipactl restart``. The post transaction hook\nof the RPM package takes care of both. A server upgrade can take a\nwhile and can disrupt normal operations on the machine. It is advised\nto serialize the operation and install the plugin on one server at a\ntime.\n\n## Additional host attributes\n\n* *HCCOrgId*: string\n* *HCCSubscriptionId*: string\n* *HCCInventoryId*: string\n* *HCCCertSubject*: string (auto-generated)\n\n## Server config\n\n* *HCCOrgId*: string\n* *HCCDomainId*: string\n\n## Host groups\n\nHost group ``hcc-enrollment`` is created on server upgrade. Hosts with\na ``HCCSubscriptionId`` are automatically added to the host group by\nan **automember rule**.\n\n## certmap rule\n\nA certmap rule ``rhsm-cert`` matches subject of RHSM certificates to host's\n``HCCCertSubject` attribute.\n\n## service principal\n\nEach IPA server has a ``hcc-enrollment/$FQDN`` service with role\n``HCC Enrollment Administrators``.\n\n## Indexes\n\n* Index on ``HCCSubscriptionId`` for presence and equality\n* Index on ``HCCInventoryId`` for presence and equality\n* Index on ``HCCCertSubject`` for presence and equality\n* Uniqueness of ``HCCCertSubject`` attributes\n\n## Command line extension\n\n```\n$ ipa host-mod --help\n  ...\n  --hccsubscriptionid=STR\n  --hccinventoryid=STR\n  ...\n$ ipa host-show host.test.example\n  ...\n  organization id: 42\n  subscription id: 1f84492f-a824-41b8-8ccd-a4e9e1ab2f3d\n  inventory id: e98a6828-faf2-4917-8f0f-7af27fad3683\n  RHSM certificate subject: O=42,CN=1f84492f-a824-41b8-8ccd-a4e9e1ab2f3d\n  ...\n$ ipa config-mod --help\n  ...\n  --hccorgid=STR  organization id\n  --hccdomainid=STR  domain id\n  ...\n```\n\n## Internal IPA API extension\n\nThe `hccjwk` plugin adds internal APIs:\n*  ``hccjwk_add``\n*  ``hccjwk_find``\n*  ``hccjwk_show``\n*  ``hccjwk_revoke``\n*  ``hccjwk_del``\n\n\n## Roles / Privileges / Permissions\n\n* Permission\n  * ``System: Read HCC config attributes``\n  * ``System: Read HCC host attributes``\n  * ``System: Modify HCC host attributes``\n  * ``System: Read HCC JWKs``\n  * ``System: Add HCC JWK``\n  * ``System: Delete HCC JWK``\n  * ``System: Modify HCC JWK``\n* Privilege ``HCC Host Administrators`` that grants permissions\n  * ``System: Add Hosts`` (IPA permission)\n  * ``System: Modify HCC host attributes`` (IPA permission)\n  * ``System: Read HCC config attributes``\n  * ``System: Read HCC host attributes``\n  * ``System: Modify HCC host attributes``\n* Privilege ``HCC JWK Administrators`` that grants permissions\n  * ``System: Read HCC JWKs``\n  * ``System: Add HCC JWK``\n  * ``System: Delete HCC JWK``\n  * ``System: Modify HCC JWK``\n* Role ``HCC Enrollment Administrators`` with privileges\n  * ``HCC Host Administrators``\n  * ``HCC JWK Administrators``\n\n## Schema / server updater\n\nThe update file `85-hcc.update` for `ipa-server-upgrade` creates:\n\n- host group `hcc-enrollment`\n- automember rule for host group\n- certmap rule `rhsm-cert`\n- additional role and privileges\n- new indexes and unique constraint\n- runs `update_hcc` update plugin\n\nThe `update_hcc` update plugin:\n\n- modifies KRB5 KDC config file to trust the RHSM certificate chain and\n  restarts the service if necessary.\n- checks HCCOrgId setting in IPA's global configuration. If the\n  option is not set, then it sets the value based on the subject org\n  name of server's RHSM certificate (`/etc/pki/consumer/cert.pem`).\n- set/update HCCSubscriptionId of the server's host entry based on the\n  subject CN of the server's RHSM certificate.\n\nThe update file `86-hcc-enrollment-service.update` runs the\n`update_hcc_enrollment_service` plugin, whoch\n\n- creates service account `hcc-enrollment/$FQDN@$REALM`\n- adds the service to the `HCC Enrollment Administrators` role\n- creates or validates the keytab for `hcc-enrollment/$FQDN@$REALM`\n  service account\n\n\n## Server test setup\n\n1) Prepare host\n\n```\n$ hostnamectl set-hostname ipaserver.ipahcc.test\n$ vi /etc/hosts\n# add public IPv4 address to /etc/hosts\n$ dnf install ipa-server ipa-server-dns\n```\n\n2) Install an IPA server with DNS\n\n```\n$ ipa-server-install -n ipahcc.test -r IPAHCC.TEST -p DMSecret123 -a Secret123 \\\n     --setup-dns --auto-forwarders --no-dnssec-validation -U\n```\n\n3) Configure `trusted_network` ACL in `/etc/named/*.conf` and\n`systemctl restart named.service`, e.g.\n\n```\n# /etc/named/ipa-ext.conf\nacl \"trusted_network\" {\n   localnets;\n   localhost;\n   10.0.0.0/8;\n};\n```\n\n```\n# /etc/named/ipa-options-ext.conf\nallow-recursion { trusted_network; };\nallow-query-cache { trusted_network; };\nlisten-on-v6 { any; };\ndnssec-validation no;\n```\n\n4) Add client hostname to DNS\n\n```\n$ kinit admin\n$ ipa dnsrecord-add ipahcc.test ipaclient1 --a-rec=...\n```\n\n5) Create a [Red Hat API](https://access.redhat.com/articles/3626371) refresh\ntoken and save it in `/etc/ipa/hcc/refresh_token`.\n\n```\ncat > /etc/ipa/hcc/refresh_token\n...\nEOF\nchown ipahcc:root /etc/ipa/hcc/refresh_token\nchmod 640 /etc/ipa/hcc/refresh_token\n```\n\n**WARNING** the token has the same privileges as your user\naccount.\n\n6) Install plugin and other services\n\n```\ndnf install 'dnf-command(copr)'\ndnf copr enable @podengo/ipa-hcc\ndnf install --refresh ipa-hcc-server\n```\n\n**NOTE** It is possible to install a server/replica with `ipa-hcc-server`\npackage pre-installed. Both variants are supported and yield the same result.\nThe token and `/etc/ipa/hcc.conf` must be set before the server is installed.\n\n## Client test setup\n\n1) Install packages\n\nRHEL 8.8+ or RHEL 9.2+\n```\ndnf install 'dnf-command(copr)'\ndnf copr enable @podengo/ipa-hcc\ndnf install --refresh ipa-client ipa-hcc-client\n```\n\n3) Configure DNS and hostname. The client must be able to discover its\nIPA domain and IPA servers with DNS SRV discovery.\n\n4) Enable the auto-enrollment service\n\n```\nsystemctl enable ipa-hcc-auto-enrollment.service\n```\n\n5) Register system with RHSM and Insights\n\nRHEL >= 8:\n\n```\nrhc connect\n```\n\nRHEL 7:\n\n```\nsubscription-manager register ...\ninsights-client --register\nrhc connect\n```\n\nThe `ipa-hcc-auto-enrollment.service` triggers after `rhc` starts the\n`rhcd` service. The enrollment service runs the script\n`ipa-hcc-auto-enrollment.py`, which uses DNS SRV discovery to locate\nIPA servers, connects to `/hcc` WSGI app to self-register the\nhost and finally runs `ipa-client-install`.\n\n## Client test setup (step by step)\n\n1) Copy `/var/lib/ipa-client/pki/kdc-ca-bundle.pem` from server to client.\n\n2) Register system with RHSM and Insights\n\n```\nrhc connect\n```\n\nOlder RHEL versions may require manual registration with insights\n\n```\ninsights-client --register\n```\n\n3) Self-register host with IdM\n\n```\ncurl \\\n  --cacert /root/kdc-ca-bundle.pem \\\n  --cert /etc/pki/consumer/cert.pem \\\n  --key /etc/pki/consumer/key.pem \\\n  https://ipaserver.hmsidm.test/hcc\n```\n\n4) Enroll host with IdM\n\n```\nipa-client-install \\\n  --pkinit-identity=FILE:/etc/pki/consumer/cert.pem,/etc/pki/consumer/key.pem \\\n  --pkinit-anchor=FILE:/root/kdc-ca-bundle.pem \\\n  --server ipaserver.hmsidm.test --domain hmsidm.test -U -N\n```\n\n## Notes\n\n- IPA's KDC plugin caches certmap rules for 5 minutes. For rapid testing\n  restart the KDC with ``systemctl restart krb5kdc.service``. See\n  ``ipa_kdc_certauth.c``: ``DEFAULT_CERTMAP_LIFETIME``.\n- ``ipa certmap-match`` is only implemented for users. It cannot be used\n  to test cert mappings for hosts.\n\n## Workarounds\n\nIdM does not implement [#9272](https://pagure.io/freeipa/issue/9272)\n*\"Install CA certificates only for PKINIT or TLS client auth\"*, yet.\n\n- Apache HTTPd is configured to load extra CA certs for client cert\n  authentication from CA path `/usr/share/ipa-hcc/cacerts/`.\n- Kerberos KDC loads extra PKINIT trust anchors from\n  `DIR:/usr/share/ipa-hcc/cacerts`.\n\n## Known issues\n\n### Global authentication types affect host auth\n\n* Affects: RHEL 8.9, 9.3, and earlier\n* Ticket: https://pagure.io/freeipa/issue/9485\n\nIPA's KDC KDB plugin has a known issue related to global user auth\nconfiguration. If an admin sets a global policy for user auth types and does\nnot include `pkinit`, then the KDC refuses cert authentication for hosts.\n\n```shell\n$ ipa config-mod --user-auth-type=password --user-auth-type=otp\n$ ipa config-show\n...\nDefault user authentication types: password, otp\n```\n\n`ipa-client-install` fails with:\n```\nkinit: KDC policy rejects request while getting initial credentials\n```\n\nand `/var/log/krb5kdc.log` contains:\n```\nPKINIT pre-authentication not allowed for this user.: host/host.ipa.example@IPA.EXAMPLE for krbtgt/IPA.EXAMPLE@IPA.EXAMPLE, KDC policy rejects request\n```\n\nWorkaround: also enable `pkinit`:\n```shell\nipa config-mod --user-auth-type=password --user-auth-type=otp --user-auth-type=pkinit\n```\n\n## Development and Testing\n\nSee `CONTRIBUTING.md` for how to contribute to this repository.\n\nSee `DEVELOPMENT.md` for instructions how to set up local development\nenvironment and how to utilize `idm-ci` for testing.\n\n## License\n\nSee file 'COPYING' for use and warranty information\n\nThis program is free software; you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program.  If not, see <http://www.gnu.org/licenses/>.\n",
    "bugtrack_url": null,
    "license": "GPL-3.0-or-later",
    "summary": "IPA enrollment agent for Red Hat Hybrid Cloud Console",
    "version": "0.17",
    "project_urls": null,
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4708ec01a42760ad2f9eaba1353d2573c46bd943f7d7f9ba88acfae02dd8b206",
                "md5": "7d6aa6d317d3ab379ce7dedc7901232d",
                "sha256": "3022e148844f4348ef5b485517d096707eecb6606072de8e0c0854aeb603e61c"
            },
            "downloads": -1,
            "filename": "ipahcc-0.17-py2.py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "7d6aa6d317d3ab379ce7dedc7901232d",
            "packagetype": "bdist_wheel",
            "python_version": "py2.py3",
            "requires_python": ">=3.6",
            "size": 87003,
            "upload_time": "2024-04-06T08:00:54",
            "upload_time_iso_8601": "2024-04-06T08:00:54.612298Z",
            "url": "https://files.pythonhosted.org/packages/47/08/ec01a42760ad2f9eaba1353d2573c46bd943f7d7f9ba88acfae02dd8b206/ipahcc-0.17-py2.py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "bb92eebf175d1e74aa965116240d9d692ab32daaa39f9be95e725ba4f6c64c89",
                "md5": "2e3784907f4efce0742a8b51a5fd9bca",
                "sha256": "5f52c978d7f1f3cdd907dda7bc34b8a085ba37c3c7535b5dd736afae094a8a26"
            },
            "downloads": -1,
            "filename": "ipahcc-0.17.tar.gz",
            "has_sig": false,
            "md5_digest": "2e3784907f4efce0742a8b51a5fd9bca",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.6",
            "size": 161756,
            "upload_time": "2024-04-06T08:00:56",
            "upload_time_iso_8601": "2024-04-06T08:00:56.130667Z",
            "url": "https://files.pythonhosted.org/packages/bb/92/eebf175d1e74aa965116240d9d692ab32daaa39f9be95e725ba4f6c64c89/ipahcc-0.17.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-04-06 08:00:56",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "ipahcc"
}
        
Elapsed time: 0.31119s