key.c: New KeyData method `copy'.
authorMark Wooding <mdw@distorted.org.uk>
Mon, 23 Jan 2012 03:09:00 +0000 (03:09 +0000)
committerMark Wooding <mdw@distorted.org.uk>
Wed, 9 Jan 2013 04:06:32 +0000 (04:06 +0000)
Requires a shiny new version of Catacomb.

key.c

diff --git a/key.c b/key.c
index 42ea925..9a7de0c 100644 (file)
--- a/key.c
+++ b/key.c
@@ -350,6 +350,22 @@ static PyObject *kdmeth_split(PyObject *me, PyObject *arg)
   RETURN_ME;
 }
 
+static PyObject *kdmeth_copy(PyObject *me, PyObject *arg, PyObject *kw)
+{
+  key_filter f = { 0, 0 };
+  PyObject *rc = 0;
+  static char *kwlist[] = { "filter", 0 };
+  key_data *kd;
+
+  if (!PyArg_ParseTupleAndKeywords(arg, kw, "|O&:copy", kwlist,
+                                  conffilter, &f))
+    return (0);
+  if ((kd = key_copydata(KEYDATA_KD(me), &f)) == 0)
+    RETURN_NONE;
+  else
+    return (keydata_pywrap(kd));
+}
+
 static PyObject *kdmeth_write(PyObject *me, PyObject *arg, PyObject *kw)
 {
   key_filter f = { 0, 0 };
@@ -454,6 +470,7 @@ static PyMethodDef keydata_pymethods[] = {
   METH (split,                 "KD.split()")
   KWMETH(write,                        "KD.write(filter = <any>) -> STRING")
   KWMETH(encode,               "KD.encode(filter = <any>) -> BYTES")
+  KWMETH(copy,                 "KD.encode(filter = <any>) -> KD")
   METH (plock,                 "KD.plock(TAG) -> ENCRYPTED-KD")
   METH (lock,                  "KD.lock(KEY) -> ENCRYPTED-KD")
 #undef METHNAME