mirror of https://github.com/aria2/aria2
				
				
				
			2008-05-14 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Defined message digest algorithm name as static const std::string * src/DHTTokenTracker.cc * src/DHTUtil.cc * src/DefaultBtContext.cc * src/MSEHandshake.cc * src/MessageDigestHelper.cc * src/Peer.cc * src/messageDigest.cc * src/messageDigest.hpull/1/head
							parent
							
								
									48c96ac441
								
							
						
					
					
						commit
						9bd1fc10af
					
				
							
								
								
									
										12
									
								
								ChangeLog
								
								
								
								
							
							
						
						
									
										12
									
								
								ChangeLog
								
								
								
								
							| 
						 | 
				
			
			@ -1,3 +1,15 @@
 | 
			
		|||
2008-05-14  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 | 
			
		||||
 | 
			
		||||
	Defined message digest algorithm name as static const std::string
 | 
			
		||||
	* src/DHTTokenTracker.cc
 | 
			
		||||
	* src/DHTUtil.cc
 | 
			
		||||
	* src/DefaultBtContext.cc
 | 
			
		||||
	* src/MSEHandshake.cc
 | 
			
		||||
	* src/MessageDigestHelper.cc
 | 
			
		||||
	* src/Peer.cc
 | 
			
		||||
	* src/messageDigest.cc
 | 
			
		||||
	* src/messageDigest.h
 | 
			
		||||
 | 
			
		||||
