Define command and response for RevokeCertificate
This commit is contained in:
parent
ad6b987c91
commit
c452453c31
2 changed files with 53 additions and 0 deletions
|
@ -272,6 +272,13 @@ func (m *MsgPackHandler) parseCommand(frame []byte, command *protocol.Command) e
|
||||||
}
|
}
|
||||||
|
|
||||||
command.Command = signCertificateCommand
|
command.Command = signCertificateCommand
|
||||||
|
case messages.CmdRevokeCertificate:
|
||||||
|
revokeCertificateCommand, err := m.parseRevokeCertificateCommand(frame)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
command.Command = revokeCertificateCommand
|
||||||
default:
|
default:
|
||||||
return fmt.Errorf("unhandled command code %s", command.Announce.Code)
|
return fmt.Errorf("unhandled command code %s", command.Announce.Code)
|
||||||
}
|
}
|
||||||
|
@ -382,6 +389,18 @@ func (m *MsgPackHandler) handleSignCertificateCommand(
|
||||||
return &messages.SignCertificateResponse{CertificateData: res.Certificate.Raw}, nil
|
return &messages.SignCertificateResponse{CertificateData: res.Certificate.Raw}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *MsgPackHandler) parseRevokeCertificateCommand(frame []byte) (*messages.RevokeCertificateCommand, error) {
|
||||||
|
var command messages.RevokeCertificateCommand
|
||||||
|
|
||||||
|
if err := msgpack.Unmarshal(frame, &command); err != nil {
|
||||||
|
m.logger.WithError(err).Errorf("unmarshal failed")
|
||||||
|
|
||||||
|
return nil, errors.New("could not unmarshal revoke certificate command")
|
||||||
|
}
|
||||||
|
|
||||||
|
return &command, nil
|
||||||
|
}
|
||||||
|
|
||||||
func New(logger *logrus.Logger, handlers ...RegisterHandler) (protocol.ServerHandler, error) {
|
func New(logger *logrus.Logger, handlers ...RegisterHandler) (protocol.ServerHandler, error) {
|
||||||
messages.RegisterGeneratedResolver()
|
messages.RegisterGeneratedResolver()
|
||||||
|
|
||||||
|
|
|
@ -360,3 +360,37 @@ type SignCertificateResponse struct {
|
||||||
func (r *SignCertificateResponse) String() string {
|
func (r *SignCertificateResponse) String() string {
|
||||||
return fmt.Sprintf("cert_data of %d bytes", len(r.CertificateData))
|
return fmt.Sprintf("cert_data of %d bytes", len(r.CertificateData))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type RevokeCertificateCommand struct {
|
||||||
|
IssuerID string `msgpack:"issuer_id"`
|
||||||
|
Serial []byte `msgpack:"serial_number"`
|
||||||
|
Reason string `msgpack:"reason"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *RevokeCertificateCommand) String() string {
|
||||||
|
builder := &strings.Builder{}
|
||||||
|
|
||||||
|
_, _ = fmt.Fprintf(
|
||||||
|
builder,
|
||||||
|
"issuerID=%s, serial=0x%s", c.IssuerID, new(big.Int).SetBytes(c.Serial).Text(16),
|
||||||
|
)
|
||||||
|
|
||||||
|
if c.Reason != "" {
|
||||||
|
_, _ = fmt.Fprintf(builder, ", reason=%s", c.Reason)
|
||||||
|
}
|
||||||
|
|
||||||
|
return builder.String()
|
||||||
|
}
|
||||||
|
|
||||||
|
type RevokeCertificateResponse struct {
|
||||||
|
IssuerID string `msgpack:"issuer_id"`
|
||||||
|
Serial []byte `msgpack:"serial_number"`
|
||||||
|
RevokedAt time.Time `msgpack:"revoked_at"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *RevokeCertificateResponse) String() string {
|
||||||
|
return fmt.Sprintf(
|
||||||
|
"issuerID=%s, serial=0x%s, revoked_at=%s",
|
||||||
|
r.IssuerID, new(big.Int).SetBytes(r.Serial).Text(16), r.RevokedAt.Format(time.RFC3339),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue