95 lines
2.7 KiB
Python
95 lines
2.7 KiB
Python
import typer
|
|
|
|
from cli.context import AllowProdOption, DryRunOption, EnvOption, OutputOption, YesOption
|
|
|
|
from .controller import CryptoCommandController
|
|
|
|
app = typer.Typer(
|
|
help='传输加密相关命令',
|
|
no_args_is_help=True,
|
|
context_settings={'help_option_names': ['-h', '--help']},
|
|
)
|
|
_CRYPTO_COMMAND_CONTROLLER = CryptoCommandController()
|
|
|
|
|
|
@app.command('validate', help='校验传输加密配置')
|
|
def validate(
|
|
env: EnvOption = 'dev',
|
|
output: OutputOption = 'text',
|
|
) -> None:
|
|
"""
|
|
校验传输加密配置。
|
|
|
|
:param env: 当前命令运行环境
|
|
:param output: 输出格式
|
|
:return: None
|
|
"""
|
|
_CRYPTO_COMMAND_CONTROLLER.validate(env, output)
|
|
|
|
|
|
@app.command('keygen', help='生成新的传输加密密钥对')
|
|
def keygen(
|
|
env: EnvOption = 'dev',
|
|
output: OutputOption = 'text',
|
|
kid: str = typer.Option('default', '--kid', help='生成的密钥版本标识'),
|
|
key_size: int = typer.Option(2048, '--key-size', help='RSA 密钥长度'),
|
|
) -> None:
|
|
"""
|
|
生成新的传输加密密钥对。
|
|
|
|
:param env: 当前命令运行环境
|
|
:param output: 输出格式
|
|
:param kid: 生成的密钥版本标识
|
|
:param key_size: RSA 密钥长度
|
|
:return: None
|
|
"""
|
|
_CRYPTO_COMMAND_CONTROLLER.keygen(env, output, kid=kid, key_size=key_size)
|
|
|
|
|
|
@app.command('rotate', help='生成传输加密密钥轮换辅助结果')
|
|
def rotate(
|
|
env: EnvOption = 'dev',
|
|
output: OutputOption = 'text',
|
|
allow_prod: AllowProdOption = False,
|
|
yes: YesOption = False,
|
|
dry_run: DryRunOption = False,
|
|
next_kid: str = typer.Option('rotated', '--next-kid', help='轮换后的新密钥版本标识'),
|
|
key_size: int = typer.Option(2048, '--key-size', help='新密钥的 RSA 长度'),
|
|
) -> None:
|
|
"""
|
|
生成传输加密密钥轮换辅助结果。
|
|
|
|
:param env: 当前命令运行环境
|
|
:param output: 输出格式
|
|
:param allow_prod: 是否允许生产环境危险命令
|
|
:param yes: 是否跳过确认
|
|
:param dry_run: 是否演练执行
|
|
:param next_kid: 轮换后的新密钥版本标识
|
|
:param key_size: 新密钥的 RSA 长度
|
|
:return: None
|
|
"""
|
|
_CRYPTO_COMMAND_CONTROLLER.rotate(
|
|
env,
|
|
output,
|
|
allow_prod,
|
|
yes,
|
|
dry_run,
|
|
next_kid=next_kid,
|
|
key_size=key_size,
|
|
)
|
|
|
|
|
|
@app.command('export-public', help='查看当前运行环境的公钥信息')
|
|
def export_public(
|
|
env: EnvOption = 'dev',
|
|
output: OutputOption = 'text',
|
|
) -> None:
|
|
"""
|
|
导出当前运行环境的公钥信息。
|
|
|
|
:param env: 当前命令运行环境
|
|
:param output: 输出格式
|
|
:return: None
|
|
"""
|
|
_CRYPTO_COMMAND_CONTROLLER.export_public(env, output)
|