stpc


Namestpc JSON
Version 0.1.0a3 PyPI version JSON
download
home_pageNone
SummarySecure Transport Protocol Certificate (STPC) - Cryptographic certificate system with modern algorithms support
upload_time2025-08-04 09:48:01
maintainerNone
docs_urlNone
authorNone
requires_python>=3.12
licenseMIT
keywords cryptography certificates security ed25519 falcon post-quantum
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            
# Secure Transport Protocol Certificate (STPC) πŸ›‘οΈ

![Python Version](https://img.shields.io/badge/python-3.9%2B-blue)
![License](https://img.shields.io/badge/license-MIT-green)
![Build](https://img.shields.io/badge/alpha_test-not_stable-red)

STPC β€” это Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ криптографичСская систСма для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с сСртификатами, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰Π°Ρ соврСмСнныС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ подписи, CRL ΠΈ OCSP. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π½Π° Python с использованиСм Rust-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ для криптографичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

## πŸ”₯ ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ особСнности

- **ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° соврСмСнных Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ²**:
  - Ed25519 (рСкомСндуСтся)
  - Falcon512/Falcon1024 (постквантовыС)
  - RSA (ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΉ, Π½Π΅ рСкомСндуСтся)
  
- **ΠŸΠΎΠ»Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» управлСния сСртификатами**:
  - ГСнСрация ΠΊΠΎΡ€Π½Π΅Π²Ρ‹Ρ… ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… сСртификатов
  - ΠŸΠ°Ρ€ΡΠΈΠ½Π³ ΠΈ валидация
  - PEM-сСриализация

- **БистСма ΠΎΡ‚Π·Ρ‹Π²Π° сСртификатов**:
  - CRL (Certificate Revocation Lists)
  - OCSP (Online Certificate Status Protocol) сСрвСр ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚

- **ВрСмСнная синхронизация**:
  - АвтоматичСская синхронизация с NTP-сСрвСрами
  - Π—Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ Π°Ρ‚Π°ΠΊ с ΠΏΠΎΠ΄ΠΌΠ΅Π½ΠΎΠΉ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ

## πŸš€ Быстрый старт

### Установка

```bash
pip install -r requirements.txt
maturin develop  # Π‘Π±ΠΎΡ€ΠΊΠ° Rust-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ
```

### ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования

#### 1. ГСнСрация ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ сСртификата

```python
from stpc.main import RootCertificates
from stpc import stpc

private_key, public_key = stpc.Ed25519.generate_keypair()

root_cert = RootCertificates.generate_cert(
    0x02,  # Ed25519
    b"STP_Root_CA",
    b"John",
    b"Doe",
    b"Security",
    b"Example Corp",
    b"New York",
    b"US",
    public_key,
    3600 * 24 * 365 * 10,  # 10 Π»Π΅Ρ‚
    private_key
)
```

#### 2. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° сСртификата Ρ‡Π΅Ρ€Π΅Π· OCSP

```python
from stpc.main import OCSP

# Запуск сСрвСра
ocsp_server = OCSP.server()
ocsp_server.start(crl_list, root_private_key, root_public_key, 8080, 0x02)

# ΠšΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΠΈΠΉ запрос
ocsp_client = OCSP.client("localhost", 8080, root_public_key, 0x02)
status = ocsp_client.check_certificate("1234567890abcdef")
print(status)  # {'status': 'good', 'revoked': False, ...}
```

## πŸ›  ВСхничСскиС Π΄Π΅Ρ‚Π°Π»ΠΈ

### Алгоритмы подписи

| ID  | Алгоритм   | Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ           | Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ |
|-----|-----------|-----------------------|----------|
| 0x01| RSA       | ❌ Уязвим ΠΊ Π°Ρ‚Π°ΠΊΠ°ΠΌ    | ⚑⚑      |
| 0x02| Ed25519   | βœ… Высокая            | ⚑⚑⚑     |
| 0x03| Falcon512 | βœ… ΠŸΠΎΡΡ‚ΠΊΠ²Π°Π½Ρ‚ΠΎΠ²Ρ‹ΠΉ      | ⚑        |
| 0x04| Falcon1024| βœ… ΠŸΠΎΡΡ‚ΠΊΠ²Π°Π½Ρ‚ΠΎΠ²Ρ‹ΠΉ      | 🐒        |

### ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ (benchmarks)

```
Ed25519 keypair generation: 0.000412 sec (~2427 ops/sec)
Server cert generation: 0.001203 sec (~831 certs/sec)
CRL check: 0.000038 sec (~26315 checks/sec)
OCSP check: 0.001200 sec (~833 req/sec)
```

## πŸ›‘ Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ

- Π—Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ replay-Π°Ρ‚Π°ΠΊ (ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠΊ)
- Валидация всСх ΠΏΠΎΠ»Π΅ΠΉ сСртификатов
- АвтоматичСская ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° CRL ΠΏΡ€ΠΈ Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ
- ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° OCSP для ΠΎΠ½Π»Π°ΠΉΠ½-ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ статуса

## πŸ“œ ЛицСнзия

MIT License. Π‘ΠΌ. Ρ„Π°ΠΉΠ» [LICENSE](LICENSE) для подробностСй.

---

> **Note**: ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Π² Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅. **НС рСкомСндуСтся** использованиС Π² production!


            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "stpc",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.12",
    "maintainer_email": "Konstantin Gorshkov <kostya_gorshkov_06@vk.com>",
    "keywords": "cryptography, certificates, security, ed25519, falcon, post-quantum",
    "author": null,
    "author_email": "Konstantin Gorshkov <kostya_gorshkov_06@vk.com>",
    "download_url": "https://files.pythonhosted.org/packages/53/1b/3aed3fb5e85a072db71d82d4a7d622d7087137f180db0d05ee802ecf3cfc/stpc-0.1.0a3.tar.gz",
    "platform": null,
    "description": "\r\n# Secure Transport Protocol Certificate (STPC) \ud83d\udee1\ufe0f\r\n\r\n![Python Version](https://img.shields.io/badge/python-3.9%2B-blue)\r\n![License](https://img.shields.io/badge/license-MIT-green)\r\n![Build](https://img.shields.io/badge/alpha_test-not_stable-red)\r\n\r\nSTPC \u2014 \u044d\u0442\u043e \u0432\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430\u043c\u0438, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0449\u0430\u044f \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u043f\u043e\u0434\u043f\u0438\u0441\u0438, CRL \u0438 OCSP. \u041f\u0440\u043e\u0435\u043a\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u043d\u0430 Python \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c Rust-\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0434\u043b\u044f \u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439.\r\n\r\n## \ud83d\udd25 \u041a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438\r\n\r\n- **\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432**:\r\n  - Ed25519 (\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f)\r\n  - Falcon512/Falcon1024 (\u043f\u043e\u0441\u0442\u043a\u0432\u0430\u043d\u0442\u043e\u0432\u044b\u0435)\r\n  - RSA (\u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0439, \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f)\r\n  \r\n- **\u041f\u043e\u043b\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430\u043c\u0438**:\r\n  - \u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u043a\u043e\u0440\u043d\u0435\u0432\u044b\u0445 \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432\r\n  - \u041f\u0430\u0440\u0441\u0438\u043d\u0433 \u0438 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f\r\n  - PEM-\u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f\r\n\r\n- **\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u043e\u0442\u0437\u044b\u0432\u0430 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432**:\r\n  - CRL (Certificate Revocation Lists)\r\n  - OCSP (Online Certificate Status Protocol) \u0441\u0435\u0440\u0432\u0435\u0440 \u0438 \u043a\u043b\u0438\u0435\u043d\u0442\r\n\r\n- **\u0412\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f**:\r\n  - \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0441 NTP-\u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c\u0438\r\n  - \u0417\u0430\u0449\u0438\u0442\u0430 \u043e\u0442 \u0430\u0442\u0430\u043a \u0441 \u043f\u043e\u0434\u043c\u0435\u043d\u043e\u0439 \u0432\u0440\u0435\u043c\u0435\u043d\u0438\r\n\r\n## \ud83d\ude80 \u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0441\u0442\u0430\u0440\u0442\r\n\r\n### \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430\r\n\r\n```bash\r\npip install -r requirements.txt\r\nmaturin develop  # \u0421\u0431\u043e\u0440\u043a\u0430 Rust-\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438\r\n```\r\n\r\n### \u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\r\n\r\n#### 1. \u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0433\u043e \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430\r\n\r\n```python\r\nfrom stpc.main import RootCertificates\r\nfrom stpc import stpc\r\n\r\nprivate_key, public_key = stpc.Ed25519.generate_keypair()\r\n\r\nroot_cert = RootCertificates.generate_cert(\r\n    0x02,  # Ed25519\r\n    b\"STP_Root_CA\",\r\n    b\"John\",\r\n    b\"Doe\",\r\n    b\"Security\",\r\n    b\"Example Corp\",\r\n    b\"New York\",\r\n    b\"US\",\r\n    public_key,\r\n    3600 * 24 * 365 * 10,  # 10 \u043b\u0435\u0442\r\n    private_key\r\n)\r\n```\r\n\r\n#### 2. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 \u0447\u0435\u0440\u0435\u0437 OCSP\r\n\r\n```python\r\nfrom stpc.main import OCSP\r\n\r\n# \u0417\u0430\u043f\u0443\u0441\u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0430\r\nocsp_server = OCSP.server()\r\nocsp_server.start(crl_list, root_private_key, root_public_key, 8080, 0x02)\r\n\r\n# \u041a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0439 \u0437\u0430\u043f\u0440\u043e\u0441\r\nocsp_client = OCSP.client(\"localhost\", 8080, root_public_key, 0x02)\r\nstatus = ocsp_client.check_certificate(\"1234567890abcdef\")\r\nprint(status)  # {'status': 'good', 'revoked': False, ...}\r\n```\r\n\r\n## \ud83d\udee0 \u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0434\u0435\u0442\u0430\u043b\u0438\r\n\r\n### \u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u043f\u043e\u0434\u043f\u0438\u0441\u0438\r\n\r\n| ID  | \u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c   | \u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c           | \u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c |\r\n|-----|-----------|-----------------------|----------|\r\n| 0x01| RSA       | \u274c \u0423\u044f\u0437\u0432\u0438\u043c \u043a \u0430\u0442\u0430\u043a\u0430\u043c    | \u26a1\u26a1      |\r\n| 0x02| Ed25519   | \u2705 \u0412\u044b\u0441\u043e\u043a\u0430\u044f            | \u26a1\u26a1\u26a1     |\r\n| 0x03| Falcon512 | \u2705 \u041f\u043e\u0441\u0442\u043a\u0432\u0430\u043d\u0442\u043e\u0432\u044b\u0439      | \u26a1        |\r\n| 0x04| Falcon1024| \u2705 \u041f\u043e\u0441\u0442\u043a\u0432\u0430\u043d\u0442\u043e\u0432\u044b\u0439      | \ud83d\udc22        |\r\n\r\n### \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c (benchmarks)\r\n\r\n```\r\nEd25519 keypair generation: 0.000412 sec (~2427 ops/sec)\r\nServer cert generation: 0.001203 sec (~831 certs/sec)\r\nCRL check: 0.000038 sec (~26315 checks/sec)\r\nOCSP check: 0.001200 sec (~833 req/sec)\r\n```\r\n\r\n## \ud83d\udee1 \u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c\r\n\r\n- \u0417\u0430\u0449\u0438\u0442\u0430 \u043e\u0442 replay-\u0430\u0442\u0430\u043a (\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u043a)\r\n- \u0412\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f \u0432\u0441\u0435\u0445 \u043f\u043e\u043b\u0435\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432\r\n- \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 CRL \u043f\u0440\u0438 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438\r\n- \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 OCSP \u0434\u043b\u044f \u043e\u043d\u043b\u0430\u0439\u043d-\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0441\u0442\u0430\u0442\u0443\u0441\u0430\r\n\r\n## \ud83d\udcdc \u041b\u0438\u0446\u0435\u043d\u0437\u0438\u044f\r\n\r\nMIT License. \u0421\u043c. \u0444\u0430\u0439\u043b [LICENSE](LICENSE) \u0434\u043b\u044f \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0435\u0439.\r\n\r\n---\r\n\r\n> **Note**: \u041f\u0440\u043e\u0435\u043a\u0442 \u0432 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435. **\u041d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f** \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 production!\r\n\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Secure Transport Protocol Certificate (STPC) - Cryptographic certificate system with modern algorithms support",
    "version": "0.1.0a3",
    "project_urls": null,
    "split_keywords": [
        "cryptography",
        " certificates",
        " security",
        " ed25519",
        " falcon",
        " post-quantum"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "8a12a73424ea12ae3622f390b310880a566f3aba69c68091a16313d51f1da905",
                "md5": "0882be66737a55bdc156d8e1b2125b7f",
                "sha256": "ef8a5221e2b2ed852388f1aae93dbe18755e0821e34f0f5f6b4a618f63fa1254"
            },
            "downloads": -1,
            "filename": "stpc-0.1.0a3-cp313-cp313-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "0882be66737a55bdc156d8e1b2125b7f",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.12",
            "size": 349251,
            "upload_time": "2025-08-04T09:47:59",
            "upload_time_iso_8601": "2025-08-04T09:47:59.105097Z",
            "url": "https://files.pythonhosted.org/packages/8a/12/a73424ea12ae3622f390b310880a566f3aba69c68091a16313d51f1da905/stpc-0.1.0a3-cp313-cp313-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "531b3aed3fb5e85a072db71d82d4a7d622d7087137f180db0d05ee802ecf3cfc",
                "md5": "0f4dd618d9d4e7281e5625d9f5c5bd41",
                "sha256": "41a57d8fdec741d17b1b59894f6ffcb6f2688c7439d2dff774f9e5aebbf54e3f"
            },
            "downloads": -1,
            "filename": "stpc-0.1.0a3.tar.gz",
            "has_sig": false,
            "md5_digest": "0f4dd618d9d4e7281e5625d9f5c5bd41",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.12",
            "size": 13848847,
            "upload_time": "2025-08-04T09:48:01",
            "upload_time_iso_8601": "2025-08-04T09:48:01.734840Z",
            "url": "https://files.pythonhosted.org/packages/53/1b/3aed3fb5e85a072db71d82d4a7d622d7087137f180db0d05ee802ecf3cfc/stpc-0.1.0a3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-04 09:48:01",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "stpc"
}
        
Elapsed time: 1.32263s