Commit Graph
295 Commits
Author SHA1 Message Date
Tobias Brunner 459fcabd9e chunk: Improve constant time comparison for chunks with unequal length
While for most uses the length is fixed and public (e.g. PRF/MAC outputs),
there are a few (e.g. in xauth-generic) that compare variable length
data.

The previous code directly leaked a differing length by short-circuiting
before comparing anything.  While we could limit the comparison by the
minimum length (and call `memeq_const()`), that could still leak the
length because the time will plateau once the secret's length is reached.
Similarly, if the comparison was bound by the longer chunk (would prevent
the use of `memeq_const()`), the length could also be revealed once the
input gets longer than the secret and the time increases.

This changes the semantics of the function by declaring the first
argument the expected/reference secret and the second the variable input.
This strictly makes the function constant-time, bound by the secret's
length.  So the length can't be guessed by providing different input (but
if an attacker can trigger the comparison against different secrets, of
potentially known lengths, it might still be possible).  If the chunks
are known to have the same length, the order doesn't matter.

Callers of this function have been updated accordingly.
2026-07-24 08:47:39 +02:00
Tobias Brunner a1ad9e39fc pki: Make sure options array passed to getopt_long() ends with a NULL entry 2026-05-19 17:27:33 +02:00
Tobias Brunner ec2d1dc911 Use distinct identifier for "command" group in pki/swanctl to fix apidoc 2026-03-02 16:45:01 +01:00
Tobias Brunner d5e95342b5 swanctl: Check for conflicts with existing and shared options when registering commands 2026-02-23 11:25:00 +01:00
Tobias Brunner d25b5db9ba pki: Avoid conflict between --verify and --debug
Add shared options to the man page.
2026-02-23 11:24:56 +01:00
Tobias Brunner be68bd50b7 pki: Add global --debug and --options arguments
This allows setting the log level before initializing the library and
loading the plugins, as well as having the top-level command itself in
an options file.
2026-02-06 11:21:34 +01:00
Tobias Brunner eaf0c22e8e Fixed some typos, courtesy of codespell 2025-10-17 17:20:13 +02:00
Tobias Brunner 37ec770758 pki: Reduce indentation in usage output and print command description
Also print error message at the end of the output.
2025-05-27 17:38:32 +02:00
Tobias Brunner a7b5de5690 pki: Fix signature of help() to match that of a callback in command_t 2025-03-19 10:22:37 +01:00
Andreas Steffen 4833f29b15 bliss: Remove legacy BLISS signatures 2024-11-22 14:05:36 +01:00
Andreas Steffen ad08ced8b2 pki: Added key and cert handles to --ocsp command 2024-02-21 12:22:33 +01:00
Tobias Brunner 945be4ece5 pki: Generate internal error OCSP response if no signer certificate is found
That can happen if a request is sent to the wrong OCSP server.
2023-11-24 17:41:18 +01:00
Tobias Brunner 14cc5b845e pki: Mention --index in description 2023-11-15 15:16:51 +01:00
Tobias Brunner 724e64cac4 Move ocsp_responder_t interface as it's not a certificate 2023-11-14 10:35:47 +01:00
Tobias Brunner 14bd0bc743 Fixed some typos, courtesy of codespell 2023-11-14 10:11:16 +01:00
Tobias Brunner 5764e1e506 pki: Pre-process common arguments
This way the position of --debug doesn't matter for it to apply to the
parsing of all command-specific arguments.
2023-11-13 12:50:47 +01:00
Tobias Brunner 95c7d49954 pki: Add option to load certificate status information from index.txt
Each index.txt is associated with the most recently loaded CA
certificate.
2023-11-13 12:50:47 +01:00
Tobias Brunner f26ca67d8c pki: Add index.txt-based OCSP responder 2023-11-13 12:50:47 +01:00
Tobias Brunner 3e42b2f5cb pki: Drop legacy registration for OCSP responders 2023-11-13 12:50:45 +01:00
Tobias Brunner 515cecfe3e pki: Use OCSP responder manager for --ocsp --respond 2023-11-13 12:50:22 +01:00
Andreas Steffen 821d7784a3 man: Extended pki man page and added pki --ocsp man page 2023-11-13 12:40:58 +01:00
Andreas Steffen a0c9f9b842 pki: Added ocsp command
The pki --ocsp command implements an OCSP responder.
2023-11-13 12:40:58 +01:00
Andreas Steffen ec325b4c09 pki: Added ocsp-req and ocsp-rsp types to pki --print 2023-11-13 12:40:58 +01:00
Andreas Steffen 24d45de633 crl-reason: Fixed typo 2023-11-13 12:40:52 +01:00
Andreas Steffen 09e2a9ff50 pki --pkcs7: Set default to res = 1 2023-11-13 12:39:10 +01:00
Tobias Brunner b7d7a6be3a pki: Make sure to wipe decrypted PKCS#7 data 2023-07-26 15:08:33 +02:00
Tobias Brunner c593443432 pki: Add --label options to --est* command synopsis
Also fixes some formatting in the man pages.
2023-06-02 12:56:03 +02:00
Tobias Brunner 5f8eb09dd6 pki: Make --dn optional for certificate renewals via --scep command
When using OpenXPKI, the subject DN in the renewal request has to match
the previous DN exactly.  However, because OpenXPKI may add a bunch of
DC/O RDNs to subjects of issued certificates, running --scep with the
same --dn that was used for the original request won't work (results in
a "Client error / malformed request badRequest" error even after enabling
`renewal_via_pkcs_req`).  This simplifies renewals as --dn can just be
omitted and extracted from the original certificate to avoid this issue.

