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

📄 session.h

📁 cryptlib安全工具包
💻 H
📖 第 1 页 / 共 3 页
字号:

	/* The object's handle and the handle of the user who owns this object.
	   The former is used when sending messages to the object when only the
	   xxx_INFO is available, the latter is used to avoid having to fetch the
	   same information from the system object table */
	CRYPT_HANDLE objectHandle;
	CRYPT_USER ownerHandle;

	/* Variable-length storage for the type-specific data */
	DECLARE_VARSTRUCT_VARS;
	} SESSION_INFO;

/****************************************************************************
*																			*
*								Session Functions							*
*																			*
****************************************************************************/

/* Macros to make handling of error reporting on shutdown a bit more 
   obvious */

#define disableErrorReporting( sessionInfoPtr )	\
		( sessionInfoPtr )->flags |= SESSION_NOREPORTERROR
#define enableErrorReporting( sessionInfoPtr )	\
		( sessionInfoPtr )->flags &= ~SESSION_NOREPORTERROR

/* The SESSION_ISSERVER flag is checked so often that we define a macro to 
   handle it */

#define isServer( sessionInfoPtr ) \
		( sessionInfoPtr->flags & SESSION_ISSERVER )

/* Session attribute handling functions */

CHECK_RETVAL STDC_NONNULL_ARG( ( 1, 2 ) ) \
int getSessionAttribute( INOUT SESSION_INFO *sessionInfoPtr,
						 OUT_INT_Z int *valuePtr, 
						 IN_ATTRIBUTE const CRYPT_ATTRIBUTE_TYPE attribute );
CHECK_RETVAL STDC_NONNULL_ARG( ( 1, 2 ) ) \
int getSessionAttributeS( INOUT SESSION_INFO *sessionInfoPtr,
						  INOUT MESSAGE_DATA *msgData, 
						  IN_ATTRIBUTE const CRYPT_ATTRIBUTE_TYPE attribute );
CHECK_RETVAL STDC_NONNULL_ARG( ( 1 ) ) \
int setSessionAttribute( INOUT SESSION_INFO *sessionInfoPtr,
						 IN_INT_Z const int value, 
						 IN_ATTRIBUTE const CRYPT_ATTRIBUTE_TYPE attribute );
CHECK_RETVAL STDC_NONNULL_ARG( ( 1, 2 ) ) \
int setSessionAttributeS( INOUT SESSION_INFO *sessionInfoPtr,
						  IN_BUFFER( dataLength ) const void *data,
						  IN_LENGTH const int dataLength,
						  IN_ATTRIBUTE const CRYPT_ATTRIBUTE_TYPE attribute );
CHECK_RETVAL STDC_NONNULL_ARG( ( 1 ) ) \
int deleteSessionAttribute( INOUT SESSION_INFO *sessionInfoPtr,
							IN_ATTRIBUTE const CRYPT_ATTRIBUTE_TYPE attribute );

/* Session-specific attribute management functions */

CHECK_RETVAL \
int addSessionInfo( INOUT_PTR ATTRIBUTE_LIST **listHeadPtr,
					const CRYPT_ATTRIBUTE_TYPE attributeID,
					IN_BUFFER_OPT( dataLength ) \
					const void *data, const int dataLength ) \
					STDC_NONNULL_ARG( ( 1 ) );
CHECK_RETVAL \
int addSessionInfoEx( INOUT_PTR ATTRIBUTE_LIST **listHeadPtr,
					  const CRYPT_ATTRIBUTE_TYPE attributeID,
					  IN_BUFFER( dataLength ) \
					  const void *data, const int dataLength, 
					  const int flags ) \
					  STDC_NONNULL_ARG( ( 1, 3 ) );
CHECK_RETVAL \
int addSessionInfoComposite( INOUT_PTR ATTRIBUTE_LIST **listHeadPtr,
							 const CRYPT_ATTRIBUTE_TYPE attributeID,
							 const ATTRACCESSFUNCTION accessFunction, 
							 IN_BUFFER( dataLength ) \
							 const void *data, const int dataLength,
							 const int flags ) \
							 STDC_NONNULL_ARG( ( 1, 4 ) );
CHECK_RETVAL \
int updateSessionInfo( INOUT_PTR ATTRIBUTE_LIST **listHeadPtr,
					   const CRYPT_ATTRIBUTE_TYPE attributeType,
					   IN_BUFFER( dataLength ) \
					   const void *data, const int dataLength,
					   const int dataMaxLength, const int flags ) \
					   STDC_NONNULL_ARG( ( 1, 3 ) );
CHECK_RETVAL \
int getSessionAttributeCursor( INOUT ATTRIBUTE_LIST *attributeListHead,
							   INOUT ATTRIBUTE_LIST *attributeListCursor, 
							   const CRYPT_ATTRIBUTE_TYPE sessionInfoType,
							   OUT int *valuePtr ) \
							   STDC_NONNULL_ARG( ( 1, 2, 4 ) );
