func (c *Profile) SaveProfile(data *IssuerProfile) error {
	bytes, err := json.Marshal(data)
	if err != nil {
		return fmt.Errorf("save profile marshalling error: %w", err)
	}
	return c.store.Put(getDBKey(issuerMode, data.Name), bytes)
}
SaveProfile saves issuer profile to underlying store
package profile
import (
	"encoding/json"
	"fmt"
	"time"
	"github.com/hyperledger/aries-framework-go/pkg/doc/verifiable"
	ariesstorage "github.com/hyperledger/aries-framework-go/spi/storage"
)
const (
	keyPattern       = "%s_%s_%s"
	profileKeyPrefix = "profile"
	credentialStoreName = "credential"
	issuerMode     = "issuer"
	holderMode     = "holder"
	governanceMode = "governance"
)
func New(provider ariesstorage.Provider) (*Profile, error) {
	store, err := provider.OpenStore(credentialStoreName)
	if err != nil {
		return nil, err
	}
	return &Profile{store: store}, nil
}
type Profile struct {
	store ariesstorage.Store
}
type DataProfile struct {
	Name                    string                             `json:"name"`
	DID                     string                             `json:"did"`
	SignatureType           string                             `json:"signatureType"`
	SignatureRepresentation verifiable.SignatureRepresentation `json:"signatureRepresentation"`
	Creator                 string                             `json:"creator"`
	Created                 *time.Time                         `json:"created"`
}
type IssuerProfile struct {
	URI             string          `json:"uri"`
	EDVVaultID      string          `json:"edvVaultID"`
	DisableVCStatus bool            `json:"disableVCStatus"`
	OverwriteIssuer bool            `json:"overwriteIssuer"`
	EDVCapability   json.RawMessage `json:"edvCapability,omitempty"`
	EDVController   string          `json:"edvController"`
	*DataProfile
}
type HolderProfile struct {
	OverwriteHolder bool `json:"overwriteHolder,omitempty"`
	*DataProfile
}
type GovernanceProfile struct {
	*DataProfile
}