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

📄 decodeevent.c

📁 PGP.Corporation.PGP.SDK.v3.7.2.rar 此前从本站下载的那个缺少几个lib文件
💻 C
📖 第 1 页 / 共 2 页
字号:
			
#if HAVE_PRAGMA_MARK
#pragma mark	----- Encryption Event-----
#endif
		case kPGPEvent_EncryptionEvent:
		{
			PGPEventEncryptionData  *d = &event->data.encryptionData;
			char * cipher =  cipher_algor_table(d->cipherAlgorithm);
			unsigned int i;
			
 			STATUS_LOG ("--> Data is encrypted with the %s Algorithm\n",cipher);
 			STATUS_LOG ("    Session Key: [%d] ", (int)d->sessionKeyLength);
			for( i=0; i< d->sessionKeyLength; i++ ) 
				STATUS_LOG("%02x%s", d->sessionKey[i], ((i+1)%4?"":" "));
			STATUS_LOG("\n");
			
 		}
		break;
			
#if HAVE_PRAGMA_MARK
#pragma mark	----- Decryption Event-----
#endif
		case kPGPEvent_DecryptionEvent:
		{
			PGPEventDecryptionData  *d = &event->data.decryptionData;
			char * cipher =  cipher_algor_table(d->cipherAlgorithm);
			unsigned int i;
 			STATUS_LOG ("--> Data was encrypted with the %s Algorithm\n",cipher);
 			STATUS_LOG ("    Session Key: [%d] ", (int)d->sessionKeyLength);
			for( i=0; i< d->sessionKeyLength; i++ ) 
 				STATUS_LOG("%02x%s", d->sessionKey[i], ((i+1)%4?"":" "));
			STATUS_LOG("\n");
		
			if(info->sessionKey) 
			{
				PGPFreeData(info->sessionKey);
				info->sessionKey = NULL;
				info->sessionKeySize = 0;
			}

			info->sessionKey = PGPNewSecureData( PGPGetDefaultMemoryMgr(), d->sessionKeyLength, kPGPMemoryMgrFlags_None);
			if( info->sessionKey  == NULL)
			{
				err = kPGPError_OutOfMemory;
				goto done;
 			}
 			info->sessionKeySize = d->sessionKeyLength;
			COPY( d->sessionKey, info->sessionKey, d->sessionKeyLength );
  		}
 			break;
			
#if HAVE_PRAGMA_MARK
#pragma mark	----- Passphrase Event-----
#endif
		case kPGPEvent_PassphraseEvent:
		{
			PGPEventPassphraseData  *d = &event->data.passphraseData;
			
			STATUS_LOG("--> Passphrase Event: %s\n", d->fConventional?"Conventional":"");
			if(d->keyset)
			{
				PGPUInt32 numKeys;		
				err = PGPCountKeys(d->keyset, &numKeys);
				STATUS_LOG("    %d key%s: ", numKeys, numKeys==1?"":"s");
				if(numKeys)
				{
 					PGPKeyDBObjRef  aKey = kInvalidPGPKeyDBObjRef;
					
					if( ! PGPKeyIterRefIsValid( info->keyIter ) ) 
						err = PGPNewKeyIterFromKeySet(d->keyset, &info->keyIter);
					
 					while( IsntPGPError( PGPKeyIterNextKeyDBObj( info->keyIter, kPGPKeyDBObjType_Key, &aKey) ) )
					{
						PGPKeyID  keyID;
 						PGPChar8 outString[ kPGPMaxKeyIDStringSize ];
						int i;
 						
						PGPGetKeyID( aKey, &keyID );
 						PGPGetKeyIDString( &keyID, kPGPKeyIDString_Full, outString);
						
						for(i = 0;i < info->keyCount; i++)
 							if( PGPCompareKeyIDs( &info->key[i].keyID, &keyID) == 0 )
							{
								STATUS_LOG("trying %s",outString);

								err = PGPAddJobOptions( event->job,
												PGPOPassphraseBuffer( context, info->key[i].passPhrase, 
																	  strlen( info->key[i].passPhrase ) ),
												PGPOLastOption( context ) );
 								goto got_paassphrase;
							}
   					}
					
		got_paassphrase:
 					STATUS_LOG("\n");
					
 				}
 			}
		}
		break;
			
