#include "plugin_internal.h" static Boolean ValidateContext(CWPluginContext context) { return context && (context->shellSignature == CWFOURCHAR('C','W','I','E')); } typedef CWResult (*cbSecretAttachHandleType)(CWPluginContext, Handle, CWMemHandle *); typedef CWResult (*cbSecretDetachHandleType)(CWPluginContext, CWMemHandle, Handle *); typedef CWResult (*cbSecretPeekHandleType)(CWPluginContext, CWMemHandle, Handle *); typedef CWResult (*cbSecretGetNamedPreferencesType)(CWPluginContext, const char *, Handle *); CW_CALLBACK CWSecretAttachHandle(CWPluginContext context, Handle handle, CWMemHandle *memHandle) { if (!ValidateContext(context)) return cwErrInvalidParameter; return ((cbSecretAttachHandleType) context->callbacks->cbInternal[0])(context, handle, memHandle); } CW_CALLBACK CWSecretDetachHandle(CWPluginContext context, CWMemHandle memHandle, Handle *handle) { if (!ValidateContext(context)) return cwErrInvalidParameter; return ((cbSecretDetachHandleType) context->callbacks->cbInternal[1])(context, memHandle, handle); } CW_CALLBACK CWSecretPeekHandle(CWPluginContext context, CWMemHandle memHandle, Handle *handle) { if (!ValidateContext(context)) return cwErrInvalidParameter; return ((cbSecretPeekHandleType) context->callbacks->cbInternal[2])(context, memHandle, handle); } CW_CALLBACK CWSecretGetNamedPreferences(CWPluginContext context, const char *prefsname, Handle *prefsdata) { if (!prefsdata) return cwErrInvalidParameter; CWMemHandle memHandle; CWResult res = CWGetNamedPreferences(context, prefsname, &memHandle); if (!res) res = CWSecretDetachHandle(context, memHandle, prefsdata); return res; }