Esempio n. 1
0
const char* import_object_generator::get_key(int iter, unsigned int *len)
{
    if (m_keys == NULL) {
        return object_generator::get_key(iter, len);
    } else {
        unsigned int k = get_key_index(iter) - 1;
        return m_keys->get(k, len);
    }
}
Esempio n. 2
0
File: ort.c Progetto: 0x42/fire
/**
 * rt_iskey - Проверка наличия ключа в хэш таблице.
 * @ht:  Хэш таблица.
 * @key: Ключ.
 *
 * @return  1- если ключ найден, иначе - 0.
 */
int rt_iskey(TOHT *ht, const char *key)
{
	if (key == NULL) return 0;
	
	if (get_key_index(ht, key) < ht->size)
		/* Ключ найден */
		return 1;
	else
		return 0;
}
Esempio n. 3
0
const char* object_generator::get_key(int iter, unsigned int *len)
{
    unsigned int l;
    m_key_index = get_key_index(iter);
    
    // format key
    l = snprintf(m_key_buffer, sizeof(m_key_buffer)-1,
        "%s%u", m_key_prefix, m_key_index);
    if (len != NULL) *len = l;
    
    return m_key_buffer;
}
Esempio n. 4
0
static int proc_des_write(struct file *file, const char __user *buffer,
			  unsigned long count, void *data)
{
	if(count < 2) {
		printk(KERN_WARNING "Call to write() with too little bytes");
		return -EINVAL;
	}
	{
		// We add 2 to have null terminator.
		char tmp_buffer[2*CRYPTO_MAX_KEY_LENGTH+2] = {0};
		int ix; int err;
		struct crypto_db *db;
		if(count > 2*CRYPTO_MAX_KEY_LENGTH + 1) {
			printk(KERN_WARNING "Key too long");
			return -E2BIG;
		}

		if(copy_from_user(tmp_buffer, buffer, count)) {
			return -EFAULT;
		}

		db = get_or_create_crypto_db(
			&get_cryptodev()->crypto_dbs, current_euid());
		if(NULL == db) {
			printk(KERN_WARNING "get_or_create_crypto_db failed\n");
			return -ENOMEM;
		}

		switch(tmp_buffer[0]) {
		case 'A':
			if(!is_valid_key(tmp_buffer+1, count-1)) {
				printk(KERN_WARNING "invalid key\n");
				return -EINVAL;
			}
			ix = acquire_free_context_index(db);
			if(ix < 0) {
				return ix;
			} else {
				err = add_key_to_db(db, ix, tmp_buffer+1,
						    count-1);
				release_context_index(db, ix);
				if(err) {
					return err;
				}
			}
			break;
		case 'D':
			// tmp_buffer is null terminated, so we don't pass len
			ix = get_key_index(tmp_buffer+1);
			if(ix < 0) {
				printk(KERN_WARNING "invalid index\n");
				return -EINVAL;
			}
			acquire_context_index(db, ix);
			err = delete_key_from_db(db, ix);
			release_context_index(db, ix);
			if(err) {
				return err;
			}
			break;
		default:
			printk(KERN_WARNING "unknown operation\n");
			return -EINVAL;
			break;
		}
		return count;
	}
}