Skip to content
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.

Update sign_json to support inline key config #11139

Merged
merged 1 commit into from
Oct 20, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/11139.misc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Update the `sign_json` script to support inline configuration of the signing key.
32 changes: 25 additions & 7 deletions scripts-dev/sign_json
Original file line number Diff line number Diff line change
Expand Up @@ -51,13 +51,19 @@ Example usage:
"request with.",
)

parser.add_argument(
"-K",
"--signing-key",
help="The private ed25519 key to sign the request with.",
)

parser.add_argument(
"-c",
"--config",
default="homeserver.yaml",
help=(
"Path to synapse config file, from which the server name and/or signing "
"key path will be read. Ignored if --server-name and --signing-key-path "
"key path will be read. Ignored if --server-name and --signing-key(-path) "
"are both given."
),
)
Expand Down Expand Up @@ -87,11 +93,14 @@ Example usage:

args = parser.parse_args()

if not args.server_name or not args.signing_key_path:
if not args.server_name or not (args.signing_key_path or args.signing_key):
read_args_from_config(args)

with open(args.signing_key_path) as f:
key = read_signing_keys(f)[0]
if args.signing_key:
keys = read_signing_keys([args.signing_key])
else:
with open(args.signing_key_path) as f:
keys = read_signing_keys(f)

json_to_sign = args.input_data
if json_to_sign is None:
Expand All @@ -107,7 +116,7 @@ Example usage:
print("Input json was not an object", file=sys.stderr)
sys.exit(1)

sign_json(obj, args.server_name, key)
sign_json(obj, args.server_name, keys[0])
for c in json_encoder.iterencode(obj):
args.output.write(c)
args.output.write("\n")
Expand All @@ -118,8 +127,17 @@ def read_args_from_config(args: argparse.Namespace) -> None:
config = yaml.safe_load(fh)
if not args.server_name:
args.server_name = config["server_name"]
if not args.signing_key_path:
args.signing_key_path = config["signing_key_path"]
if not args.signing_key_path and not args.signing_key:
if "signing_key" in config:
args.signing_key = config["signing_key"]
elif "signing_key_path" in config:
args.signing_key_path = config["signing_key_path"]
else:
print(
"A signing key must be given on the commandline or in the config file.",
file=sys.stderr,
)
sys.exit(1)


if __name__ == "__main__":
Expand Down