Golang rsa x509 ParsePKIXPublicKey错误

时间:2018-05-10 09:01:38

标签: go rsa x509

我在解析刚刚创建的rsa密钥时遇到了一些奇怪的情况。

在这部分中,我生成了新对并写入文件:

rsaKey,err:= rsa.GenerateKey(rand.Reader,2048)

if err != nil {
    fmt.Println(err)
    os.Exit(1)
}

publicKey := rsaKey.PublicKey

outFile, err := os.Create("./private.pem")
defer outFile.Close()

var privateKey = &pem.Block{
    Type:  "PRIVATE KEY",
    Bytes: x509.MarshalPKCS1PrivateKey(rsaKey),
}

err = pem.Encode(outFile, privateKey)


asn1Bytes, err := asn1.Marshal(publicKey)

var pemkey = &pem.Block{
    Type:  "PUBLIC KEY",
    Bytes: asn1Bytes,
}

pemfile, err := os.Create("./public.pem")
defer pemfile.Close()

err = pem.Encode(pemfile, pemkey)

下一步是从文件中读取密钥并解析它:

data, err := ioutil.ReadFile("./public.pem")

block, _ :=pem.Decode(data)
res,err := x509.ParsePKIXPublicKey(block.Bytes)
fmt.Print(err)

x509.ParsePKIXPublicKey(block.Bytes)返回错误:

  

asn1:结构错误:标记不匹配(16 vs {class:0 tag:2 length:257 isCompound:false}){optional:false explicit:false application:false defaultValue:tag:stringType:0 timeType: 0 set:false omitEmpty:false} AlgorithmIdentifier @ 4

游乐场示例

https://play.golang.org/p/djlK8lO5_E2

请帮我解决这个问题。

0 个答案:

没有答案