Golang rsa x509 ParsePKIXPublicKey error - PullRequest
0 голосов
/ 10 мая 2018

У меня странная ситуация с анализом только что созданных ключей 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 против {класс: 0 тег: 2 длина: 257 isCompound: false}) {необязательно: false явное: false приложение: false defaultValue: тег: stringType: 0 timeType: 0 set: false omitEmpty: false} AlgorithmIdentifier @ 4

пример детской площадки

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

Пожалуйста, помогите мне решить эту проблему.

...