void TripleDESCryptor::Decrypt(const char* input, char* output, size_t length) const { int n = 0; DES_cblock ivec = {0}; DES_key_schedule ks1(ks1_); DES_key_schedule ks2(ks2_); DES_key_schedule ks3(ks3_); DES_ede3_cfb64_encrypt((const unsigned char*)input, (unsigned char*)output, length, &ks1, &ks2, &ks3, &ivec, &n, DES_DECRYPT); }
bool tryConnectLocal() { KExtendedSocket ks1("::", "0", KExtendedSocket::ipv6Socket | KExtendedSocket::passiveSocket), ks2; const KInetSocketAddress *ksin1, *ksin2; printf("Attempting a loop-back connection\n\tTrying to listen on socket..."); if(ks1.listen() != 0) { printf("failed\n\tReason was: %s\n", (const char *)KExtendedSocket::strError(ks1.status(), ks1.systemError()).local8Bit()); return false; } ks1.setBlockingMode(false); ksin1 = (KInetSocketAddress *)ks1.localAddress(); printf("succeeded\n\tWe have socket %s listening\n", (const char *)ksin1->pretty().local8Bit()); ks2.setAddress("::1", ksin1->port()); ks2.setSocketFlags(KExtendedSocket::ipv6Socket | KExtendedSocket::noResolve); printf("\tTrying to connect to that socket..."); if(ks2.connect() != 0) { printf("failed\n\tReason was: %s\n", (const char *)KExtendedSocket::strError(ks2.status(), ks2.systemError()).local8Bit()); return false; } printf("suceeded\n"); ksin2 = dynamic_cast< const KInetSocketAddress * >(ks2.localAddress()); printf( "\tIf you may flip to another terminal/xterm and run netstat to see\n" "\tthis connection. It should be a connection from %s to %s.\n" "\tPress any key to continue\n", (const char *)ksin2->pretty().local8Bit(), (const char *)ksin1->pretty().local8Bit()); getchar(); return true; }