code: 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)
  }
docs: //export gogpgme_readfunc