/* * Copyright (c) 2013 a3955269 all rights reversed, no rights reserved. */ ////////////////////////////////////////////////////////////////////////////// #include #include #include #include "include/libcrypt_samsung.h" ////////////////////////////////////////////////////////////////////////////// void xconvert_key_to_hex_ascii(unsigned char *master_key, unsigned int keysize, char *master_key_ascii) { unsigned int i, a; unsigned char nibble; for (i=0, a=0; i> 4) & 0xf; master_key_ascii[a] = nibble + (nibble > 9 ? 0x37 : 0x30); nibble = master_key[i] & 0xf; master_key_ascii[a+1] = nibble + (nibble > 9 ? 0x37 : 0x30); } /* Add the null termination */ master_key_ascii[a] = '\0'; } int decrypt_EDK( dek_t *dek, const edk_payload_t *edk, /*const*/ char *passwd) { void *lib = dlopen("libsec_km.so", RTLD_LAZY); if(!lib) return -100; int r = -101; decrypt_EDK_t sym = (decrypt_EDK_t)dlsym(lib, "decrypt_EDK"); if(sym) r = sym(dek, edk, passwd); dlclose(lib); return r; } int mount_ecryptfs_drive( const char *passwd, const char *source, const char *target, int filter) { void *lib = dlopen("libsec_ecryptfs.so", RTLD_LAZY); if(!lib) return -100; int r = -101; mount_ecryptfs_drive_t sym = (mount_ecryptfs_drive_t)dlsym(lib, "mount_ecryptfs_drive"); if(sym) r = sym(passwd, source, target, filter); dlclose(lib); return r; }