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

📄 weakkey.cpp

📁 伯克利做的SFTP安全文件传输协议
💻 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 + -