diff --git a/jni/pjproject-android/.svn/pristine/e8/e846cc4238aef11587e264938a3d8b00c66fe2d7.svn-base b/jni/pjproject-android/.svn/pristine/e8/e846cc4238aef11587e264938a3d8b00c66fe2d7.svn-base
new file mode 100644
index 0000000..b0d033f
--- /dev/null
+++ b/jni/pjproject-android/.svn/pristine/e8/e846cc4238aef11587e264938a3d8b00c66fe2d7.svn-base
@@ -0,0 +1,76 @@
+/**
+
+@defgroup CryptoKernel Cryptographic Kernel
+
+All of the cryptographic functions are contained in a kernel.
+
+*/
+
+/**
+
+@defgroup CipherImplementations Ciphers
+@ingroup  CryptoKernel
+
+@brief A generic cipher type enables cipher agility, that is, the
+ability to write code that runs with multiple cipher types.
+Ciphers can be used through the crypto kernel, or can be accessed
+directly, if need be.
+
+@{
+
+*/
+
+/**
+ * @brief Allocates a cipher of a particular type.
+ * @warning May be implemented as a macro.
+ */
+err_status_t
+cipher_type_alloc(cipher_type_t *ctype, cipher_t **cipher, 
+                        unsigned key_len);
+
+/**
+ * @brief Initialized a cipher to use a particular key.  May
+ *       be invoked more than once on the same cipher.
+ * @warning May be implemented as a macro.
+ */
+
+err_status_t
+cipher_init(cipher_t *cipher, const uint8_t *key);
+
+/**
+ * @brief Sets the initialization vector of a given cipher.
+ * @warning May be implemented as a macro.
+ */
+
+err_status_t
+cipher_set_iv(cipher_t *cipher, void *iv);
+
+/**
+ * @brief Encrypts a buffer with a given cipher.
+ * @warning May be implemented as a macro.
+ */                           
+
+err_status_t
+cipher_encrypt(cipher_t *cipher, void *buf, unsigned int *len);
+
+/**
+ * @brief Sets a buffer to the keystream generated by the cipher.
+ * @warning May be implemented as a macro.
+ */
+err_status_t 
+cipher_output(cipher_t *c, uint8_t *buffer, int num_octets_to_output);
+
+/**
+ * @brief Deallocates a cipher.
+ * @warning May be implemented as a macro.
+ */
+err_status_t
+cipher_dealloc(cipher_t *cipher);
+
+
+
+/**
+ * @} 
+ */
+
+ */
\ No newline at end of file
