PaymentCode::PaymentCode(const std::string& base58) { OTData rawCode; App::Me().Crypto().Util().Base58CheckDecode(base58, rawCode); if (81 == rawCode.GetSize()) { uint8_t prependByte, features; rawCode.OTfread(&prependByte, 1); rawCode.OTfread(&version_, 1); rawCode.OTfread(&features, 1); if (features & 0x80) { hasBitmessage_ = true; } OTData key; key.SetSize(33); chain_code_.SetSize(32); OT_ASSERT(33 == key.GetSize()); OT_ASSERT(32 == chain_code_.GetSize()); rawCode.OTfread(static_cast<uint8_t*>(const_cast<void*>(key.GetPointer())), key.GetSize()); rawCode.OTfread(static_cast<uint8_t*>(const_cast<void*>(chain_code_.GetPointer())), chain_code_.GetSize()); ConstructKey(key, chain_code_); if (hasBitmessage_) { rawCode.OTfread(&bitmessage_version_, 1); rawCode.OTfread(&bitmessage_stream_, 1); } } }
PaymentCode::PaymentCode(const proto::PaymentCode& paycode) : version_(paycode.version()) , chain_code_(paycode.chaincode().c_str(), paycode.chaincode().size()) , hasBitmessage_(paycode.has_bitmessage()) { OT_ASSERT(paycode.has_key()); OTData key(paycode.key().c_str(), paycode.key().size()); OTData chaincode(paycode.chaincode().c_str(), paycode.chaincode().size()); ConstructKey(key, chaincode); if (paycode.has_bitmessageversion()) { bitmessage_version_ = paycode.bitmessageversion(); } if (paycode.has_bitmessagestream()) { bitmessage_stream_ = paycode.bitmessagestream(); } }
PaymentCode::PaymentCode( const uint32_t nym, const bool bitmessage, const uint8_t bitmessageVersion, const uint8_t bitmessageStream) : hasBitmessage_(bitmessage) , bitmessage_version_(bitmessageVersion) , bitmessage_stream_(bitmessageStream) { serializedAsymmetricKey privatekey = App::Me().Crypto().BIP32().GetPaymentCode(nym); chain_code_.Assign( privatekey->chaincode().c_str(), privatekey->chaincode().size()); serializedAsymmetricKey key = App::Me().Crypto().BIP32().PrivateToPublic(*privatekey); OTData pubkey(key->key().c_str(), key->key().size()); ConstructKey(pubkey, chain_code_); }
//! Default constructor Edge(size_t v1, size_t v2, double weight) : m_key(ConstructKey(v1, v2)) , m_weight(weight) { assert(m_weight >= 0); }