CHECK_RETVAL \
int setSessionAttributeCursor( INOUT ATTRIBUTE_LIST *attributeListHead,
							   OUT_PTR ATTRIBUTE_LIST **attributeListCursorPtr, 
							   const CRYPT_ATTRIBUTE_TYPE sessionInfoType,
							   const int position ) \
							   STDC_NONNULL_ARG( ( 1, 2 ) );
CHECK_RETVAL \
const ATTRIBUTE_LIST *findSessionInfo( INOUT const ATTRIBUTE_LIST *attributeListPtr,
								const CRYPT_ATTRIBUTE_TYPE attributeType ) \
								STDC_NONNULL_ARG( ( 1 ) );
CHECK_RETVAL \
const ATTRIBUTE_LIST *findSessionInfoEx( INOUT const ATTRIBUTE_LIST *attributeListPtr,
								const CRYPT_ATTRIBUTE_TYPE attributeType,
								IN_BUFFER( valueLength ) 
								const void *value, const int valueLength ) \
								STDC_NONNULL_ARG( ( 1, 3 ) );
void lockEphemeralAttributes( INOUT ATTRIBUTE_LIST *attributeListHead ) \
							  STDC_NONNULL_ARG( ( 1 ) );
void deleteSessionInfo( INOUT_PTR ATTRIBUTE_LIST **attributeListHead,
							 INOUT_PTR ATTRIBUTE_LIST **attributeListCurrent,
							 INOUT ATTRIBUTE_LIST *attributeListPtr ) \
							 STDC_NONNULL_ARG( ( 1, 2, 3 ) );
void deleteSessionInfoAll( INOUT_PTR ATTRIBUTE_LIST **attributeListHead,
						   INOUT_PTR ATTRIBUTE_LIST **attributeListCurrent ) \
						   STDC_NONNULL_ARG( ( 1, 2 ) );
CHECK_RETVAL \
CRYPT_ATTRIBUTE_TYPE checkMissingInfo( const ATTRIBUTE_LIST *attributeListHead,
									   const BOOLEAN isServer ) \
									   STDC_NONNULL_ARG( ( 1 ) );

/* Session scoreboard management functions */

CHECK_RETVAL \
int findScoreboardEntry( INOUT SCOREBOARD_INFO *scoreboardInfo,
						 IN_BUFFER( keyLength ) \
						 const void *key, const int keyLength,
						 OUT_BUFFER( maxValueLength, *valueLength ) \
						 void *value, const int maxValueLength,
						 int *valueLength ) \
						 STDC_NONNULL_ARG( ( 1, 2, 4, 6 ) );
CHECK_RETVAL \
int findScoreboardEntryID( INOUT SCOREBOARD_INFO *scoreboardInfo,
						   IN_BUFFER( keyLength ) \
						   const void *key, const int keyLength ) \
						   STDC_NONNULL_ARG( ( 1, 2 ) );
CHECK_RETVAL \
int addScoreboardEntry( INOUT SCOREBOARD_INFO *scoreboardInfo,
						IN_BUFFER( keyLength ) \
						const void *key, const int keyLength, 
						IN_BUFFER( valueLength ) \
						const void *value, const int valueLength ) \
						STDC_NONNULL_ARG( ( 1, 2, 4 ) );
void deleteScoreboardEntry( INOUT SCOREBOARD_INFO *scoreboardInfo, 
							const int uniqueID ) \
							STDC_NONNULL_ARG( ( 1 ) );

/* Prototypes for functions in sess_rw.c */

CHECK_RETVAL \
int readFixedHeaderAtomic( SESSION_INFO *sessionInfoPtr, 
						   OUT_BUFFER_FIXED( headerLength ) \
						   void *headerBuffer, const int headerLength ) \
						   STDC_NONNULL_ARG( ( 1, 2 ) );
CHECK_RETVAL \
int readFixedHeader( SESSION_INFO *sessionInfoPtr, 
					 OUT_BUFFER( headerMaxLen, headerLength ) \
					 void *headerBuffer, const int headerLength ) \
					 STDC_NONNULL_ARG( ( 1, 2 ) );
CHECK_RETVAL \
int getSessionData( INOUT SESSION_INFO *sessionInfoPtr, 
					OUT_BUFFER( dataMaxLength, *bytesCopied ) \
					void *data, const int dataMaxLength, int *bytesCopied ) \
					STDC_NONNULL_ARG( ( 1, 2, 4 ) );
CHECK_RETVAL \
int putSessionData( INOUT SESSION_INFO *sessionInfoPtr, 
					IN_BUFFER_OPT( dataLength ) \
					const void *data, const int dataLength, 
					OUT int *bytesCopied ) \
					STDC_NONNULL_ARG( ( 1, 4 ) );
CHECK_RETVAL \
int readPkiDatagram( INOUT SESSION_INFO *sessionInfoPtr ) \
					 STDC_NONNULL_ARG( ( 1 ) );
