📄 keyservertest.c
字号:
/*____________________________________________________________________________
KeyserverTest.c
Copyright (C) 2003,2004 PGP Corporation
All rights reserved.
$Id: KeyserverTest.c 48493 2006-10-12 21:19:56Z vinnie $
____________________________________________________________________________*/
#include <string.h>
#include <stdio.h>
#include "pgpEncode.h"
#include "pgpErrors.h"
#include "pgpKeys.h"
#include "pgpPublicKey.h"
#include "pgpHash.h"
#include "pgpUtilities.h"
#include "pgpKeyServer.h"
#include "pgpTLS.h"
#include "optest.h"
/*
test keyserver api
*/
#define serverDNS "keyserver.pgp.com"
#define serverPort 389
#define serverProtocol kPGPKeyServerProtocol_LDAP
#define keyNameString "vinnie"
PGPError TestKeyServer( PGPContextRef context )
{
PGPError err = kPGPError_NoErr;
PGPtlsContextRef tlsContext = kInvalidPGPtlsContextRef;
PGPKeyServerRef server = kInvalidPGPKeyServerRef;
PGPtlsSessionRef tls = kInvalidPGPtlsSessionRef;
PGPFilterRef filter = kInvalidPGPFilterRef;
PGPKeyDBRef keyDB = kInvalidPGPKeyDBRef;
PGPKeyIterRef iter = kInvalidPGPKeyIterRef;
char buffer[256];
DecodeInfo decodeInfo;
InitDecodeInfo(&decodeInfo);
decodeInfo.option = kDecode_NoOption;
/* create a search filter */
err = PGPNewKeyDBObjDataFilter(context, kPGPUserIDProperty_Name,
keyNameString, sizeof (keyNameString) -1,
kPGPMatchCriterion_SubString, &filter); CKERR;
err = PGPNewKeyServer( context, kPGPKeyServerClass_PGP, &server,
PGPONetHostName( context,serverDNS, serverPort ),
PGPOKeyServerProtocol( context, serverProtocol),
PGPOKeyServerAccessType( context, kPGPKeyServerAccessType_Normal ),
// PGPOKeyServerKeySpace( context, kPGPKeyServerKeySpace_Normal ),
PGPOLastOption( context ) ); CKERR;
err = PGPSetKeyServerEventHandler(server, OptestEventHandler, &decodeInfo ); CKERR;
if(serverProtocol == kPGPKeyServerProtocol_LDAPS)
{
err = PGPNewTLSContext(context, &tlsContext); CKERR;
err = PGPNewTLSSession( tlsContext, &tls ); CKERR;
}
OPTESTPrintF(" Opening connection to %s\n",serverDNS);
err = PGPKeyServerOpen( server, tls ); CKERR;
OPTESTPrintF(" Seaching for \"%s\"\n",keyNameString);
err = PGPQueryKeyServer( server, filter, &keyDB );
if( PGPKeyDBRefIsValid( keyDB ) )
{
PGPKeyDBObjRef theKey = kInvalidPGPKeyDBObjRef;
PGPUInt32 numKeys;
err = PGPCountKeysInKeyDB(keyDB, &numKeys); CKERR;
OPTESTPrintF(" Found %d keys\n", numKeys);
err = PGPNewKeyIterFromKeyDB( keyDB, &iter); CKERR;
numKeys = 1;
while( IsntPGPError( PGPKeyIterNextKeyDBObj( iter, kPGPKeyDBObjType_Key, &theKey) ) )
{
PGPKeyDBObjRef useKey = kInvalidPGPKeyDBObjRef;
PGPTime theTime;
PGPUInt16 year, month, day;
PGPKeyID keyID;
PGPSize bufSize;
/* get the key creation date */
err = PGPGetKeyDBObjTimeProperty( theKey, kPGPKeyProperty_Creation, &theTime); CKERR;
PGPGetYMDFromPGPTime(theTime, &year, &month, &day);
/* get the primary key ID (signing key) name */
err = PGPGetPrimaryUserID(theKey, &useKey); CKERR;
err = PGPGetKeyDBObjDataProperty( useKey, kPGPUserIDProperty_Name, buffer, sizeof(buffer), &bufSize); CKERR;
OPTESTPrintF(" [%d] %s (%02d/%02d/%04d) ", numKeys++, buffer, month,day,year);
PGPGetKeyID(theKey, &keyID);
PGPGetKeyIDString(&keyID, kPGPKeyIDString_Full, (void*)&buffer);
OPTESTPrintF("%s\n", buffer);
}
}
done:
if(PGPKeyServerRefIsValid(server))
PGPKeyServerClose(server);
if( PGPtlsSessionRefIsValid( tls ) )
PGPFreeTLSSession( tls );
if(PGPKeyServerRefIsValid(server))
PGPFreeKeyServer(server);
if( PGPtlsContextRefIsValid(tlsContext))
PGPFreeTLSContext(tlsContext);
if( PGPFilterRefIsValid( filter ) )
PGPFreeFilter( filter );
if( PGPKeyIterRefIsValid( iter ) )
PGPFreeKeyIter( iter );
if( PGPKeyDBRefIsValid( keyDB ) )
PGPFreeKeyDB( keyDB );
// CleanUpDecodeInfo(&decodeInfo);
return err;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -