⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pgpkeyback.c

📁 PGP8.0源码 请认真阅读您的文件包然后写出其具体功能
💻 C
📖 第 1 页 / 共 4 页
字号:
	if( IsPGPError( err ) )
	{
		PGPFreeKeyDB( kdb );
		return err;
	}

	*numKeys = nkeys;

	/*
	 * This function is only used when we have potentially made major
	 * changes to the keydb, hence add the whole thing to the notify list
	 */
	(void)pgpSetPendingNotify( NULL, NULL, pgpRootSet(kdb), NULL );

	return kPGPError_NoErr;
}

	PGPError
pgpUpdateKeyDB_back(
	PGPContextRef			context,
	PGPUInt32				kdbid,
	PGPUInt32 *				numNewKeys,
	PGPUInt32 **			newKeyArray,
	PGPSize *				newKeyArraySize,
	PGPUInt32 **			changedkeylist,
	PGPSize *				changedkeylistsize )
{
	PGPKeyDB *				kdb = (PGPKeyDB *)kdbid;
	PGPKeyDBObjRef			key;
	PGPUInt32				nkeys;
	PGPUInt32				nNewKeys;
	PGPKeySetRef			changedSet;
	PGPKeySetRef			newSet;
	PGPError				err;

	if (pgpRPCEnabled())
		return pgpUpdateKeyDB_backRPC( context, kdbid, numNewKeys,
							newKeyArray, newKeyArraySize,
							changedkeylist, changedkeylistsize );

	err = PGPNewEmptyKeySet( kdb, &newSet );
	if( IsPGPError( err ) )
		return err;
	err = PGPNewEmptyKeySet( kdb, &changedSet );
	if( IsPGPError( err ) )
	{
		PGPFreeKeySet( newSet );
		return err;
	}
	err = pgpUpdateKeyDB_internal( kdb, newSet, changedSet );
	if( IsPGPError( err ) )
	{
		PGPFreeKeySet( newSet );
		PGPFreeKeySet( changedSet );
		return err;
	}

	/* Create keyarray for the newSet */
	nkeys = nNewKeys = 0;
	for (key = kdb->firstKeyInDB; IsntNull(key); key = key->next)
	{
		++nkeys;
		/* See comment in pgpCreateKeyArray for why we use ->isMember */
		if( newSet->isMember( newSet, key ) )
			++nNewKeys;
	}
	err = pgpCreateKeyArray( context, kdb->firstKeyInDB, nkeys, newSet,
							 newKeyArray, newKeyArraySize );
	PGPFreeKeySet( newSet );
	if( IsPGPError( err ) )
	{
		PGPFreeKeySet( changedSet );
		return err;
	}

	err = pgpKeySetFlattenFree(changedSet,changedkeylist,changedkeylistsize);
	if( IsPGPError( err ) )
	{
		PGPFreeData( newKeyArray );
		PGPFreeKeySet( changedSet );
		return err;
	}
	
	*numNewKeys = nNewKeys;
	return err;
}


	PGPError
pgpNewKeyDB_back( PGPContextRef context, PGPUInt32 *kdbid )
{
	PGPKeyDB *				kdb;
	PGPError				err;

	if (pgpRPCEnabled())
		return pgpNewKeyDB_backRPC( context, kdbid );

	err = pgpNewKeyDB_internal( context, &kdb );

	if( IsPGPError( err ) )
		return err;

	*kdbid = (PGPUInt32)kdb;

	return kPGPError_NoErr;
}


	PGPError
pgpKeyDBFlush_back( PGPContextRef context, PGPUInt32 id,
	PGPUInt32 **changedkeylist, PGPSize *changedkeylistsize )
{
	PGPKeyDBRef kdb;
	PGPKeySetRef changedSet;
	PGPError err;

	if (pgpRPCEnabled())
		return pgpKeyDBFlush_backRPC( context, id, changedkeylist, changedkeylistsize );

	kdb = (PGPKeyDB *)id;
	pgpAssert( pgpKeyDBIsValid( kdb ) );
	err = PGPNewEmptyKeySet( kdb, &changedSet );
	if( IsPGPError( err ) )
		return err;

	err = pgpKeyDBFlush_internal( kdb, changedSet );
	if( IsPGPError( err ) )
	{
		PGPFreeKeySet( changedSet );
		return err;
	}

	(void)pgpSetPendingNotify( changedSet, NULL, NULL, NULL );
	return pgpKeySetFlattenFree(changedSet,changedkeylist,changedkeylistsize);
}

	void
