1
0
mirror of https://github.com/mainflux/mainflux.git synced 2025-04-26 13:48:53 +08:00

initial commit (#1708)

Signed-off-by: rodneyosodo <socials@rodneyosodo.com>

Signed-off-by: rodneyosodo <socials@rodneyosodo.com>
Co-authored-by: rodneyosodo <socials@rodneyosodo.com>
This commit is contained in:
b1ackd0t 2023-01-24 17:10:25 +03:00 committed by GitHub
parent d008ae5d97
commit 5f9b3c9905
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 19 additions and 10 deletions

View File

@ -204,6 +204,7 @@ components:
format: uuid format: uuid
ttl: ttl:
type: string type: string
example: "10h"
responses: responses:
ServiceError: ServiceError:

View File

@ -3,7 +3,11 @@
package api package api
import "github.com/mainflux/mainflux/internal/apiutil" import (
"time"
"github.com/mainflux/mainflux/internal/apiutil"
)
const maxLimitSize = 100 const maxLimitSize = 100
@ -26,6 +30,10 @@ func (req addCertsReq) validate() error {
return apiutil.ErrMissingCertData return apiutil.ErrMissingCertData
} }
if _, err := time.ParseDuration(req.TTL); err != nil {
return apiutil.ErrInvalidCertData
}
return nil return nil
} }

View File

@ -146,6 +146,7 @@ func encodeError(_ context.Context, err error, w http.ResponseWriter) {
case errors.Contains(err, errors.ErrMalformedEntity), case errors.Contains(err, errors.ErrMalformedEntity),
err == apiutil.ErrMissingID, err == apiutil.ErrMissingID,
err == apiutil.ErrMissingCertData, err == apiutil.ErrMissingCertData,
err == apiutil.ErrInvalidCertData,
err == apiutil.ErrLimitSize: err == apiutil.ErrLimitSize:
w.WriteHeader(http.StatusBadRequest) w.WriteHeader(http.StatusBadRequest)
case errors.Contains(err, errors.ErrConflict): case errors.Contains(err, errors.ErrConflict):

View File

@ -6,7 +6,6 @@ package pki
import ( import (
"encoding/json" "encoding/json"
"fmt"
"time" "time"
"github.com/hashicorp/vault/api" "github.com/hashicorp/vault/api"
@ -101,7 +100,7 @@ func NewVaultClient(token, host, path, role string) (Agent, error) {
func (p *pkiAgent) IssueCert(cn, ttl string) (Cert, error) { func (p *pkiAgent) IssueCert(cn, ttl string) (Cert, error) {
cReq := certReq{ cReq := certReq{
CommonName: cn, CommonName: cn,
TTL: fmt.Sprintf("%sh", ttl), TTL: ttl,
} }
var certIssueReq map[string]interface{} var certIssueReq map[string]interface{}

View File

@ -1,8 +1,6 @@
package cli package cli
import ( import (
"strconv"
"github.com/spf13/cobra" "github.com/spf13/cobra"
) )
@ -45,10 +43,10 @@ var cmdCerts = []cobra.Command{
// NewCertsCmd returns certificate command. // NewCertsCmd returns certificate command.
func NewCertsCmd() *cobra.Command { func NewCertsCmd() *cobra.Command {
var ttl uint32 var ttl string
issueCmd := cobra.Command{ issueCmd := cobra.Command{
Use: "issue <thing_id> <user_auth_token> [--ttl=8760]", Use: "issue <thing_id> <user_auth_token> [--ttl=8760h]",
Short: "Issue certificate", Short: "Issue certificate",
Long: `Issues new certificate for a thing`, Long: `Issues new certificate for a thing`,
Run: func(cmd *cobra.Command, args []string) { Run: func(cmd *cobra.Command, args []string) {
@ -58,9 +56,8 @@ func NewCertsCmd() *cobra.Command {
} }
thingID := args[0] thingID := args[0]
valid := strconv.FormatUint(uint64(ttl), 10)
c, err := sdk.IssueCert(thingID, valid, args[1]) c, err := sdk.IssueCert(thingID, ttl, args[1])
if err != nil { if err != nil {
logError(err) logError(err)
return return
@ -69,7 +66,7 @@ func NewCertsCmd() *cobra.Command {
}, },
} }
issueCmd.Flags().Uint32Var(&ttl, "ttl", 8760, "certificate time to live in hours") issueCmd.Flags().StringVar(&ttl, "ttl", "8760h", "certificate time to live in duration")
cmd := cobra.Command{ cmd := cobra.Command{
Use: "certs [issue | get | revoke ]", Use: "certs [issue | get | revoke ]",

View File

@ -63,6 +63,9 @@ var (
// ErrMissingCertData indicates missing cert data (ttl). // ErrMissingCertData indicates missing cert data (ttl).
ErrMissingCertData = errors.New("missing certificate data") ErrMissingCertData = errors.New("missing certificate data")
// ErrInvalidCertData indicates invalid cert data (ttl).
ErrInvalidCertData = errors.New("invalid certificate data")
// ErrInvalidTopic indicates an invalid subscription topic. // ErrInvalidTopic indicates an invalid subscription topic.
ErrInvalidTopic = errors.New("invalid Subscription topic") ErrInvalidTopic = errors.New("invalid Subscription topic")