コード例 #1
0
ファイル: script.c プロジェクト: jma127/bitc-rpc
static int script_push_pubkey(struct wallet *wallet, const uint160 *keyHash,
                              struct buff *scriptSig) {
  size_t pkeylen;
  uint8 *pkey;
  struct key *k;

  k = wallet_lookup_pubkey(wallet, keyHash);
  if (k == NULL) {
    return 1;
  }

  key_get_pubkey(k, &pkey, &pkeylen);

  Log(LGPFX " pkeylen=%zu\n", pkeylen);
  script_push_data(scriptSig, pkey, pkeylen);
  free(pkey);

  return 0;
}
コード例 #2
0
ファイル: wallet.c プロジェクト: Methimpact/bitc
static void
wallet_save_key_cb(const void *key,
                   size_t klen,
                   void *clientData,
                   void *keyData)
{
   struct wallet_key *wkey = (struct wallet_key *)keyData;
   struct config *wcfg = (struct config *)clientData;
   uint8 *privkey;
   uint8 *pubkey;
   size_t privlen;
   size_t publen;
   char *privStr;
   char pubStr[256];

   key_get_privkey(wkey->key, &privkey, &privlen);
   key_get_pubkey(wkey->key,  &pubkey,  &publen);

   privStr = b58_bytes_to_privkey(privkey, privlen);
   str_snprintf_bytes(pubStr, sizeof pubStr, NULL, pubkey, publen);

   config_setint64(wcfg, wkey->birth,    "key%u.birth",  wkey->cfg_idx);
   config_setstring(wcfg, wkey->desc,    "key%u.desc",   wkey->cfg_idx);
   config_setstring(wcfg, pubStr,        "key%u.pubkey", wkey->cfg_idx);
   config_setbool(wcfg, wkey->spendable, "key%u.spendable", wkey->cfg_idx);

   if (btc->wallet->pass) {
      char *enc = wallet_encrypt_string(btc->wallet, privStr, btc->wallet->ckey);
      free(privStr);
      privStr = enc;
   }
   config_setstring(wcfg, privStr, "key%u.privkey", wkey->cfg_idx);

   free(pubkey);
   free(privkey);
   free(privStr);
}