diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 1.0.4
+
+* Ed448.sign: avoid extra re-derive of public key.
+  [#48](https://github.com/kazu-yamamoto/crypton/pull/48)
+
 ## 1.0.3
 
 * Make sign of Ed25519/Ed448 safer. The public key parameter is
diff --git a/cbits/decaf/ed448goldilocks/eddsa.c b/cbits/decaf/ed448goldilocks/eddsa.c
--- a/cbits/decaf/ed448goldilocks/eddsa.c
+++ b/cbits/decaf/ed448goldilocks/eddsa.c
@@ -233,12 +233,14 @@
     const uint8_t *context,
     uint8_t context_len
 ) {
+    /* rederivation already performed in Crypto.PubKey.Ed448.sign
     uint8_t rederived_pubkey[CRYPTON_DECAF_EDDSA_448_PUBLIC_BYTES];
     crypton_decaf_ed448_derive_public_key(rederived_pubkey, privkey);
     if (CRYPTON_DECAF_TRUE != crypton_decaf_memeq(rederived_pubkey, pubkey, sizeof(rederived_pubkey))) {
         abort();
     }
-    crypton_decaf_ed448_sign_internal(signature,privkey,rederived_pubkey,message,
+    */
+    crypton_decaf_ed448_sign_internal(signature,privkey,/*rederived_*/pubkey,message,
         message_len,prehashed,context,context_len);
 }
 
diff --git a/crypton.cabal b/crypton.cabal
--- a/crypton.cabal
+++ b/crypton.cabal
@@ -1,6 +1,6 @@
 cabal-version:      1.18
 name:               crypton
-version:            1.0.3
+version:            1.0.4
 license:            BSD3
 license-file:       LICENSE
 copyright:          Vincent Hanquez <vincent@snarc.org>
diff --git a/tests/BCrypt.hs b/tests/BCrypt.hs
--- a/tests/BCrypt.hs
+++ b/tests/BCrypt.hs
@@ -34,7 +34,7 @@
           \\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\
           \\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\
           \\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\
-          \chars after 72 are ignored as usual"
+          \\x00\x01\x02\x03\x04\x05" -- chars after 72 are ignored as usual
         )
     ,
         ( "$2a$05$/OK.fbVrR/bpIqNJ5ianF.R9xrDjiycxMbQE2bp.vgqlYpW5wx2yy"
