Exemple #1
0
static int
start (CcnetProcessor *processor, int argc, char **argv)
{
    SeafileCheckTxV3Proc *proc = (SeafileCheckTxV3Proc *)processor;
    TransferTask *task = proc->task;
    char *type, *enc_token;
    GString *buf;

    if (argc != 1) {
        transition_state_to_error (task, TASK_ERR_CHECK_UPLOAD_START);
        ccnet_processor_done (processor, FALSE);
        return -1;
    }

    type = argv[0];
    if (strcmp (type, "upload") == 0)
        proc->type = CHECK_TX_TYPE_UPLOAD;
    else
        proc->type = CHECK_TX_TYPE_DOWNLOAD;

    enc_token = encrypt_token (processor, task->token);
    if (!enc_token) {
        transition_state_to_error (task, TASK_ERR_CHECK_UPLOAD_START);
        ccnet_processor_done (processor, FALSE);
        return -1;
    }

    buf = g_string_new(NULL);
    g_string_append_printf (buf,
              "remote %s seafile-check-tx-slave-v3 %s %d %s %s %s",
              processor->peer_id, type, CURRENT_PROTO_VERSION, 
            task->repo_id, task->to_branch, enc_token);

    ccnet_processor_send_request (processor, buf->str);

    g_free (enc_token);
    g_string_free (buf, TRUE);

    return 0;
}
Exemple #2
0
static int32_t
test_wrap(struct client *c1, int32_t hc1, struct client *c2, int32_t hc2,
	  int conf)
{
    krb5_data msg, wrapped, out;
    int32_t val;

    msg.data = "foo";
    msg.length = 3;

    krb5_data_zero(&wrapped);
    krb5_data_zero(&out);

    val = encrypt_token(c1, hc1, conf, &msg, &wrapped);
    if (val) {
	warnx("encrypt_token failed to host: %s", c1->moniker);
	return val;
    }
    val = decrypt_token(c2, hc2, conf, &wrapped, &out);
    if (val) {
	krb5_data_free(&wrapped);
	warnx("decrypt_token failed to host: %s", c2->moniker);
	return val;
    }

    if (msg.length != out.length) {
	warnx("decrypted'ed token have wrong length (%lu != %lu)",
	      (unsigned long)msg.length, (unsigned long)out.length);
	val = GSMERR_ERROR;
    } else if (memcmp(msg.data, out.data, msg.length) != 0) {
	warnx("decryptd'ed token have wrong data");
	val = GSMERR_ERROR;
    }

    krb5_data_free(&wrapped);
    krb5_data_free(&out);
    return val;
}