64 lines
1.6 KiB
Go
64 lines
1.6 KiB
Go
|
package pkiadm
|
||
|
|
||
|
const (
|
||
|
PKTRSA PrivateKeyType = iota
|
||
|
PKTECDSA
|
||
|
PKTED25519
|
||
|
PKTUnknown
|
||
|
)
|
||
|
|
||
|
type (
|
||
|
PrivateKey struct {
|
||
|
ID string
|
||
|
Type PrivateKeyType
|
||
|
Bits uint
|
||
|
Checksum []byte // This field is only set by the server
|
||
|
}
|
||
|
PrivateKeyChange struct {
|
||
|
PrivateKey PrivateKey
|
||
|
FieldList []string
|
||
|
}
|
||
|
ResultPrivateKey struct {
|
||
|
Result Result
|
||
|
PrivateKeys []PrivateKey
|
||
|
}
|
||
|
PrivateKeyType uint
|
||
|
)
|
||
|
|
||
|
// CreatePrivateKey sends a RPC request to create a new private key.
|
||
|
func (c *Client) CreatePrivateKey(pk PrivateKey) error {
|
||
|
return c.exec("CreatePrivateKey", pk)
|
||
|
}
|
||
|
func (c *Client) SetPrivateKey(pk PrivateKey, fieldList []string) error {
|
||
|
changeset := PrivateKeyChange{pk, fieldList}
|
||
|
return c.exec("SetPrivateKey", changeset)
|
||
|
}
|
||
|
func (c *Client) DeletePrivateKey(id string) error {
|
||
|
pk := ResourceName{ID: id, Type: RTPrivateKey}
|
||
|
return c.exec("DeletePrivateKey", pk)
|
||
|
}
|
||
|
func (c *Client) ListPrivateKey() ([]PrivateKey, error) {
|
||
|
result := &ResultPrivateKey{}
|
||
|
if err := c.query("ListPrivateKey", Filter{}, result); err != nil {
|
||
|
return []PrivateKey{}, err
|
||
|
}
|
||
|
if result.Result.HasError {
|
||
|
return []PrivateKey{}, result.Result.Error
|
||
|
}
|
||
|
return result.PrivateKeys, nil
|
||
|
}
|
||
|
func (c *Client) ShowPrivateKey(id string) (PrivateKey, error) {
|
||
|
pk := ResourceName{ID: id, Type: RTPrivateKey}
|
||
|
result := &ResultPrivateKey{}
|
||
|
if err := c.query("ShowPrivateKey", pk, result); err != nil {
|
||
|
return PrivateKey{}, err
|
||
|
}
|
||
|
if result.Result.HasError {
|
||
|
return PrivateKey{}, result.Result.Error
|
||
|
}
|
||
|
for _, privateKey := range result.PrivateKeys {
|
||
|
return privateKey, nil
|
||
|
}
|
||
|
return PrivateKey{}, nil
|
||
|
}
|