mirror of
https://github.com/go-i2p/goSam.git
synced 2025-06-07 09:03:33 -04:00

- Replace fmt.ErrorF() with errors.New() where no actual formatting requested - Hanle edge cases with no username/password in `Client.hello()` - Make go-staticcheck happier
52 lines
1.0 KiB
Go
52 lines
1.0 KiB
Go
package gosam
|
|
|
|
import (
|
|
"fmt"
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
func validateKindInner(kind string) string {
|
|
if strings.HasPrefix(kind, "SIGNATURE_TYPE=") {
|
|
return kind
|
|
}
|
|
return "SIGNATURE_TYPE=" + kind
|
|
}
|
|
|
|
func validateKind(kind string) (string, error) {
|
|
//convert kind to int
|
|
kint, err := strconv.Atoi(kind)
|
|
if err != nil {
|
|
for _, k := range SAMsigTypes {
|
|
if strings.HasSuffix(k, kind) {
|
|
return validateKindInner(kind), nil
|
|
}
|
|
}
|
|
}
|
|
if kint >= 0 && kint <= 7 {
|
|
return validateKindInner(kind), nil
|
|
}
|
|
return "SIGNATURE_TYPE=7", fmt.Errorf("invalid sigType: %s", kind)
|
|
}
|
|
|
|
// Generate a new destination and return the base64 encoded string
|
|
func (c *Client) NewDestination(kind ...string) (string, string, error) {
|
|
if len(kind) == 0 {
|
|
kind = []string{"7"}
|
|
} else {
|
|
var err error
|
|
kind[0], err = validateKind(kind[0])
|
|
if err != nil {
|
|
if c.debug {
|
|
fmt.Println(err)
|
|
}
|
|
}
|
|
}
|
|
r, err := c.sendCmd("DEST GENERATE %s\n", kind[0])
|
|
if err != nil {
|
|
return "", "", err
|
|
}
|
|
return r.Pairs["PRIV"], r.Pairs["PUB"], nil
|
|
|
|
}
|