📄 weakkey.cpp
字号:
// $Archive:: /STP/SafeTP/weakkey.cpp $// $Date: 1999/07/14 13:16:47 $// $Revision: 1.6 $// Description: Makekeys main// copyright SafeTP Development Group, Inc., 2000 Terms of use are as specified in license.txt#include <stdlib.h>#include <stdio.h>#include <string.h>#include "weakkey.h"#include "cryputil.h" // various utilities#include "globrand.h" // global random pool#include "keyutils.h"#include "nonport.h"//--------------------------------------------------------------static string formKeyName(char* keydirname, char* valuename) { // careful about overruns.. xassert(strlen(keydirname) + strlen(valuename) + 3 /*slop*/ < 1024); char buf[1024]; strcpy(buf, keydirname); char *p = buf + strlen(buf) - 1; if (*p != '\\' && *p != '/') { *(p+1) = '/'; *(p+2) = '\0'; } strcat(buf, valuename); string name(buf); return name; }//--------------------------------------------------------------int SetKeyStrength(KeyStrength ks, char* keydirname, bool forceProtected) { DataBlock val(2); *(val.getData()) = (char)ks; val.setDataLen(1); string temp = formKeyName(keydirname, "KeyStrength"); return SaveKey(temp, val, forceProtected); }//--------------------------------------------------------------KeyStrength GetKeyStrength(char* keydirname, bool forceProtected) { DataBlock val(2); string temp = formKeyName(keydirname, "KeyStrength"); int result = LoadKey(temp, val, forceProtected); if (!result) return KS_UNKNOWN; if (*(val.getData()) == (char)KS_WEAK) return KS_WEAK; return KS_STRONG; }//--------------------------------------------------------------int GenerateWeakKey(char const * const * ElGamalParams, char* keydirname) { addEntropy(); ElGamalParameters params(ElGamalParams); GlobalRandomPool grp; ElGamalPrivateKey elg(params, grp.pool()); // save private key DataBlock prvkey; elg.encode(prvkey); string temp = formKeyName(keydirname, "private.key"); if (!SaveKey(temp, prvkey)) return false; // save public key DataBlock pubkey; elg.ElGamalPublicKey::encode(pubkey); string temp2 = formKeyName(keydirname, "public.key"); if (!SaveKey(temp2, pubkey)) return false; // set time stamp SetKeyTimeStamp(); // mark it as weak return SetKeyStrength(KS_WEAK, keydirname); }//--------------------------------------------------------------int SetKeyTimeStamp(char* keydirname, bool forceProtected) { // retrieve date int m, d, y; getCurrentDate(m, d, y); char datestr[40]; sprintf(datestr,"%i/%i/%i", m, d, y); DataBlock stamp(datestr); string temp = formKeyName(keydirname, "timestamp"); return SaveKey(temp, stamp, forceProtected); }//--------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -