Merge pull request #45 from mtrmac/gpgme-update

Rerun hack/vendor.sh to pick up gpgme changes
This commit is contained in:
Antonio Murdaca 2016-05-06 22:58:53 +02:00
commit 9d24de4c57
5 changed files with 33 additions and 23 deletions

View File

@ -6,15 +6,15 @@ import (
var callbacks struct {
sync.Mutex
m map[int]interface{}
c int
m map[uintptr]interface{}
c uintptr
}
func callbackAdd(v interface{}) int {
func callbackAdd(v interface{}) uintptr {
callbacks.Lock()
defer callbacks.Unlock()
if callbacks.m == nil {
callbacks.m = make(map[int]interface{})
callbacks.m = make(map[uintptr]interface{})
}
callbacks.c++
ret := callbacks.c
@ -22,7 +22,7 @@ func callbackAdd(v interface{}) int {
return ret
}
func callbackLookup(c int) interface{} {
func callbackLookup(c uintptr) interface{} {
callbacks.Lock()
defer callbacks.Unlock()
ret := callbacks.m[c]
@ -32,7 +32,7 @@ func callbackLookup(c int) interface{} {
return ret
}
func callbackDelete(c int) {
func callbackDelete(c uintptr) {
callbacks.Lock()
defer callbacks.Unlock()
if callbacks.m[c] == nil {

View File

@ -21,7 +21,7 @@ const (
//export gogpgme_readfunc
func gogpgme_readfunc(handle, buffer unsafe.Pointer, size C.size_t) C.ssize_t {
d := callbackLookup(*(*int)(handle)).(*Data)
d := callbackLookup(uintptr(handle)).(*Data)
if len(d.buf) < int(size) {
d.buf = make([]byte, size)
}
@ -36,7 +36,7 @@ func gogpgme_readfunc(handle, buffer unsafe.Pointer, size C.size_t) C.ssize_t {
//export gogpgme_writefunc
func gogpgme_writefunc(handle, buffer unsafe.Pointer, size C.size_t) C.ssize_t {
d := callbackLookup(*(*int)(handle)).(*Data)
d := callbackLookup(uintptr(handle)).(*Data)
if len(d.buf) < int(size) {
d.buf = make([]byte, size)
}
@ -51,7 +51,7 @@ func gogpgme_writefunc(handle, buffer unsafe.Pointer, size C.size_t) C.ssize_t {
//export gogpgme_seekfunc
func gogpgme_seekfunc(handle unsafe.Pointer, offset C.off_t, whence C.int) C.off_t {
d := callbackLookup(*(*int)(handle)).(*Data)
d := callbackLookup(uintptr(handle)).(*Data)
n, err := d.s.Seek(int64(offset), int(whence))
if err != nil {
C.gpgme_err_set_errno(C.EIO)
@ -68,7 +68,7 @@ type Data struct {
r io.Reader
w io.Writer
s io.Seeker
cbc int
cbc uintptr
}
func newData() *Data {
@ -106,7 +106,7 @@ func NewDataReader(r io.Reader) (*Data, error) {
d.cbs.read = C.gpgme_data_read_cb_t(C.gogpgme_readfunc)
cbc := callbackAdd(d)
d.cbc = cbc
return d, handleError(C.gpgme_data_new_from_cbs(&d.dh, &d.cbs, unsafe.Pointer(&d.cbc)))
return d, handleError(C.gogpgme_data_new_from_cbs(&d.dh, &d.cbs, C.uintptr_t(cbc)))
}
// NewDataWriter returns a new callback based data buffer
@ -116,7 +116,7 @@ func NewDataWriter(w io.Writer) (*Data, error) {
d.cbs.write = C.gpgme_data_write_cb_t(C.gogpgme_writefunc)
cbc := callbackAdd(d)
d.cbc = cbc
return d, handleError(C.gpgme_data_new_from_cbs(&d.dh, &d.cbs, unsafe.Pointer(&d.cbc)))
return d, handleError(C.gogpgme_data_new_from_cbs(&d.dh, &d.cbs, C.uintptr_t(cbc)))
}
// NewDataReadWriter returns a new callback based data buffer
@ -128,7 +128,7 @@ func NewDataReadWriter(rw io.ReadWriter) (*Data, error) {
d.cbs.write = C.gpgme_data_write_cb_t(C.gogpgme_writefunc)
cbc := callbackAdd(d)
d.cbc = cbc
return d, handleError(C.gpgme_data_new_from_cbs(&d.dh, &d.cbs, unsafe.Pointer(&d.cbc)))
return d, handleError(C.gogpgme_data_new_from_cbs(&d.dh, &d.cbs, C.uintptr_t(cbc)))
}
// NewDataReadWriteSeeker returns a new callback based data buffer
@ -142,7 +142,7 @@ func NewDataReadWriteSeeker(rw io.ReadWriteSeeker) (*Data, error) {
d.cbs.seek = C.gpgme_data_seek_cb_t(C.gogpgme_seekfunc)
cbc := callbackAdd(d)
d.cbc = cbc
return d, handleError(C.gpgme_data_new_from_cbs(&d.dh, &d.cbs, unsafe.Pointer(&d.cbc)))
return d, handleError(C.gogpgme_data_new_from_cbs(&d.dh, &d.cbs, C.uintptr_t(cbc)))
}
// Close releases any resources associated with the data buffer

View File

@ -1,5 +1,13 @@
#include "go_gpgme.h"
gpgme_error_t gogpgme_data_new_from_cbs(gpgme_data_t *dh, gpgme_data_cbs_t cbs, uintptr_t handle) {
return gpgme_data_new_from_cbs(dh, cbs, (void *)handle);
}
void gogpgme_set_passphrase_cb(gpgme_ctx_t ctx, gpgme_passphrase_cb_t cb, uintptr_t handle) {
gpgme_set_passphrase_cb(ctx, cb, (void *)handle);
}
unsigned int key_revoked(gpgme_key_t k) {
return k->revoked;
}
@ -52,23 +60,23 @@ unsigned int signature_chain_model(gpgme_signature_t s) {
return s->chain_model;
}
extern unsigned int subkey_revoked(gpgme_subkey_t k) {
unsigned int subkey_revoked(gpgme_subkey_t k) {
return k->revoked;
}
extern unsigned int subkey_expired(gpgme_subkey_t k) {
unsigned int subkey_expired(gpgme_subkey_t k) {
return k->expired;
}
extern unsigned int subkey_disabled(gpgme_subkey_t k) {
unsigned int subkey_disabled(gpgme_subkey_t k) {
return k->disabled;
}
extern unsigned int subkey_invalid(gpgme_subkey_t k) {
unsigned int subkey_invalid(gpgme_subkey_t k) {
return k->invalid;
}
extern unsigned int subkey_secret(gpgme_subkey_t k) {
unsigned int subkey_secret(gpgme_subkey_t k) {
return k->secret;
}

View File

@ -7,6 +7,8 @@ extern ssize_t gogpgme_readfunc(void *handle, void *buffer, size_t size);
extern ssize_t gogpgme_writefunc(void *handle, void *buffer, size_t size);
extern off_t gogpgme_seekfunc(void *handle, off_t offset, int whence);
extern gpgme_error_t gogpgme_passfunc(void *hook, char *uid_hint, char *passphrase_info, int prev_was_bad, int fd);
extern gpgme_error_t gogpgme_data_new_from_cbs(gpgme_data_t *dh, gpgme_data_cbs_t cbs, uintptr_t handle);
extern void gogpgme_set_passphrase_cb(gpgme_ctx_t ctx, gpgme_passphrase_cb_t cb, uintptr_t handle);
extern unsigned int key_revoked(gpgme_key_t k);
extern unsigned int key_expired(gpgme_key_t k);

View File

@ -26,7 +26,7 @@ type Callback func(uidHint string, prevWasBad bool, f *os.File) error
//export gogpgme_passfunc
func gogpgme_passfunc(hook unsafe.Pointer, uid_hint, passphrase_info *C.char, prev_was_bad, fd C.int) C.gpgme_error_t {
c := callbackLookup(*(*int)(hook)).(*Context)
c := callbackLookup(uintptr(hook)).(*Context)
go_uid_hint := C.GoString(uid_hint)
f := os.NewFile(uintptr(fd), go_uid_hint)
defer f.Close()
@ -259,7 +259,7 @@ type Context struct {
KeyError error
callback Callback
cbc int
cbc uintptr
ctx C.gpgme_ctx_t
}
@ -333,10 +333,10 @@ func (c *Context) SetCallback(callback Callback) error {
if callback != nil {
cbc := callbackAdd(c)
c.cbc = cbc
_, err = C.gpgme_set_passphrase_cb(c.ctx, C.gpgme_passphrase_cb_t(C.gogpgme_passfunc), unsafe.Pointer(&c.cbc))
_, err = C.gogpgme_set_passphrase_cb(c.ctx, C.gpgme_passphrase_cb_t(C.gogpgme_passfunc), C.uintptr_t(cbc))
} else {
c.cbc = 0
_, err = C.gpgme_set_passphrase_cb(c.ctx, nil, nil)
_, err = C.gogpgme_set_passphrase_cb(c.ctx, nil, 0)
}
return err
}