Skip to content

wasm will report an error when using the crypto/x509 package #1888

@vicnoah

Description

@vicnoah

`package vrsa

import (
"crypto/rand"
"crypto/rsa"
"crypto/x509"
"encoding/pem"
"io"
)

// GenerateRSAKey 生成rsa公私钥
func GenerateRSAKey(priv io.Writer, pub io.Writer, bits int) (err error) {
// GenerateKey函数使用随机数据生成器random生成一对具有指定字位数的RSA密钥
// Reader是一个全局、共享的密码用强随机数生成器
privateKey, err := rsa.GenerateKey(rand.Reader, bits)
if err != nil {
return
}
// 保存私钥
// 通过x509标准将得到的ras私钥序列化为ASN.1 的 DER编码字符串
X509PrivateKey := x509.MarshalPKCS1PrivateKey(privateKey)
// 使用pem格式对x509输出的内容进行编码
// 构建一个pem.Block结构体对象
privateBlock := pem.Block{Type: "RSA Private Key", Bytes: X509PrivateKey}
// 将数据保存到文件
err = pem.Encode(priv, &privateBlock)
if err != nil {
return
}
// 保存公钥
// 获取公钥的数据
publicKey := privateKey.PublicKey
// X509对公钥编码
X509PublicKey, err := x509.MarshalPKIXPublicKey(&publicKey)
if err != nil {
return
}
// pem格式编码
// 创建一个pem.Block结构体对象
publicBlock := pem.Block{Type: "RSA Public Key", Bytes: X509PublicKey}
err = pem.Encode(pub, &publicBlock)
return
}
`
Error message:
/snap/go/current/src/net/pipe.go:156:16: ErrDeadlineExceeded not declared by package os
/snap/go/current/src/net/pipe.go:169:16: ErrDeadlineExceeded not declared by package os
/snap/go/current/src/net/pipe.go:188:16: ErrDeadlineExceeded not declared by package os
/snap/go/current/src/net/pipe.go:204:17: ErrDeadlineExceeded not declared by package os

When I commented out the x509 package this error no longer occurred but unfortunately my program compiled and reported other errors

fatal error: unexpected signal during runtime execution
[signal SIGSEGV: segmentation violation code=0x1 addr=0x8 pc=0x470b493]

runtime stack:
runtime.throw(0x4ea9aba, 0x2a)
/usr/local/go/src/runtime/panic.go:1116 +0x72
runtime.sigpanic()
/usr/local/go/src/runtime/signal_unix.go:701 +0x46a

goroutine 16 [syscall]:
runtime.cgocall(0xead0a0, 0xc001b939b8, 0xeadd20)
/usr/local/go/src/runtime/cgocall.go:133 +0x5b fp=0xc001b93988 sp=0xc001b93950 pc=0xad570b
tinygo.org/x/go-llvm._Cfunc_LLVMRunPassManager(0x7f3b467c23d0, 0x7f3b4420c9c0, 0x0)
_cgo_gotypes.go:8866 +0x4d fp=0xc001b939b8 sp=0xc001b93988 pc=0xd7df7d
tinygo.org/x/go-llvm.PassManager.Run.func1(0x7f3b467c23d0, 0x7f3b4420c9c0, 0x7f3b467c23d0)
/go/pkg/mod/tinygo.org/x/go-llvm@v0.0.0-20210325115028-e7b85195e81c/ir.go:1998 +0x79 fp=0xc001b939e8 sp=0xc001b939b8 pc=0xda8019
tinygo.org/x/go-llvm.PassManager.Run(0x7f3b467c23d0, 0x7f3b4420c9c0, 0x22)
/go/pkg/mod/tinygo.org/x/go-llvm@v0.0.0-20210325115028-e7b85195e81c/ir.go:1998 +0x35 fp=0xc001b93a10 sp=0xc001b939e8 pc=0xd8e1d5
github.com/tinygo-org/tinygo/transform.Optimize(0x7f3b4420c9c0, 0xc00024e690, 0x2, 0x2, 0x5, 0x0, 0x0, 0x0)
/home/circleci/project/transform/optimizer.go:64 +0x2b0 fp=0xc001b93da0 sp=0xc001b93a10 pc=0xe59030
github.com/tinygo-org/tinygo/builder.optimizeProgram(0x7f3b4420c9c0, 0xc00024e690, 0xc009cf47c0, 0x2)
/home/circleci/project/builder/build.go:698 +0x13d fp=0xc001b93e10 sp=0xc001b93da0 pc=0xe6f0cd
github.com/tinygo-org/tinygo/builder.Build.func2(0xc0044e8360, 0x0, 0x0)
/home/circleci/project/builder/build.go:390 +0x812 fp=0xc001b93f70 sp=0xc001b93e10 pc=0xe7f1e2
github.com/tinygo-org/tinygo/builder.jobWorker(0xc0044ec000, 0xc000f31f80)
/home/circleci/project/builder/jobs.go:165 +0xe0 fp=0xc001b93fd0 sp=0xc001b93f70 pc=0xe77990
runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:1373 +0x1 fp=0xc001b93fd8 sp=0xc001b93fd0 pc=0xb34f01
created by github.com/tinygo-org/tinygo/builder.runJobs
/home/circleci/project/builder/jobs.go:84 +0xc5

