示例#1
0
//-------------------------------------------------------------------------------------
KBEKey::KBEKey(const std::string& pubkeyname, const std::string& prikeyname):
KBE_RSA()
{
	if(pubkeyname.size() > 0 || prikeyname.size() > 0)
	{
		KBE_ASSERT(pubkeyname.size() > 0);
		
		if(g_componentType != CLIENT_TYPE)
		{
			KBE_ASSERT(prikeyname.size() > 0);

			bool key1 = loadPrivate(prikeyname);
			bool key2 = loadPublic(pubkeyname);
			KBE_ASSERT(key1 == key2);

			if(!key1 && !key2)
			{
				bool ret = generateKey(pubkeyname, prikeyname);
				KBE_ASSERT(ret);
				key1 = loadPrivate(prikeyname);
				key2 = loadPublic(pubkeyname);
				KBE_ASSERT(key1 && key2);
			}
		}
		else
		{
			bool key = loadPublic(pubkeyname);
			KBE_ASSERT(key);
		}
	}
}
示例#2
0
void KviNickServRuleSet::load(const QString & szConfigFile)
{
    clear();
    KviConfigurationFile cfg(szConfigFile,KviConfigurationFile::Read);

    QString szTmp = "NSRules";
    unsigned int uCount = cfg.readUIntEntry(szTmp,0);
    if(uCount == 0)
        return;
    loadPrivate(&cfg,QString(""),uCount);
}
示例#3
0
int
GPD_2DPrimPoly::load(istream &is, int binary)
{
    int		 cnt;
    char	 cflag;

    if (binary)
    {
	char tflag;

	if (!UTread(is, &tflag))	return -1;
	if (!UTread(is, &nVtx))		return -1;
	if (!UTread(is, &cflag))	return -1;

	if (tflag == 1)	trim();
	else		untrim();
    }
    else
    {
	char ttoken[GPD_BUFSIZ];

	is >> ttoken;
	is >> nVtx >> cflag; 
	if (!is) return -1;

	if (!strcmp(ttoken, "trim"))	trim();
	else				untrim();
    }

    if (cflag == '<')	close();
    else		open();

    vtxList = new GPD_2DVertex[nVtx]; 

    if (loadPrivate(is,binary) < 0) return -1;

    for (cnt = 0; cnt < nVtx; cnt++)
	if (getParent()->loadVertex(is, vtxList[cnt], binary) < 0) return -1;

    if (!binary) // Get junk at end of line:
	is.ignore(GPD_BUFSIZ-1, '\n');
    if (!is) return -1;
    return 0;
}
示例#4
0
文件: rsa.cpp 项目: 5432935/kbengine
//-------------------------------------------------------------------------------------
bool KBE_RSA::generateKey(const std::string& pubkeyname, 
						  const std::string& prikeyname, int keySize, int e)
{
	KBE_ASSERT(rsa_public == NULL && rsa_private == NULL);
	
	RSA* rsa = NULL;
    FILE *fp = NULL;

	if ((rsa = RSA_generate_key(keySize, e, NULL, NULL)) == NULL) 
	{
		ERR_load_crypto_strings();
		char err[1024];
		char* errret = ERR_error_string(ERR_get_error(), err);
		ERROR_MSG(fmt::format("KBE_RSA::generateKey: RSA_generate_key error({} : {})\n",
			errret, err));

		return false;
	}

	if (!RSA_check_key(rsa)) 
	{
		ERROR_MSG("KBE_RSA::generateKey: invalid RSA Key.\n");
		RSA_free(rsa);
		return false;
	}

	fp = fopen(prikeyname.c_str(), "w");
	if (!fp) {
		RSA_free(rsa);
		return false;
	}

	if (!PEM_write_RSAPrivateKey(fp, static_cast<RSA*>(rsa), NULL, NULL, 0, 0, NULL)) 
	{
		ERR_load_crypto_strings();
		char err[1024];
		char* errret = ERR_error_string(ERR_get_error(), err);
		ERROR_MSG(fmt::format("KBE_RSA::generateKey: PEM_write_RSAPrivateKey error({} : {})\n",
			errret, err));

		fclose(fp);
		RSA_free(rsa);
		return false;
	}

	fclose(fp);
	fp = fopen(pubkeyname.c_str(), "w");
	if (!fp) {
		RSA_free(rsa);
		return false;
	}

	if (!PEM_write_RSAPublicKey(fp, static_cast<RSA*>(rsa))) 
	{
		ERR_load_crypto_strings();
		char err[1024];
		char* errret = ERR_error_string(ERR_get_error(), err);
		ERROR_MSG(fmt::format("KBE_RSA::generateKey: PEM_write_RSAPublicKey error({} : {})\n",
			errret, err));

		fclose(fp);
		RSA_free(rsa);
		return false;
	}

	INFO_MSG(fmt::format("KBE_RSA::generateKey: RSA key generated. keysize({}) bits.\n", keySize));

	RSA_free(rsa);
	fclose(fp);

	return loadPrivate(prikeyname) && loadPublic(pubkeyname);
}