我正在寻找修复我的代码,以便获得.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)
}
}