base
This commit is contained in:
+84
@@ -0,0 +1,84 @@
|
||||
/*
|
||||
* Copyright (C) 1998,1999,2000,2001 Nikos Mavroyanopoulos
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU Library General Public License as published
|
||||
* by the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Library General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Library General Public
|
||||
* License along with this library; if not, write to the
|
||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
* Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include <libdefs.h>
|
||||
#include <mcrypt_modules.h>
|
||||
|
||||
#define _init_mcrypt stream_LTX__init_mcrypt
|
||||
#define _mcrypt_set_state stream_LTX__mcrypt_set_state
|
||||
#define _mcrypt_get_state stream_LTX__mcrypt_get_state
|
||||
#define _end_mcrypt stream_LTX__end_mcrypt
|
||||
#define _mcrypt stream_LTX__mcrypt
|
||||
#define _mdecrypt stream_LTX__mdecrypt
|
||||
#define _has_iv stream_LTX__has_iv
|
||||
#define _is_block_mode stream_LTX__is_block_mode
|
||||
#define _is_block_algorithm_mode stream_LTX__is_block_algorithm_mode
|
||||
#define _mcrypt_get_modes_name stream_LTX__mcrypt_get_modes_name
|
||||
#define _mcrypt_mode_get_size stream_LTX__mcrypt_mode_get_size
|
||||
#define _mcrypt_mode_version stream_LTX__mcrypt_mode_version
|
||||
|
||||
/* STREAM MODE */
|
||||
|
||||
int _init_mcrypt( void* ign, void *key, int lenofkey, void *IV, int size) { return 0; }
|
||||
|
||||
int _mcrypt_set_state( void* buf, void *IV, int size) { return -1; }
|
||||
int _mcrypt_get_state( void* buf, void *IV, int *size) { return -1; }
|
||||
|
||||
int _end_mcrypt(void* ign) {return 0;}
|
||||
|
||||
int _mcrypt( void* ign, void *plaintext, int len, int blocksize, void* akey, void (*func)(void*,void*, int), void (*func2)(void*,void*, int))
|
||||
{
|
||||
void (*_mcrypt_stream_encrypt) (void *, void *, int);
|
||||
|
||||
_mcrypt_stream_encrypt = func;
|
||||
|
||||
_mcrypt_stream_encrypt(akey, plaintext, len);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
int _mdecrypt( void* ign, void *ciphertext, int len, int blocksize, void* akey, void (*func)(void*,void*, int), void (*func2)(void*,void*, int))
|
||||
{
|
||||
void (*_mcrypt_stream_decrypt) (void *, void *, int);
|
||||
|
||||
_mcrypt_stream_decrypt = func2;
|
||||
|
||||
_mcrypt_stream_decrypt(akey, ciphertext, len);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int _has_iv() { return 1; }
|
||||
int _is_block_mode() { return 0; }
|
||||
int _is_block_algorithm_mode() { return 0; }
|
||||
const char *_mcrypt_get_modes_name() { return "STREAM";}
|
||||
int _mcrypt_mode_get_size () {return 0;}
|
||||
|
||||
word32 _mcrypt_mode_version() {
|
||||
return 20010801;
|
||||
}
|
||||
|
||||
#ifdef WIN32
|
||||
# ifdef USE_LTDL
|
||||
WIN32DLL_DEFINE int main (void)
|
||||
{
|
||||
/* empty main function to avoid linker error (see cygwin FAQ) */
|
||||
}
|
||||
# endif
|
||||
#endif
|
||||
+107
@@ -0,0 +1,107 @@
|
||||
/*
|
||||
Module : SNTP.H
|
||||
Purpose: Interface for a MFC class to encapsulate the SNTP protocol
|
||||
Created: PJN / 05-08-1998
|
||||
History: PJN / None
|
||||
|
||||
|
||||
Copyright (c) 1998 by PJ Naughter.
|
||||
All rights reserved.
|
||||
|
||||
|
||||
*/
|
||||
|
||||
#ifndef __SNTP_H__
|
||||
#define __SNTP_H__
|
||||
|
||||
|
||||
|
||||
///////////////////////////////// Classes //////////////////////////////
|
||||
|
||||
//Representation of an NTP timestamp
|
||||
struct CNtpTimePacket
|
||||
{
|
||||
DWORD m_dwInteger;
|
||||
DWORD m_dwFractional;
|
||||
};
|
||||
|
||||
//Helper class to encapulate NTP time stamps
|
||||
class CNtpTime
|
||||
{
|
||||
public:
|
||||
//Constructors / Destructors
|
||||
CNtpTime();
|
||||
CNtpTime(const CNtpTime& time);
|
||||
CNtpTime(CNtpTimePacket& packet);
|
||||
CNtpTime(const SYSTEMTIME& st);
|
||||
|
||||
//General functions
|
||||
CNtpTime& operator=(const CNtpTime& time);
|
||||
double operator-(const CNtpTime& time) const;
|
||||
CNtpTime operator+(const double& timespan) const;
|
||||
operator SYSTEMTIME() const;
|
||||
operator CNtpTimePacket() const;
|
||||
operator unsigned __int64() const { return m_Time; };
|
||||
DWORD Seconds() const;
|
||||
DWORD Fraction() const;
|
||||
|
||||
//Static functions
|
||||
static CNtpTime GetCurrentTime();
|
||||
static DWORD MsToNtpFraction(WORD wMilliSeconds);
|
||||
static WORD NtpFractionToMs(DWORD dwFraction);
|
||||
static double NtpFractionToSecond(DWORD dwFraction);
|
||||
|
||||
protected:
|
||||
//Internal static functions and data
|
||||
static long GetJulianDay(WORD Year, WORD Month, WORD Day);
|
||||
static void GetGregorianDate(long JD, WORD& Year, WORD& Month, WORD& Day);
|
||||
static DWORD m_MsToNTP[1000];
|
||||
|
||||
//The actual data
|
||||
unsigned __int64 m_Time;
|
||||
};
|
||||
|
||||
struct NtpServerResponse
|
||||
{
|
||||
int m_nLeapIndicator; //0: no warning
|
||||
//1: last minute in day has 61 seconds
|
||||
//2: last minute has 59 seconds
|
||||
//3: clock not synchronized
|
||||
|
||||
int m_nStratum; //0: unspecified or unavailable
|
||||
//1: primary reference (e.g., radio clock)
|
||||
//2-15: secondary reference (via NTP or SNTP)
|
||||
//16-255: reserved
|
||||
|
||||
CNtpTime m_OriginateTime; //Time when the request was sent from the client to the SNTP server
|
||||
CNtpTime m_ReceiveTime; //Time when the request was received by the server
|
||||
CNtpTime m_TransmitTime; //Time when the server sent the request back to the client
|
||||
CNtpTime m_DestinationTime; //Time when the reply was received by the client
|
||||
double m_RoundTripDelay; //Round trip time in seconds
|
||||
double m_LocalClockOffset; //Local clock offset relative to the server
|
||||
};
|
||||
|
||||
//The actual SNTP class
|
||||
class CSNTPClient
|
||||
{
|
||||
public:
|
||||
//Constructors / Destructors
|
||||
CSNTPClient();
|
||||
|
||||
//General functions
|
||||
BOOL GetServerTime(LPCTSTR pszHostName, NtpServerResponse& response, int nPort = 123);
|
||||
DWORD GetTimeout() const { return m_dwTimeout; };
|
||||
void SetTimeout(DWORD dwTimeout) { m_dwTimeout = dwTimeout; };
|
||||
BOOL SetClientTime(const CNtpTime& NewTime);
|
||||
|
||||
protected:
|
||||
BOOL EnableSetTimePriviledge();
|
||||
void RevertSetTimePriviledge();
|
||||
|
||||
DWORD m_dwTimeout;
|
||||
HANDLE m_hToken;
|
||||
TOKEN_PRIVILEGES m_TokenPriv;
|
||||
BOOL m_bTakenPriviledge;
|
||||
};
|
||||
|
||||
#endif //__SNTP_H__
|
||||
Reference in New Issue
Block a user