// NEEDS TO BE TESTED void CoinQKeychainSqlite3::insertKey(const uchar_vector& privKey, int type, int status, const std::string& label, bool bCompressed, int minHeight, int maxHeight) { if (type < 1 || type > 2) { throw CoinQ::Exception("Invalid type.", CoinQ::Exception::INVALID_PARAMETERS); } if (status < 1 || status > 2) { throw CoinQ::Exception("Invalid status.", CoinQ::Exception::INVALID_PARAMETERS); } CoinKey key; key.setCompressed(bCompressed); key.setPrivateKey(privKey); uchar_vector pubkey = key.getPublicKey(); std::string pubkeyhash = ripemd160(sha256(pubkey)).getHex(); std::string pubkeyhex = pubkey.getHex(); std::string privkeyhex = privKey.getHex(); SQLite3Stmt stmt; stmt.prepare(db, "INSERT INTO `keys` (`hash`, `pubkey`, `privkey`, `type`, `status`, `minheight`, `maxheight`, `label`) VALUES (?,?,?,?,?,?,?,?)"); stmt.bindText(1, pubkeyhash); stmt.bindText(2, pubkeyhex); stmt.bindText(3, privkeyhex); stmt.bindInt (4, type); stmt.bindInt (5, status); stmt.bindInt (6, minHeight); stmt.bindInt (7, maxHeight); stmt.bindText(8, label); stmt.step(); stmt.finalize(); }
void CoinQKeychainSqlite3::generateNewKeys(int count, int type, bool bCompressed) { SQLite3Stmt stmt; CoinKey key; key.setCompressed(bCompressed); stmt.prepare(db, "INSERT INTO `keys` (`hash`, `pubkey`, `privkey`, `type`, `status`, `minheight`, `maxheight`) VALUES (?,?,?,?,?,-1,-1)"); for (int i = 0; i < count; i++) { key.generateNewKey(); uchar_vector pubkey = key.getPublicKey(); std::string pubkeyhash = ripemd160(sha256(pubkey)).getHex(); std::string pubkeyhex = pubkey.getHex(); uchar_vector privkey = key.getPrivateKey(); std::string privkeyhex = privkey.getHex(); stmt.reset(); stmt.bindText(1, pubkeyhash); stmt.bindText(2, pubkeyhex); stmt.bindText(3, privkeyhex); stmt.bindInt (4, type); stmt.bindInt (5, Status::POOL); stmt.step(); } }