#if HAVE_PRAGMA_MARK
#pragma mark	----- Output Event-----
#endif
		case kPGPEvent_OutputEvent:
		{
			PGPEventOutputData *d = &event->data.outputData;
			PGPBoolean  isHandled   = FALSE;
			
			if(d->suggestedName)
			{
 				char		*ext	= extname(d->suggestedName);
				char		baseName[MAX_PATH];
				char		pathName[MAX_PATH];
				
				PGPBoolean  isTAR		= FALSE;
				
				baseName[0] = 0;
				
 				if ((d->messageType == 'b') && (ext && (strcmp("tar", ext) == 0))) isTAR = TRUE;
				if(ext)
				{
					strncat(baseName, d->suggestedName, ext - d->suggestedName );
					baseName[ ext - d->suggestedName-1] = 0;
				}
				else 
					strcat(baseName, d->suggestedName);
					
				STATUS_LOG("--> Output Event: (%c %s %s) \"%s\"\n", 
						d->messageType,(d->forYourEyesOnly?"EYES-ONLY":""),
					   isTAR?"TAR":"",
						d->suggestedName);
						
		 
				switch( info->option)
				{
					case kDecode_MakeTarCache:
					if(isTAR)
					{
					 
						sprintf(pathName, "%s/%s.tarcache",info->outDir, baseName);
						
						STATUS_LOG ("    Making TAR Cache \"%s\"\n", pathName);
						if( PGPFileSpecRefIsValid(info->outFile))
						{
							PGPFreeFileSpec(info->outFile);
							info->outFile = NULL;
						}
						err = PGPNewFileSpecFromFullPath( context, pathName, &info->outFile );
						err = PGPAddJobOptions( event->job,
												PGPOOutputTARCache(context, info->outFile ),
												PGPOLastOption(context));
						isHandled = TRUE;
					}
					break;
	 
					case kDecode_UnpackTar:
					if(isTAR)  /* make a directory to drop the TAR */
 					{
 						sprintf(pathName, "%s/%s",info->outDir, baseName);

#ifndef PGP_WIN32
						if( (mkdir(pathName, S_IRWXU | S_IRWXG) != 0) && (errno != EEXIST))
#else
						if( (_mkdir(pathName) != 0) && (errno != EEXIST))
#endif
						{
								OPTESTPrintF("mkdir(%s) failed = %d\n",pathName, errno);
								err = kPGPError_FileOpFailed;  
						}
						else
						{
							STATUS_LOG ("    Expanding into directory \"%s\"\n", baseName);
							
							if( PGPFileSpecRefIsValid(info->outFile))
							{
								PGPFreeFileSpec(info->outFile);
								info->outFile = NULL;
							}
							err = PGPNewFileSpecFromFullPath( context, pathName, &info->outFile );
							err = PGPAddJobOptions( event->job,
											PGPOOutputDirectory(context, info->outFile ),
											PGPOLastOption(context));

							isHandled = TRUE;
						}
					}
					break;
					
					case kDecode_FileOutput:
 						sprintf(pathName, "%s/%s",info->outDir,  d->suggestedName);
						err = PGPNewFileSpecFromFullPath( context, pathName, &info->outFile );
						err = PGPAddJobOptions( event->job,
										PGPOOutputFile(context, info->outFile ),
										PGPOLastOption(context));
						isHandled = TRUE;
					break;
					
					default:;
				}
			}
			if(!isHandled)
			{
				if(info->outBuf) 
				{
					PGPFreeData(info->outBuf);
					info->outBuf = NULL;
					info->outBufSize = 0;
				}

				err = PGPAddJobOptions( event->job,
					   PGPOAllocatedOutputBuffer( context, (void*)&info->outBuf, MAX_PGPSize, &info->outBufSize),
					   PGPOLastOption(context));
			}
		}
		break;
			