pgpFreeKeyDB_back( PGPContextRef context, PGPUInt32 id )
{
	if (pgpRPCEnabled()) {
		pgpFreeKeyDB_backRPC( context, id );
		return;
	}
	pgpKeyDBDestroy_internal( (PGPKeyDB *)id );
}

	PGPError
pgpPurgeKeyDBCache_back(
	PGPContextRef	context)
{
	if (pgpRPCEnabled())
		return pgpPurgeKeyDBCache_backRPC( context );
	return pgpPurgeKeyDBCache_internal( context );
}


	PGPError
pgpCacheKeyDB_back(
	PGPContextRef	context,
	PGPUInt32		keydbID,
	PGPUInt32		timeoutSeconds )
{
	PGPKeyDBRef		db;

	if (pgpRPCEnabled())
		return pgpCacheKeyDB_backRPC( context, keydbID, timeoutSeconds );

	db = (PGPKeyDB *)keydbID;
	pgpAssert( pgpKeyDBIsValid( db ) );
	return pgpCacheKeyDB_internal( db, timeoutSeconds );
}


	PGPError
pgpSetKeyEnabled_back( PGPContextRef context, PGPUInt32 id, PGPBoolean enable )
{
	PGPKeyDBObj *key = (PGPKeyDBObj *)id;

	if (pgpRPCEnabled())
		return pgpSetKeyEnabled_backRPC( context, id , enable );
	pgpAssert( pgpKeyDBObjIsValid( key ) );
	if( enable )
		return pgpEnableKey( key );
	else
		return pgpDisableKey( key );
}

	PGPError
pgpSetKeyAxiomatic_back (
	PGPContextRef	context,
	PGPUInt32		id,
	PGPBoolean		setAxiomatic,
	PGPBoolean		checkPassphrase,
	char const *	passphrase,
	PGPSize			passphraseLength,
	PGPBoolean		hashedPhrase,
	PGPUInt32		cacheTimeOut,
	PGPBoolean		cacheGlobal
	)
{
	PGPKeyDBObj *key = (PGPKeyDBObj *)id;
	if (pgpRPCEnabled())
		return pgpSetKeyAxiomatic_backRPC( context, id , setAxiomatic,
				checkPassphrase, passphrase, passphraseLength, hashedPhrase,
				cacheTimeOut, cacheGlobal );
	pgpAssert( pgpKeyDBObjIsValid( key ) );
	return pgpSetKeyAxiomatic_internal( key, setAxiomatic, checkPassphrase,
										passphrase, passphraseLength,
										hashedPhrase, cacheTimeOut,
										cacheGlobal );
}


	PGPError
pgpPropagateTrust_back( PGPContextRef context, PGPUInt32 setid,
	PGPUInt32 *keylist, PGPSize keylistsize, PGPUInt32 altid,
	PGPUInt32 const timenow, PGPUInt32 **changedkeylist,
	PGPSize *changedkeylistsize )
{
	PGPKeyDBRef		setdb, altdb;
	PGPKeySetRef	set;
	PGPKeySetRef	changedSet;
	PGPError		err;

	if (pgpRPCEnabled())
		return pgpPropagateTrust_backRPC( context, setid, keylist, keylistsize, altid, timenow, changedkeylist, changedkeylistsize );
	setdb = (PGPKeyDBRef) setid;
	altdb = (PGPKeyDBRef) altid;
	pgpAssert( pgpKeyDBIsValid( setdb ) );
	pgpAssert( IsNull( altdb ) || pgpKeyDBIsValid( altdb ) );

	err = pgpKeySetUnflattenFree( setdb, keylist, keylistsize, &set );
	if( IsPGPError( err ) )
		return err;

	err = PGPNewEmptyKeySet( setdb, &changedSet );
	if( IsPGPError( err ) )
	{
		PGPFreeData( keylist );
		return err;
	}
	err = pgpPropagateTrustInternal( set, altdb, timenow, changedSet );
	PGPFreeKeySet( set );
	if( IsPGPError( err ) )
	{
		PGPFreeKeySet( changedSet );
		return err;
	}

	(void)pgpSetPendingNotify( changedSet, NULL, NULL, NULL );
	return pgpKeySetFlattenFree(changedSet,changedkeylist,changedkeylistsize);
}


	PGPError
