feat: add urlsafe enc to lnbits-cli (#3173)

This commit is contained in:
dni ⚡
2025-05-27 10:51:26 +02:00
committed by GitHub
parent 56aebb9d8f
commit 3c4d186dba
2 changed files with 17 additions and 6 deletions

View File

@@ -518,12 +518,15 @@ def encrypt_macaroon():
@encrypt.command("aes")
@click.option("-p", "--payload", required=True, help="Payload to encrypt.")
def encrypt_aes(payload: str):
@click.option(
"-u", "--urlsafe", is_flag=True, required=False, help="Urlsafe b64encode."
)
def encrypt_aes(payload: str, urlsafe: bool = False):
"""AES encrypts a payload"""
key = getpass("Enter encryption key: ")
aes = AESCipher(key.encode())
try:
encrypted = aes.encrypt(payload.encode())
encrypted = aes.encrypt(payload.encode(), urlsafe=urlsafe)
except Exception as ex:
click.echo(f"Error encrypting payload: {ex}")
return
@@ -533,12 +536,15 @@ def encrypt_aes(payload: str):
@decrypt.command("aes")
@click.option("-p", "--payload", required=True, help="Payload to decrypt.")
def decrypt_aes(payload: str):
@click.option(
"-u", "--urlsafe", is_flag=True, required=False, help="Urlsafe b64decode."
)
def decrypt_aes(payload: str, urlsafe: bool = False):
"""AES decrypts a payload"""
key = getpass("Enter encryption key: ")
aes = AESCipher(key.encode())
try:
decrypted = aes.decrypt(payload)
decrypted = aes.decrypt(payload, urlsafe=urlsafe)
except Exception as ex:
click.echo(f"Error decrypting payload: {ex}")
return

View File

@@ -93,9 +93,14 @@ class AESCipher:
try:
decrypted_bytes = aes.decrypt(encrypted_bytes)
return self.unpad(decrypted_bytes).decode()
except Exception as exc:
raise ValueError("Decryption error") from exc
raise ValueError("Decryption error: could not decrypt") from exc
unpadded = self.unpad(decrypted_bytes)
if len(unpadded) == 0:
raise ValueError("Decryption error: unpadding failed")
return unpadded.decode()
def encrypt(self, message: bytes, urlsafe: bool = False) -> str:
"""