data.go
func gogpgme_readfunc(handle, buffer unsafe.Pointer, size C.size_t) C.ssize_t {
	d := callbackLookup(uintptr(handle)).(*Data)
	if len(d.buf) < int(size) {
		d.buf = make([]byte, size)
	}
	n, err := d.r.Read(d.buf[:size])
	if err != nil && err != io.EOF {
		C.gpgme_err_set_errno(C.EIO)
		return -1
	}
	C.memcpy(buffer, unsafe.Pointer(&d.buf[0]), C.size_t(n))
	return C.ssize_t(n)
}
func gogpgme_readfunc(handle, buffer unsafe.Pointer, size C.size_t) C.ssize_t {
	d := callbackLookup(uintptr(handle)).(*Data)
	if len(d.buf) < int(size) {
		d.buf = make([]byte, size)
	}
	n, err := d.r.Read(d.buf[:size])
	if err != nil && err != io.EOF {
		C.gpgme_err_set_errno(C.EIO)
		return -1
	}
	C.memcpy(buffer, unsafe.Pointer(&d.buf[0]), C.size_t(n))
	return C.ssize_t(n)
}
//export gogpgme_readfunc