pgpCheckKeyRingSigs_back( PGPContextRef context, PGPUInt32 setid,
	PGPUInt32 *keylist, PGPSize keylistsize, PGPUInt32 altid,
	PGPBoolean checkAll, PGPUInt32 **changedkeylist,
	PGPSize *changedkeylistsize )
{
	PGPKeyDBRef		setdb, altdb;
	PGPKeySetRef	set;
	PGPKeySetRef	changedSet;
	PGPError		err;

	if (pgpRPCEnabled())
		return pgpCheckKeyRingSigs_backRPC( context, setid, keylist, keylistsize, altid, checkAll, changedkeylist, changedkeylistsize );
	setdb = (PGPKeyDBRef) setid;
	altdb = (PGPKeyDBRef) altid;
	pgpAssert( pgpKeyDBIsValid( setdb ) );
	pgpAssert( IsNull( altdb ) || pgpKeyDBIsValid( altdb ) );

	err = pgpKeySetUnflattenFree( setdb, keylist, keylistsize, &set );
	if( IsPGPError( err ) )
		return err;

	err = PGPNewEmptyKeySet( setdb, &changedSet );
	if( IsPGPError( err ) )
	{
		PGPFreeKeySet( set );
		return err;
	}
	err = pgpCheckKeyRingSigs_internal( set, altdb, checkAll, NULL, 0,
										changedSet );
	PGPFreeKeySet( set );
	if( IsPGPError( err ) )
	{
		PGPFreeKeySet( changedSet );
		return err;
	}

	(void)pgpSetPendingNotify( changedSet, NULL, NULL, NULL );
	return pgpKeySetFlattenFree(changedSet,changedkeylist,changedkeylistsize);
}


	PGPError
pgpPrepareToCheckKeyRingSigs_back( PGPContextRef context, PGPUInt32 setid,
	PGPUInt32 *keylist, PGPSize keylistsize, PGPUInt32 altid,
	PGPBoolean checkAll, PGPUInt32 *nsigs, PGPUInt32 **changedkeylist,
	PGPSize *changedkeylistsize )
{
	PGPKeyDBRef		setdb, altdb;
	PGPKeySetRef	set;
	PGPKeySetRef	changedSet;
	PGPError		err;

	if (pgpRPCEnabled())
		return pgpPrepareToCheckKeyRingSigs_backRPC( context, setid, keylist, keylistsize,
					altid, checkAll, nsigs, changedkeylist, changedkeylistsize );
	setdb = (PGPKeyDBRef) setid;
	altdb = (PGPKeyDBRef) altid;
	pgpAssert( pgpKeyDBIsValid( setdb ) );
	pgpAssert( IsNull( altdb ) || pgpKeyDBIsValid( altdb ) );

	err = pgpKeySetUnflattenFree( setdb, keylist, keylistsize, &set );
	if( IsPGPError( err ) )
		return err;

	err = PGPNewEmptyKeySet( setdb, &changedSet );
	if( IsPGPError( err ) )
	{
		PGPFreeKeySet( set );
		return err;
	}
	err = pgpPrepareToCheckKeyRingSigs_internal( set, altdb, checkAll, nsigs,
												 changedSet );
	PGPFreeKeySet( set );
	if( IsPGPError( err ) )
	{
		PGPFreeKeySet( changedSet );
		return err;
	}

	(void)pgpSetPendingNotify( changedSet, NULL, NULL, NULL );
	return pgpKeySetFlattenFree(changedSet,changedkeylist,changedkeylistsize);
}


	PGPError
pgpCheckSig_back( PGPContextRef context, PGPUInt32 setid, PGPUInt32 objid,
	PGPUInt32 altid, PGPBoolean checkAll, PGPBoolean revocationonly,
	PGPBoolean *handled, PGPBoolean *changed, PGPBoolean *verified )
{
	PGPKeyDBRef		setdb, altdb;
	PGPKeyDBObjRef	obj;
	PGPError		err;

	if (pgpRPCEnabled())
		return pgpCheckSig_backRPC( context, setid, objid, altid, checkAll, revocationonly, handled, changed, verified );
	setdb = (PGPKeyDBRef) setid;
	altdb = (PGPKeyDBRef) altid;
	obj = (PGPKeyDBObj *)objid;
	pgpAssert( pgpKeyDBObjIsValid( obj ) );
	pgpAssert( pgpKeyDBIsValid( setdb ) );
	pgpAssert( IsNull( altdb ) || pgpKeyDBIsValid( altdb ) );

	err = pgpCheckSig_internal( setdb, obj, altdb, checkAll, revocationonly,
								handled, changed, verified );
	return err;
}



	PGPError
