Skip to content

Commit b406825

Browse files
committed
More cleanup
Signed-off-by: Scott R. Shinn <scott@atomicorp.com>
1 parent 703802d commit b406825

2 files changed

Lines changed: 19 additions & 44 deletions

File tree

chelon.spec

Lines changed: 3 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Name: chelon
22
Version: 1.0.0
3-
Release: 7%{?dist}
3+
Release: 12%{?dist}
44
Summary: Remote GPG package signing service
55

66
License: GPL-2.0-or-later
@@ -138,40 +138,5 @@ fi
138138
%{python3_sitelib}/__pycache__/
139139

140140
%changelog
141-
* Thu Jan 08 2026 Atomicorp <support@atomicorp.com> - 1.0.0-7
142-
- Fix: Ensure chelon_client.py is installed to site-packages (spec file fix)
143-
144-
* Thu Jan 08 2026 Atomicorp <support@atomicorp.com> - 1.0.0-6
145-
- Move chelon_client.py to site-packages for standard import resolution
146-
147-
* Thu Jan 08 2026 Atomicorp <support@atomicorp.com> - 1.0.0-5
148-
- Fix python import path for client library in chelon-sign
149-
150-
* Thu Jan 08 2026 Atomicorp <support@atomicorp.com> - 1.0.0-4
151-
- Support dynamic key names in chelon-sign (removed hardcoded Key IDs)
152-
- Added --key-name alias for --key-type
153-
154-
* Wed Jan 07 2026 Atomicorp <support@atomicorp.com> - 1.0.0-3
155-
- Consolidate chelon-sign-rpm and chelon-sign-repomd into chelon-sign
156-
- Security: Sanitize script paths in RPM macros
157-
- Security: Optimize DoS protection with chunked reading
158-
- Fix: Add error handling for malformed base64 signatures
159-
- Fix: Improve client certificate fallback logic
160-
161-
* Wed Jan 07 2026 Atomicorp <support@atomicorp.com> - 1.0.0-2
162-
- Split into server and client subpackages
163-
- Add client signing tools (chelon-sign-rpm, chelon-sign-repomd)
164-
- Add binary data signing support
165-
- Update HTTP API endpoints and request/response formats
166-
- Unified logging to journald/syslog
167-
- Enhanced audit logging with request tracing
168-
- Fixed hardcoded admin tool paths
169-
- Code review fixes: config ownership, SSL validation, payload size checks
170-
171-
* Tue Jan 06 2026 Atomicorp <support@atomicorp.com> - 1.0.0-1
172-
- Initial package
173-
- Flask-based HTTP API for remote signing
174-
- Support for Legacy and Modern GPG keys
175-
- Token-based authentication
176-
- Audit logging
177-
- Default port: 5050
141+
* Thu Jan 08 2026 Atomicorp <support@atomicorp.com> - 1.0.0-12
142+
- Initial release

tools/chelon-sign

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -130,8 +130,10 @@ def gpg_mode(args: List[str]):
130130
data = f.read()
131131

132132
# Determine key type from key_id (mapping logic)
133-
# In this wrapper, we rely on env CHELON_KEY_TYPE or default to modern
134-
key_type = os.environ.get('CHELON_KEY_TYPE', 'modern')
133+
key_type = os.environ.get('CHELON_KEY') or os.environ.get('CHELON_KEY_TYPE')
134+
if not key_type:
135+
print("Error: No key specified via environment (CHELON_KEY).", file=sys.stderr)
136+
sys.exit(1)
135137

136138
# Initialize client
137139
try:
@@ -321,8 +323,8 @@ def main():
321323
help='Signing type (default: guess from extension or "rpm")')
322324
parser.add_argument('--resign', action='store_true', help='Embed signature into RPM header (requires rpmsign, implies --type rpm)')
323325
parser.add_argument('-o', '--output', help='Output signature file (default: <file>.asc, only for detached)')
324-
parser.add_argument('-k', '--key-type', '--key-name', dest='key_type', default='modern',
325-
help='GPG key name/type (default: modern)') # --key-name is alias
326+
parser.add_argument('-k', '--key', '--key-name', dest='key_name', metavar='KEY',
327+
help='GPG key name')
326328
parser.add_argument('--insecure', action='store_true', help='Disable SSL certificate verification')
327329
parser.add_argument('-v', '--verbose', action='store_true', help='Verbose output')
328330

@@ -342,17 +344,25 @@ def main():
342344
op_type = 'rpm'
343345

344346
try:
347+
# Validate key_name presence or fallback to env
348+
key_name = args.key_name
349+
if not key_name:
350+
key_name = os.environ.get('CHELON_KEY') or os.environ.get('CHELON_KEY_TYPE')
351+
352+
if not key_name:
353+
parser.error("GPG key name is required (-k/--key or CHELON_KEY env var)")
354+
345355
if args.resign:
346356
if op_type != 'rpm':
347357
print("Error: --resign is only supported for RPM files", file=sys.stderr)
348358
return 1
349-
success = sign_rpm_integrated(args.file, key_type=args.key_type, verbose=args.verbose)
359+
success = sign_rpm_integrated(args.file, key_type=key_name, verbose=args.verbose)
350360
return 0 if success else 1
351361
else:
352362
output_file = sign_file_detached(
353363
args.file,
354364
output_path=args.output,
355-
key_type=args.key_type,
365+
key_type=key_name,
356366
operation=op_type,
357367
verbose=args.verbose
358368
)

0 commit comments

Comments
 (0)