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

📄 sec_clr.cpp

📁 伯克利做的SFTP安全文件传输协议
💻 CPP
字号:
// sec_clr.cc// code for sec_clr.h// copyright SafeTP Development Group, Inc., 2000  Terms of use are as specified in license.txt#include "sec_clr.h"      // this module#include "datablok.h"     // DataBlock#include <string.h>       // strcmp// ------------------ CleartextDataSecurity --------------------------DataSecurityLevel CleartextDataSecurity::getSupportedProtLevels() const{  return DSL_CLEAR;}char CleartextDataSecurity::getCodeForLevel(DataSecurityLevel level) const{  xassert(level == DSL_CLEAR);  return 'C';}DataSecurityLevel CleartextDataSecurity::getLevelForCode(char code) const{  if (code == 'C') {    return DSL_CLEAR;  }  else {    return DSL_NONE;  }}// --------------------- CleartextControl2 ---------------------------char const * const CleartextControl2::serverFirst =  "Cleartext2 first server ADAT";char const * const CleartextControl2::clientFirst =  "Cleartext2 first client ADAT";char const * const CleartextControl2::serverSecond =  "Cleartext2 second server ADAT";char const * const CleartextControl2::clientSecond =  "Cleartext2 second client ADAT";bool CleartextControl2::hasOutgoingAdat() const{  if (isClient) {    return state==1 || state==3;  }  else {    // server    return state==0 || state==2;  }}void CleartextControl2::getNextOutgoingAdat(DataBlock &block){  if (isClient) {    switch (state) {      case 1:        block.setFromString(clientFirst);        break;      case 3:        block.setFromString(clientSecond);        break;      default:        xassert(!"invalid state");    }  }  else {    // server    switch (state) {      case 0:        block.setFromString(serverFirst);        break;      case 2:        block.setFromString(serverSecond);        break;      default:        xassert(!"invalid state");    }  }  state++;}bool CleartextControl2::expectingIncomingAdat() const{  if (isClient) {    return state==0 || state==2;  }  else {    // server    return state==1 || state==3;  }}void CleartextControl2::checkAdat(  DataBlock const &reallyIs, char const *shouldBe, char const *context){  char const *really = (char const*)reallyIs.getDataC();  if (0!=strcmp(really, shouldBe)) {    xsecurity(stringb(context << " should be \"" << shouldBe <<                      "\" but is \"" << really << "\""));  }}void CleartextControl2::incomingAdat(DataBlock &block){  if (isClient) {    switch (state) {      case 0:        checkAdat(block, serverFirst, "Server's first adat");        break;      case 2:        checkAdat(block, serverSecond, "Server's second adat");        break;      default:        xassert(!"invalid state");    }  }  else {     // server    switch (state) {      case 1:        checkAdat(block, clientFirst, "Client's first adat");        break;      case 3:        checkAdat(block, clientSecond, "Client's second adat");        break;      default:        xassert(!"invalid state");    }  }  state++;}

⌨️ 快捷键说明

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