<p>This project is still in pre-development stage and my main concern is to understand if it is possible to use elliptic curve cryptography to add the private and public partial keys when the keys are generated on two separate devices.</p>
<p>If this is possible, the software will run on a SeedSigner device. Here is a link to a diagram of how it will work:</p>
<p><a href="https://i.sstatic.net/wL8fvbY8.jpg" rel="nofollow noreferrer"><img src="https://i.sstatic.net/wL8fvbY8.jpg" alt="enter image description here" /></a></p>
<p>Below is an explanation of the steps:</p>
<blockquote>
<p>&quot;You can add two private keys together, and the public key for that
the same as if you added the two public keys for those private keys
together.</p>
<p>Here's an example based on your diagram:</p>
<p>Private Key 1 =
5f2b5383d7ac8d05eb37fb636476a71b5b0af1b2261c2105ece2edc09da3c4fe<br />
Public Key 1 =
02e526ffa1ffce8c47babddb01240c2373e2ad65195543b15377d2918d32d2af69</p>
<p>Private Key 2 =
4de9ec9c3766c7230ccfe12ae8230547dbfb755ae148624f88831d6cd1893608<br />
Public Key 2 =
0313fa7838307dbed5625f997a20ddea16efab775ce206d00dce84183ce02ea900</p>
<p>If you combine these two private keys together, you get the following
full private key and full public key:</p>
<p>Private Key 1 + Private Key 2 =
ad1540200f135428f807dc8e4c99ac633706670d0764835575660b2d6f2cfb06<br />
Full Public Key =
033b7287de5731320a35018584b0e5700f50a053cd3d86dbf77cad16864ff5101f</p>
<p>You can also add the two original public keys together on their own
(without needing the private keys) to get the same full public key:</p>
<p>Public Key 1 + Public Key 2 =
033b7287de5731320a35018584b0e5700f50a053cd3d86dbf77cad16864ff5101f</p>
<p>So you can generate the full public key without knowing the private
keys, but you need both of the private keys to be able to spend from
this full public key.&quot;</p>
</blockquote>
<p>Before I go ahead and start to find a developer to code this, I would appreciate any comments or feedback.</p>

CC BY-SA 4.0
2024-10-28T15:42:13.767Z
Thanks for tidying up my post @Murch... much appreciated!
SeedCard
CC BY-SA 4.0
2024-10-28T16:49:38.267Z
Yes, you can do this, but what is the point? Unless you actually use a multi-party signing scheme like MuSig2, you must bring the two private keys together to sign with it, on a single device that must be trusted to handle it safely. And if you have that, why not let it just generate the key alone in the first place?
Pieter Wuille
CC BY-SA 4.0
2024-10-28T22:19:14.863Z
Thank you for confirming that it is possible. The point is that you need both partial private keys to empty the wallet, but you can add the two partial public keys to create a full public key to fill the wallet without needing to have a single point of trust. The Card Holder (second partial keyholder) can fund the physical card wallet without third party risk or trusting the Card Issuer. The Card Issuer (first partial key holder) provides 'reputation'  without the option to rug the Card Holder. The funds can only be swept from the SEEDCARD with the consent of  both parties.
SeedCard
CC BY-SA 4.0
2024-12-08T12:54:53.050Z
Still working on the project and thinking about if it would be possible to combine partial key generation with cltv for added security - see this question: https://bitcoin.stackexchange.com/questions/124936/can-cltv-opcode-be-included-in-a-bitcoin-wallet-creation-script Is it possible to include cltv opcode to lock ALL associated  public addresses?
SeedCard
<wallet><security><secp256k1>
Do partial keys provide a new approach to creating physical bitcoin?
SeedCard
# Do partial keys provide a new approach to creating physical bitcoin?

(Asked by: username_0 on 2024-10-28)

This project is still in pre-development stage and my main concern is to understand if it is possible to use elliptic curve cryptography to add the private and public partial keys when the keys are generated on two separate devices.

If this is possible, the software will run on a SeedSigner device. Here is a link to a diagram of how it will work:

[![enter image description here](https://i.sstatic.net/wL8fvbY8.jpg)](https://i.sstatic.net/wL8fvbY8.jpg)

Below is an explanation of the steps:

> "You can add two private keys together, and the public key for that
> the same as if you added the two public keys for those private keys
> together.
>
> Here's an example based on your diagram:
>
> Private Key 1 =
> 5f2b5383d7ac8d05eb37fb636476a71b5b0af1b2261c2105ece2edc09da3c4fe  
> Public Key 1 =
> 02e526ffa1ffce8c47babddb01240c2373e2ad65195543b15377d2918d32d2af69
>
> Private Key 2 =
> 4de9ec9c3766c7230ccfe12ae8230547dbfb755ae148624f88831d6cd1893608  
> Public Key 2 =
> 0313fa7838307dbed5625f997a20ddea16efab775ce206d00dce84183ce02ea900
>
> If you combine these two private keys together, you get the following
> full private key and full public key:
>
> Private Key 1 + Private Key 2 =
> ad1540200f135428f807dc8e4c99ac633706670d0764835575660b2d6f2cfb06  
> Full Public Key =
> 033b7287de5731320a35018584b0e5700f50a053cd3d86dbf77cad16864ff5101f
>
> You can also add the two original public keys together on their own
> (without needing the private keys) to get the same full public key:
>
> Public Key 1 + Public Key 2 =
> 033b7287de5731320a35018584b0e5700f50a053cd3d86dbf77cad16864ff5101f
>
> So you can generate the full public key without knowing the private
> keys, but you need both of the private keys to be able to spend from
> this full public key."

Before I go ahead and start to find a developer to code this, I would appreciate any comments or feedback.

**Tags:** wallet, security, secp256k1

> **Comments:**
> **username_0**: Thanks for tidying up my post @Murch... much appreciated!  
> **username_1**: Yes, you can do this, but what is the point? Unless you actually use a multi-party signing scheme like MuSig2, you must bring the two private keys together to sign with it, on a single device that must be trusted to handle it safely. And if you have that, why not let it just generate the key alone in the first place?  
> **username_0**: Thank you for confirming that it is possible. The point is that you need both partial private keys to empty the wallet, but you can add the two partial public keys to create a full public key to fill the wallet without needing to have a single point of trust. The Card Holder (second partial keyholder) can fund the physical card wallet without third party risk or trusting the Card Issuer. The Card Issuer (first partial key holder) provides 'reputation'  without the option to rug the Card Holder. The funds can only be swept from the username_0 with the consent of  both parties.  
> **username_0**: Still working on the project and thinking about if it would be possible to combine partial key generation with cltv for added security - see this question: https://bitcoin.stackexchange.com/questions/124936/can-cltv-opcode-be-included-in-a-bitcoin-wallet-creation-script Is it possible to include cltv opcode to lock ALL associated  public addresses?  

---

## 0 answers

