@@ -51,13 +51,19 @@ Example usage:
51
51
"request with." ,
52
52
)
53
53
54
+ parser .add_argument (
55
+ "-K" ,
56
+ "--signing-key" ,
57
+ help = "The private ed25519 key to sign the request with." ,
58
+ )
59
+
54
60
parser .add_argument (
55
61
"-c" ,
56
62
"--config" ,
57
63
default = "homeserver.yaml" ,
58
64
help = (
59
65
"Path to synapse config file, from which the server name and/or signing "
60
- "key path will be read. Ignored if --server-name and --signing-key-path "
66
+ "key path will be read. Ignored if --server-name and --signing-key( -path) "
61
67
"are both given."
62
68
),
63
69
)
@@ -87,11 +93,14 @@ Example usage:
87
93
88
94
args = parser .parse_args ()
89
95
90
- if not args .server_name or not args .signing_key_path :
96
+ if not args .server_name or not ( args .signing_key_path or args . signing_key ) :
91
97
read_args_from_config (args )
92
98
93
- with open (args .signing_key_path ) as f :
94
- key = read_signing_keys (f )[0 ]
99
+ if args .signing_key :
100
+ keys = read_signing_keys ([args .signing_key ])
101
+ else :
102
+ with open (args .signing_key_path ) as f :
103
+ keys = read_signing_keys (f )
95
104
96
105
json_to_sign = args .input_data
97
106
if json_to_sign is None :
@@ -107,7 +116,7 @@ Example usage:
107
116
print ("Input json was not an object" , file = sys .stderr )
108
117
sys .exit (1 )
109
118
110
- sign_json (obj , args .server_name , key )
119
+ sign_json (obj , args .server_name , keys [ 0 ] )
111
120
for c in json_encoder .iterencode (obj ):
112
121
args .output .write (c )
113
122
args .output .write ("\n " )
@@ -118,8 +127,17 @@ def read_args_from_config(args: argparse.Namespace) -> None:
118
127
config = yaml .safe_load (fh )
119
128
if not args .server_name :
120
129
args .server_name = config ["server_name" ]
121
- if not args .signing_key_path :
122
- args .signing_key_path = config ["signing_key_path" ]
130
+ if not args .signing_key_path and not args .signing_key :
131
+ if "signing_key" in config :
132
+ args .signing_key = config ["signing_key" ]
133
+ elif "signing_key_path" in config :
134
+ args .signing_key_path = config ["signing_key_path" ]
135
+ else :
136
+ print (
137
+ "A signing key must be given on the commandline or in the config file." ,
138
+ file = sys .stderr ,
139
+ )
140
+ sys .exit (1 )
123
141
124
142
125
143
if __name__ == "__main__" :
0 commit comments