References strongswan/strongswan#1689
2023-05-17 15:56:12 +02:00
Tobias Brunner 3804b2adf9 pki: Fix build with DEBUG_LEVEL < 1 2023-05-08 17:32:18 +02:00
Harald Gutmann 5284cecddc pki: Filter whitespace in base64 encoded EST responses
As clarified in RFC 8951, section 3.1 [1].

[1] https://www.rfc-editor.org/rfc/rfc8951#name-white-space-processing

Co-authored-by: Tobias Brunner <[email protected]>
Closes strongswan/strongswan#1616
2023-04-03 15:10:37 +02:00
Harald Gutmann f6dc47f591 pki: Add support for EST server label
As specified in EST RFC 7030, Section 3.1 [1].

[1] https://www.rfc-editor.org/rfc/rfc7030.html#section-3.1
2023-04-03 13:59:48 +02:00
Tobias Brunner b4e1863fa6 pki: Allow specifying signature scheme for PKCS#7 signatures
Also changed the error handling a bit so it is more like in the other
pki commands.
2023-03-31 09:11:20 +02:00
Tobias Brunner e2a2674476 pki: Unify parsing of RSA padding scheme and fix disabling PSS
If PSS padding is enabled by default, not all commands allowed disabling
it explicitly.
2023-03-31 09:11:17 +02:00
Tobias Brunner 8bf683c469 pki: Fix enum for SCEP CA capabilities
As indicated by the comparisons and the parsing in scep_parse_caps()
this should be a bitmask.

Fixes: 7c7a5a0260 ("pki: Enroll an X.509 certificate with a SCEP server")
Closes strongswan/strongswan#1607
2023-03-21 16:11:49 +01:00
Tobias Brunner 8e9b2bd27f pki: Add possibility to add/remove flags in requests when issuing certificates 2023-02-23 17:36:38 +01:00
Tobias Brunner 8325eeff06 pki: Allow overriding EKU flags from certificate request via command line
The flags encoded in the PKCS#10 structure (or derived from the encoded
profile name) might not be appropriate in some instances. This allows
overriding them without having to issue a new certificate request.
2023-02-23 16:55:57 +01:00
Andreas Steffen 8effb06d6c pki: Use X.509v3 EKU extension in CSR 2023-01-11 19:19:09 +01:00
Andreas Steffen 18082ce2b0 certificates: Retrieve serial numbers in canonical form
The x509 plugin retrieves serial numbers with two's complement
encoding whereas the openssl plugin partially returns them without
leading zeroes.

Serial numbers in X.509 certificates, X.509 CRL, X.509 attribute
certificates, OCSP Requests and OCSP responses are now returned in
canonical form without prepended zero octets.
2022-12-05 20:18:24 +01:00
Tobias Brunner 7f46c76125 Make functions static that are only accessed from the same compilation unit
Also removed some declarations for undefined functions.
2022-10-05 19:00:46 +02:00
Andreas Steffen 6bf60221f5 pkcs7: Support rsa-pss signatures 2022-10-03 09:52:07 +02:00
Tobias Brunner 3da4ac8ef6 pki: Remove superfluous ; when initializing EST client 2022-09-29 11:34:50 +02:00
Tobias Brunner 0cbd1ad892 pki: Fix formatting and use else if to make Coverity happy 2022-09-28 15:07:37 +02:00
Tobias Brunner 7c9ccceec8 Fixed some typos, courtesy of codespell 2022-09-27 17:46:27 +02:00
Andreas Steffen 063ef084e4 pki: Base64 encoding of username:password in HTTP basic authentication 2022-09-20 11:07:33 +02:00
Martin Willi a708e96906 pki: Always and implicitly use base64 encoding for EST requests/response
Content-Transfer-Encoding is actually not a valid HTTP header, but a MIME
header, and must not be used. The original RFC7030 specifies this wrong,
and an errata discusses this issue.

The use of base64 encoding has been clarified in RFC8951, and the
recommendation is to always use/expect base64 encoding, but not send/expect
the Content-Transfer-Encoding header.
2022-09-20 11:07:33 +02:00
Tobias Brunner 231df029b0 pki: Add SCEP utility functions and enums to Doxygen doc 2022-09-20 10:18:36 +02:00
Tobias Brunner ffada7cb5a pki: Correctly use int as precision specifier when printing PEM certificate 2022-09-14 17:38:59 +02:00
Andreas Steffen 3fa3d2666a pki: pki --req can use old certreq as template
When an X.509 certificate has to be renewed it is helpful to use
the old PKCS#10 certificate request as a template, so that the
distinguishedName (DN), the subjectAlternativeName (SAN) and
a certificate profile name don't have to be typed-in again.

The old public key in the existing certreq is replaced with the
new key and the signature is re-generated using the new private key.
2022-08-31 15:10:34 +02:00
Andreas Steffen 359b5739f4 pki: Fixed memory leak in pki --scep 2022-08-28 11:42:13 +02:00
Andreas Steffen 3b2b7a3bee pki: Fixed filenames in pki --estca/--scepca man pages 2022-08-27 09:51:05 +02:00