Skip to content

Commit 6de0ef0

Browse files
authored
Merge pull request #3223 from Saurabh825/openssl
openssl: update to OpenSSL master
2 parents cba66db + 6b96017 commit 6de0ef0

40 files changed

+78
-226
lines changed

completers/common/openssl_completer/cmd/action/action.go

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -8,25 +8,6 @@ import (
88
"github.com/spf13/cobra"
99
)
1010

11-
// ActionEngines completes OpenSSL engines
12-
//
13-
// dynamic (Dynamic engine loading support)
14-
// rdrand (Intel RDRAND engine)
15-
func ActionEngines() carapace.Action {
16-
return carapace.ActionExecCommand("openssl", "engine")(func(output []byte) carapace.Action {
17-
re := regexp.MustCompile(`\(([^)]+)\)\s+(.+)`)
18-
lines := strings.Split(string(output), "\n")
19-
20-
var values []string
21-
for _, line := range lines {
22-
if match := re.FindStringSubmatch(line); match != nil {
23-
values = append(values, match[1], match[2])
24-
}
25-
}
26-
return carapace.ActionValuesDescribed(values...)
27-
})
28-
}
29-
3011
// ActionDigestAlgorithms completes message digest algorithms
3112
//
3213
// BLAKE2b512

completers/common/openssl_completer/cmd/ca.go

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package cmd
22

