diff --git a/src/ssl/connection.c b/src/ssl/connection.c
index 90a9652..9fbeb01 100755
--- a/src/ssl/connection.c
+++ b/src/ssl/connection.c
@@ -829,22 +829,22 @@
     return lst;
 }
 
-static char ssl_Connection_get_client_CA_list_doc[] = "\n\
+static char ssl_Connection_get_client_ca_list_doc[] = "\n\
 Get CAs whose certificates are suggested for client authentication.\n\
 \n\
 @return: A list of X509Names representing the acceptable CAs as set by\n\
-         ssl.Context.{set, add}_client_CA* if this is a server connection\n\
+         ssl.Context.{set, add}_client_ca* if this is a server connection\n\
          or as sent by the server if this is a client connection.\n\
 ";
 
 static PyObject *
-ssl_Connection_get_client_CA_list(ssl_ConnectionObj *self, PyObject *args)
+ssl_Connection_get_client_ca_list(ssl_ConnectionObj *self, PyObject *args)
 {
     STACK_OF(X509_NAME) *CANames;
     PyObject *CAList;
     int i, n;
 
-    if (!PyArg_ParseTuple(args, ":get_client_CA_list")) {
+    if (!PyArg_ParseTuple(args, ":get_client_ca_list")) {
         return NULL;
     }
     CANames = SSL_get_client_CA_list(self->ssl);
@@ -1139,7 +1139,7 @@
     ADD_METHOD(bio_shutdown),
     ADD_METHOD(shutdown),
     ADD_METHOD(get_cipher_list),
-    ADD_METHOD(get_client_CA_list),
+    ADD_METHOD(get_client_ca_list),
     ADD_METHOD(makefile),
     ADD_METHOD(get_app_data),
     ADD_METHOD(set_app_data),
diff --git a/src/ssl/context.c b/src/ssl/context.c
index d03e92c..586d3ba 100644
--- a/src/ssl/context.c
+++ b/src/ssl/context.c
@@ -802,7 +802,7 @@
     }
 }
 
-static char ssl_Context_set_client_CA_list_doc[] = "\n\
+static char ssl_Context_set_client_ca_list_doc[] = "\n\
 Set the list of preferred client certificate signers for this server context.\n\
 \n\
 This list of certificate authorities will be sent to the client when the\n\
@@ -813,7 +813,7 @@
 ";
 
 static PyObject *
-ssl_Context_set_client_CA_list(ssl_ContextObj *self, PyObject *args)
+ssl_Context_set_client_ca_list(ssl_ContextObj *self, PyObject *args)
 {
     static PyTypeObject *X509NameType;
     PyObject *sequence, *tuple, *item;
@@ -829,7 +829,7 @@
             return NULL;
         }
     }
-    if (!PyArg_ParseTuple(args, "O:set_client_CA_list", &sequence)) {
+    if (!PyArg_ParseTuple(args, "O:set_client_ca_list", &sequence)) {
         return NULL;
     }
     tuple = PySequence_Tuple(sequence);
@@ -880,7 +880,7 @@
     return Py_None;
 }
 
-static char ssl_Context_add_client_CA_doc[] = "\n\
+static char ssl_Context_add_client_ca_doc[] = "\n\
 Add the CA certificate to the list of preferred signers for this context.\n\
 \n\
 The list of certificate authorities will be sent to the client when the\n\
@@ -891,11 +891,11 @@
 ";
 
 static PyObject *
-ssl_Context_add_client_CA(ssl_ContextObj *self, PyObject *args)
+ssl_Context_add_client_ca(ssl_ContextObj *self, PyObject *args)
 {
     crypto_X509Obj *cert;
 
-    cert = parse_certificate_argument("O!:add_client_CA", args);
+    cert = parse_certificate_argument("O!:add_client_ca", args);
     if (cert == NULL) {
         return NULL;
     }
@@ -1078,8 +1078,8 @@
     ADD_METHOD(get_verify_depth),
     ADD_METHOD(load_tmp_dh),
     ADD_METHOD(set_cipher_list),
-    ADD_METHOD(set_client_CA_list),
-    ADD_METHOD(add_client_CA),
+    ADD_METHOD(set_client_ca_list),
+    ADD_METHOD(add_client_ca),
     ADD_METHOD(set_timeout),
     ADD_METHOD(get_timeout),
     ADD_METHOD(set_info_callback),