#if HAVE_PRAGMA_MARK
#pragma mark	----- Detached Sig Event-----
#endif
		case kPGPEvent_DetachedSignatureEvent:
		{
			STATUS_LOG ("--> Detached Signature Event:\n");
 			
		}
		
		break;
			
#if HAVE_PRAGMA_MARK
#pragma mark	-----  Sig Event-----
#endif
		case  kPGPEvent_SignatureEvent:
 		{
			PGPEventSignatureData *d = &event->data.signatureData;
			PGPUInt16 	year, month,day;
			
			OPTESTPrintF ("--> Signature Data:");
			if( d->signingKey == NULL) {
				OPTESTPrintF (" (unknown signer)");
			} else {
				char	name[256];
				PGPSize	namelen = sizeof(name);
				
				PGPByte fp[64];
				PGPSize fplen;
				
				PGPGetPrimaryUserIDName( d->signingKey, name,  sizeof(name), &namelen);
				OPTESTPrintF ("\n\t Signed by %s\n", name);
				
				PGPGetKeyDBObjDataProperty(d->signingKey,kPGPKeyProperty_Fingerprint,
										   &fp,sizeof(fp), &fplen);
				FormatFingerprintString(name, fp, fplen) ;
				OPTESTPrintF("\t FingerPrint: %s\n", name);
				
				if ( ! d->verified )
					OPTESTPrintF( "\t !!!!!  WARNING: did not verify  !!!!!!!" );
				OPTESTPrintF ("\t %schecked, %sverified, %skeyDisabled, "
						"%skeyRevoked, %skeyExpired"
						"\n\t %skeyMeetsValidityThreshold, validity=%d",
						(d->checked?"":"!"),(d->verified?"":"!"),
						(d->keyDisabled?"":"!"), (d->keyRevoked?"":"!"),
						(d->keyExpired?"":"!"),
						(d->keyMeetsValidityThreshold?"":"!"),
						d->keyValidity);
				
			}
			PGPGetYMDFromPGPTime( d->creationTime,&year, &month,&day);
			OPTESTPrintF("\n\t created: %02d/%02d/%04d\n",month,day,year);
		}
	 	break;
			
#if HAVE_PRAGMA_MARK
#pragma mark	-----  Recipients Event-----
#endif
		case kPGPEvent_RecipientsEvent:
		{
			PGPEventRecipientsData  *d = &event->data.recipientsData;
			if(recipdata)PGPFreeData(recipdata);
			recipdata = (PGPEventRecipientsData*)
				PGPNewData( PGPGetDefaultMemoryMgr(), sizeof(PGPEventRecipientsData) ,  0 );
			
			if(recipdata) {
				recipdata->recipientSet = d->recipientSet;
				recipdata->keyCount 	= d->keyCount;
				recipdata->keyIDArray 	= d->keyIDArray;
				
				PGPIncKeySetRefCount(d->recipientSet);
			}
			
		}
			break;

#if HAVE_PRAGMA_MARK
#pragma mark	-----  Key Server Event-----
#endif
		case kPGPEvent_KeyServerEvent:
		{
			PGPEventKeyServerData  *d = &event->data.keyServerData;
			PGPChar8	*host = NULL;
			
			if(PGPKeyServerRefIsValid(d->keyServerRef)) 
			{
#if (! PGP_SYMBIAN) || (! PGP_DEBUG)
	  			PGPGetKeyServerHostName(d->keyServerRef, &host); 
#endif			
			}
 			STATUS_LOG("--> KeyServer Event: %s %s\n",KeyserverEventTxt[ d->state ], host?host:"");
			
			if(host) PGPFreeData(host);
 		}
		break;
 			
#if HAVE_PRAGMA_MARK
#pragma mark	-----  Other Event-----
#endif
		default:
			STATUS_LOG("--> Other Event :%d\n",event->type);
			break;
			
	}

done:	
	return err;
}


⌨️ 快捷键说明

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