planetmint-go/x/machine/keeper/trust_anchor.go
Julian Strobl d4eed021c8
[go.mod] Switch module to github.com (#86)
This is the quasi-standard and fixes the error below:

```
$ go get -u github.com/planetmint/planetmint-go@v0.1.0
go: github.com/planetmint/planetmint-go@v0.1.0: parsing go.mod:
        module declares its path as: planetmint-go
                but was required as: github.com/planetmint/planetmint-go
```

Signed-off-by: Julian Strobl <jmastr@mailbox.org>
2023-09-21 17:37:57 +02:00

53 lines
1.4 KiB
Go

package keeper
import (
"encoding/hex"
"errors"
"github.com/planetmint/planetmint-go/x/machine/types"
"github.com/cosmos/cosmos-sdk/store/prefix"
sdk "github.com/cosmos/cosmos-sdk/types"
)
func (k Keeper) StoreTrustAnchor(ctx sdk.Context, ta types.TrustAnchor, activated bool) error {
store := prefix.NewStore(ctx.KVStore(k.taStoreKey), types.KeyPrefix(types.TrustAnchorKey))
// if activated is set to true then store 1 else 0
var appendValue []byte
if activated {
appendValue = []byte{1}
} else {
appendValue = []byte{0}
}
pubKey_bytes, err := getTrustAnchorBytes(ta.Pubkey)
if err != nil {
return errors.New("the given public key could not be decoded (malformed string)")
}
store.Set(pubKey_bytes, appendValue)
return nil
}
func (k Keeper) GetTrustAnchor(ctx sdk.Context, pubKey string) (val types.TrustAnchor, activated bool, found bool) {
store := prefix.NewStore(ctx.KVStore(k.taStoreKey), types.KeyPrefix(types.TrustAnchorKey))
pubKey_bytes, err := getTrustAnchorBytes(pubKey)
if err != nil {
return val, false, false
}
trustAnchorActivated := store.Get(pubKey_bytes)
if trustAnchorActivated == nil {
return val, false, false
}
// if stored byte is 1 then return activated equals true
val.Pubkey = pubKey
if trustAnchorActivated[0] == 1 {
return val, true, true
} else {
return val, false, true
}
}
func getTrustAnchorBytes(pubKey string) ([]byte, error) {
return hex.DecodeString(pubKey)
}