Title: How to generate public key from private key Post by: TAnalyzer on December 16, 2017, 08:40:29 PM i went through loads of articles include ECDSA ones but i couldn't find a detailed scheme on how to generate the public key out of the private one.
anyone has any idea? Title: Re: How to generate public key from private key Post by: mda on December 16, 2017, 09:04:22 PM https://coinb.in/#verify is good enough for this? Do it off-line of course.
Title: Re: How to generate public key from private key Post by: TAnalyzer on December 16, 2017, 09:19:27 PM https://coinb.in/#verify is good enough for this? Do it off-line of course. i'm not interested of any website to do it for me, i want to understand the algorithm behind it. Title: Re: How to generate public key from private key Post by: achow101 on December 17, 2017, 01:11:56 AM The public key is calculated by taking the generator point G and performing elliptic curve point multiplication on it with the private key. Given private key d and generator G, you do d * G. The process for elliptic curve point multiplication is detailed on wikipedia (https://en.wikipedia.org/wiki/Elliptic_curve_point_multiplication). The curve parameters are the ones for the secp256k1 curve which are defined here (section 2.4.1): http://www.secg.org/sec2-v2.pdf
Title: Re: How to generate public key from private key Post by: TAnalyzer on December 17, 2017, 02:48:32 PM The public key is calculated by taking the generator point G and performing elliptic curve point multiplication on it with the private key. Given private key d and generator G, you do d * G. The process for elliptic curve point multiplication is detailed on wikipedia (https://en.wikipedia.org/wiki/Elliptic_curve_point_multiplication). The curve parameters are the ones for the secp256k1 curve which are defined here (section 2.4.1): http://www.secg.org/sec2-v2.pdf thank you very much. i have only one missing part to understand the complete picture. G is a point on the curve with two coordinates(X,Y), how can you multiply the with a number and end up with a single number(public key) and not with a new point? Title: Re: How to generate public key from private key Post by: aplistir on December 17, 2017, 03:13:47 PM i have only one missing part to understand the complete picture. G is a point on the curve with two coordinates(X,Y), how can you multiply the with a number and end up with a single number(public key) and not with a new point? What you get is a new point, which is your public key. There are two possible ways to represent your public key. Either the long one with 04 + x_coordinate + y_coordinate or (the compressed way) if y is even 02 + x_coordinate and for odd y 03 + x_coordinate Your public key is a point in the field. It is just represented in the way I described above. And you can always calculate the x and y coordinates from the compressed format too. from the public key you can calculate your address, and for that you have to take SHA256 and Ripemod160 hashes. And add a few check bytes to the end... Title: Re: How to generate public key from private key Post by: TAnalyzer on December 17, 2017, 07:23:59 PM i have only one missing part to understand the complete picture. G is a point on the curve with two coordinates(X,Y), how can you multiply the with a number and end up with a single number(public key) and not with a new point? What you get is a new point, which is your public key. There are two possible ways to represent your public key. Either the long one with 04 + x_coordinate + y_coordinate or (the compressed way) if y is even 02 + x_coordinate and for odd y 03 + x_coordinate Your public key is a point in the field. It is just represented in the way I described above. And you can always calculate the x and y coordinates from the compressed format too. from the public key you can calculate your address, and for that you have to take SHA256 and Ripemod160 hashes. And add a few check bytes to the end... Thanks for the explenation when i multiply G with my secret key i get astronomical number, which is not the public key, what am i doing wrong consider those params? var Gx = 79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798 var Gy = 483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8 var private key = 845ADD761F80CD7BA8AD296B262939D6191370D286D29D4F06A4F1C9A8DE4E4B i get this public key which is not the right one C532FC9C12D71842216394CD94771F9B72302CABD0C5D4CCCF1585131548378D1B9F08218A4E3A0 F5E06D981D74720B8F59235385F25AECE75E6FFA787AF3988DD1D215B39C94994D0600D31C1971E 88CF8623AC07DCB72279CD66038AD281049F0E028D31C40417FDD97364A8D6664AEB3437740CE41 D37928CF956E64E61E8 Title: Re: How to generate public key from private key Post by: achow101 on December 17, 2017, 10:36:03 PM Thanks for the explenation Since this is finite field arithmetic, everything needs to be done modulo n (n is defined in the secp256k1 spec). Doing all operations mod n (or doing all operations and then performing mod n) should fix this problem.when i multiply G with my secret key i get astronomical number, which is not the public key, what am i doing wrong consider those params? var Gx = 79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798 var Gy = 483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8 var private key = 845ADD761F80CD7BA8AD296B262939D6191370D286D29D4F06A4F1C9A8DE4E4B i get this public key which is not the right one C532FC9C12D71842216394CD94771F9B72302CABD0C5D4CCCF1585131548378D1B9F08218A4E3A0 F5E06D981D74720B8F59235385F25AECE75E6FFA787AF3988DD1D215B39C94994D0600D31C1971E 88CF8623AC07DCB72279CD66038AD281049F0E028D31C40417FDD97364A8D6664AEB3437740CE41 D37928CF956E64E61E8 Title: Re: How to generate public key from private key Post by: hopeAo on December 25, 2017, 08:01:38 AM i went through loads of articles include ECDSA ones but i couldn't find a detailed scheme on how to generate the public key out of the private one. anyone has any idea? I think this link should help https://askubuntu.com/questions/53553/how-do-i-retrieve-the-public-key-from-a-ssh-private-key https://opengear.zendesk.com/entries/23216142-Generating-and-uploading-SSH-keys-under-Windows http://www.beginninglinux.com/home/server-administration/openssh-keys-certificates-authentication-pem-pub-crt |