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

View File

@ -21,7 +21,7 @@ const (
//export gogpgme_readfunc //export gogpgme_readfunc
func gogpgme_readfunc(handle, buffer unsafe.Pointer, size C.size_t) C.ssize_t { 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) { if len(d.buf) < int(size) {
d.buf = make([]byte, 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 //export gogpgme_writefunc
func gogpgme_writefunc(handle, buffer unsafe.Pointer, size C.size_t) C.ssize_t { 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) { if len(d.buf) < int(size) {
d.buf = make([]byte, 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 //export gogpgme_seekfunc
func gogpgme_seekfunc(handle unsafe.Pointer, offset C.off_t, whence C.int) C.off_t { 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)) n, err := d.s.Seek(int64(offset), int(whence))
if err != nil { if err != nil {
C.gpgme_err_set_errno(C.EIO) C.gpgme_err_set_errno(C.EIO)
@ -68,7 +68,7 @@ type Data struct {
r io.Reader r io.Reader
w io.Writer w io.Writer
s io.Seeker s io.Seeker
cbc int cbc uintptr
} }
func newData() *Data { 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) d.cbs.read = C.gpgme_data_read_cb_t(C.gogpgme_readfunc)
cbc := callbackAdd(d) cbc := callbackAdd(d)
d.cbc = cbc 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 // 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) d.cbs.write = C.gpgme_data_write_cb_t(C.gogpgme_writefunc)
cbc := callbackAdd(d) cbc := callbackAdd(d)
d.cbc = cbc 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 // 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) d.cbs.write = C.gpgme_data_write_cb_t(C.gogpgme_writefunc)
cbc := callbackAdd(d) cbc := callbackAdd(d)
d.cbc = cbc 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 // 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) d.cbs.seek = C.gpgme_data_seek_cb_t(C.gogpgme_seekfunc)
cbc := callbackAdd(d) cbc := callbackAdd(d)
d.cbc = cbc 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 // Close releases any resources associated with the data buffer

View File

@ -1,5 +1,13 @@
#include "go_gpgme.h" #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) { unsigned int key_revoked(gpgme_key_t k) {
return k->revoked; return k->revoked;
} }
@ -52,23 +60,23 @@ unsigned int signature_chain_model(gpgme_signature_t s) {
return s->chain_model; return s->chain_model;
} }
extern unsigned int subkey_revoked(gpgme_subkey_t k) { unsigned int subkey_revoked(gpgme_subkey_t k) {
return k->revoked; return k->revoked;
} }
extern unsigned int subkey_expired(gpgme_subkey_t k) { unsigned int subkey_expired(gpgme_subkey_t k) {
return k->expired; return k->expired;
} }
extern unsigned int subkey_disabled(gpgme_subkey_t k) { unsigned int subkey_disabled(gpgme_subkey_t k) {
return k->disabled; return k->disabled;
} }
extern unsigned int subkey_invalid(gpgme_subkey_t k) { unsigned int subkey_invalid(gpgme_subkey_t k) {
return k->invalid; return k->invalid;
} }
extern unsigned int subkey_secret(gpgme_subkey_t k) { unsigned int subkey_secret(gpgme_subkey_t k) {
return k->secret; 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 ssize_t gogpgme_writefunc(void *handle, void *buffer, size_t size);
extern off_t gogpgme_seekfunc(void *handle, off_t offset, int whence); 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_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_revoked(gpgme_key_t k);
extern unsigned int key_expired(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 //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 { 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) go_uid_hint := C.GoString(uid_hint)
f := os.NewFile(uintptr(fd), go_uid_hint) f := os.NewFile(uintptr(fd), go_uid_hint)
defer f.Close() defer f.Close()
@ -259,7 +259,7 @@ type Context struct {
KeyError error KeyError error
callback Callback callback Callback
cbc int cbc uintptr
ctx C.gpgme_ctx_t ctx C.gpgme_ctx_t
} }
@ -333,10 +333,10 @@ func (c *Context) SetCallback(callback Callback) error {
if callback != nil { if callback != nil {
cbc := callbackAdd(c) cbc := callbackAdd(c)
c.cbc = cbc 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 { } else {
c.cbc = 0 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 return err
} }