| | |
| | | #include <linux/if_link.h> |
| | | #include <sys/socket.h> |
| | | #include <netpacket/packet.h> |
| | | |
| | | #include <valgrind/memcheck.h> |
| | | #include <paths.h> |
| | | |
| | | #include <stdlib.h> |
| | |
| | | f_return = BUFFER_TOO_SMALL; |
| | | } |
| | | freeifaddrs(ifaddr); |
| | | free(ifnames); |
| | | return f_return; |
| | | } |
| | | /** |
| | |
| | | size_t len; |
| | | unsigned int i, j; |
| | | char * hexuuid; |
| | | char cur_character; |
| | | unsigned char cur_character; |
| | | //remove characters not in hex set |
| | | len = strlen(uuid); |
| | | hexuuid = (char *) malloc(sizeof(char) * strlen(uuid)); |
| | | memset(buffer_out, 0, out_size); |
| | | memset(hexuuid, 0, sizeof(char) * strlen(uuid)); |
| | | |
| | | for (i = 0, j = 0; i < len; i++) { |
| | | if (isxdigit(uuid[i])) { |
| | |
| | | hexuuid[j++] = '0'; |
| | | } |
| | | hexuuid[j] = '\0'; |
| | | for (i = 0; i < j; i++) { |
| | | for (i = 0; i < j/2; i++) { |
| | | sscanf(&hexuuid[i * 2], "%2hhx", &cur_character); |
| | | buffer_out[i % out_size] = buffer_out[i % out_size] ^ cur_character; |
| | | } |
| | |
| | | maxDrives = MAX_UNITS; |
| | | tmpDrives = (DiskInfo *) malloc(sizeof(DiskInfo) * maxDrives); |
| | | } |
| | | statDrives = (__ino64_t *) malloc(maxDrives * sizeof(__ino64_t )); |
| | | memset(tmpDrives, 0, sizeof(DiskInfo) * maxDrives); |
| | | statDrives = (__ino64_t *) malloc(maxDrives * sizeof(__ino64_t )); |
| | | memset(statDrives, 0, sizeof(__ino64_t ) * maxDrives);; |
| | | |
| | | aFile = setmntent("/proc/mounts", "r"); |
| | | if (aFile == NULL) { |
| | |
| | | #ifdef _DEBUG |
| | | printf("Open /dev/disk/by-uuid fail"); |
| | | #endif |
| | | free(statDrives); |
| | | return ERROR; |
| | | } |
| | | |
| | |
| | | parseUUID(dir->d_name, tmpDrives[i].disk_sn, |
| | | sizeof(tmpDrives[i].disk_sn)); |
| | | #ifdef _DEBUG |
| | | printf("uuid %d %s %s %02x%02x%02x%02x\n", i, |
| | | tmpDrives[i].device, path, |
| | | VALGRIND_CHECK_VALUE_IS_DEFINED(tmpDrives[i].device); |
| | | |
| | | printf("uuid %d %s %02x%02x%02x%02x\n", i, |
| | | tmpDrives[i].device, |
| | | tmpDrives[i].disk_sn[0], |
| | | tmpDrives[i].disk_sn[1], |
| | | tmpDrives[i].disk_sn[2], |
| | |
| | | } |
| | | } |
| | | */ |
| | | free(statDrives); |
| | | return result; |
| | | } |
| | | |
| | |
| | | if (!mdctx) { |
| | | throw logic_error("Message digest creation context"); |
| | | } |
| | | const char *private_key = PRIVATE_KEY; |
| | | const char *private_key = PRIVATE_KEY |
| | | ; |
| | | BIO* bio = BIO_new_mem_buf((void*) (private_key), strlen(private_key)); |
| | | EVP_PKEY *pktmp = PEM_read_bio_PrivateKey(bio, NULL, NULL, NULL); |
| | | BIO_free(bio); |
| | |
| | | */ |
| | | //bio = BIO_new_fp(stdout, BIO_NOCLOSE); |
| | | /*int encodedSize = 4 * ceil(slen / 3); |
| | | char* buffer = (char*) (malloc(encodedSize + 1)); |
| | | memset(buffer,0,encodedSize+1);*/ |
| | | char* buffer = (char*) (malloc(encodedSize + 1)); |
| | | memset(buffer,0,encodedSize+1);*/ |
| | | string signatureStr = Opensslb64Encode(slen, signature); |
| | | /* |
| | | * BIO *bio, *b64; |
| | |
| | | */ |
| | | /* Clean up */ |
| | | //free(buffer); |
| | | if (pktmp) |
| | | EVP_PKEY_free(pktmp); |
| | | if (signature) |
| | | OPENSSL_free(signature); |
| | | |
| | |
| | | argv[i++] = fname.c_str(); |
| | | argv[i++] = "TEST"; |
| | | int retCode = LicenseGenerator::generateLicense(argc, argv); |
| | | delete (argv); |
| | | delete[] (argv); |
| | | BOOST_CHECK_EQUAL(retCode, 0); |
| | | BOOST_ASSERT(fs::exists(fname)); |
| | | CSimpleIniA ini; |
| | |
| | | std::ifstream is(idfileLocation); |
| | | std::istream_iterator<string> start(is), end; |
| | | std::vector<string> reference_signatures(start, end); |
| | | BOOST_CHECK_EQUAL(reference_signatures.size(), num_strategies); |
| | | BOOST_ASSERT(reference_signatures.size() == num_strategies); |
| | | PcSignature generated_identifier; |
| | | BOOST_CHECKPOINT("Generating current signatures and comparing with past"); |
| | | for (int i = 0; i < num_strategies; i++) { |
| | | FUNCTION_RETURN generate_ok = generate_user_pc_signature( |
| | | generated_identifier, strategies[i]); |
| | | BOOST_ASSERT(generate_ok == FUNCTION_RETURN::OK); |
| | | if (memcmp(generated_identifier, reference_signatures[i].c_str(), |
| | | sizeof(PcSignature))) { |
| | | if (reference_signatures[i] != generated_identifier) { |
| | | string message = string("pc signature compare fail: strategy:") |
| | | + to_string(strategies[i]) + " generated: [" |
| | | + generated_identifier + "] reference: [" |
| | |
| | | for (int j = 0; j < 100; j++) { |
| | | for (unsigned int i = 0; i < reference_signatures.size(); i++) { |
| | | PcSignature pcsig; |
| | | memcpy(pcsig, reference_signatures[i].c_str(), sizeof(PcSignature)); |
| | | strncpy(pcsig, reference_signatures[i].c_str(), sizeof(PcSignature)); |
| | | EVENT_TYPE val_result = validate_pc_signature(pcsig); |
| | | string message = string("pc signature verification strategy:") |
| | | + to_string(i) + " generated: [" + generated_identifier |