Go x509证书(pkcs#7)扩展:为什么*.SF与*.p7b不同?

Go x509证书(pkcs#7)扩展:为什么*.SF与*.p7b不同?,go,x509certificate,code-signing,pkcs#7,code-signing-certificate,Go,X509certificate,Code Signing,Pkcs#7,Code Signing Certificate,使用代码签名服务后,我收到了pkcs7格式的证书(提供代码签名和公钥)。我原以为pkcs7证书应该有.p7b扩展名,但我的证书应该有.SF扩展名。这两种选择之间有什么区别吗 我尝试在Go中加载此证书,但它不起作用(此操作失败,出现以下错误:panic:未能以pkcs7格式解析证书:ber2der:BER标记长度超过可用数据)。如果我将.SF证书转换为另一个扩展名为.p7b的证书,那么下面的代码可以工作。我不知道.SF和.p7b扩展之间有什么区别 b, err := ioutil.ReadFile

使用代码签名服务后,我收到了pkcs7格式的证书(提供代码签名和公钥)。我原以为pkcs7证书应该有.p7b扩展名,但我的证书应该有.SF扩展名。这两种选择之间有什么区别吗

我尝试在Go中加载此证书,但它不起作用(此操作失败,出现以下错误:panic:未能以pkcs7格式解析证书:ber2der:BER标记长度超过可用数据)。如果我将.SF证书转换为另一个扩展名为.p7b的证书,那么下面的代码可以工作。我不知道.SF和.p7b扩展之间有什么区别

b, err := ioutil.ReadFile(certificate_path)
block, _ := pem.Decode(b)
if block == nil {
    panic("failed to parse certificate")
}

// get pkcs7 certificate
_, err = pkcs7.Parse(b)
if err != nil {
    panic("failed to parse certificate in pkcs7 format: " + err.Error())
}

我不知道如何在Go中加载此.SF证书。

PKCS7/CMS用于许多事情,“分离签名”格式(无数据的签名数据,至少有一个签名信息,可选的证书和CRL)与“证书/CRL包”格式(无数据和无签名信息的签名数据,但至少有一个证书或CRL)不同。SF有时用于前者,P7B或P7C通常用于后者。但我不知道去哪里。