获取p7m文件内容

  • 本文关键字:文件 p7m 获取 go
  • 更新时间 :
  • 英文 :


我正在寻找修复我的代码,以便获得.p7m文件内容,因为我运行一个简单的bash命令:

openssl smime -decrypt -verify -inform DER -in TestDocument.pdf.p7m -noverify -out TestDocument.pdf

所以我想用Go实现它,并找到go.mozilla.org/pkcs7包和如下示例:

package main
import (
"io/ioutil"
"log"
"go.mozilla.org/pkcs7"
)
func main() {
content, err := ioutil.ReadFile("TestDocument.pdf.p7m")
if err != nil {
log.Fatal(err)
}
p7, err := pkcs7.Parse(content)
if err != nil {
log.Fatal(err)
}
if err := ioutil.WriteFile("TestDocument.pdf", p7.Content, 0777); err != nil {
log.Fatal(err)
}
}

并编译它,我得到这个错误:ber2der: Invalid BER format。你能帮我修一下吗?

我修复了它,缺少了一小部分:

package main
import (
"encoding/pem"
"io/ioutil"
"log"
"os"
"go.mozilla.org/pkcs7"
)
func main() {
content, err := ioutil.ReadFile("TestDocument.pdf.p7m")
if err != nil {
log.Fatal(err)
}
p7, err := pkcs7.Parse(content)
if err != nil {
log.Fatal(err)
}
pem.Encode(os.Stdout, &pem.Block{Type: "PKCS7", Bytes: content})
if err := ioutil.WriteFile("TestDocument.pdf", p7.Content, 0777); err != nil {
log.Fatal(err)
}
}

最新更新