open-vault/sdk/helper
Alexander Scheel 1e6730573c
Add proof possession revocation for PKI secrets engine (#16566)
* Allow Proof of Possession based revocation

Revocation by proof of possession ensures that we have a private key
matching the (provided or stored) certificate. This allows callers to
revoke certificate they own (as proven by holding the corresponding
private key), without having an admin create innumerable ACLs around
the serial_number parameter for every issuance/user.

We base this on Go TLS stack's verification of certificate<->key
matching, but extend it where applicable to ensure curves match, the
private key is indeed valid, and has the same structure as the
corresponding public key from the certificate.

This endpoint currently is authenticated, allowing operators to disable
the endpoint if it isn't desirable to use, via ACL policies.

Signed-off-by: Alexander Scheel <alex.scheel@hashicorp.com>

* Clarify error message on ParseDERKey

Signed-off-by: Alexander Scheel <alex.scheel@hashicorp.com>

* Add changelog entry

Signed-off-by: Alexander Scheel <alex.scheel@hashicorp.com>

* Leave revoke-with-key authenticated

After some discussion, given the potential for DoS (via submitting a lot
of keys/certs to validate, including invalid pairs), it seems best to
leave this as an authenticated endpoint. Presently in Vault, there's no
way to have an authenticated-but-unauthorized path (i.e., one which
bypasses ACL controls), so it is recommended (but not enforced) to make
this endpoint generally available by permissive ACL policies.

Signed-off-by: Alexander Scheel <alex.scheel@hashicorp.com>

* Add API documentation on PoP

Signed-off-by: Alexander Scheel <alex.scheel@hashicorp.com>

* Add acceptance tests for Proof of Possession

Signed-off-by: Alexander Scheel <alex.scheel@hashicorp.com>

* Exercise negative cases in PoP tests

Signed-off-by: Alexander Scheel <alex.scheel@hashicorp.com>

Signed-off-by: Alexander Scheel <alex.scheel@hashicorp.com>
2022-08-16 14:01:26 -04:00
..
authmetadata Migrate to sdk/internalshared libs in go-secure-stdlib (#12090) 2021-07-15 20:17:31 -04:00
base62 Swap out sdk/helper libs with implementations in go-secure-stdlib (#12088) 2021-07-15 01:56:37 -04:00
certutil Add proof possession revocation for PKI secrets engine (#16566) 2022-08-16 14:01:26 -04:00
cidrutil only check Contains if IP address (#14487) 2022-03-15 09:55:50 -06:00
compressutil reformat using 'make fmt' (#13794) 2022-01-27 10:06:34 -08:00
consts Vault-6037 making filesystem permissions check opt-in (#15452) 2022-05-17 11:34:31 -07:00
cryptoutil Create sdk/ and api/ submodules (#6583) 2019-04-12 17:54:35 -04:00
custommetadata VAULT-7256: Add custom_metadata to namespaces (#16640) 2022-08-09 11:38:03 -04:00
dbtxn refactor: replace strings.Replace with strings.ReplaceAll (#15392) 2022-08-03 15:22:48 -04:00
errutil Create sdk/ and api/ submodules (#6583) 2019-04-12 17:54:35 -04:00
hclutil Create sdk/ and api/ submodules (#6583) 2019-04-12 17:54:35 -04:00
identitytpl Add Custom metadata field to alias (#12502) 2021-09-17 11:03:47 -07:00
jsonutil Run a more strict formatter over the code (#11312) 2021-04-08 09:43:39 -07:00
kdf reformat using 'make fmt' (#13794) 2022-01-27 10:06:34 -08:00
keysutil Do not mask RSA verification misuse errors as verification failures (#16695) 2022-08-12 13:53:25 -04:00
ldaputil Fix handling of username_as_alias during LDAP authentication (#15525) 2022-05-20 14:17:26 -07:00
license Create sdk/ and api/ submodules (#6583) 2019-04-12 17:54:35 -04:00
locksutil Create sdk/ and api/ submodules (#6583) 2019-04-12 17:54:35 -04:00
logging Add endpoints to provide ability to modify logging verbosity (#16111) 2022-06-27 11:39:53 -04:00
mlock Swap out sdk/helper libs with implementations in go-secure-stdlib (#12088) 2021-07-15 01:56:37 -04:00
parseutil Swap out sdk/helper libs with implementations in go-secure-stdlib (#12088) 2021-07-15 01:56:37 -04:00
password Swap out sdk/helper libs with implementations in go-secure-stdlib (#12088) 2021-07-15 01:56:37 -04:00
pathmanager Use %q for quoted strings where appropriate (#15216) 2022-08-03 12:32:45 -06:00
pluginutil Revert "AutoMTLS for secrets/auth plugins (#15671)" (#16377) 2022-07-20 10:36:23 -05:00
pointerutil Add int64 pointerutil (#7973) 2019-12-05 14:02:36 -08:00
policyutil Migrate to sdk/internalshared libs in go-secure-stdlib (#12090) 2021-07-15 20:17:31 -04:00
roottoken Add helper for encoding/decoding root tokens and OTP generation in SDK module (#10504) (#10505) 2021-12-01 08:05:49 -05:00
salt Send a test message before committing a new audit device. (#10520) 2020-12-16 16:00:32 -06:00
strutil Swap out sdk/helper libs with implementations in go-secure-stdlib (#12088) 2021-07-15 01:56:37 -04:00
template Migrate to sdk/internalshared libs in go-secure-stdlib (#12090) 2021-07-15 20:17:31 -04:00
tlsutil Swap out sdk/helper libs with implementations in go-secure-stdlib (#12088) 2021-07-15 01:56:37 -04:00
tokenutil Migrate to sdk/internalshared libs in go-secure-stdlib (#12090) 2021-07-15 20:17:31 -04:00
useragent sdk/useragent: plugin version string consistent with Vault version string (#14912) 2022-04-05 10:07:33 -07:00
wrapping Expose secret_id_accessor as WrappedAccessor when wrapping secret-id creation. (#12425) 2021-09-16 10:47:49 -07:00
xor Add helper for encoding/decoding root tokens and OTP generation in SDK module (#10504) (#10505) 2021-12-01 08:05:49 -05:00