void CPhysicalLinkHelper::BaseConstructL()
	{
	LOG_FUNC
	
	// create Proxy telling it the possible PHY
	iBTProxySAP = CBTProxySAP::NewL(iLinkMgr, &iLink);
	iBTProxySAP->SetNotify(this);
	
	TCallBack ecb(EventReceivedCallBack, this);
	iEventReceivedCallBack = new (ELeave)CAsyncCallBack(ecb, EActiveHighPriority);
	}
Ejemplo n.º 2
0
Archivo: des_R.c Proyecto: kgadek/kpfp
int main(int argc, char** args) {
	if(argc!=5 || (strcmp(args[1], "cbc") && strcmp(args[1], "ecb")) || (strcmp(args[2], "encrypt") && strcmp(args[2], "decrypt"))) {
		printf("uzycie: des cbc/ecb encrypt/decrypt plik.in plik.key\ndane wyjsciowe przekierowywane sa do pliku plik.out\n");
		return 1;
	}
	FILE* in = fopen(args[3], "r");
	if(!in) {
		printf("blad przy otwieraniu pliku...\n");
		return 1;
	}
	FILE* key;
	if(strcmp(args[2], "encrypt"))
		key = fopen(args[4], "r");
	else 
		key = fopen(args[4], "w");
	DES_key_schedule klucz;
	DES_cblock sekwencja;
	DES_random_key(&sekwencja);
	
	if(DES_set_key_checked(&sekwencja, &klucz)<0) {
		printf("blad przy generacji klucza!\n");
		return 1;
	}

	if(strcmp(args[1], "cbc")) {
		if(strcmp(args[2], "encrypt"))
			ecb(in, key, klucz, 0);
		else 
			ecb(in, key, klucz, 1);
	} else {
		if(strcmp(args[2], "encrypt"))
			cbc(in, key, klucz, 0); 
		else 
			cbc(in, key, klucz, 1);
	}
	fclose(in); fclose(key);
	return 0;
}
Ejemplo n.º 3
0
void Token::coumpute_authcode(BYTE challenge[8], BYTE rte_data[20]){
	BYTE static_rte64[64],
		response[8], //result
		data[64],
		rte_data64[64],
		digest[20],
		key_3des_24[24],
		magic_sum_out64[64];

	int pass_len = strlen(this->upass),
		pass_len_u = 2 * (pass_len + 1); //in UTF-8

	BYTE *token_pass_u = new BYTE[pass_len_u];
	memset(token_pass_u, 0, pass_len_u);

	for (int i = 0; i < pass_len; i++){
		token_pass_u[i * 2] = 0;
		token_pass_u[i * 2 + 1] = this->upass[i];
	}
	token_pass_u[pass_len * 2] = token_pass_u[pass_len * 2 + 1] = 0;
	//cout << "token_pass_u "; showarr(token_pass_u, pass_len_u, ':'); //DEBUG

	for (int i = 0; i < 64; i++){
		static_rte64[i] = 0x03;
		data[i] = token_pass_u[i % pass_len_u];
		rte_data64[i] = rte_data[i % 20];
	}

	//cout << "rte_data64 "; showarr(rte_data64, 64, ':'); //DEBUG
	//cout << "static_rte64 "; showarr(static_rte64, 64, ':'); //DEBUG
	//cout << "data "; showarr(data, 64, ':'); //DEBUG

	CryptoPP::SHA1 h;
	h.Update(static_rte64, 64);
	h.Update(rte_data64, 64);
	h.Update(data, 64);
	h.Final(digest);

	//cout << "1st digest "; showarr(digest, 20, ':'); //DEBUG

	for (int i = 0; i < 998; i++){
		CryptoPP::SHA1 h_cycle;
		h_cycle.Update(digest, 20);
		h_cycle.Final(digest);
	}

	memcpy(key_3des_24, digest, 20); //now we have 20 bytes of key, we need 4 bytes more

	h.Restart();
	h.Update(static_rte64, 64);

	this->magic_sum64(magic_sum_out64, digest, rte_data64);
	h.Update(magic_sum_out64, 64);

	this->magic_sum64(magic_sum_out64, digest, data);
	h.Update(magic_sum_out64, 64);

	h.Final(digest);

	for (int i = 0; i < 998; i++){
		CryptoPP::SHA1 h_cycle;
		h_cycle.Update(digest, 20);
		h_cycle.Final(digest);
	}

	memcpy(key_3des_24 + 20, digest, 4); //add remaining 4 bytes, now we have complete key
	//cout << "DES-EDE24 key "; showarr(key_3des_24, 24, ':'); //DEBUG

	//DES-EDE24
	//CryptoPP::DES_EDE3::Encryption e(key_3des_24, CryptoPP::DES_EDE3::DEFAULT_KEYLENGTH);
	//CryptoPP::ECB_Mode_ExternalCipher::Encryption ecb(e);
	CryptoPP::ECB_Mode<CryptoPP::DES_EDE3>::Encryption ecb(key_3des_24, CryptoPP::DES_EDE3::DEFAULT_KEYLENGTH);
	ecb.ProcessData(response, challenge, 8);
	memcpy(challenge, response, 8);

	delete[] token_pass_u;
}