diff --git a/include/olm/crypto.hh b/include/olm/crypto.hh
index b299e12bccfadb812983a1e7946440ffdbd6eace..7f8f0690e80b2d5db99ff399d4157618e8e77810 100644
--- a/include/olm/crypto.hh
+++ b/include/olm/crypto.hh
@@ -34,7 +34,7 @@ struct Curve25519KeyPair : public Curve25519PublicKey {
 
 
 /** Generate a curve25519 key pair from 32 random bytes. */
-void generate_key(
+void curve25519_generate_key(
     std::uint8_t const * random_32_bytes,
     Curve25519KeyPair & key_pair
 );
diff --git a/src/account.cpp b/src/account.cpp
index 232385664360ea90c92e333aa6f506e5b97c5784..198c5d31fabd7c9561ab0207cb77fb1b10190db9 100644
--- a/src/account.cpp
+++ b/src/account.cpp
@@ -53,7 +53,7 @@ std::size_t olm::Account::new_account(
     unsigned id = 0;
 
     identity_key.id = ++id;
-    olm::generate_key(random, identity_key.key);
+    olm::curve25519_generate_key(random, identity_key.key);
     random += 32;
 
     random += 32;
@@ -61,7 +61,7 @@ std::size_t olm::Account::new_account(
     for (unsigned i = 0; i < 10; ++i) {
         LocalKey & key = *one_time_keys.insert(one_time_keys.end());
         key.id = ++id;
-        olm::generate_key(random, key.key);
+        olm::curve25519_generate_key(random, key.key);
         random += 32;
     }
 
diff --git a/src/crypto.cpp b/src/crypto.cpp
index ebe472494e4792dbc5be909d275816c78602a3b8..db4bfa657542596fe511e8fb6a366a818a1907f7 100644
--- a/src/crypto.cpp
+++ b/src/crypto.cpp
@@ -136,7 +136,7 @@ inline void hmac_sha256_final(
 } // namespace
 
 
-void olm::generate_key(
+void olm::curve25519_generate_key(
     std::uint8_t const * random_32_bytes,
     olm::Curve25519KeyPair & key_pair
 ) {
diff --git a/src/ratchet.cpp b/src/ratchet.cpp
index 2f361fa0f127ba5578466dea709eaf11673a1f82..b9108dbd3a3f9b8298edca43897a46a586cb4cc2 100644
--- a/src/ratchet.cpp
+++ b/src/ratchet.cpp
@@ -419,7 +419,7 @@ std::size_t olm::Ratchet::encrypt(
 
     if (sender_chain.empty()) {
         sender_chain.insert();
-        olm::generate_key(random, sender_chain[0].ratchet_key);
+        olm::curve25519_generate_key(random, sender_chain[0].ratchet_key);
         create_chain_key(
             root_key,
             sender_chain[0].ratchet_key,
diff --git a/src/session.cpp b/src/session.cpp
index a0284319b26090c73752d947f6fe200ffdc12b58..08498e470f2e6f5d61aeb286ded60ffaf00b5ae1 100644
--- a/src/session.cpp
+++ b/src/session.cpp
@@ -68,10 +68,10 @@ std::size_t olm::Session::new_outbound_session(
     }
 
     Curve25519KeyPair base_key;
-    olm::generate_key(random, base_key);
+    olm::curve25519_generate_key(random, base_key);
 
     Curve25519KeyPair ratchet_key;
-    olm::generate_key(random + 32, ratchet_key);
+    olm::curve25519_generate_key(random + 32, ratchet_key);
 
     received_message = false;
     alice_identity_key.id = local_account.identity_key.id;
diff --git a/tests/test_crypto.cpp b/tests/test_crypto.cpp
index 9b7637bbad9d35c3fa86f1cec6d18a74bf0cb182..b8ffbcda7c50268fe69e1c82c986d767863cb459 100644
--- a/tests/test_crypto.cpp
+++ b/tests/test_crypto.cpp
@@ -59,13 +59,13 @@ std::uint8_t expected_agreement[32] = {
 };
 
 olm::Curve25519KeyPair alice_pair;
-olm::generate_key(alice_private, alice_pair);
+olm::curve25519_generate_key(alice_private, alice_pair);
 
 assert_equals(alice_private, alice_pair.private_key, 32);
 assert_equals(alice_public, alice_pair.public_key, 32);
 
 olm::Curve25519KeyPair bob_pair;
-olm::generate_key(bob_private, bob_pair);
+olm::curve25519_generate_key(bob_private, bob_pair);
 
 assert_equals(bob_private, bob_pair.private_key, 32);
 assert_equals(bob_public, bob_pair.public_key, 32);
@@ -91,7 +91,7 @@ std::uint8_t message[] = "message";
 std::size_t message_length = sizeof(message) - 1;
 
 olm::Curve25519KeyPair key_pair;
-olm::generate_key(private_key, key_pair);
+olm::curve25519_generate_key(private_key, key_pair);
 
 std::uint8_t signature[64];
 
diff --git a/tests/test_ratchet.cpp b/tests/test_ratchet.cpp
index b2db8e758baeeef2c95e887e04a809ef624264b8..cbb3c52a35b44d8f6eed4ebfdf5d0d3066bd0b45 100644
--- a/tests/test_ratchet.cpp
+++ b/tests/test_ratchet.cpp
@@ -34,7 +34,7 @@ olm::CipherAesSha256 cipher(
 
 std::uint8_t random_bytes[] = "0123456789ABDEF0123456789ABCDEF";
 olm::Curve25519KeyPair alice_key;
-olm::generate_key(random_bytes, alice_key);
+olm::curve25519_generate_key(random_bytes, alice_key);
 
 std::uint8_t shared_secret[] = "A secret";