diff --git a/Crypto/PubKey/ECC/DH.hs b/Crypto/PubKey/ECC/DH.hs
new file mode 100644
--- /dev/null
+++ b/Crypto/PubKey/ECC/DH.hs
@@ -0,0 +1,36 @@
+module Crypto.PubKey.ECC.DH (
+    Curve
+  , PublicPoint
+  , PrivateNumber
+  , SharedKey(..)
+  , generatePrivate
+  , calculatePublic
+  , getShared
+  ) where
+
+import Crypto.Number.Generate (generateMax)
+import Crypto.PubKey.ECC.Prim (pointMul)
+import Crypto.Random (CPRG)
+import Crypto.Types.PubKey.DH (SharedKey(..))
+import Crypto.Types.PubKey.ECC (PublicPoint, PrivateNumber, Curve, Point(..))
+import Crypto.Types.PubKey.ECC (ecc_n, ecc_g, common_curve)
+
+-- | Generating a private number d.
+generatePrivate :: CPRG g => g -> Curve -> (PrivateNumber, g)
+generatePrivate rng curve = generateMax rng n
+  where
+    n = ecc_n $ common_curve curve
+
+-- | Generating a public point Q.
+calculatePublic :: Curve -> PrivateNumber -> PublicPoint
+calculatePublic curve d = q
+  where
+    g = ecc_g $ common_curve curve
+    q = pointMul curve d g
+
+-- | Generating a shared key using our private number and
+--   the other party public point.
+getShared :: Curve -> PrivateNumber -> PublicPoint -> SharedKey
+getShared curve db qa = SharedKey x
+  where
+    Point x _ = pointMul curve db qa
diff --git a/crypto-pubkey.cabal b/crypto-pubkey.cabal
--- a/crypto-pubkey.cabal
+++ b/crypto-pubkey.cabal
@@ -1,5 +1,5 @@
 Name:                crypto-pubkey
-Version:             0.2.4
+Version:             0.2.5
 Description:
     Public Key cryptography
     .
@@ -20,10 +20,6 @@
                      Tests/KAT/*.hs
                      Benchs/PregenKeys.hs
 
-Flag benchmark
-  Description:       Build benchmarks
-  Default:           False
-
 Library
   Build-Depends:     base >= 4 && < 5
                    , bytestring
@@ -43,6 +39,7 @@
                      Crypto.PubKey.MaskGenFunction
                      Crypto.PubKey.ECC.Generate
                      Crypto.PubKey.ECC.Prim
+                     Crypto.PubKey.ECC.DH
                      Crypto.PubKey.ECC.ECDSA
   other-modules:     Crypto.PubKey.ElGamal
                      Crypto.PubKey.RSA.Types