pgpDoGenerateKey_back (
	PGPContextRef	context,
	PGPUInt32		keydbID,
	PGPUInt32		masterkeyID,
	PGPByte			pkalg,
	PGPUInt32		bits,
	PGPTime			creationDate,
	PGPUInt16		expirationDays,
	char const *	name,
	PGPSize			name_len, 
	char const *	passphrase,
	PGPSize			passphraseLength,
	PGPBoolean		passphraseIsKey,
	char const *	masterpass, 
	PGPSize			masterpassLength,
	PGPUInt32		cacheTimeOut,
	PGPBoolean		cacheGlobal,
	PGPEventHandlerProcPtr progress,
	PGPUserValue	userValue,
	PGPBoolean		fastgen,
	PGPBoolean		checkentropy,
	PGPBoolean		usetoken,
	PGPUInt32		tokenid,
	PGPUInt32 *		adkkeylist,
	PGPSize			adkkeylistsize,
	PGPByte			adkclass,
	PGPUInt32 *		rakkeylist,
	PGPSize			rakkeylistsize,
	PGPByte			rakclass,
	PGPCipherAlgorithm const * prefalg,
	PGPSize			prefalgLength,
	PGPByte const *	prefkeyserv,
	PGPSize			prefkeyservLength,
	PGPUInt32		keyflags,
	PGPBoolean		fkeyflags,
	PGPUInt32		keyservprefs,
	PGPBoolean		fkeyservprefs,
	PGPUInt32 **	newobjs,
	PGPSize *		newobjslength,
	PGPUInt32 *		newKey)
{
	PGPKeyDB *		db;
	PGPKeySetRef	adkset;
	PGPKeySetRef	rakset;
	PGPKeyDBObjRef	key;
	PGPKeyDBObjRef	masterkey;
	PGPError		err;

	if (pgpRPCEnabled())
	{
		return pgpDoGenerateKey_backRPC( context, keydbID, masterkeyID, pkalg,
				bits, creationDate, expirationDays, name, name_len, passphrase,
				passphraseLength, passphraseIsKey, masterpass,
				masterpassLength, cacheTimeOut, cacheGlobal, progress,
				userValue, fastgen, checkentropy, usetoken, tokenid,
				adkkeylist, adkkeylistsize, adkclass,
				rakkeylist, rakkeylistsize, rakclass, prefalg, prefalgLength,
				prefkeyserv, prefkeyservLength, keyflags, fkeyflags,
				keyservprefs, fkeyservprefs, newobjs, newobjslength, newKey );
	}
	db = (PGPKeyDB *)keydbID;
	pgpAssert( pgpKeyDBIsValid( db ) );
	masterkey = (PGPKeyDBObj *) masterkeyID;
	pgpAssert( IsNull(masterkey) || pgpKeyDBObjIsValid( masterkey ) );
	
	err = pgpKeySetUnflattenFree( db, adkkeylist, adkkeylistsize, &adkset );
	if( IsPGPError( err ) )
		return err;

	err = pgpKeySetUnflattenFree( db, rakkeylist, rakkeylistsize, &rakset );
	if( IsPGPError( err ) )
	{
		PGPFreeKeySet( adkset );
		return err;
	}

#if PGP_WIN32
	/* Can't do callbacks in win32, use our special function above */
	progress = NULL;
#endif	
	err = pgpDoGenerateKey_internal( db, masterkey, pkalg, bits, creationDate,
					expirationDays, name, name_len, passphrase,
					passphraseLength, passphraseIsKey, masterpass,
					masterpassLength, cacheTimeOut, cacheGlobal, progress,
					userValue, fastgen, checkentropy, usetoken, tokenid,
					adkset, adkclass, rakset, rakclass, prefalg, prefalgLength,
					prefkeyserv, prefkeyservLength, keyflags, fkeyflags,
					keyservprefs, fkeyservprefs, &key );
	PGPFreeKeySet( adkset );
	PGPFreeKeySet( rakset );
	if( IsPGPError( err ) )
		return err;
	*newKey = (PGPUInt32)key;
	(void)pgpSetPendingNotify( NULL, NULL, NULL, key );
	return pgpCreateKeyArray( context, key, 1, NULL, newobjs, newobjslength );
}


	PGPError
pgpCreateKeypair_back (
	PGPContextRef	context,
	PGPUInt32		keydbID,
	PGPByte *		seckeyBuf,
	PGPSize			seckeySize,
	PGPByte *		keyspecBuf,
	PGPSize			keyspecSize,
	char const *	name,
	PGPSize			name_len, 
	PGPUInt32 *		adklist,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -