Files
cariflex/tools/shapeshifter-library-python-main/shapeshifter_uftp/cli.py
Eric F d398a6ced2 Add extracted tools: CitrineOS, OpenOCPP, ShapeShifter
- CitrineOS core extracted (CSMS OCPP 2.0.1)
- OpenOCPP extracted (firmware OCPP 1.6J/2.0.1)
- ShapeShifter library installed (pip install -e)
- ShapeShifter specification extracted
- EVerest extracted

TODO updated with progress
2026-06-08 00:38:27 -04:00

63 lines
2.0 KiB
Python

"""
A set of command-line-interface functions that are useful during
development of Shapeshifter applications.
"""
from argparse import ArgumentParser
from base64 import b64encode
from nacl.bindings import crypto_sign_keypair
from . import transport
from .exceptions import AuthenticationTimeoutException, ServiceDiscoveryException
def generate_signing_keypair():
"""
Generate a signing keypair (private and public) and print them as
base64-encoded strings. These are the strings that you'd use for
signing and verifying messages; you pass these to the signing_key
and recipient_signing_key parameters of the Service or Client
objects.
"""
public, private = crypto_sign_keypair()
print("-" * 66)
print("Private key (base64):", b64encode(private).decode())
print("Public key (base64): ", b64encode(public).decode())
print("-" * 66)
def perform_lookup():
"""
Perform a DNS lookup of a participant's version, endpoint and
public key details. These use the well-known DNS names described
in the UFTP specification.
"""
parser = ArgumentParser()
parser.add_argument("-d", "--domain", required=True, type=str, help="The sender domain for the other party")
parser.add_argument("-r", "--role", required=True, type=str, help="The sender role for the other party")
args = parser.parse_args()
print("-" * 65)
try:
version = transport.get_version(args.domain)
print(f"Shapeshifer version: {version}")
except ServiceDiscoveryException as err:
print(err)
try:
endpoint = transport.get_endpoint(args.domain, args.role)
print(f"Endpoint URL: {endpoint}")
except ServiceDiscoveryException as err:
print(err)
try:
signing_key, decryption_key = transport.get_keys(args.domain, args.role)
print(f"Signing key: {signing_key}")
if decryption_key:
print(f"Decryption Key: {decryption_key}")
except AuthenticationTimeoutException as err:
print(err)
print("-" * 65)