CHECK_RETVAL \
int writePkiDatagram( INOUT SESSION_INFO *sessionInfoPtr, 
					  IN_BUFFER( contentTypeLength ) \
					  const char *contentType, const int contentTypeLength ) \
					  STDC_NONNULL_ARG( ( 1, 2 ) );

/* Prototypes for functions in session.c */

CHECK_RETVAL \
int initSessionIO( INOUT SESSION_INFO *sessionInfoPtr ) \
				   STDC_NONNULL_ARG( ( 1 ) );
void initSessionNetConnectInfo( const SESSION_INFO *sessionInfoPtr,
								INOUT NET_CONNECT_INFO *connectInfo ) \
								STDC_NONNULL_ARG( ( 1, 2 ) );
CHECK_RETVAL \
BOOLEAN checkAttributesConsistent( INOUT SESSION_INFO *sessionInfoPtr,
								   const CRYPT_ATTRIBUTE_TYPE attribute ) \
								   STDC_NONNULL_ARG( ( 1 ) );
CHECK_RETVAL \
int activateSession( INOUT SESSION_INFO *sessionInfoPtr ) \
					 STDC_NONNULL_ARG( ( 1 ) );
CHECK_RETVAL \
int sendCloseNotification( INOUT SESSION_INFO *sessionInfoPtr,
						   IN_BUFFER_OPT( length ) \
						   const void *data, const int length ) \
						   STDC_NONNULL_ARG( ( 1 ) );

/* Prototypes for session mapping functions */

#ifdef USE_CERTSTORE
  CHECK_RETVAL \
  int setAccessMethodCertstore( INOUT SESSION_INFO *sessionInfoPtr ) \
								STDC_NONNULL_ARG( ( 1 ) );
#else
  #define setAccessMethodCertstore( x )	CRYPT_ARGERROR_NUM1
#endif /* USE_CERTSTORE */
#ifdef USE_CMP
  CHECK_RETVAL \
  int setAccessMethodCMP( INOUT SESSION_INFO *sessionInfoPtr ) \
						  STDC_NONNULL_ARG( ( 1 ) );
#else
  #define setAccessMethodCMP( x )	CRYPT_ARGERROR_NUM1
#endif /* USE_CMP */
#ifdef USE_RTCS
  CHECK_RETVAL \
  int setAccessMethodRTCS( INOUT SESSION_INFO *sessionInfoPtr ) \
						   STDC_NONNULL_ARG( ( 1 ) );
#else
  #define setAccessMethodRTCS( x )	CRYPT_ARGERROR_NUM1
#endif /* USE_RTCS */
#ifdef USE_OCSP
  CHECK_RETVAL \
  int setAccessMethodOCSP( INOUT SESSION_INFO *sessionInfoPtr ) \
						   STDC_NONNULL_ARG( ( 1 ) );
#else
  #define setAccessMethodOCSP( x )	CRYPT_ARGERROR_NUM1
#endif /* USE_OCSP */
#ifdef USE_SCEP
  CHECK_RETVAL \
  int setAccessMethodSCEP( INOUT SESSION_INFO *sessionInfoPtr ) \
						   STDC_NONNULL_ARG( ( 1 ) );
#else
  #define setAccessMethodSCEP( x )	CRYPT_ARGERROR_NUM1
#endif /* USE_SCEP */
#if defined( USE_SSH ) || defined( USE_SSH1 )
  CHECK_RETVAL \
  int setAccessMethodSSH( INOUT SESSION_INFO *sessionInfoPtr ) \
						  STDC_NONNULL_ARG( ( 1 ) );
#else
  #define setAccessMethodSSH( x )	CRYPT_ARGERROR_NUM1
#endif /* USE_SSH || USE_SSH1 */
#ifdef USE_SSL
  CHECK_RETVAL \
  int setAccessMethodSSL( INOUT SESSION_INFO *sessionInfoPtr ) \
						  STDC_NONNULL_ARG( ( 1 ) );
  CHECK_RETVAL \
  int initScoreboard( INOUT SCOREBOARD_INFO *scoreboardInfo,
					  const int scoreboardSize ) \
					  STDC_NONNULL_ARG( ( 1 ) );
  void endScoreboard( INOUT SCOREBOARD_INFO *scoreboardInfo ) \
					  STDC_NONNULL_ARG( ( 1 ) );
#else
  #define setAccessMethodSSL( x )	CRYPT_ARGERROR_NUM1
  #define initScoreboard( scoreboardInfo, scoreboardSize )	CRYPT_OK
  #define endScoreboard( scoreboardInfo )
#endif /* USE_SSL */
#ifdef USE_TSP
  CHECK_RETVAL \
  int setAccessMethodTSP( INOUT SESSION_INFO *sessionInfoPtr ) \
						  STDC_NONNULL_ARG( ( 1 ) );
#else
  #define setAccessMethodTSP( x )	CRYPT_ARGERROR_NUM1
#endif /* USE_TCP */
#endif /* _SES_DEFINED */

⌨️ 快捷键说明

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