33
import (
44
"github.com/carapace-sh/carapace"
5-
"github.com/carapace-sh/carapace-bin/completers/common/openssl_completer/cmd/action"
65
"github.com/carapace-sh/carapace-bin/completers/common/openssl_completer/cmd/common"
76
"github.com/spf13/cobra"
87
)
@@ -35,7 +34,6 @@ func init() {
3534
caCmd.Flags().StringSliceS("dateopt", "dateopt", nil, "Datetime format used for printing. (rfc_822/iso_8601). Default is rfc_822.")
3635
caCmd.Flags().StringS("days", "days", "", "Number of days from today to certify the cert for")
3736
caCmd.Flags().StringS("enddate", "enddate", "", "[CC]YYMMDDHHMMSSZ value for notAfter certificate field, overrides -days")
38-
caCmd.Flags().StringS("engine", "engine", "", "Use engine, possibly a hardware device")
3937
caCmd.Flags().StringS("extensions", "extensions", "", "Extension section (override value in config file)")
4038
caCmd.Flags().StringS("extfile", "extfile", "", "Configuration file with X509v3 extensions to add")
4139
caCmd.Flags().BoolS("gencrl", "gencrl", false, "Generate a new CRL")
@@ -44,7 +42,7 @@ func init() {
4442
caCmd.Flags().StringS("inform", "inform", "", "CSR input format to use (PEM or DER; by default try PEM first)")
4543
caCmd.Flags().StringS("key", "key", "", "Key to decrypt the private key or cert files if encrypted. Better use -passin")
4644
caCmd.Flags().StringS("keyfile", "keyfile", "", "The CA private key")
47-
caCmd.Flags().StringS("keyform", "keyform", "", "Private key file format (ENGINE, other values ignored)")
45+
caCmd.Flags().StringS("keyform", "keyform", "", "Private key file format (DER/PEM)")
4846
caCmd.Flags().StringS("md", "md", "", "Digest to use, such as sha256")
4947
caCmd.Flags().BoolS("msie_hack", "msie_hack", false, "msie modifications to handle all Universal Strings")
5048
caCmd.Flags().BoolS("multivalue-rdn", "multivalue-rdn", false, "Deprecated; multi-valued RDNs support is always on.")
@@ -86,12 +84,11 @@ func init() {
8684
"cert": carapace.ActionFiles(),
8785
"certform": carapace.ActionValues("DER", "PEM", "P12"),
8886
"config": carapace.ActionFiles(),
89-
"engine": action.ActionEngines(),
9087
"extfile": carapace.ActionFiles(),
9188
"in": carapace.ActionFiles(),
9289
"inform": carapace.ActionValues("DER", "PEM"),
9390
"keyfile": carapace.ActionFiles(),
94-
"keyform": carapace.ActionValues("ENGINE", "DER", "PEM", "P12"),
91+
"keyform": carapace.ActionValues("DER", "PEM", "P12"),
9592
"out": carapace.ActionFiles(),
9693
"outdir": carapace.ActionDirectories(),
9794
"revoke": carapace.ActionFiles(),

completers/common/openssl_completer/cmd/ciphers.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ func init() {
2222
ciphersCmd.Flags().BoolS("psk", "psk", false, "Include ciphersuites requiring PSK")
2323
ciphersCmd.Flags().BoolS("s", "s", false, "Only supported ciphers")
2424
ciphersCmd.Flags().BoolS("srp", "srp", false, "(deprecated) Include ciphersuites requiring SRP")
25-
ciphersCmd.Flags().BoolS("ssl3", "ssl3", false, "Ciphers compatible with SSL3")
2625
ciphersCmd.Flags().BoolS("stdname", "stdname", false, "Show standard cipher names")
2726
ciphersCmd.Flags().BoolS("tls1", "tls1", false, "Ciphers compatible with TLS1")
2827
ciphersCmd.Flags().BoolS("tls1_1", "tls1_1", false, "Ciphers compatible with TLS1.1")

completers/common/openssl_completer/cmd/cmp.go

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,13 @@ package cmd
22

33
import (
44
"github.com/carapace-sh/carapace"
5-
"github.com/carapace-sh/carapace-bin/completers/common/openssl_completer/cmd/action"
65
"github.com/carapace-sh/carapace-bin/completers/common/openssl_completer/cmd/common"
76
"github.com/spf13/cobra"
87
)
98

109
var cmpCmd = &cobra.Command{
1110
Use: "cmp",
12-
Short: "Certificate Management Protocol (CMP, RFC 4210) application",
11+
Short: "Certificate Management Protocol (CMP, RFCs 9810 and 9811) application",
1312
GroupID: "standard",
1413
Run: func(cmd *cobra.Command, args []string) {},
1514
}
@@ -36,8 +35,7 @@ func init() {
3635
cmpCmd.Flags().StringS("csr", "csr", "", "PKCS#10 CSR file in PEM or DER format to convert or to use in p10cr")
3736
cmpCmd.Flags().StringS("days", "days", "", "Requested validity time of the new certificate in number of days")
3837
cmpCmd.Flags().StringS("digest", "digest", "", "Digest to use in message protection and POPO signatures. Default \"sha256\"")
39-
cmpCmd.Flags().BoolS("disable_confirm", "disable_confirm", false, "Do not confirm newly enrolled certificate w/o requesting implicit confirmation. WARNING: This leads to behavior violating RFC 4210")
40-
cmpCmd.Flags().StringS("engine", "engine", "", "Use crypto engine with given identifier, possibly a hardware device. Engines may also be defined in OpenSSL config file engine section.")
38+
cmpCmd.Flags().BoolS("disable_confirm", "disable_confirm", false, "Do not confirm newly enrolled certificate w/o requesting implicit confirmation. WARNING: This leads to behavior violating RFC 9810")
4139
cmpCmd.Flags().StringS("expect_sender", "expect_sender", "", "DN of expected sender of responses. Defaults to subject of -srvcert, if any")
4240
cmpCmd.Flags().StringS("extracerts", "extracerts", "", "Certificates to append in extraCerts field of outgoing messages. This can be used as the default CMP signer cert chain to include")
4341
cmpCmd.Flags().StringS("extracertsout", "extracertsout", "", "File to save extra certificates received in the extraCerts field")
@@ -51,7 +49,7 @@ func init() {
5149
cmpCmd.Flags().StringS("issuer", "issuer", "", "DN of the issuer to place in the certificate template of ir/cr/kur/rr; also used as recipient if neither -recipient nor -srvcert are given")
5250
cmpCmd.Flags().StringS("keep_alive", "keep_alive", "", "Persistent HTTP connections. 0: no, 1 (the default): request, 2: require")
5351
cmpCmd.Flags().StringS("key", "key", "", "CMP signer private key, not used when -secret given")
54-
cmpCmd.Flags().StringS("keyform", "keyform", "", "Format of the key input (ENGINE, other values ignored)")
52+
cmpCmd.Flags().StringS("keyform", "keyform", "", "Format of the key input (DER/PEM/P12)")
5553
cmpCmd.Flags().StringS("keypass", "keypass", "", "Client private key (and cert and old cert) pass phrase source")
5654
cmpCmd.Flags().StringS("keyspec", "keyspec", "", "Optional file to save Key specification received in genp of type certReqTemplate")
5755
cmpCmd.Flags().StringS("mac", "mac", "", "MAC algorithm to use in PBM-based message protection. Default \"hmac-sha1\"")
@@ -107,7 +105,7 @@ func init() {
107105
cmpCmd.Flags().StringS("secret", "secret", "", "Prefer PBM (over signatures) for protecting msgs with given password source")
108106
cmpCmd.Flags().StringS("section", "section", "", "Section(s) in config file to get options from. \"\" = 'default'. Default 'cmp'")
109107
cmpCmd.Flags().BoolS("send_error", "send_error", false, "Force server to reply with error message")
110-
cmpCmd.Flags().BoolS("send_unprot_err", "send_unprot_err", false, "In case of negative responses, server shall send unprotected error messages, certificate responses (ip/cp/kup), and revocation responses (rp). WARNING: This setting leads to behavior violating RFC 4210")
108+
cmpCmd.Flags().BoolS("send_unprot_err", "send_unprot_err", false, "In case of negative responses, server shall send unprotected error messages, certificate responses (ip/cp/kup), and revocation responses (rp). WARNING: This setting leads to behavior violating RFC 9810")
111109
cmpCmd.Flags().BoolS("send_unprotected", "send_unprotected", false, "Send response messages without CMP-level protection")
112110
cmpCmd.Flags().StringS("serial", "serial", "", "Serial number of certificate to be revoked in revocation request (rr)")
113111
cmpCmd.Flags().StringS("server", "server", "", "[http[s]://]address[:port][/path] of CMP server. Default port 80 or 443. address may be a DNS name or an IP address; path can be overridden by -path")
@@ -122,6 +120,7 @@ func init() {
122120
cmpCmd.Flags().StringS("srvcertout", "srvcertout", "", "File to save the server cert used and validated for CMP response protection")
123121
cmpCmd.Flags().StringS("statusstring", "statusstring", "", "Status string to be included in server response")
124122
cmpCmd.Flags().StringS("subject", "subject", "", "Distinguished Name (DN) of subject to use in the requested cert template For kur, default is subject of -csr arg or reference cert (see -oldcert) this default is used for ir and cr only if no Subject Alt Names are set")
123+
cmpCmd.Flags().BoolS("ta_in_ip_extracerts", "ta_in_ip_extracerts", false, "Permit using self-issued certificates from the extraCerts in an IP message as trust anchors under conditions defined by 3GPP TS 33.310 WARNING: This setting leads to behavior allowing violation of RFC 9810")
125124
cmpCmd.Flags().StringS("template", "template", "", "File to save certTemplate received in genp of type certReqTemplate")
126125
cmpCmd.Flags().StringS("tls_cert", "tls_cert", "", "Client's TLS certificate. May include chain to be provided to TLS server")
127126
cmpCmd.Flags().StringS("tls_extra", "tls_extra", "", "Extra certificates to provide to TLS server during TLS handshake")
@@ -132,7 +131,7 @@ func init() {
132131
cmpCmd.Flags().BoolS("tls_used", "tls_used", false, "Enable using TLS (also when other TLS options are not set)")
133132
cmpCmd.Flags().StringS("total_timeout", "total_timeout", "", "Overall time an enrollment incl. polling may take. Default 0 = infinite")
134133
cmpCmd.Flags().StringS("trusted", "trusted", "", "Certificates to use as trust anchors when verifying signed CMP responses unless -srvcert is given")
135-
cmpCmd.Flags().BoolS("unprotected_errors", "unprotected_errors", false, "Accept missing or invalid protection of regular error messages and negative certificate responses (ip/cp/kup), revocation responses (rp), and PKIConf WARNING: This setting leads to behavior allowing violation of RFC 4210")
134+
cmpCmd.Flags().BoolS("unprotected_errors", "unprotected_errors", false, "Accept missing or invalid protection of regular error messages and negative certificate responses (ip/cp/kup), revocation responses (rp), and PKIConf WARNING: This setting leads to behavior allowing violation of RFC 9810")
136135
cmpCmd.Flags().BoolS("unprotected_requests", "unprotected_requests", false, "Send request messages without CMP-level protection")
137136
cmpCmd.Flags().StringS("untrusted", "untrusted", "", "Intermediate CA certs for chain construction for CMP/TLS/enrolled certs")
138137
cmpCmd.Flags().BoolS("use_mock_srv", "use_mock_srv", false, "Use internal mock server at API level, bypassing socket-based HTTP")
@@ -161,11 +160,10 @@ func init() {
161160
"crlform": carapace.ActionValues("DER", "PEM"),
162161
"crlout": carapace.ActionFiles(),
163162
"csr": carapace.ActionFiles(),
164-
"engine": action.ActionEngines(),
165163
"extracerts": carapace.ActionFiles(),
166164
"extracertsout": carapace.ActionFiles(),
167165
"key": carapace.ActionFiles(),
168-
"keyform": carapace.ActionValues("ENGINE", "DER", "PEM", "P12"),
166+
"keyform": carapace.ActionValues("DER", "PEM", "P12"),
169167
"keyspec": carapace.ActionFiles(),
170168
"newkey": carapace.ActionFiles(),
171169
"newkeyout": carapace.ActionFiles(),

completers/common/openssl_completer/cmd/cms.go

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package cmd
22

33
import (
44
"github.com/carapace-sh/carapace"
5-
"github.com/carapace-sh/carapace-bin/completers/common/openssl_completer/cmd/action"
65
"github.com/carapace-sh/carapace-bin/completers/common/openssl_completer/cmd/common"
76
"github.com/spf13/cobra"
87
)
@@ -46,14 +45,13 @@ func init() {
4645
cmsCmd.Flags().BoolS("digest_verify", "digest_verify", false, "Verify a CMS \"DigestedData\" object and output it")
4746
cmsCmd.Flags().StringS("econtent_type", "econtent_type", "", "OID for external content")
4847
cmsCmd.Flags().BoolS("encrypt", "encrypt", false, "Encrypt message")
49-
cmsCmd.Flags().StringS("engine", "engine", "", "Use engine e, possibly a hardware device")
5048
cmsCmd.Flags().StringS("from", "from", "", "From address")
5149
cmsCmd.Flags().StringS("in", "in", "", "Input file")
5250
cmsCmd.Flags().BoolS("indef", "indef", false, "Same as -stream")
5351
cmsCmd.Flags().StringS("inform", "inform", "", "Input format SMIME (default), PEM or DER")
5452
cmsCmd.Flags().StringS("inkey", "inkey", "", "Input private key (if not signer or recipient)")
5553
cmsCmd.Flags().StringS("kekcipher", "kekcipher", "", "The key encryption algorithm to use")
56-
cmsCmd.Flags().StringS("keyform", "keyform", "", "Input private key format (ENGINE, other values ignored)")
54+
cmsCmd.Flags().StringS("keyform", "keyform", "", "Input private key format (DER/PEM)")
5755
cmsCmd.Flags().BoolS("keyid", "keyid", false, "Use subject key identifier")
5856
cmsCmd.Flags().StringSliceS("keyopt", "keyopt", nil, "Set public key parameters as n:v pairs")
5957
cmsCmd.Flags().StringS("md", "md", "", "Digest algorithm to use")
@@ -116,11 +114,10 @@ func init() {
116114
"certsout": carapace.ActionFiles(),
117115
"config": carapace.ActionFiles(),
118116
"content": carapace.ActionFiles(),
119-
"engine": action.ActionEngines(),
120117
"in": carapace.ActionFiles(),
121118
"inform": carapace.ActionValues("DER", "PEM", "SMIME"),
122119
"inkey": carapace.ActionFiles(),
123-
"keyform": carapace.ActionValues("ENGINE", "DER", "PEM", "P12"),
120+
"keyform": carapace.ActionValues("DER", "PEM", "P12"),
124121
"originator": carapace.ActionFiles(),
125122
"out": carapace.ActionFiles(),
126123
"outform": carapace.ActionValues("DER", "PEM", "SMIME"),

completers/common/openssl_completer/cmd/dgst.go

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package cmd
22

33
import (
44
"github.com/carapace-sh/carapace"
5-
"github.com/carapace-sh/carapace-bin/completers/common/openssl_completer/cmd/action"
65
"github.com/carapace-sh/carapace-bin/completers/common/openssl_completer/cmd/common"
76
"github.com/spf13/cobra"
87
)
@@ -21,12 +20,12 @@ func init() {
2120
dgstCmd.Flags().BoolS("c", "c", false, "Print the digest with separating colons")
2221
dgstCmd.Flags().BoolS("d", "d", false, "Print debug info")
2322
dgstCmd.Flags().BoolS("debug", "debug", false, "Print debug info")
24-
dgstCmd.Flags().StringS("engine", "engine", "", "Use engine e, possibly a hardware device")
25-
dgstCmd.Flags().BoolS("engine_impl", "engine_impl", false, "Also use engine given by -engine for digest operations")
2623
dgstCmd.Flags().BoolS("fips-fingerprint", "fips-fingerprint", false, "Compute HMAC with the key used in OpenSSL-FIPS fingerprint")
2724
dgstCmd.Flags().BoolS("hex", "hex", false, "Print as hex dump")
2825
dgstCmd.Flags().StringS("hmac", "hmac", "", "Create hashed MAC with key")
29-
dgstCmd.Flags().StringS("keyform", "keyform", "", "Key file format (ENGINE, other values ignored)")
26+
dgstCmd.Flags().StringS("hmac-env", "hmac-env", "", "Create hashed MAC with key from environment variable")
27+
dgstCmd.Flags().BoolS("hmac-stdin", "hmac-stdin", false, "Create hashed MAC with key from stdin")
28+
dgstCmd.Flags().StringS("keyform", "keyform", "", "Key file format (DER/PEM)")
3029
dgstCmd.Flags().BoolS("list", "list", false, "List digests")
3130
dgstCmd.Flags().StringS("mac", "mac", "", "Create MAC (not necessarily HMAC)")
3231
dgstCmd.Flags().StringSliceS("macopt", "macopt", nil, "MAC algorithm parameters in n:v form or key")
@@ -44,8 +43,7 @@ func init() {
4443
rootCmd.AddCommand(dgstCmd)
4544

4645
carapace.Gen(dgstCmd).FlagCompletion(carapace.ActionMap{
47-
"engine": action.ActionEngines(),
48-
"keyform": carapace.ActionValues("ENGINE", "DER", "PEM", "P12"),
46+
"keyform": carapace.ActionValues("DER", "PEM", "P12"),
4947
"out": carapace.ActionFiles(),
5048
"prverify": carapace.ActionFiles(),
5149
"sign": carapace.ActionFiles(),

completers/common/openssl_completer/cmd/dhparam.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package cmd
22

33
import (
44
"github.com/carapace-sh/carapace"
5-
"github.com/carapace-sh/carapace-bin/completers/common/openssl_completer/cmd/action"
65
"github.com/carapace-sh/carapace-bin/completers/common/openssl_completer/cmd/common"
76
"github.com/spf13/cobra"
87
)
@@ -22,7 +21,6 @@ func init() {
2221
dhparamCmd.Flags().BoolS("5", "5", false, "Generate parameters using 5 as the generator value")
2322
dhparamCmd.Flags().BoolS("check", "check", false, "Check the DH parameters")
2423
dhparamCmd.Flags().BoolS("dsaparam", "dsaparam", false, "Read or generate DSA parameters, convert to DH")
25-
dhparamCmd.Flags().StringS("engine", "engine", "", "Use engine e, possibly a hardware device")
2624
dhparamCmd.Flags().StringS("in", "in", "", "Input file")
2725
dhparamCmd.Flags().StringS("inform", "inform", "", "Input format, DER or PEM")
2826
dhparamCmd.Flags().BoolS("noout", "noout", false, "Don't output any DH parameters")
@@ -36,7 +34,6 @@ func init() {
3634
rootCmd.AddCommand(dhparamCmd)
3735

3836
carapace.Gen(dhparamCmd).FlagCompletion(carapace.ActionMap{
39-
"engine": action.ActionEngines(),
4037
"in": carapace.ActionFiles(),
4138
"inform": carapace.ActionValues("DER", "PEM"),
4239
"out": carapace.ActionFiles(),

completers/common/openssl_completer/cmd/dsa.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package cmd
22

33
import (
44
"github.com/carapace-sh/carapace"
5-
"github.com/carapace-sh/carapace-bin/completers/common/openssl_completer/cmd/action"
65
"github.com/carapace-sh/carapace-bin/completers/common/openssl_completer/cmd/common"
76
"github.com/spf13/cobra"
87
)
@@ -17,7 +16,6 @@ var dsaCmd = &cobra.Command{
1716
func init() {
1817
carapace.Gen(dsaCmd).Standalone()
1918

20-
dsaCmd.Flags().StringS("engine", "engine", "", "Use engine e, possibly a hardware device")
2119
dsaCmd.Flags().StringS("in", "in", "", "Input key")
2220
dsaCmd.Flags().StringS("inform", "inform", "", "Input format (DER/PEM/PVK); has no effect")
2321
dsaCmd.Flags().BoolS("modulus", "modulus", false, "Print the DSA public value")
@@ -36,7 +34,6 @@ func init() {
3634
rootCmd.AddCommand(dsaCmd)
3735

3836
carapace.Gen(dsaCmd).FlagCompletion(carapace.ActionMap{
39-
"engine": action.ActionEngines(),
4037
"in": carapace.ActionFiles(),
4138
"inform": carapace.ActionValues("DER", "PEM"),
4239
"out": carapace.ActionFiles(),

completers/common/openssl_completer/cmd/dsaparam.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package cmd
22

33
import (
44
"github.com/carapace-sh/carapace"
5-
"github.com/carapace-sh/carapace-bin/completers/common/openssl_completer/cmd/action"
65
"github.com/carapace-sh/carapace-bin/completers/common/openssl_completer/cmd/common"
76
"github.com/spf13/cobra"
87
)
@@ -17,7 +16,6 @@ var dsaparamCmd = &cobra.Command{
1716
func init() {
1817
carapace.Gen(dsaparamCmd).Standalone()
1918

20-
dsaparamCmd.Flags().StringS("engine", "engine", "", "Use engine e, possibly a hardware device")
2119
dsaparamCmd.Flags().BoolS("genkey", "genkey", false, "Generate a DSA key")
2220
dsaparamCmd.Flags().StringS("in", "in", "", "Input file")
2321
dsaparamCmd.Flags().StringS("inform", "inform", "", "Input format - DER or PEM")
@@ -32,7 +30,6 @@ func init() {
3230
rootCmd.AddCommand(dsaparamCmd)
3331

3432
carapace.Gen(dsaparamCmd).FlagCompletion(carapace.ActionMap{
35-
"engine": action.ActionEngines(),
3633
"in": carapace.ActionFiles(),
3734
"inform": carapace.ActionValues("DER", "PEM"),
3835
"out": carapace.ActionFiles(),

0 commit comments

Comments
 (0)