У меня странная ситуация с анализом только что созданных ключей 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
Пожалуйста, помогите мне решить эту проблему.