code: func (e *Engine) SignedPublicKey(ctx context.Context, body *primitive.PublicKey,
  	sigID *identity.ID, sigKP *SignatureKeyPair) (*envelope.PublicKey, error) {
  	id, sig, err := e.signAndID(ctx, body, sigID, sigKP)
  	if err != nil {
  		return nil, err
  	}
  
  	return &envelope.PublicKey{
  		ID:        id,
  		Version:   uint8(body.Version()),
  		Body:      body,
  		Signature: *sig,
  	}, nil
  }
docs: // SignedPublicKey returns a PublicKeyEnvelope that is signed, and includes
  // a tamper-proof ID.