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

📄 keyservertest.c

📁 PGP.Corporation.PGP.SDK.v3.7.2.rar 此前从本站下载的那个缺少几个lib文件
💻 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 + -