goroutine 1 [chan receive]:
github.com/tinygo-org/tinygo/builder.runJobs(0xc000995c00, 0x34, 0x40, 0x0, 0x0)
/home/circleci/project/builder/jobs.go:116 +0x12f
github.com/tinygo-org/tinygo/builder.Build(0x7ffc7bc76164, 0x9, 0x7ffc7bc7613d, 0xe, 0xc00024e690, 0xc0046ebaf8, 0x0, 0x0)
/home/circleci/project/builder/build.go:609 +0x26be
main.Build(0x7ffc7bc76164, 0x9, 0x7ffc7bc7613d, 0xe, 0xc000222000, 0x0, 0x12)
/home/circleci/project/main.go:111 +0xc5
main.main()
/home/circleci/project/main.go:1047 +0x2406

goroutine 10 [chan receive]:
github.com/tinygo-org/tinygo/builder.jobWorker(0xc0044ec000, 0xc000f31f80)
/home/circleci/project/builder/jobs.go:162 +0x82
created by github.com/tinygo-org/tinygo/builder.runJobs
/home/circleci/project/builder/jobs.go:84 +0xc5

goroutine 11 [chan receive]:
github.com/tinygo-org/tinygo/builder.jobWorker(0xc0044ec000, 0xc000f31f80)
/home/circleci/project/builder/jobs.go:162 +0x82
created by github.com/tinygo-org/tinygo/builder.runJobs
/home/circleci/project/builder/jobs.go:84 +0xc5

goroutine 12 [chan receive]:
github.com/tinygo-org/tinygo/builder.jobWorker(0xc0044ec000, 0xc000f31f80)
/home/circleci/project/builder/jobs.go:162 +0x82
created by github.com/tinygo-org/tinygo/builder.runJobs
/home/circleci/project/builder/jobs.go:84 +0xc5

goroutine 13 [chan receive]:
github.com/tinygo-org/tinygo/builder.jobWorker(0xc0044ec000, 0xc000f31f80)
/home/circleci/project/builder/jobs.go:162 +0x82
created by github.com/tinygo-org/tinygo/builder.runJobs
/home/circleci/project/builder/jobs.go:84 +0xc5

goroutine 14 [chan receive]:
github.com/tinygo-org/tinygo/builder.jobWorker(0xc0044ec000, 0xc000f31f80)
/home/circleci/project/builder/jobs.go:162 +0x82
created by github.com/tinygo-org/tinygo/builder.runJobs
/home/circleci/project/builder/jobs.go:84 +0xc5

goroutine 15 [chan receive]:
github.com/tinygo-org/tinygo/builder.jobWorker(0xc0044ec000, 0xc000f31f80)
/home/circleci/project/builder/jobs.go:162 +0x82
created by github.com/tinygo-org/tinygo/builder.runJobs
/home/circleci/project/builder/jobs.go:84 +0xc5

goroutine 50 [chan receive]:
github.com/tinygo-org/tinygo/builder.jobWorker(0xc0044ec000, 0xc000f31f80)
/home/circleci/project/builder/jobs.go:162 +0x82
created by github.com/tinygo-org/tinygo/builder.runJobs
/home/circleci/project/builder/jobs.go:84 +0xc5

Metadata

Metadata

Assignees

No one assigned

    Labels

    wasmWebAssembly

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions