首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >elliptic.p256Curve类型没有导出字段

elliptic.p256Curve类型没有导出字段
EN

Stack Overflow用户
提问于 2022-09-18 12:09:21
回答 2查看 217关注 0票数 0

当我发现一个关于gob序列化的问题时,我正在尝试构建一个块链项目。我有一个使用elliptic.P256()曲线结构的struct,当我试图序列化Wallet时,没有导出字段的错误发生了。

真希望能帮上忙。

这是我的密码。

代码语言:javascript
复制
const walletFile = "Wallets.dat"

type Wallets struct {
    WalletsMap map[string]*Wallet
}

type Wallet struct {
    PrivateKey ecdsa.PrivateKey
    PublicKey []byte
}

func (w *Wallets) SaveWallets() {
    var content bytes.Buffer

    gob.Register(elliptic.P256())

    encoder := gob.NewEncoder(&content)
    err := encoder.Encode(&w)
    if err != nil {
        log.Panic(err)
    }

    err = ioutil.WriteFile(walletFile, content.Bytes(), 0644)
    if err != nil {
        log.Panic(err)
    }

}


func NewWallets() (*Wallets, error) {
    if _, err := os.Stat(walletFile); os.IsNotExist(err) {
        wallets := &Wallets{}
        wallets.WalletsMap = make(map[string]*Wallet)
        return wallets, err
    }

    fileContent, err := ioutil.ReadFile(walletFile)
    if err != nil {
        log.Panic(err)
    }

    var wallets Wallets
    gob.Register(elliptic.P256())
    decoder := gob.NewDecoder(bytes.NewReader(fileContent))
    err = decoder.Decode(&wallets)
    if err != nil {
        log.Panic(err)
    }

    return &wallets, nil
}

问题

代码语言:javascript
复制
2022/09/18 19:42:33 gob: type elliptic.p256Curve has no exported fields
panic: gob: type elliptic.p256Curve has no exported fields
EN

回答 2

Stack Overflow用户

发布于 2022-09-20 21:35:27

您在这里似乎要做的是从P256包序列化一条crypto/elliptic曲线。问题是P256()函数返回一个名为elliptic.Curve的接口。

此错误告诉您的是,elliptic.Curve的基础类型(在本例中为elliptic.p256Curve )没有导出的任何字段(用第一个字母大写命名)。Go的reflect包( encoding/gob使用的)只适用于导出的字段。

您可能想尝试使用crypto/ellipticMarshal()GenerateKey()函数。

票数 0
EN

Stack Overflow用户

发布于 2022-10-08 13:15:26

它的问题在1.9.*版本的Go。例如,只需安装1.8.7。之后一切都会好起来的)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73762677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档