Received: from sog-mx-4.v43.ch3.sourceforge.com ([172.29.43.194] helo=mx.sourceforge.net) by sfs-ml-1.v29.ch3.sourceforge.com with esmtp (Exim 4.76) (envelope-from ) id 1W3CYg-0008CT-5v for bitcoin-development@lists.sourceforge.net; Tue, 14 Jan 2014 22:34:06 +0000 Received-SPF: pass (sog-mx-4.v43.ch3.sourceforge.com: domain of taplink.co designates 50.117.27.232 as permitted sender) client-ip=50.117.27.232; envelope-from=jeremy@taplink.co; helo=mail.taplink.co; Received: from mail.taplink.co ([50.117.27.232]) by sog-mx-4.v43.ch3.sourceforge.com with smtp (Exim 4.76) id 1W3CYf-0005fb-A8 for bitcoin-development@lists.sourceforge.net; Tue, 14 Jan 2014 22:34:06 +0000 Received: from laptop-air.hsd1.ca.comcast.net ([192.168.168.135]) by mail.taplink.co ; Tue, 14 Jan 2014 14:43:22 -0800 Content-Type: text/plain; charset=iso-8859-15; format=flowed; delsp=yes To: "Adam Back" References: <20140113194049.GJ38964@giles.gnomon.org.uk> <52D4458C.6010909@gmail.com> <19AE1549-16E0-4119-8BE9-8F4DFD3381C1@taplink.co> <20140114141908.GB29950@savin> <20140114215106.GA13267@netbook.cypherspace.org> Date: Tue, 14 Jan 2014 14:34:01 -0800 MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: "Jeremy Spilman" Organization: TapLink Message-ID: In-Reply-To: <20140114215106.GA13267@netbook.cypherspace.org> User-Agent: Opera Mail/1.0 (Win32) oclient: 192.168.168.135#jeremy@taplink.co#465 X-Spam-Score: -1.7 (-) X-Spam-Report: Spam Filtering performed by mx.sourceforge.net. See http://spamassassin.org/tag/ for more details. -1.5 SPF_CHECK_PASS SPF reports sender host as permitted sender for sender-domain -0.0 SPF_PASS SPF: sender matches SPF record -0.1 RP_MATCHES_RCVD Envelope sender domain matches handover relay domain -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature X-Headers-End: 1W3CYf-0005fb-A8 Cc: "bitcoin-development@lists.sourceforge.net" Subject: Re: [Bitcoin-development] Stealth Addresses X-BeenThere: bitcoin-development@lists.sourceforge.net X-Mailman-Version: 2.1.9 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jan 2014 22:34:06 -0000 On Tue, 14 Jan 2014 13:51:06 -0800, Adam Back wrote: > I saw in the math version you had said Q'=Q+H(S) and I presumed it was a > typo, but your code says the same thing. I presume you meant Q'=Q+H(S)*G > and therefore that Util.SingleSHA256() multiplies by G internally? > > Adam > Thanks for reviewing this. The relevant line: byte[] q1New = EC.PointAdd(Q1, Util.SingleSHA256(S1)); SingleSHA256 is a single application of SHA256 -- named so since 'SHA256' functions in many Bitcoin libraries too often actually run DoubleSHA256. 32 bytes are returned. The multiplication by 'G' that you mention is part of my EC.PointAdd... I should probably just publish all my code as MIT and be done with it ;-) Thanks, Jeremy public static byte[] PointAdd(byte[] point, byte[] scalar, bool compressed = true) { var point1 = new OpenSSL.Crypto.EC.Point(EcGroup, point); var num = OpenSSL.Core.BigNumber.FromArray(scalar); var point2 = OpenSSL.Crypto.EC.Point.Multiply(EcGroup, num, EcBnContext); var result = point1.Add(point2, EcBnContext); if (compressed) return result.GetBytes(ConversionForm.Compressed); else return result.GetBytes(ConversionForm.Uncompressed); }