func (sd *SignedData) VerifyDetached(message []byte, opts x509.VerifyOptions) ([][][]*x509.Certificate, error) {
	if sd.psd.EncapContentInfo.EContent.Bytes != nil {
		return nil, errors.New("signature not detached")
	}
	return sd.verify(message, opts)
}
VerifyDetached verifies the SingerInfos' detached signatures over the
provided data message. Each signature's associated certificate is verified
using the provided roots. UnsafeNoVerify may be specified to skip this
verification. Nil may be provided to use system roots. The full chains for
the certificates whose keys made the signatures are returned.

WARNING: this function doesn't do any revocation checking.
package cms
import (
	"bytes"
	"crypto/x509"
	"errors"
	"github.com/github/ietf-cms/protocol"
)
func (sd *SignedData) Verify(opts x509.VerifyOptions) ([][][]*x509.Certificate, error) {
	econtent, err := sd.psd.EncapContentInfo.EContentValue()
	if err != nil {
		return nil, err
	}
	if econtent == nil {
		return nil, errors.New("detached signature")
	}
	return sd.verify(econtent, opts)
}