2008-05-14  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 | 
			
		||||
 | 
			
		||||
	Made string literals used in SAX parser static const std::string.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -70,7 +70,7 @@ std::string DHTTokenTracker::generateToken(const unsigned char* infoHash,
 | 
			
		|||
  memcpy(src, infoHash, DHT_ID_LENGTH);
 | 
			
		||||
  memcpy(src+DHT_ID_LENGTH+6, secret, SECRET_SIZE);
 | 
			
		||||
  unsigned char md[20];
 | 
			
		||||
  MessageDigestHelper::digest(md, sizeof(md), "sha1", src, sizeof(src));
 | 
			
		||||
  MessageDigestHelper::digest(md, sizeof(md), MessageDigestContext::SHA1, src, sizeof(src));
 | 
			
		||||
  return std::string(&md[0], &md[sizeof(md)]);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -50,7 +50,7 @@ void DHTUtil::generateRandomKey(unsigned char* key)
 | 
			
		|||
{
 | 
			
		||||
  unsigned char bytes[40];
 | 
			
		||||
  generateRandomData(bytes, sizeof(bytes));
 | 
			
		||||
  MessageDigestHelper::digest(key, 20, "sha1", bytes, sizeof(bytes));
 | 
			
		||||
  MessageDigestHelper::digest(key, 20, MessageDigestContext::SHA1, bytes, sizeof(bytes));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void DHTUtil::generateRandomData(unsigned char* data, size_t length)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -304,7 +304,8 @@ void DefaultBtContext::processRootDictionary(const Dictionary* rootDic, const st
 | 
			
		|||
  // retrieve infoHash
 | 
			
		||||
  BencodeVisitor v;
 | 
			
		||||
  infoDic->accept(&v);
 | 
			
		||||
  MessageDigestHelper::digest(infoHash, INFO_HASH_LENGTH, "sha1",
 | 
			
		||||
  MessageDigestHelper::digest(infoHash, INFO_HASH_LENGTH,
 | 
			
		||||
			      MessageDigestContext::SHA1,
 | 
			
		||||
			      v.getBencodedData().c_str(),
 | 
			
		||||
			      v.getBencodedData().size());
 | 
			
		||||
  infoHashString = Util::toHex(infoHash, INFO_HASH_LENGTH);
 | 
			
		||||
| 
						 | 
				
			
			@ -426,7 +427,7 @@ void DefaultBtContext::computeFastSet
 | 
			
		|||
  }
 | 
			
		||||
  memcpy(tx+4, infoHash, 20);
 | 
			
		||||
  unsigned char x[20];
 | 
			
		||||
  MessageDigestHelper::digest(x, sizeof(x), "sha1", tx, 24);
 | 
			
		||||
  MessageDigestHelper::digest(x, sizeof(x), MessageDigestContext::SHA1, tx, 24);
 | 
			
		||||
  while(fastSet.size() < fastSetSize) {
 | 
			
		||||
    for(size_t i = 0; i < 5 && fastSet.size() < fastSetSize; i++) {
 | 
			
		||||
      size_t j = i*4;
 | 
			
		||||
| 
						 | 
				
			
			@ -439,7 +440,7 @@ void DefaultBtContext::computeFastSet
 | 
			
		|||
      }
 | 
			
		||||
    }
 | 
			
		||||
    unsigned char temp[20];
 | 
			
		||||
    MessageDigestHelper::digest(temp, sizeof(temp), "sha1", x, sizeof(x));
 | 
			
		||||
    MessageDigestHelper::digest(temp, sizeof(temp), MessageDigestContext::SHA1, x, sizeof(x));
 | 
			
		||||
    memcpy(x, temp, sizeof(x));
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -155,14 +155,16 @@ void MSEHandshake::initCipher(const unsigned char* infoHash)
 | 
			
		|||
  memcpy(s+4+KEY_LENGTH, infoHash, INFO_HASH_LENGTH);
 | 
			
		||||
  
 | 
			
		||||
  unsigned char localCipherKey[20];
 | 
			
		||||
  MessageDigestHelper::digest(localCipherKey, sizeof(localCipherKey), "sha1",
 | 
			
		||||
  MessageDigestHelper::digest(localCipherKey, sizeof(localCipherKey),
 | 
			
		||||
			      MessageDigestContext::SHA1,
 | 
			
		||||
			      s, sizeof(s));
 | 
			
		||||
  _encryptor.reset(new ARC4Encryptor());
 | 
			
		||||
  _encryptor->init(localCipherKey, sizeof(localCipherKey));
 | 
			
		||||
 | 
			
		||||
  unsigned char peerCipherKey[20];
 | 
			
		||||
  memcpy(s, _initiator?"keyB":"keyA", 4);
 | 
			
		||||
  MessageDigestHelper::digest(peerCipherKey, sizeof(peerCipherKey), "sha1",
 | 
			
		||||
  MessageDigestHelper::digest(peerCipherKey, sizeof(peerCipherKey),
 | 
			
		||||
			      MessageDigestContext::SHA1,
 | 
			
		||||
			      s, sizeof(s));
 | 
			
		||||
  _decryptor.reset(new ARC4Decryptor());
 | 
			
		||||
  _decryptor->init(peerCipherKey, sizeof(peerCipherKey));
 | 
			
		||||
| 
						 | 
				
			
			@ -202,7 +204,8 @@ void MSEHandshake::createReq1Hash(unsigned char* md) const
 | 
			
		|||
  unsigned char buffer[100];
 | 
			
		||||
  memcpy(buffer, "req1", 4);
 | 
			
		||||
  memcpy(buffer+4, _secret, KEY_LENGTH);
 | 
			
		||||
  MessageDigestHelper::digest(md, 20, "sha1", buffer, 4+KEY_LENGTH);
 | 
			
		||||
  MessageDigestHelper::digest(md, 20, MessageDigestContext::SHA1,
 | 
			
		||||
			      buffer, 4+KEY_LENGTH);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MSEHandshake::createReq23Hash(unsigned char* md, const unsigned char* infoHash) const
 | 
			
		||||
| 
						 | 
				
			
			@ -211,13 +214,15 @@ void MSEHandshake::createReq23Hash(unsigned char* md, const unsigned char* infoH
 | 
			
		|||
  memcpy(x, "req2", 4);
 | 
			
		||||
  memcpy(x+4, infoHash, INFO_HASH_LENGTH);
 | 
			
		||||
  unsigned char xh[20];
 | 
			
		||||
  MessageDigestHelper::digest(xh, sizeof(xh), "sha1", x, sizeof(x));
 | 
			
		||||
  MessageDigestHelper::digest(xh, sizeof(xh), MessageDigestContext::SHA1,
 | 
			
		||||
			      x, sizeof(x));
 | 
			
		||||
 | 
			
		||||
  unsigned char y[4+96];
 | 
			
		||||
  memcpy(y, "req3", 4);
 | 
			
		||||
  memcpy(y+4, _secret, KEY_LENGTH);
 | 
			
		||||
  unsigned char yh[20];
 | 
			
		||||
  MessageDigestHelper::digest(yh, sizeof(yh), "sha1", y, sizeof(y));
 | 
			
		||||
  MessageDigestHelper::digest(yh, sizeof(yh), MessageDigestContext::SHA1,
 | 
			
		||||
			      y, sizeof(y));
 | 
			
		||||
  
 | 
			
		||||
  for(size_t i = 0; i < 20; ++i) {
 | 
			
		||||
    md[i] = xh[i]^yh[i];
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -49,7 +49,7 @@ void MessageDigestHelper::staticSHA1DigestInit()
 | 
			
		|||
{
 | 
			
		||||
  staticSHA1DigestFree();
 | 
			
		||||
  _sha1Ctx = new MessageDigestContext();
 | 
			
		||||
  _sha1Ctx->trySetAlgo("sha1");
 | 
			
		||||
  _sha1Ctx->trySetAlgo(MessageDigestContext::SHA1);
 | 
			
		||||
  _sha1Ctx->digestInit();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -55,7 +55,7 @@ Peer::Peer(std::string ipaddr, uint16_t port):
 | 
			
		|||
  resetStatus();
 | 
			
		||||
  std::string idSeed = ipaddr+":"+Util::uitos(port);
 | 
			
		||||
#ifdef ENABLE_MESSAGE_DIGEST
 | 
			
		||||
  id = MessageDigestHelper::digestString("sha1", idSeed);
 | 
			
		||||
  id = MessageDigestHelper::digestString(MessageDigestContext::SHA1, idSeed);
 | 
			
		||||
#else
 | 
			
		||||
  id = idSeed;
 | 
			
		||||
#endif // ENABLE_MESSAGE_DIGEST
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -37,6 +37,12 @@
 | 
			
		|||
 | 
			
		||||
namespace aria2 {
 | 
			
		||||
 | 
			
		||||
const std::string MessageDigestContext::SHA1("sha1");
 | 
			
		||||
 | 
			
		||||
const std::string MessageDigestContext::SHA256("sha256");
 | 
			
		||||
 | 
			
		||||
const std::string MessageDigestContext::MD5("md5");
 | 
			
		||||
 | 
			
		||||
static MessageDigestContext::DigestAlgoMap::value_type digests[] = {
 | 
			
		||||
#ifdef HAVE_LIBSSL
 | 
			
		||||
  MessageDigestContext::DigestAlgoMap::value_type("md5", EVP_md5()),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -60,6 +60,12 @@ public:
 | 
			
		|||
  typedef int DigestAlgo;
 | 
			
		||||
#endif // HAVE_LIBGCRYPT
 | 
			
		||||
  typedef std::map<std::string, MessageDigestContext::DigestAlgo> DigestAlgoMap;
 | 
			
		||||
 | 
			
		||||
  static const std::string SHA1;
 | 
			
		||||
 | 
			
		||||
  static const std::string SHA256;
 | 
			
		||||
 | 
			
		||||
  static const std::string MD5;
 | 
			
		||||
private:
 | 
			
		||||
#ifdef HAVE_LIBSSL
 | 
			
		||||
  EVP_MD_CTX ctx;
 | 
			
		||||
| 
						 | 
				
			
			@ -71,7 +77,7 @@ private:
 | 
			
		|||
 | 
			
		||||
  static DigestAlgoMap digestAlgos;
 | 
			
		||||
public:
 | 
			
		||||
  MessageDigestContext():algo(getDigestAlgo("sha1"))
 | 
			
		||||
  MessageDigestContext():algo(getDigestAlgo(MessageDigestContext::SHA1))
 | 
			
		||||
  {}
 | 
			
		||||
 | 
			
		||||
  ~MessageDigestContext()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue