📄 pgpkeyback.c
字号:
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 + -