You've already forked step-ca-cli
mirror of
https://github.com/smallstep/cli.git
synced 2025-08-09 03:22:43 +03:00
Allow to add confirmation claims to tokens
This commit allows passing confirmation claims to tokens to tie the tokens with a provided CSR or SSH public key. The confirmation claim is implemented in the token command as well as the com commands that uses a given CSR or ssh public key. Those are: - step ca token - step ca sign - step ssh certificate --sign Fixes smallstep/certificates#1637
This commit is contained in:
@@ -267,7 +267,41 @@ func certificateAction(ctx *cli.Context) error {
|
||||
}
|
||||
}
|
||||
|
||||
flow, err := cautils.NewCertificateFlow(ctx)
|
||||
var (
|
||||
sshPub ssh.PublicKey
|
||||
pub, priv interface{}
|
||||
flowOptions []cautils.Option
|
||||
)
|
||||
|
||||
if isSign {
|
||||
in, err := utils.ReadFile(keyFile)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
sshPub, _, _, _, err = ssh.ParseAuthorizedKey(in)
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "error parsing ssh public key")
|
||||
}
|
||||
if len(sshPrivKeyFile) > 0 {
|
||||
if priv, err = pemutil.Read(sshPrivKeyFile); err != nil {
|
||||
return errors.Wrap(err, "error parsing private key")
|
||||
}
|
||||
}
|
||||
flowOptions = append(flowOptions, cautils.WithSSHPublicKey(sshPub))
|
||||
} else {
|
||||
pub, priv, err = keyutil.GenerateDefaultKeyPair()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
sshPub, err = ssh.NewPublicKey(pub)
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "error creating public key")
|
||||
}
|
||||
}
|
||||
|
||||
flow, err := cautils.NewCertificateFlow(ctx, flowOptions...)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -353,38 +387,6 @@ func certificateAction(ctx *cli.Context) error {
|
||||
identityKey = key
|
||||
}
|
||||
|
||||
var sshPub ssh.PublicKey
|
||||
var pub, priv interface{}
|
||||
|
||||
if isSign {
|
||||
// Use public key supplied as input.
|
||||
in, err := utils.ReadFile(keyFile)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
sshPub, _, _, _, err = ssh.ParseAuthorizedKey(in)
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "error parsing ssh public key")
|
||||
}
|
||||
if len(sshPrivKeyFile) > 0 {
|
||||
if priv, err = pemutil.Read(sshPrivKeyFile); err != nil {
|
||||
return errors.Wrap(err, "error parsing private key")
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// Generate keypair
|
||||
pub, priv, err = keyutil.GenerateDefaultKeyPair()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
sshPub, err = ssh.NewPublicKey(pub)
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "error creating public key")
|
||||
}
|
||||
}
|
||||
|
||||
var sshAuPub ssh.PublicKey
|
||||
var sshAuPubBytes []byte
|
||||
var auPub, auPriv interface{}
|
||||
|
Reference in New Issue
Block a user