98 lines
2.7 KiB
Go
98 lines
2.7 KiB
Go
package goap
|
|
|
|
type W3SecurityOwnerData struct {
|
|
FullIdType
|
|
}
|
|
|
|
func (actor *W3SecurityOwnerData) GetSelfOrBase() (BaseApChain, bool) {
|
|
return actor.FullIdType.GetSelfOrBase()
|
|
}
|
|
|
|
func (actor *W3SecurityOwnerData) MarshalToMap() map[string]any {
|
|
return actor.FullIdType.MarshalToMapWithName(KEY_W3_SECURITY_OWNER)
|
|
}
|
|
|
|
func ParseW3SecurityOwnerData(raw map[string]any, next BaseApChain) (BaseApChain, error) {
|
|
tmp, err := ParseIdTypeWithName(raw, next, KEY_W3_SECURITY_OWNER)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &W3SecurityOwnerData{*tmp}, nil
|
|
}
|
|
|
|
// TODO: Handle case with multiple public keys (if allowed, idk if it is)
|
|
type W3SecurityPublicKeyData struct {
|
|
Next BaseApChain
|
|
Id string
|
|
Owner string
|
|
Key string
|
|
}
|
|
|
|
func (publickeydata *W3SecurityPublicKeyData) GetSelfOrBase() (BaseApChain, bool) {
|
|
return publickeydata.Next, true
|
|
}
|
|
|
|
func (publickeydata *W3SecurityPublicKeyData) MarshalToMap() map[string]any {
|
|
m := publickeydata.Next.MarshalToMap()
|
|
m[KEY_W3_SECURITY_PUBLICKEY] = []map[string]any{{
|
|
KEY_ID: publickeydata.Id,
|
|
KEY_W3_SECURITY_OWNER: []map[string]any{{KEY_ID: publickeydata.Owner}},
|
|
KEY_W3_SECURITY_PUBLICKEYPEM: []map[string]any{{KEY_VALUE: publickeydata.Key}},
|
|
}}
|
|
return m
|
|
}
|
|
|
|
func ParseW3SecurityPublicKeyData(raw map[string]any, next BaseApChain) (BaseApChain, error) {
|
|
rawData1, ok := raw[KEY_W3_SECURITY_PUBLICKEY]
|
|
if !ok {
|
|
return nil, NoRequiredFieldError{KEY_W3_SECURITY_PUBLICKEY}
|
|
}
|
|
data1, ok := rawData1.([]map[string]any)
|
|
if !ok {
|
|
return nil, BadFieldValueError[[]map[string]any]{KEY_W3_SECURITY_PUBLICKEY, rawData1, data1}
|
|
}
|
|
if len(data1) != 1 {
|
|
return nil, BadFieldArrayLengthError{KEY_W3_SECURITY_PUBLICKEY, 1, len(data1)}
|
|
}
|
|
Id, err := ParseIdValue(data1[0])
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
rawPem, err := ParseW3SecurityPublicKeyPemData(data1[0], nil)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
rawOwner, err := ParseW3SecurityOwnerData(data1[0], nil)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
owner := rawOwner.(*W3SecurityOwnerData)
|
|
|
|
pem := rawPem.(*W3SecurityPublicKeyPemData)
|
|
return &W3SecurityPublicKeyData{
|
|
Next: next,
|
|
Id: Id.Id,
|
|
Key: pem.Value.Value,
|
|
Owner: owner.Id,
|
|
}, nil
|
|
}
|
|
|
|
type W3SecurityPublicKeyPemData struct {
|
|
FullValueType[string]
|
|
}
|
|
|
|
func (namedata *W3SecurityPublicKeyPemData) GetSelfOrBase() (BaseApChain, bool) {
|
|
return namedata.Next, true
|
|
}
|
|
|
|
func (namedata *W3SecurityPublicKeyPemData) MarshalToMap() map[string]any {
|
|
return namedata.MarshalToMapWithName(KEY_W3_SECURITY_PUBLICKEYPEM)
|
|
}
|
|
|
|
func ParseW3SecurityPublicKeyPemData(raw map[string]any, next BaseApChain) (BaseApChain, error) {
|
|
tmp, err := ParseValueTypeWithName[string](raw, next, KEY_W3_SECURITY_PUBLICKEYPEM)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &W3SecurityPublicKeyPemData{*tmp}, nil
|
|
}
|