q-armor-cli 0.1.0__cp313-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- q_armor_cli/__init__.pyc +0 -0
- q_armor_cli/__main__.pyc +0 -0
- q_armor_cli/main.pyc +0 -0
- q_armor_cli-0.1.0.dist-info/METADATA +105 -0
- q_armor_cli-0.1.0.dist-info/RECORD +8 -0
- q_armor_cli-0.1.0.dist-info/WHEEL +4 -0
- q_armor_cli-0.1.0.dist-info/entry_points.txt +2 -0
- q_armor_cli-0.1.0.dist-info/licenses/LICENSE +23 -0
q_armor_cli/__init__.pyc
ADDED
|
Binary file
|
q_armor_cli/__main__.pyc
ADDED
|
Binary file
|
q_armor_cli/main.pyc
ADDED
|
Binary file
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: q-armor-cli
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: q-armor: the QArmor operator command line. Post-quantum posture of a TLS endpoint, the VQS of a validator, and the protection proxy.
|
|
5
|
+
License-Expression: LicenseRef-Proprietary
|
|
6
|
+
License-File: LICENSE
|
|
7
|
+
Requires-Python: >=3.11
|
|
8
|
+
Requires-Dist: q-armor-lib==0.1.0
|
|
9
|
+
Provides-Extra: proxy
|
|
10
|
+
Requires-Dist: q-armor-proxy==0.1.0; extra == 'proxy'
|
|
11
|
+
Requires-Dist: uvicorn>=0.29; extra == 'proxy'
|
|
12
|
+
Description-Content-Type: text/markdown
|
|
13
|
+
|
|
14
|
+
# q-armor-cli
|
|
15
|
+
|
|
16
|
+
**`q-armor`: post-quantum posture of any TLS endpoint, from your terminal, in one command.**
|
|
17
|
+
|
|
18
|
+
[](https://pypi.org/project/q-armor-cli/)
|
|
19
|
+
[](https://pypi.org/project/q-armor-cli/)
|
|
20
|
+
[](https://idenq.io)
|
|
21
|
+
|
|
22
|
+
> The traffic your validator is emitting right now is being recorded by somebody who cannot read it yet. Harvest Now, Decrypt Later is the one attack you cannot respond to after the fact, because the copy was taken years before the key broke. The first useful question is simple: what is this endpoint actually negotiating?
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
pip install q-armor-cli
|
|
26
|
+
q-armor scan example.com
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
hostname: example.com
|
|
31
|
+
port: 443
|
|
32
|
+
tls_version: TLSv1.3
|
|
33
|
+
cipher_suite: TLS_AES_256_GCM_SHA384
|
|
34
|
+
cert_key_type: rsa-2048
|
|
35
|
+
cert_issuer: DigiCert Inc
|
|
36
|
+
key_exchange_group: x25519
|
|
37
|
+
signing_algo: rsa
|
|
38
|
+
session_algo: x25519
|
|
39
|
+
vqs_score: 80
|
|
40
|
+
risk_tier: deny
|
|
41
|
+
consensus_weight_factor: 0.1
|
|
42
|
+
error: None
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
`vqs_score` is **exposure**, so higher is worse. RSA signing and an x25519 key
|
|
46
|
+
exchange are both classical, both fall to Shor, and the consensus weight
|
|
47
|
+
factor is what that costs a validator: one tenth of its vote.
|
|
48
|
+
|
|
49
|
+
## Three commands
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
q-armor scan example.com # post-quantum posture of a TLS endpoint
|
|
53
|
+
q-armor vqs <validator-id> # a validator's VQS
|
|
54
|
+
q-armor proxy --port 8080 # start the protection proxy
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Add `--json` to any of them and pipe it into whatever you already run.
|
|
58
|
+
|
|
59
|
+
Three, and the list is not a matter of taste: `docs/priorities.md` (P1-11)
|
|
60
|
+
says that before writing a CLI you have to answer **what an operator asks
|
|
61
|
+
for**, "because a CLI without that case is surface to maintain".
|
|
62
|
+
|
|
63
|
+
## What it will not do
|
|
64
|
+
|
|
65
|
+
- **It does not reimplement detection.** Every command consumes
|
|
66
|
+
[`q-armor-lib`](https://pypi.org/project/q-armor-lib/). A second scanner
|
|
67
|
+
here would be another producer of the `key_establishment_class` axis,
|
|
68
|
+
diverging in silence.
|
|
69
|
+
- **It does not let telemetry block your answer.** A `scan` reports what it
|
|
70
|
+
measured even if the border is down, misconfigured or refusing on consent
|
|
71
|
+
grounds. A command that failed because it could not report would be a
|
|
72
|
+
command that lies about what it has measured. `--no-telemetry` turns the
|
|
73
|
+
emission off outright.
|
|
74
|
+
|
|
75
|
+
## Exit codes, so a script can tell the difference
|
|
76
|
+
|
|
77
|
+
| Code | Meaning |
|
|
78
|
+
|---|---|
|
|
79
|
+
| `0` | It measured the endpoint |
|
|
80
|
+
| `1` | Error |
|
|
81
|
+
| `2` | It could not observe the endpoint: that is a **finding**, not a broken command |
|
|
82
|
+
| `3` | `vqs` only: the local validator registry is not present |
|
|
83
|
+
|
|
84
|
+
Code 3 is repository-root code (`services/state/validator_store.py`) that no
|
|
85
|
+
wheel carries, so installed from PyPI the command says so by name with its own
|
|
86
|
+
code instead of dying with an ImportError. It works from a checkout, until the
|
|
87
|
+
registry moves to the platform's `POST /validators` (`docs/priorities.md`,
|
|
88
|
+
P1-13).
|
|
89
|
+
|
|
90
|
+
## The QArmor family
|
|
91
|
+
|
|
92
|
+
Five packages, one version, published together from a single tag.
|
|
93
|
+
|
|
94
|
+
| Package | What it is |
|
|
95
|
+
|---|---|
|
|
96
|
+
| [`q-armor-lib`](https://pypi.org/project/q-armor-lib/) | Detection, scoring and the control-plane client |
|
|
97
|
+
| [`q-armor-cli`](https://pypi.org/project/q-armor-cli/) | This one: `q-armor`, the operator's command line |
|
|
98
|
+
| [`q-armor-proxy`](https://pypi.org/project/q-armor-proxy/) | Enterprise runtime: protection proxy, firewall, SIEM webhook |
|
|
99
|
+
| [`q-armor-chain`](https://pypi.org/project/q-armor-chain/) | DVN worker and `QArmorDVN.sol` |
|
|
100
|
+
| [`q-armor-pqc`](https://pypi.org/project/q-armor-pqc/) | Interim ML-DSA-65 primitive |
|
|
101
|
+
|
|
102
|
+
## Next
|
|
103
|
+
|
|
104
|
+
Scanning is free. The collective canary network, real-time alerting and
|
|
105
|
+
on-premise deployment are the paid tiers: [idenq.io](https://idenq.io)
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
q_armor_cli-0.1.0.dist-info/METADATA,sha256=2gstxpTRQg60g5sh5ahs6ilVn31r76HgmWiyNowCfpA,4288
|
|
2
|
+
q_armor_cli-0.1.0.dist-info/WHEEL,sha256=-zTsoBF2cM-n6FfeRTSHkZua7m6FZrGuqBAbmTcK2jk,89
|
|
3
|
+
q_armor_cli-0.1.0.dist-info/entry_points.txt,sha256=tLaLxAHSQCREwJ0dJFRAOwQcqnpoy9RYxQIy9bAqzfU,50
|
|
4
|
+
q_armor_cli-0.1.0.dist-info/licenses/LICENSE,sha256=_hSpUliph3myKpSwc1d-P3Rea95W79Sb6LQ1QHZAqAQ,1205
|
|
5
|
+
q_armor_cli/__init__.pyc,sha256=p6nxRoMdIAC2KiPMq1LUMmQj20VIPvoOoRRHRiqWlz4,120
|
|
6
|
+
q_armor_cli/__main__.pyc,sha256=MQN8R2rkil7EehG54SPyua7lh0-pwV2QyHDrVLKw-J4,216
|
|
7
|
+
q_armor_cli/main.pyc,sha256=OlEZxWayETFyz0rfanlss64-NiVtpbefpD1wB-AGUqI,9578
|
|
8
|
+
q_armor_cli-0.1.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
IdenQ Proprietary Licence
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025-2026 IdenQ. All rights reserved.
|
|
4
|
+
|
|
5
|
+
This software, its source code, its compiled forms and its documentation
|
|
6
|
+
(the "Software") are the confidential and proprietary property of IdenQ.
|
|
7
|
+
|
|
8
|
+
No licence, express or implied, is granted to any person or organisation to
|
|
9
|
+
use, copy, reproduce, modify, merge, publish, distribute, sublicense, sell,
|
|
10
|
+
reverse engineer, decompile or disassemble the Software, in whole or in part,
|
|
11
|
+
except under the terms of a separate written agreement signed by IdenQ. Any
|
|
12
|
+
such agreement governs the Software to the extent of its terms; everything it
|
|
13
|
+
does not grant remains reserved.
|
|
14
|
+
|
|
15
|
+
Access to the Software, including through a public package index or a
|
|
16
|
+
repository, does not by itself grant any right to it.
|
|
17
|
+
|
|
18
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
19
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
20
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL IDENQ
|
|
21
|
+
BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
|
|
22
|
+
CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
23
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|