76 lines
1.7 KiB
Go
76 lines
1.7 KiB
Go
package pana
|
|
|
|
import (
|
|
"encoding/json"
|
|
|
|
ld "sourcery.dny.nu/longdistance"
|
|
secv1 "sourcery.dny.nu/pana/vocab/w3id/securityv1"
|
|
)
|
|
|
|
// PublicKey is the W3ID Security v1 Public Key.
|
|
type PublicKey ld.Node
|
|
|
|
// NewPublicKey initialises a new PublicKey.
|
|
func NewPublicKey() *PublicKey {
|
|
return &PublicKey{
|
|
Properties: make(ld.Properties, 2),
|
|
Type: []string{secv1.PublicKey},
|
|
}
|
|
}
|
|
|
|
// Build finalises the PublicKey.
|
|
func (pk *PublicKey) Build() PublicKey {
|
|
return *pk
|
|
}
|
|
|
|
// GetID returns the ID in [ld.Node].
|
|
func (pk *PublicKey) GetID() string {
|
|
return pk.ID
|
|
}
|
|
|
|
// SetID sets the ID in [ld.Node].
|
|
func (pk *PublicKey) SetID(id string) *PublicKey {
|
|
pk.ID = id
|
|
return pk
|
|
}
|
|
|
|
// GetType returns the first type on the [ld.Node].
|
|
func (pk *PublicKey) GetType() string {
|
|
return pk.Type[0]
|
|
}
|
|
|
|
// SetType sets the type on the [ld.Node].
|
|
func (pk *PublicKey) SetType(id string) *PublicKey {
|
|
pk.Type = []string{id}
|
|
return pk
|
|
}
|
|
|
|
// GetOwner returns the ID in [secv1.Owner].
|
|
func (pk *PublicKey) GetOwner() string {
|
|
if nodes := (*ld.Node)(pk).GetNodes(secv1.Owner); len(nodes) == 1 {
|
|
return nodes[0].ID
|
|
}
|
|
|
|
return ""
|
|
}
|
|
|
|
// SetOwner sets the ID in [secv1.Owner].
|
|
func (pk *PublicKey) SetOwner(id string) *PublicKey {
|
|
(*ld.Node)(pk).SetNodes(secv1.Owner, ld.Node{ID: id})
|
|
return pk
|
|
}
|
|
|
|
// GetPublicKeyPEM returns the value in [secv1.PublicKeyPem].
|
|
func (pk *PublicKey) GetPublicKeyPEM() json.RawMessage {
|
|
if nodes := (*ld.Node)(pk).GetNodes(secv1.PublicKeyPem); len(nodes) == 1 {
|
|
return nodes[0].Value
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
// SetPublicKeyPEM sets the value in [secv1.PublicKeyPem].
|
|
func (pk *PublicKey) SetPublicKeyPEM(v json.RawMessage) *PublicKey {
|
|
(*ld.Node)(pk).SetNodes(secv1.PublicKeyPem, ld.Node{Value: v})
|
|
return pk
|
|
}
|