A Python client for the Global CVE Allocation System.
Project description
A Python client for the Global CVE Allocation System
The Global CVE (GCVE) allocation system is a new, decentralized approach to vulnerability identification and numbering, designed to improve flexibility, scalability, and autonomy for participating entities.
This client can be integrated into software such as
Vulnerability-Lookup
to provide core GCVE functionalities by adhering to the
Best Current Practices.
It can also be used as a standalone command-line tool.
Examples of usage
As a command line tool
First install the gcve client:
$ python -m pip install --user pipx
$ python -m pipx ensurepath
$ pipx install gcve
installed package gcve 0.11.0, installed using Python 3.13.0
These apps are now globally available
- gcve
done! ✨ 🌟 ✨
Pulling the registry locally
$ gcve registry --pull
Pulling from registry…
Downloaded updated https://gcve.eu/dist/key/public.pem to .gcve/registry/public.pem
Downloaded updated https://gcve.eu/dist/gcve.json.sigsha512 to .gcve/registry/gcve.json.sigsha512
Downloaded updated https://gcve.eu/dist/gcve.json to .gcve/registry/gcve.json
Integrity check passed successfully.
Retrieving a GNA
Note: This operation is case sensitive.
$ gcve registry --get CIRCL
{
"id": 1,
"short_name": "CIRCL",
"cpe_vendor_name": "circl",
"full_name": "Computer Incident Response Center Luxembourg",
"gcve_url": "https://vulnerability.circl.lu/",
"gcve_api": "https://vulnerability.circl.lu/api/",
"gcve_dump": "https://vulnerability.circl.lu/dumps/",
"gcve_allocation": "https://vulnerability.circl.lu/",
"gcve_sync_api": "https://vulnerability.circl.lu/"
}
$ gcve registry --get CIRCL | jq .id
1
Searching the Registry
Note: Search operations are case insensitive.
$ gcve registry --find cert
[
{
"id": 106,
"full_name": "National Cyber Security Centre SK-CERT",
"short_name": "SK-CERT",
"gcve_url": "https://www.sk-cert.sk/"
},
{
"id": 680,
"short_name": "DFN-CERT",
"full_name": "DFN-CERT Services GmbH",
"gcve_url": "https://adv-archiv.dfn-cert.de/"
}
]
As a library
Verifying the integrity of your local GNA directory copy
Python 3.13.0 (main, Oct 10 2024, 07:28:38) [GCC 12.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from typing import List
... from gcve.gna import GNAEntry
... from gcve.registry import (
... update_registry_public_key,
... update_registry_signature,
... update_registry,
... verify_registry_integrity,
... load_registry,
... )
...
>>> update_registry_public_key()
No changes — using cached .gcve/registry/public.pem.
False
>>> update_registry_signature()
No changes — using cached .gcve/registry/gcve.json.sigsha512.
False
>>> update_registry()
No changes — using cached .gcve/registry/gcve.json.
False
>>> if verify_registry_integrity():
... gcve_data: List[GNAEntry] = load_registry()
...
>>>
Generating new GCVE entries
Example with GCVE-1 entries (CIRCL namespace):
from typing import List
from gcve.gna import GNAEntry
from gcve import gcve_generator, get_gna_id_by_short_name, to_gcve_id
from gcve.gna import GNAEntry
from gcve.registry import update_registry, load_registry
# Retrieve the JSON Directory file available at GCVE.eu if it has changed
update_registry()
# Initializes the GNA entries
gcve_data = load_registry()
# If "CIRCL" found in the registry
if CIRCL_GNA_ID := get_gna_id_by_short_name("CIRCL", gcve_data):
# Existing GCVE-O
existing_gcves = {to_gcve_id(cve) for cve in vulnerabilitylookup.get_all_ids()}
generator = gcve_generator(existing_gcves, CIRCL_GNA_ID)
for _ in range(5):
print(next(generator))
License
GCVE is licensed under GNU General Public License version 3.
- Copyright (c) 2025 Computer Incident Response Center Luxembourg (CIRCL)
- Copyright (c) 2025 Cédric Bonhomme - https://github.com/cedricbonhomme
Contact
Att: GCVE.EU
CIRCL - Computer Incident Response Center Luxembourg
c/o "Luxembourg House of Cybersecurity" g.i.e.
122, rue Adolphe Fischer
L-1521 Luxembourg
Grand-Duchy of Luxembourg
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file gcve-0.11.2.tar.gz
.
File metadata
- Download URL: gcve-0.11.2.tar.gz
- Upload date:
- Size: 19.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
c1df654e018d3f6fee43d3b9ef65d63359f72cb003c39357b7baf4134c122c52
|
|
MD5 |
fd6ff7cfa8eb509c4dc03b41c34611cd
|
|
BLAKE2b-256 |
e9c6c808bf59316f3734ce3518afc724a4b02b399e0397aa4ccad5d8150511c9
|
Provenance
The following attestation bundles were made for gcve-0.11.2.tar.gz
:
Publisher:
release.yml
on gcve-eu/gcve
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1
-
Predicate type:
https://docs.pypi.org/attestations/publish/v1
-
Subject name:
gcve-0.11.2.tar.gz
-
Subject digest:
c1df654e018d3f6fee43d3b9ef65d63359f72cb003c39357b7baf4134c122c52
- Sigstore transparency entry: 234997878
- Sigstore integration time:
-
Permalink:
gcve-eu/gcve@27919ef63b8ee9775c1d15eac2a549f22581c79c
-
Branch / Tag:
refs/tags/v0.11.2
- Owner: https://github.com/gcve-eu
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com
-
Runner Environment:
github-hosted
-
Publication workflow:
release.yml@27919ef63b8ee9775c1d15eac2a549f22581c79c
-
Trigger Event:
release
-
Statement type:
File details
Details for the file gcve-0.11.2-py3-none-any.whl
.
File metadata
- Download URL: gcve-0.11.2-py3-none-any.whl
- Upload date:
- Size: 21.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
328ea278807486e608e0e204e30ef62789ecf091e17f48e9c7187bf5ab4efeaf
|
|
MD5 |
dbb37a88731157182af78b17652649a4
|
|
BLAKE2b-256 |
d6aa1dd09f58f65a9c1dec49232341ee74bc9066e53bc09f73f4fe22de75e46c
|
Provenance
The following attestation bundles were made for gcve-0.11.2-py3-none-any.whl
:
Publisher:
release.yml
on gcve-eu/gcve
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1
-
Predicate type:
https://docs.pypi.org/attestations/publish/v1
-
Subject name:
gcve-0.11.2-py3-none-any.whl
-
Subject digest:
328ea278807486e608e0e204e30ef62789ecf091e17f48e9c7187bf5ab4efeaf
- Sigstore transparency entry: 234997883
- Sigstore integration time:
-
Permalink:
gcve-eu/gcve@27919ef63b8ee9775c1d15eac2a549f22581c79c
-
Branch / Tag:
refs/tags/v0.11.2
- Owner: https://github.com/gcve-eu
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com
-
Runner Environment:
github-hosted
-
Publication workflow:
release.yml@27919ef63b8ee9775c1d15eac2a549f22581c79c
-
Trigger Event:
release
-
Statement type: