diff --git a/res/res_crypto.c b/res/res_crypto.c
index 6152d42b09dd0aa0863c4bd5c1ba9fc02d2d8d70..912d7c8c099583b057ff7e0045303b574b216187 100755
--- a/res/res_crypto.c
+++ b/res/res_crypto.c
@@ -3,9 +3,9 @@
  *
  * Provide Cryptographic Signature capability
  * 
- * Copyright (C) 1999, Mark Spencer
+ * Copyright (C) 1999-2004, Digium, Inc.
  *
- * Mark Spencer <markster@linux-support.net>
+ * Mark Spencer <markster@digium.com>
  *
  * This program is free software, distributed under the terms of
  * the GNU General Public License
@@ -370,12 +370,14 @@ extern int ast_encrypt_bin(unsigned char *dst, const unsigned char *src, int src
 		bytes = srclen;
 		if (bytes > 128 - 41)
 			bytes = 128 - 41;
-		/* Process chunks 128 bytes at a time */
-		res = RSA_private_encrypt(bytes, src, dst, key->rsa, RSA_PKCS1_OAEP_PADDING);
-		if (res != 128)
+		/* Process chunks 128-41 bytes at a time */
+		res = RSA_public_encrypt(bytes, src, dst, key->rsa, RSA_PKCS1_OAEP_PADDING);
+		if (res != 128) {
+			ast_log(LOG_NOTICE, "How odd, encrypted size is %d\n", res);
 			return -1;
-		src += 128 - 41;
-		srclen -= 128 - 41;
+		}
+		src += bytes;
+		srclen -= bytes;
 		pos += res;
 		dst += res;
 	}