# Secure Transport Protocol Certificate (STPC) π‘οΈ



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\r\n\r\n\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"
}