# How to generate address directly from curve point

**URL:** <https://forum.cardano.org/t/how-to-generate-address-directly-from-curve-point/62721>\
**Category:** Cardano Integration\
**Created:** [25 May 2021 11:28 UTC](https://forum.cardano.org/t/how-to-generate-address-directly-from-curve-point/62721 "2021-05-25T11:28:39Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![Philogy](https://avatars.discourse-cdn.com/v4/letter/p/f9ae1b/32.png) [@Philogy](https://forum.cardano.org/u/Philogy)\
**Post date:** [25 May 2021 11:28 UTC](https://forum.cardano.org/t/how-to-generate-address-directly-from-curve-point/62721/1 "2021-05-25T11:28:39Z")

</div>

Hello. According to my understanding cardano uses ed25519 for its asymmetric cryptography. I’m able to create a curve point via the `elliptic` npm package but I need to be able to convert it directly into a public address. If there are any (js) packages you could recommend to do so I’d be very grateful. I need to directly generate an address from a point as I need the public and private key to have specific properties.

I can’t seem to find the direct specification on how the different addresses are generated. Specifically the Daedalus-style address (DdzFF…) and Shelley era address (addr1…). I’m wondering if I should also support the older Icarus-style format (Ae2…). Another question I have is does ADA use shnorr or ecdsa for its signatures?

Any help would be much appreciated, thanks.

---

<div class="post-metadata">

**Author:** ![laplasz](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.cardano.org/laplasz/32/15238_2.png) [@laplasz](https://forum.cardano.org/u/laplasz)\
**Post date:** [25 May 2021 11:37 UTC](https://forum.cardano.org/t/how-to-generate-address-directly-from-curve-point/62721/2 "2021-05-25T11:37:45Z")

</div>

Hi!

Have you found this lib?

> **[GitHub - Emurgo/cardano-serialization-lib: This is a library, written in...](https://github.com/Emurgo/cardano-serialization-lib)**
>
> This is a library, written in Rust, for serialization & deserialization of data structures used in Cardano's Haskell implementation of Alonzo along with useful utility functions. - GitHub -...

probably related topic:

> [@Wallet account trx history and all related/registered addresses](https://forum.cardano.org/t/wallet-account-trx-history-and-all-related-registered-addresses/62634):
>
> I’m working on a multi-platform app with wallet functionalities. One of the things it does, is to allow users to “restore” their wallet account using the mnemonic phrase. So far, I’ve been able to derive the stake address from a mnemonic phrase using [cardano-serialization-lib](https://github.com/Emurgo/cardano-serialization-lib). And from there, I know I can query db-sync to get all the addresses related to this stake addr and work out the total balance of the wallet from there. But what about the UTXOs that are contained in payment addresses tha…

---

<div class="post-metadata">

**Author:** ![Philogy](https://avatars.discourse-cdn.com/v4/letter/p/f9ae1b/32.png) [@Philogy](https://forum.cardano.org/u/Philogy)\
**Post date:** [25 May 2021 11:48 UTC](https://forum.cardano.org/t/how-to-generate-address-directly-from-curve-point/62721/3 "2021-05-25T11:48:37Z")

</div>

Haven’t found it yet, but it doesn’t seem to provide what I’m looking for, it assumes that I already have the public key in some specific format.

---

<div class="post-metadata">

**Author:** ![laplasz](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.cardano.org/laplasz/32/15238_2.png) [@laplasz](https://forum.cardano.org/u/laplasz)\
**Post date:** [25 May 2021 11:52 UTC](https://forum.cardano.org/t/how-to-generate-address-directly-from-curve-point/62721/4 "2021-05-25T11:52:57Z")

</div>

[https://docs.cardano.org/projects/cardano-serialization-lib/en/latest/getting-started/generating-keys.html](https://docs.cardano.org/projects/cardano-serialization-lib/en/latest/getting-started/generating-keys.html)  
I think this can be used to generate private and public address from recovery phrase.

---

<div class="post-metadata">

**Author:** ![nimrod](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.cardano.org/nimrod/32/19918_2.png) [@nimrod](https://forum.cardano.org/u/nimrod)\
**Post date:** [25 May 2021 12:28 UTC](https://forum.cardano.org/t/how-to-generate-address-directly-from-curve-point/62721/5 "2021-05-25T12:28:28Z")

</div>

> [@Philogy](#):
>
> I can’t seem to find the direct specification on how the different addresses are generated.

See [CIP1852](https://cips.cardano.org/cips/cip1852/) and “[About Address Derivation](https://docs.cardano.org/projects/cardano-wallet/en/latest/About-Address-Derivation.html)” in the docs. That might answer your question.

---

<div class="post-metadata">

**Author:** ![Philogy](https://avatars.discourse-cdn.com/v4/letter/p/f9ae1b/32.png) [@Philogy](https://forum.cardano.org/u/Philogy)\
**Post date:** [26 May 2021 10:28 UTC](https://forum.cardano.org/t/how-to-generate-address-directly-from-curve-point/62721/6 "2021-05-26T10:28:22Z")

</div>

Only seems to provide a spec for the old address format.

---

<div class="post-metadata">

**Author:** ![Philogy](https://avatars.discourse-cdn.com/v4/letter/p/f9ae1b/32.png) [@Philogy](https://forum.cardano.org/u/Philogy)\
**Post date:** [26 May 2021 10:40 UTC](https://forum.cardano.org/t/how-to-generate-address-directly-from-curve-point/62721/7 "2021-05-26T10:40:12Z")

</div>

As I said I don’t want to generate an address from a mnemonic phrase but instead directly from a cryptographic point

---

<div class="post-metadata">

**Author:** ![nimrod](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.cardano.org/nimrod/32/19918_2.png) [@nimrod](https://forum.cardano.org/u/nimrod)\
**Post date:** [26 May 2021 10:47 UTC](https://forum.cardano.org/t/how-to-generate-address-directly-from-curve-point/62721/8 "2021-05-26T10:47:16Z")

</div>

The 1852 is what we’re currently using.
