pgpgroups.pas
来自「用DELPHI实现的 PGP 加密算法」· PAS 代码 · 共 380 行 · 第 1/2 页
PAS
380 行
var PGPGetGroupInfo: function(TheSet: pPGPGroupSet;
Id: PGPGroupID;
var Info: TPGPGroupInfo): PGPError; cdecl;
var PGPSetGroupName: function(TheSet: pPGPGroupSet;
Id: PGPGroupID;
const Name: PChar): PGPError; cdecl;
var PGPSetGroupUserValue: function(TheSet: pPGPGroupSet;
Id: PGPGroupID;
UserValue: PGPUserValue): PGPError; cdecl;
var PGPSetGroupDescription: function(TheSet: pPGPGroupSet;
Id: PGPGroupID;
const Name: PChar): PGPError; cdecl;
{ 'item' specifies a group or a key id }
{ you must fill the item in completely }
var PGPAddItemToGroup: function(TheSet: pPGPGroupSet;
const Item: pPGPGroupItem;
Group: PGPGroupID): PGPError; cdecl;
var PGPMergeGroupIntoDifferentSet: function(FromSet: pPGPGroupSet;
FromId: PGPGroupID;
ToSet: pPGPGroupSet): PGPError; cdecl;
var PGPMergeGroupSets: function(FromSet: pPGPGroupSet;
IntoSet: pPGPGroupSet): PGPError; cdecl;
var PGPCopyGroupSet: function(SourceSet: pPGPGroupSet;
var DestSet: pPGPGroupSet): PGPError; cdecl;
{____________________________________________________________________________
Manipulating group items
____________________________________________________________________________}
{ count how many items there are in a group }
{ TotalItems includes keys and groups }
var PGPCountGroupItems: function(TheSet: pPGPGroupSet;
Id: PGPGroupID;
Recursive: PGPBoolean;
var NumKeys: PGPUInt32;
var TotalItems: PGPUInt32): PGPError; cdecl;
{ non-recursive call; index only applies to group itself }
var PGPGetIndGroupItem: function(TheSet: pPGPGroupSet;
Id: PGPGroupID;
GroupIndex: PGPUInt32;
var Item: TPGPGroupItem): PGPError; cdecl;
{ use PGPGetIndGroupItem() if you want to get the user value }
var PGPSetIndGroupItemUserValue: function(TheSet: pPGPGroupSet;
Id: PGPGroupID;
GroupIndex: PGPUInt32;
UserValue: PGPUserValue): PGPError; cdecl;
var PGPSortGroupItems: function(TheSet: pPGPGroupSet;
Id: PGPGroupID;
CompareProc: TPGPGroupItemCompareProc;
UserValue: PGPUserValue): PGPError; cdecl;
var PGPSortGroupSet: function(TheSet: pPGPGroupSet;
CompareProc: TPGPGroupItemCompareProc;
UserValue: PGPUserValue): PGPError; cdecl;
{____________________________________________________________________________
PGPGroupItemIterRef--iterator through group items.
Special note: this is not a full-fledged iterator. You may *not* add
or delete items while iterating and you may only move forward. However,
you may change the values of items.
____________________________________________________________________________}
var PGPNewGroupItemIter: function(TheSet: pPGPGroupSet;
Id: PGPGroupID;
Flags: TPGPGroupItemIterFlags;
var Iter: pPGPGroupItemIter): PGPError; cdecl;
var PGPFreeGroupItemIter: function(Iter: pPGPGroupItemIter): PGPError; cdecl;
{ returns kPGPError_EndOfIteration when done }
var PGPGroupItemIterNext: function(Iter: pPGPGroupItemIter;
var Item: TPGPGroupItem): PGPError; cdecl;
{____________________________________________________________________________
Group utilities
____________________________________________________________________________}
{____________________________________________________________________________
Return the lowest validity of any item in the group
keyset should contain all keys available
It is not an error if keys can't be found; you may want to check
the not found count.
The lowest validity is kPGPValidity_Invalid and kPGPValidity_Unknown
is never returned.
____________________________________________________________________________}
// PGP 6.5.X
var PGPGetGroupLowestValidity: function(TheSet: pPGPGroupSet;
Id: PGPGroupID;
KeySet: pPGPKeySet;
var LowestValidity: PGPValidity;
var NumKeysNotFound: PGPUInt32): PGPError; cdecl;
// PGP 7.X
{var PGPGetGroupLowestValidity: function(TheSet: pPGPGroupSet;
Id: PGPGroupID;
KeyDB: pPGPKeyDB;
var LowestValidity: PGPValidity;
var NumKeysNotFound: PGPUInt32): PGPError; cdecl;}
{____________________________________________________________________________
All all the keys in the group (and its subgroups) to the keyset
____________________________________________________________________________}
// PGP 6.5.X
var PGPNewKeySetFromGroup: function(TheSet: pPGPGroupSet;
Id: PGPGroupID;
MasterSet: pPGPKeySet;
var ResultSet: pPGPKeySet;
var NumKeysNotFound: PGPUInt32): PGPError; cdecl;
// PGP 7.X
{var PGPNewKeySetFromGroup: function(TheSet: pPGPGroupSet;
Id: PGPGroupID;
KeyDB: pPGPKeyDB;
var ResultSet: pPGPKeySet;
var NumKeysNotFound: PGPUInt32): PGPError; cdecl;}
{____________________________________________________________________________
Create a simple, flattened group of unique key IDs from the source group.
Note that sourceSet and destSet must be different.
____________________________________________________________________________}
var PGPNewFlattenedGroupFromGroup: function(SourceSet: pPGPGroupSet;
SourceId: PGPGroupID;
DestSet: pPGPGroupSet;
var DestID: PGPGroupID): PGPError; cdecl;
{____________________________________________________________________________
Perform a "standard" sort on a group
____________________________________________________________________________}
// PGP 6.5.X
var PGPSortGroupSetStd: function(TheSet: pPGPGroupSet; Keys: pPGPKeySet): PGPError; cdecl;
// PGP 7.X
{var PGPSortGroupSetStd: function(TheSet: pPGPGroupSet; Keys: pPGPKeyDB): PGPError; cdecl;}
implementation
uses
Windows;
initialization
if PGPInitErrorCode=ieNone then begin
PGPNewGroupSet:=GetProcAddress(hPGPsdkLib,'PGPNewGroupSet');
PGPNewGroupSetFromFile:=GetProcAddress(hPGPsdkLib,'PGPNewGroupSetFromFile');
PGPSaveGroupSetToFile:=GetProcAddress(hPGPsdkLib,'PGPSaveGroupSetToFile');
PGPFreeGroupSet:=GetProcAddress(hPGPsdkLib,'PGPFreeGroupSet');
PGPGroupSetNeedsCommit:=GetProcAddress(hPGPsdkLib,'PGPGroupSetNeedsCommit');
PGPGetGroupSetContext:=GetProcAddress(hPGPsdkLib,'PGPGetGroupSetContext');
PGPExportGroupSetToBuffer:=GetProcAddress(hPGPsdkLib,'PGPExportGroupSetToBuffer');
PGPImportGroupSetFromBuffer:=GetProcAddress(hPGPsdkLib,'PGPImportGroupSetFromBuffer');
PGPNewGroup:=GetProcAddress(hPGPsdkLib,'PGPNewGroup');
PGPCountGroupsInSet:=GetProcAddress(hPGPsdkLib,'PGPCountGroupsInSet');
PGPGetIndGroupID:=GetProcAddress(hPGPsdkLib,'PGPGetIndGroupID');
PGPDeleteGroup:=GetProcAddress(hPGPsdkLib,'PGPDeleteGroup');
PGPDeleteIndItemFromGroup:=GetProcAddress(hPGPsdkLib,'PGPDeleteIndItemFromGroup');
PGPDeleteItemFromGroup:=GetProcAddress(hPGPsdkLib,'PGPDeleteItemFromGroup');
PGPGetGroupInfo:=GetProcAddress(hPGPsdkLib,'PGPGetGroupInfo');
PGPSetGroupName:=GetProcAddress(hPGPsdkLib,'PGPSetGroupName');
PGPSetGroupUserValue:=GetProcAddress(hPGPsdkLib,'PGPSetGroupUserValue');
PGPSetGroupDescription:=GetProcAddress(hPGPsdkLib,'PGPSetGroupDescription');
PGPAddItemToGroup:=GetProcAddress(hPGPsdkLib,'PGPAddItemToGroup');
PGPMergeGroupIntoDifferentSet:=GetProcAddress(hPGPsdkLib,'PGPMergeGroupIntoDifferentSet');
PGPMergeGroupSets:=GetProcAddress(hPGPsdkLib,'PGPMergeGroupSets');
PGPCopyGroupSet:=GetProcAddress(hPGPsdkLib,'PGPCopyGroupSet');
PGPCountGroupItems:=GetProcAddress(hPGPsdkLib,'PGPCountGroupItems');
PGPGetIndGroupItem:=GetProcAddress(hPGPsdkLib,'PGPGetIndGroupItem');
PGPSetIndGroupItemUserValue:=GetProcAddress(hPGPsdkLib,'PGPSetIndGroupItemUserValue');
PGPSortGroupItems:=GetProcAddress(hPGPsdkLib,'PGPSortGroupItems');
PGPSortGroupSet:=GetProcAddress(hPGPsdkLib,'PGPSortGroupSet');
PGPNewGroupItemIter:=GetProcAddress(hPGPsdkLib,'PGPNewGroupItemIter');
PGPFreeGroupItemIter:=GetProcAddress(hPGPsdkLib,'PGPFreeGroupItemIter');
PGPGroupItemIterNext:=GetProcAddress(hPGPsdkLib,'PGPGroupItemIterNext');
PGPGetGroupLowestValidity:=GetProcAddress(hPGPsdkLib,'PGPGetGroupLowestValidity');
PGPNewKeySetFromGroup:=GetProcAddress(hPGPsdkLib,'PGPNewKeySetFromGroup');
PGPNewFlattenedGroupFromGroup:=GetProcAddress(hPGPsdkLib,'PGPNewFlattenedGroupFromGroup');
PGPSortGroupSetStd:=GetProcAddress(hPGPsdkLib,'PGPSortGroupSetStd');
end;
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?