func (m gpgmeSigningMechanism) Verify(unverifiedSignature []byte) (contents []byte, keyIdentity string, err error) {
	signedBuffer := bytes.Buffer{}
	signedData, err := gpgme.NewDataWriter(&signedBuffer)
	if err != nil {
		return nil, "", err
	}
	unverifiedSignatureData, err := gpgme.NewDataBytes(unverifiedSignature)
	if err != nil {
		return nil, "", err
	}
	_, sigs, err := m.ctx.Verify(unverifiedSignatureData, nil, signedData)
	if err != nil {
		return nil, "", err
	}
	if len(sigs) != 1 {
		return nil, "", InvalidSignatureError{msg: fmt.Sprintf("Unexpected GPG signature count %d", len(sigs))}
	}
	sig := sigs[0]
	// This is sig.Summary == gpgme.SigSumValid except for key trust, which we handle ourselves
	if sig.Status != nil || sig.Validity == gpgme.ValidityNever || sig.ValidityReason != nil || sig.WrongKeyUsage {
		// FIXME: Better error reporting eventually
		return nil, "", InvalidSignatureError{msg: fmt.Sprintf("Invalid GPG signature: %#v", sig)}
	}
	return signedBuffer.Bytes(), sig.Fingerprint, nil
}
func (m gpgmeSigningMechanism) Verify(unverifiedSignature []byte) (contents []byte, keyIdentity string, err error) {
	signedBuffer := bytes.Buffer{}
	signedData, err := gpgme.NewDataWriter(&signedBuffer)
	if err != nil {
		return nil, "", err
	}
	unverifiedSignatureData, err := gpgme.NewDataBytes(unverifiedSignature)
	if err != nil {
		return nil, "", err
	}
	_, sigs, err := m.ctx.Verify(unverifiedSignatureData, nil, signedData)
	if err != nil {
		return nil, "", err
	}
	if len(sigs) != 1 {
		return nil, "", InvalidSignatureError{msg: fmt.Sprintf("Unexpected GPG signature count %d", len(sigs))}
	}
	sig := sigs[0]
	
	if sig.Status != nil || sig.Validity == gpgme.ValidityNever || sig.ValidityReason != nil || sig.WrongKeyUsage {
		
		return nil, "", InvalidSignatureError{msg: fmt.Sprintf("Invalid GPG signature: %#v", sig)}
	}
	return signedBuffer.Bytes(), sig.Fingerprint, nil
}
func ( m gpgmeSigningMechanism ) Verify ( unverifiedSignature [ ] byte ) ( contents [ ] byte , keyIdentity string , err error ) { signedBuffer := bytes . Buffer { } signedData , err := gpgme . NewDataWriter ( & signedBuffer ) if err != nil { return nil , " " , err } unverifiedSignatureData , err := gpgme . NewDataBytes ( unverifiedSignature ) if err != nil { return nil , " " , err } _ , sigs , err := m . ctx . Verify ( unverifiedSignatureData , nil , signedData ) if err != nil { return nil , " " , err } if len ( sigs ) != 1 { return nil , " " , InvalidSignatureError { msg : fmt . Sprintf ( " " , len ( sigs ) ) } } sig := sigs [ 0 ] // This is sig.Summary == gpgme.SigSumValid except for key trust, which we handle ourselves if sig . Status != nil || sig . Validity == gpgme . ValidityNever || sig . ValidityReason != nil || sig . WrongKeyUsage { // FIXME: Better error reporting eventually return nil , " " , InvalidSignatureError { msg : fmt . Sprintf ( " " , sig ) } } return signedBuffer . Bytes ( ) , sig . Fingerprint , nil }
// Verify parses unverifiedSignature and returns the content and the signer's identity
Verify parses unverifiedSignature and returns the content and the signer s identity