Exemplo n.º 1
0
void eParentalSetup::plockChecked(int i)
{
	parentalpin_enabled = i;
	if ( i && !changeParentalPin->isVisible() )
	{
		// Force the user to setup a new pin
		if (ChangePin(changeParentalPin))
		{
			changeParentalPin->show();
			hidelocked->show();
		}
	}
	else
	{
		if ( pinCheck::getInstance()->checkPin(pinCheck::parental) )
		{
			parentalpin=-1;
			changeParentalPin->hide();
			hidelocked->hide();
		}
		else
		{
			hidelocked->show();
			parentallock->setCheck(1);
		}
	}
}
Exemplo n.º 2
0
void eParentalSetup::slockChecked(int i)
{
	setuppin_enabled = i;
	if ( i && !changeSetupPin->isVisible() )
	{
		// Force the user to setup a new pin
		if (ChangePin(changeSetupPin))
		{
			changeSetupPin->show();
		}
		else
		{
			setuplock->setCheck(0);
		}
	}
	else
	{
		if ( pinCheck::getInstance()->checkPin(pinCheck::setup) )
		{
			setuppin=-1;
			changeSetupPin->hide();
		}
		else
			setuplock->setCheck(1);
	}
}
Exemplo n.º 3
0
void eParentalSetup::changePin(eButton *p)
{
	ChangePin(p);
}
int main(int argc, char **argv)
{
	int i, rc;
#if defined(_WIN32) && defined(_DEBUG)
	atexit((void(*)(void))_CrtDumpMemoryLeaks);
#endif
	if (argc < 2)
		return Usage();

	if (strcmp(argv[1], "--get-pin-status") == 0) {
		rc = GetPinStatus();
		printf("get-pin-status returns: 0x%4x\n", rc);
		return 0;
	}
	if (strcmp(argv[1], "--save-files") == 0) {
		DumpAllFiles(argc >= 3 ? argv[2] : 0);
		return 0;
	}
	if (argc < 3)
		return Usage();

	if (strcmp(argv[1], "--restore-files") == 0) {
		int rc = SC_Open(argv[2], 0);
		if (rc < 0)
			return rc;
		for (i = 3; i < argc; i++) {
			const char *name = argv[i];
			int dataLen, off;
			uint8 *pData;
			uint8 afid[2];
			uint16 fid;
			if (strlen(name) != 8 || strcmp(name + 4, ".asn") || Hex2Bin(name, 4, afid)) {
				printf("filename '%s' must be 'abcd.asn' where abcd is a valid hex number\n", name);
				continue;
			}
			fid = afid[0] << 8 | afid[1];
			if (fid == 0x2f02) {
				printf("filename '%s' skipped, EF_DevAut is readonly\n", name);
				continue;
			}
			ReadFromFile(name, pData, dataLen);
			if (pData == NULL) {
				printf("cant read file '%s'\n", name);
				continue;
			}
			if (dataLen == 0) {
				free(pData);
				printf("file '%s' empty\n", name);
				continue;
			}
			rc = 0;
			for (off = 0; off < dataLen;) {
				int len = dataLen - off;
				if (len > MAX_OUT_IN - 6)
					len = MAX_OUT_IN - 6;
				rc = SC_WriteFile(fid, off, pData + off, len);
				if (rc < 0)
					break;
				off += len;
			}
			free(pData);
			if (rc < 0) {
				printf("write error %d file '%s'\n", rc, name);
				continue;
			}
			printf("file '%s' successfully restored\n", name);
		}
		SC_Close();
		return 0;
	}
	if (strcmp(argv[1], "--init-token") == 0) {
		int len;
		uint8* buf;
		switch (argc) {
		default:
			return Usage();
		case 3:
			rc = InitializeToken(argv[2], NULL, 0, NULL);
			break;
		case 4:
			rc = InitializeToken(argv[2], argv[3], 0, NULL);
			break;
		case 5:
			ReadFromFile(argv[4], buf, len);
			if (buf == NULL) {
				printf("file '%s' not found\n", argv[4]);
				return ERR_INVALID;
			}
			if (len < 32 || (len & 31)) {
				free(buf);
				printf("file length of '%s' must be a positive multiple of 32\n", argv[4]);
				return ERR_INVALID;
			}
			rc = InitializeToken(argv[2], argv[3], len / 32, buf);
			free(buf);
			break;
		}
		printf("init-token returns: 0x%4x\n", rc);
		return rc == 0x9000 ? 0 : rc;
	}
	if (strcmp(argv[1], "--unlock-pin") == 0) {
		if (!(3 <= argc && argc <= 3))
			return Usage();
		rc = UnlockPin(argv[2]);
		printf("unlock-pin returns: 0x%4x\n", rc);
		return rc == 0x9000 ? 0 : rc;
	}
	if (strcmp(argv[1], "--set-pin") == 0) {
		if (!(3 <= argc && argc <= 4))
			return Usage();
		rc = SetPin(argv[2], argc == 3 ? NULL : argv[3]);
		printf("set-pin returns: 0x%4x\n", rc);
		return rc == 0x9000 ? 0 : rc;
	}
	if (strcmp(argv[1], "--change-pin") == 0) {
		if (!(4 <= argc && argc <= 4))
			return Usage();
		rc = ChangePin(argv[2], argv[3]);
		printf("change-pin returns: 0x%4x\n", rc);
		return rc == 0x9000 ? 0 : rc;
	}
	if (strcmp(argv[1], "--change-so-pin") == 0) {
		if (!(4 <= argc && argc <= 4))
			return Usage();
		rc = ChangeSoPin(argv[2], argv[3]);
		printf("change-pin returns: 0x%4x\n", rc);
		return rc == 0x9000 ? 0 : rc;
	}
	if (strcmp(argv[1], "--wrap-key") == 0) {
		if (!(5 <= argc && argc <= 5))
			return Usage();
		rc = WrapKey(argv[2], atoi(argv[3]), argv[4]);
		printf("wrap-key returns: 0x%4x\n", rc);
		return rc == 0x9000 ? 0 : rc;
	}
	if (strcmp(argv[1], "--unwrap-key") == 0) {
		if (!(5 <= argc && argc <= 5))
			return Usage();
		rc = UnwrapKey(argv[2], atoi(argv[3]), argv[4]);
		printf("unwrap-key returns: 0x%4x\n", rc);
		return rc == 0x9000 ? 0 : rc;
	}
	return Usage();
}