Пример #1
0
// 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();
}
Пример #2
0
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();
    }
}