63 lines
1.4 KiB
Go
63 lines
1.4 KiB
Go
package pkiadm
|
|
|
|
import (
|
|
"crypto/x509/pkix"
|
|
)
|
|
|
|
type (
|
|
Subject struct {
|
|
ID string
|
|
Name pkix.Name
|
|
}
|
|
// SubjectChange is a struct containing the fields that were changed.
|
|
SubjectChange struct {
|
|
Subject Subject
|
|
FieldList []string // The list of fields that were changed.
|
|
}
|
|
|
|
ResultSubjects struct {
|
|
Result Result
|
|
Subjects []Subject
|
|
}
|
|
)
|
|
|
|
func (c *Client) CreateSubject(subj Subject) error {
|
|
return c.exec("CreateSubject", subj)
|
|
}
|
|
|
|
func (c *Client) DeleteSubject(id string) error {
|
|
subj := ResourceName{ID: id, Type: RTSubject}
|
|
return c.exec("DeleteSubject", subj)
|
|
}
|
|
|
|
func (c *Client) SetSubject(subj Subject, fieldList []string) error {
|
|
changeset := SubjectChange{subj, fieldList}
|
|
return c.exec("SetSubject", changeset)
|
|
}
|
|
|
|
func (c *Client) ShowSubject(id string) (Subject, error) {
|
|
subj := ResourceName{ID: id, Type: RTSubject}
|
|
result := &ResultSubjects{}
|
|
if err := c.query("ShowSubject", subj, result); err != nil {
|
|
return Subject{}, err
|
|
}
|
|
if result.Result.HasError {
|
|
return Subject{}, result.Result.Error
|
|
}
|
|
for _, subject := range result.Subjects {
|
|
return subject, nil
|
|
}
|
|
return Subject{}, nil
|
|
}
|
|
|
|
func (c *Client) ListSubject() ([]Subject, error) {
|
|
result := &ResultSubjects{}
|
|
if err := c.query("ListSubjects", Filter{}, result); err != nil {
|
|
return []Subject{}, err
|
|
}
|
|
if result.Result.HasError {
|
|
return []Subject{}, result.Result.Error
|
|
}
|
|
return result.Subjects, nil
|
|
}
|