#include <string.h>
#include <ctype.h>
#include <Python.h>


char rot13(char c)
    {
    if (isupper(c))
        return 'A' + (c-'A'+13)%26;
    else if (islower(c))
        return 'a' + (c-'a'+13)%26;
    else
        return c;
    }


static PyObject* encrypt(PyObject *self, PyObject *args)
	{
    char *string, *returnstring, *p;
    float retval[3] = {0,0,0};
	if (!PyArg_ParseTuple(args, "s", &string))
        	return NULL;
    returnstring = strdup(string);
    for (p=returnstring; *p; p++)
        *p = rot13(*p);
	return Py_BuildValue("s", returnstring);
	}

static PyObject* decrypt(PyObject *self, PyObject *args)
	{
    char *string, *returnstring, *p;
    float retval[3] = {0,0,0};
	if (!PyArg_ParseTuple(args, "s", &string))
        	return NULL;
    returnstring = strdup(string);
    for (p=returnstring; *p; p++)
        *p = rot13(*p);
	return Py_BuildValue("s", returnstring);
	}


static PyMethodDef newMethods[] =
	{
	{"encrypt", encrypt, METH_VARARGS,
		"Returns an encrypted version of a string."},
	{"decrypt", encrypt, METH_VARARGS,
		"Returns an decrypted version of a string."},
	{NULL, NULL, 0, NULL}
	};


void initcrypto(void)
    {
	(void) Py_InitModule("crypto", newMethods);
    }

