Repository navigation
Releases: misiektoja/go-pki-scep
Releases · misiektoja/go-pki-scep
Release list
v0.1.0
First release as github.com/misiektoja/go-pki-scep. smallstep/scep has no tagged releases, so
this lists the changes since its commit 63893da. The module adds an HTTP server handler and an HTTP
client and covers every RFC 8894 message type. The defaults are SHA-256 and AES-128-CBC. Request
encryption needs RSA keys at both ends. Code written for smallstep/scep needs the changes under
Changed and Removed.
Added
scepserverserves SCEP over HTTP for a CA you implement: GetCACaps, GetCACert,
GetCACertChain, GetNextCACert and PKIOperation over GET and POST. The CA can answer PENDING,
finish on a later CertPoll or ask the client to retry with HTTP 503. Request bodies are limited
to 64 KiB by default. Requests signed with a key other than RSA get badAlg.RefusalRecordertells the CA about every request the handler refuses on its own.scepclientenrolls, renews, polls and queries a SCEP server.EnrollAndWaitruns the whole
PENDING loop. The client picks the digest, cipher and HTTP method from GetCACaps and retries
HTTP 503. It reads a CertRep whatever the HTTP status of the answer.SortCACertificatessplits a GetCACert answer into the CA, the RSA certificates to encrypt
for and the certificates allowed to sign answers.- Every RFC 8894 message type, including CertPoll, GetCert, GetCRL and UpdateReq. The
PendingandSuccessCRLanswers are new. ParseOptions.Signersverifies a CertRep that leaves out its signer certificate and refuses
every other signer.MatchesRequestchecks that a CertRep answers a given request.EnvelopeRecipients,CSRTransactionIDandSignedCertificateshelp servers with
several keys, clients that poll without storing state and GetNextCACert answers.
Changed
- Module path
github.com/misiektoja/go-pki-scep. Go 1.27.3 or newer is required. The CMS
layer is go-pkcs7. - Option structs replace the functional options in
ParsePKIMessage,NewCSRRequest,
SuccessandFail. - Keys are
crypto.Signerandcrypto.Decrypter, so they can live in an HSM. - Requests use SHA-256 and AES-128-CBC by default. They used SHA-1 and DES-CBC. Answers use the
digest and cipher of the request. - MD5 signatures and DES-CBC content are refused unless the options allow them.
Successtakes a certificate list, such as the issued certificate and its chain. It no
longer adds the issued certificate to the outer signed message.- Transaction IDs derived from a CSR key are hex encoded. They were base64.
- CSR signatures are checked when a request is decrypted.
Removed
WithLogger,WithCACerts,WithCertsSelector,OptionandLogger. Use the option
structs.scepserver.Options.Loggertakes a*slog.Logger.
Fixed
Failreports the failInfo it sends. It always reported badRequest.- Each CertRep carries a fresh senderNonce. It reused the one from the request.
x509util.CreateCertificateRequestsigns a request that has a challenge password with the
requested algorithm, including SHA-1 and RSA-PSS.StringonMessageType,PKIStatusandFailInfono longer panics on unknown values.