bool CryptoECDSA::CheckPubPrivKeyMatch(BTC_PRIVKEY const & cppPrivKey, BTC_PUBKEY const & cppPubKey) { BTC_PUBKEY computedPubKey; cppPrivKey.MakePublicKey(computedPubKey); BTC_ECPOINT ppA = cppPubKey.GetPublicElement(); BTC_ECPOINT ppB = computedPubKey.GetPublicElement(); return (ppA.x==ppB.x && ppA.y==ppB.y); }
SecureBinaryData CryptoECDSA::SerializePublicKey(BTC_PUBKEY const & pubKey) { BTC_ECPOINT publicPoint = pubKey.GetPublicElement(); CryptoPP::Integer pubX = publicPoint.x; CryptoPP::Integer pubY = publicPoint.y; SecureBinaryData pubData(65); pubData.fill(0x04); // we fill just to set the first byte... pubX.Encode(pubData.getPtr()+1, 32, UNSIGNED); pubY.Encode(pubData.getPtr()+33, 32, UNSIGNED); return pubData; }