̿̾§
	Get()	ƤϤʤ¤ؿ
			 gfarmGetPeernameOfSocket() 
			gfarmGetEtcDir() 
			㳰ǡfree() Ƥɬפ롣
	New()	ɬפ빽¤ؿ
			̤̾ΤȤ¤Τ¿
			: Crack*Status(), {Import,Duplicate}Name(),
			    {Acquire,Export}Credential(),
			    Accept{,SecurityContext}(),
			    Initiate{,SecurityContext}(),
			    gfarmGss{Send,Receive}Token()
			(new ϡC++  new ɤͳ褹)
	Delete()	¤ؿ
			㳰: gfarmGssFreeCrackedStatus(),
			      gfarmSecSessionTerminate()
			(delete ϡC++  delete ɤͳ褹)

GSSAPI wrapper

char **	gfarmGssCrackMajorStatus(OM_uint32 majStat);
	GSSAPI  major status ʸѴ롣
	֤ͤ gfarmGssFreeCrackedStatus() ǲʤФʤʤ

char **	gfarmGssCrackMinorStatus(OM_uint32 minStat);
	GSSAPI  minorstatus ʸѴ롣
	֤ͤ gfarmGssFreeCrackedStatus() ǲʤФʤʤ

void	gfarmGssFreeCrackedStatus(char **strPtr);
	gfarmGssCrackStatus() ֤ͤ롣

void	gfarmGssPrintMajorStatus(OM_uint32 majStat);
	GSSAPI  major status ʸȤƥ˽Ϥ롣

void	gfarmGssPrintMinorStatus(OM_uint32 minStat);
	GSSAPI  minor status ʸȤƥ˽Ϥ롣

int	gfarmGssSendToken(int fd, gss_buffer_t gsBuf);
	fd  gsBuf Ϥ롣

int	gfarmGssReceiveToken(int fd, gss_buffer_t gsBuf);
	fd  gsBuf Ϥ롣

int	gfarmGssImportName(gss_name_t *namePtr,
			   void *nameValue,
			   size_t nameLength,
			   gss_OID nameType,
			   OM_uint32 *majStatPtr,
			   OM_uint32 *minStatPtr);
	nameValue, nameLength, nameType ǻꤷ̾
	gss_name_t Ѵ*namePtr ֤
	*namePtr ϡgfarmGssDeleteName() ѤƲʤФʤʤ
	 1 ֤ꡢ¾ξˤ -1 ʲ֤롣
	Ԥ硢*majStatPtr, *minStatPtr ˤϡ줾 GSSAPI
	ƤӽФ major status, minor status ֤롣
	Υե 1. ⻲

int	gfarmGssImportNameOfHostBasedService(gss_name_t *namePtr,
					     char *service, char *hostname,
					     OM_uint32 *majStatPtr,
					     OM_uint32 *minStatPtr);
	gfarmGssImportName() Ф GSS_C_NT_HOSTBASED_SERVICE 
	ꤷʴؿ
	*namePtr ϡgfarmGssDeleteName() ѤƲʤФʤʤ
	 1 ֤ꡢ¾ξˤ -1 ʲ֤롣
	Ԥ硢*majStatPtr, *minStatPtr ˤϡ줾 GSSAPI
	ƤӽФ major status, minor status ֤롣

int	gfarmGssImportNameOfHost(gss_name_t *namePtr, char *hostname,
				 OM_uint32 *majStatPtr,
				 OM_uint32 *minStatPtr);
	gfarmGssImportNameOfHostBasedService()  service Ф "host" 
	ꤷʴؿ
	*namePtr ϡgfarmGssDeleteName() ѤƲʤФʤʤ
	 1 ֤ꡢ¾ξˤ -1 ʲ֤롣
	Ԥ硢*majStatPtr, *minStatPtr ˤϡ줾 GSSAPI
	ƤӽФ major status, minor status ֤롣

int	gfarmGssDeleteName(gss_name_t *namePtr,
			   OM_uint32 *majStatPtr,
			   OM_uint32 *minStatPtr);
	namePtr Ϥ줿 gss_name_t 롣
	 1 ֤ꡢ¾ξˤ -1 ʲ֤롣

int	gfarmGssNewCredentialName(gss_name_t *outputNamePtr,
				  gss_cred_id_t cred,
				  OM_uint32 *majStatPtr,
				  OM_uint32 *minStatPtr);
	cred Ϳ줿 credential ̾ *outputNamePtr ֤
	*outputNamePtr ϡgfarmGssDeleteName() ѤƲʤ
	ʤʤ
	 1 ֤ꡢ¾ξˤ -1 ֤롣

char *	gfarmGssNewDisplayName(const gss_name_t inputName,
			       OM_uint32 *majStatPtr,
			       OM_uint32 *minStatPtr,
			       gss_OID *outputNameTypePtr);
	inputName ɽǽʸѴ֤
	֤ͤ free() ʤФʤʤ
	outputNameTypePtr  NULL Ǥʤ硢*outputNameTypePtr 
	Ѵ̤ʸ nameType ֤
	Globus GSSAPI ѤƤ硢δؿͤ NULL ʳǡ
	 *outputNameTypePtr  GSS_C_NT_ANONYMOUS ʳǤʤ顢
	ͤ X.509  DN ȹͤɤߤ GFSL Ǥϡ
	GSS_C_NT_ANONYMOUS Ū˶ػߤƤΤǡ X.509 DN ֤롣

int	gfarmGssAcquireCredential(gss_cred_id_t *credPtr,
				  const gss_name_t desiredName,
				  gss_cred_usage_t credUsage,
				  OM_uint32 *majStatPtr,
				  OM_uint32 *minStatPtr,
				  gss_name_t *credNamePtr);
	desiredName  credUsage (GSS_C_INITIATE, GSS_C_ACCEPT, GSS_C_BOTH)
	˽credential *credPtr ֤
	*credPtr ϡgfarmGssDeleteCredential() ʤФʤʤ
	acceptor ¦ǥۥȾȤ硢 initiator ¦ǥ桼
	ȤˤϡdesiredName  GSS_C_NO_NAME ꤷƤ褤
	acceptor ¦ǥӥȤˤϡcredUsage 
	GSS_C_ACCEPT ꤹ롣
	credNamePtr  NULL ʳξ硢*credNamePtr ˤϡ*credPtr 
	֤̾롣
	*credNamePtr ϡgfarmGssDeleteName() ѤƲʤФʤʤ
	credential  1 ֤ꡢ¾ξˤ -1 ʲ
	֤롣
	顼ξ硢*majStatPtr, *minStatPtr ˤϡ줾 GSSAPI 
	ƤӽФ major status, minor status ֤롣

int	gfarmGssDeleteCredential(gss_cred_id_t cred,
				 OM_uint32 *majStatPtr,
				 OM_uint32 *minStatPtr)
	cred ǻꤷ credential 롣
	 1 ֤ꡢ¾ξˤ -1 ʲ֤롣
	*majStatPtr, *minStatPtr ˤϡ줾 GSSAPI ƤӽФ
	major status, minor status ֤롣

int	gfarmGssAcceptSecurityContext(int fd,
				      gss_cred_id_t cred,
				      gss_ctx_id_t *scPtr,
				      OM_uint32 *majStatPtr,
				      OM_uint32 *minStatPtr,
				      gss_name_t *remoteNamePtr,
				      gss_cred_id_t *remoteCredPtr);
	cred  fd Ѥơacceptor ¦ secure context 
	*scPtr ֤
	remoteNamePtr  NULL ʳξ硢*remoteNamePtr ˤ initiator ¦
	֤̾롣
	*remoteNamePtr  gfarmGssDeleteName() ѤƲʤ
	ʤʤ
	*remoteCredPtr ˤ initiator ¦ delegate 줿 credential
	֤롣
	*remoteCredPtr ϡgfarmGssDeleteCredential() ѤƲʤ
	ʤʤ
	secure context ˤ 1 ֤ꡢ¾ξˤ -1 
	ʲ֤롣*majStatPtr, *minStatPtr ˤϡ줾 GSSAPIƤӽФ
	major status, minor status ֤롣

int	gfarmGssInitiateSecurityContext(int fd,
					const gss_name_t acceptorName,
					gss_cred_id_t cred,
					OM_uint32 reqFlag,
					gss_ctx_id_t *scPtr,
				  	OM_uint32 *majStatPtr,
				  	OM_uint32 *minStatPtr,
					gss_name_t *remoteNamePtr);
	cred  fd Ѥơinitiator ¦ secure context 
	*scPtr ֤reqFlag ˤ initiate ΥץͿ(
	GFARMR_GSS_DEFAULT_SECURITY_SETUP_FLAG Ѥ뤳)
	acceptorNameˤϡ³оݤ acceptor ɬפʸ¤ꤹ롣
	acceptor ǧڤɬפʤ硢acceptorName  GSS_C_NO_NAME 
	ꤷƤ褤credential  delegate 硢ƥ
	ͳ顢ϵʤ
	remoteNamePtr  NULL ʳξ硢*remoteNamePtr ˤϡacceptor ¦
	֤̾롣
	*remoteNamePtr  gfarmGssDeleteName() ѤƲʤ
	ʤʤ
	secure context ˤ 1 ֤ꡢ
	¾ξˤ -1 ʲ֤롣
	*majStatPtr, *minStatPtr ˤϡ줾 GSSAPI ƤӽФ
	major status, minor status ֤롣

void	gfarmGssDeleteSecurityContext(gss_ctx_id_t *scPtr);
	*scPtr Ǽ secure context ˴롣

int	gfarmGssConfigureMessageSize(gss_ctx_id_t sCtx,
				     int doEncrypt,
				     gss_qop_t qopReq,
				     unsigned int reqOutSz,
				     unsigned int *maxInSzPtr,
				     OM_uint32 *majStatPtr,
				     OM_uint32 *minStatPtr);
	doEncrypt(1:Ź沽, 0:ʤ), qopReq(̾ 
	GFARM_GSS_DEFAULT_QOP ), reqOutSz ꡢsCtx Ѥ
	ݤ GSSAPI /wrap/unwrap ؿѤκåĹ
	ꤷ*maxInSzPtr ֤줿ˤ 1 ֤ꡢ
	¾ξˤ -1 ʲ֤롣*majStatPtr, *minStatPtr ˤϡ
	줾 GSSAPI	ƤӽФ major status, minor status ֤롣

int	gfarmGssSend(int fd, gss_ctx_id_t sCtx,
		     int doEncrypt,
		     gss_qop_t qopReq,
		     gfarm_int8_t *buf, int n, int chunkSz,
		     OM_uint32 *statPtr);
	sCtx, doEncrypt, qopReq ˤꡢbuf (Ĺ n Х)Ź沽 
	fd ˽Ϥ롣sCtx, doEncrypt, qopReq  
	gfarmGssConfigureMessageSize() ƤӽФƱͤѤ
	ʤФʤʤchunkSz  gfarmGssConfigureMessageSize() 
	ꤷåĹǤʤФʤʤ줿
	ˤ n ֤ꡢ¾ξˤ 0 ʲ֤롣*statPtr ˤ 
	GSSAPI ƤӽФ status ֤롣

int	gfarmGssReceive(int fd, gss_ctx_id_t sCtx,
			gfarm_int8_t **bufPtr, int *lenPtr,
			OM_uint32 *statPtr);
	fd äŹʸ sCtx ʿʸ**bufPtr ֤ʿ
	ʸĹ *lenPtr ֤롣*bufPtr  free() ʤФʤ
	줿ˤ *lenPtr Ʊ֤ͤꡢ¾
	ˤ 0 ʲ֤롣*statPtr ˤ GSSAPI ƤӽФ status 
	֤롣



ǧķ

int	gfarmAuthInitialize(char *usermapFile);
	usermapFile ǻꤷ DN -> UNIX uid ؤѴơ֥Ѥ
	ǧĥǡ١롣NULL ⤷ "" Ϳ줿
	硢${GFARM_HOME}/etc/gfarm-usermap Ѥ롣
	줿ˤ 1 ֤ꡢ¾ξˤ -1 ʲ֤롣

void	gfarmAuthFinalize(void);
	gfarmAuthInitialize() ǽ줿ǧĥǡ١Τ˴롣

gfarmAuthEntry *
	gfarmAuthGetUserEntry(char *distUserName);
	distUserName ǻꤵ줿 DN ĥȥǧĥǡ١
	鸡롣ȥ꤬ĤäˤϤΥȥ
	ʳξˤ NULL ֤

void	gfarmAuthDestroyUserEntry(gfarmAuthEntry *aePtr);
	aePtr Ǽ륨ȥ˴롣

void	gfarmAuthMakeThisAlone(gfarmAuthEntry *laePtr);
	ǧĥǡ١Τ˴laePtr Ǽ륨ȥμ
	ΤߤĤsetuid(0) ʥץ setuid(0ʳ)ˡ;
	ʤΤ򸫤ʤ褦ˤ뤿ᡣ
	XXX
		GFARM_FAKE_GSS_C_NT_USER_NAME_FOR_GLOBUS Ωä
		ϡǧĥǡ١˴ϹԤʤ
		ϡinitiator ¦Ȥư⡢
		ǧĥǡ١ɬפʤᡣ

Session


#define GFARM_SS_USE_ENCRYPTION		0x1
#define GFARM_SS_USE_COMPRESSION	0x2
#define GFARM_SS_USE_SYSTEMCONF		0x80000000

#define GFARM_SS_OPT_QOP_MASK   0x1
#define GFARM_SS_OPT_MAXT_MASK  0x2
#define GFARM_SS_OPT_CONF_MASK  0x4
#define GFARM_SS_OPT_ALL_MASK   0x7

char **	gfarmSecSessionCrackStatus(gfarmSecSession *ssPtr);
	ssPtr Ǽ session Ǥ GSSAPI ƤӽФ status 
	ʸѴ롣֤ͤ 
	gfarmSecSessionFreeCrackedStatus() ǲʤФʤʤ

void	gfarmSecSessionFreeCrackedStatus(char **strPtr);
	gfarmSecSessioCrackStatus() ֤ͤ롣

void	gfarmSecSessionPrintStatus(gfarmSecSession *ssPtr);
	ssPtr Ǽ session Ǥ GSSAPI ƤӽФ status 
	ʸȤƥ˽Ϥ롣

int	gfarmSecSessionInitializeAcceptor(char *configFile,
					  char *usermapFile,
					  OM_uint32 *majStatPtr,
					  OM_uint32 *minStatPtr);
	̿ѥ᥿ե configFile, Ѵơ֥ usermapFile 
	Ѥacceptor ¦ session Ķ롣
	줿ˤ 1 ֤ꡢ¾ξˤ -1 ʲ֤롣
	*majStatPtr, *minStatPtr ˤϡ줾 GSSAPI	ƤӽФ
	major status, minor status ֤롣
	ե̾Ȥ NULL ⤷ "" Ѥ硢줾졢
		${GFARM_HOME}/etc/gfarm-acceptor.conf
		${GFARM_HOME}/etc/gfarm-usermap
	Ѥ롣

int	gfarmSecSessionInitializeInitiator(char *configFile,
					   char *usermapFile,
					   OM_uint32 *majStatPtr,
					   OM_uint32 *minStatPtr);
	̿ѥ᥿ե configFile, Ѵơ֥ usermapFile 
	Ѥinitiator ¦ session Ķ롣
	줿ˤ 1 ֤ꡢ¾ξˤ -1 ʲ֤롣
	*majStatPtr, *minStatPtr ˤϡ줾 GSSAPI	ƤӽФ
	major status, minor status ֤롣
	ե̾Ȥ NULL ⤷ "" Ѥ硢
		${GFARM_HOME}/etc/gfarm-initiator.conf
		${GFARM_HOME}/etc/gfarm-usermap
	Ѥ롣

int	gfarmSecSessionInitializeBoth(char *iConfigFile,
				      char *aConfigFile,
				      char *usermapFile,
				      OM_uint32 *majstatPtr,
				      OM_uint32 *minstatPtr);
	initiator ¦̿ѥ᥿ե iConfigFile, acceptor ¦
	̿ѥ᥿ե aConfigFile, Ѵơ֥ usermapFile 
	Ѥinitiator/acceptor ưԤ碌 session 
	Ķ롣줿ˤ 1 ֤ꡢ
	¾ξˤ -1 ʲ֤롣*majStatPtr, *minStatPtr ˤϡ
	줾 GSSAPI	ƤӽФ major status, minor status ֤롣
	ե̾Ȥ NULL ⤷ "" Ѥ硢줾졢
		${GFARM_HOME}/etc/gfarm-initiator.conf
		${GFARM_HOME}/etc/gfarm-acceptor.conf
		${GFARM_HOME}/etc/gfarm-usermap
	Ѥ롣

void	gfarmSecSessionFinalizeAcceptor(void);
void	gfarmSecSessionFinalizeInitiator(void);
void	gfarmSecSessionFinalizeBoth(void);
	acceptor, initiator, both Ρ줾ѤȤƽ
	 session Ķ˴롣

gfarmSecSession *	gfarmSecSessionAccept(int fd,
					      gss_cred_id_t cred,
					      gfarmSecSessionOption *ssOptPtr,
					      OM_uint32 *majStatPtr,
					      OM_uint32 *minStatPtr);
	fd, cred Ѥơsession  accept 롣*ssOptPtr ̾ 
	NULL Ѥ롣session  accept  session ֤
	ʳξˤ NULL ֤*majStatPtr, *minStatPtr ˤϡ
	줾 GSSAPI	ƤӽФ major status, minor status ֤롣
	cred  GSS_C_NO_CREDENTIAL Ѥ硢
		a. getuid() == 0 ξ
			host certificate 줿 credential
		b. getuid() != 0 ξ
			user certificate 줿 credential
	Ѥ롣cred != GSS_C_NO_CREDENTIAL ξ硢äˡcred  
	user certificate 줿 credential Ǥ硢user to
	user ǧڤԤȤˤʤꡢsecurity level 㲼뤳Ȥ
	աȤ櫓ǡGSS_C_NO_CREDENTIAL ˻ѤƤ褤
			
gfarmSecSession *	gfarmSecSessionInitiate(int fd,
						const gss_name_t acceptorName,
						gss_cred_id_t cred,
						OM_uint32 reqFlag,
						gfarmSecSessionOption *ssOptPtr,
						OM_uint32 *majStatPtr,
						OM_uint32 *minStatPtr);
	fd, cred Ѥơsession  initiate 롣*ssOptPtr 
	 NULL Ѥ롣*majStatPtr, *minStatPtr ˤϡ줾 GSSAPI
	ƤӽФ major status, minor status ֤롣
	cred  GSS_C_NO_CREDENTIAL Ѥ硢user
	certificate 줿 credential Ѥ롣
	gfarmSecSessionInitializeBoth() ǽ줿 session 
	ǤΤߡinitiator  delegation 줿 credential  cred 
	˻ꤷ session  initiate 뤳ȡ

gfarmSecSession *	gfarmSecSessionInitiateByName(
						char *hostname,
						int port,
						char *acceptorNameString,
						gss_OID acceptorNameType,
						gss_cred_id_t cred,
						OM_uint32 reqFlag,
						gfarmSecSessionOption *ssOptPtr,
						OM_uint32 *majStatPtr,
						OM_uint32 *minStatPtr);
	ۥ̾ hostname, port ֹ port Ѥơhostname:port  
	connect(2) 塢connect(2) 줿 fd  cred Ѥ
	ơsession  initiate 롣ʲ 
	gfarmSecSessionInitiate() Ʊ͡

void			gfarmSecSessionTerminate(gfarmSecSession *ssPtr);
	initiate/accept  session ssPtr λ롣
	gfarmSecSessionAccept(), gfarmSecSessionInitiate() 
	 session Ǥϡ̿˻Ѥ fd  close(2) ʤΤǡ
	close(2) Ū˸Ƥ֤ȡ

gss_cred_id_t	gfarmSecSessionGetDelegatedCredential(gfarmSecSession *ssPtr);
	accept  session ssPtr 顢initiator  delegateion 
	줿 credential 롣initiator  delegation Ĥ
	ʤ硢GSS_C_NO_CONTEXT ֤롣initiate  session 
	ѤȡGSS_C_NO_CONTEXT ֤롣

int	gfarmSecSessionGetInitiatorName(gfarmSecSession *ssPtr,
					gss_name_t *namePtr);
	accept  session ssPtr 顢initiator ̾
	*namePtr ֤
	 1 ֤ꡢ¾ξ硢Ȥ initiate 
	session Ѥ -1 ʲ֤

gfarmAuthEntry *	gfarmSecSessionGetInitiatorInfo(gfarmSecSession *ssPtr);
	accept  session ssPtr 顢бǧĥǡ١ȥ
	롣initiate  session ѤȡNULL ֤롣

int			gfarmSecSessionDedicate(gfarmSecSession *ssPtr);
	accept  session ssPtr бޥΥ桼Τ
	ѥץˤʤ뤿Τޤʤ
		a. gfarmAuthMakeThisAlone() Ƥӡ;פʾ롣
		b. getuid() == 0 Ǥ硢setgid(), setuid() 롣
	νԤ롣 1 ֤ꡢʳξ -1 
	֤롣

int			gfarmSecSessionSendInt8(gfarmSecSession *ssPtr,
						gfarm_int8_t *buf,
						int n);
int			gfarmSecSessionSendInt16(gfarmSecSession *ssPtr,
						 gfarm_int16_t *buf,
						 int n);
int			gfarmSecSessionSendInt32(gfarmSecSession *ssPtr,
						 gfarm_int32_t *buf,
						 int n);
	session ssPtr Ѥơbuf Ǽ n Ĥ byte, short,
	long 롣 n ֤ꡢʳ 0 ʲ֤롣

int			gfarmSecSessionReceiveInt8(gfarmSecSession *ssPtr,
						   gfarm_int8_t **bufPtr,
						   int *lenPtr);
int			gfarmSecSessionReceiveInt16(gfarmSecSession *ssPtr,
						    gfarm_int16_t **bufPtr,
						    int *lenPtr);
int			gfarmSecSessionReceiveInt32(gfarmSecSession *ssPtr,
						    gfarm_int32_t **bufPtr,
						    int *lenPtr);
	session ssPtr Ѥơbyte, net short, net long 롣
	Ŀ *lenPtr ֤*bufPtr  free() ʤФʤʤ
	 *lenPtr Ʊ֤ͤꡢʳξ 0 ʲ֤롣

int			gfarmSecSessionPoll(gfarmSecSession *ssList[],
					    int n,
					    struct timeval *toPtr);
	ssList Ǽ줿 n Ĥ session ϲݤ poll 
	롣toPtr ˤ select(2)  timeout ͤƱͤͤꤹ롣
	֤ͤ select(2) Ʊ졣ʲΥޥѤơpoll ٤ 
	event λ/ȽԤ

#define GFARM_SS_POLL_NONE		0x0
#define GFARM_SS_POLL_READABLE		0x1
#define GFARM_SS_POLL_WRITABLE		0x2
#define GFARM_SS_POLL_ERROR		0x4

#define gfarmSecSessionCheckPollReadable(s) (isBitSet(s->pollEvent, GFARM_SS_POLL_READABLE))
#define gfarmSecSessionCheckPollWritable(s) (isBitSet(s->pollEvent, GFARM_SS_POLL_WRITABLE))
#define gfarmSecSessionCheckPollError(s) (isBitSet(s->pollEvent, GFARM_SS_POLL_WRITABLE))

#define gfarmSecSessionSetPollEvent(s, e) { s->pollEvent = (e); }
#define gfarmSecSessionClearPollEvent(s) gfarmSecSessionSetPollEvent(s, GFARM_SS_POLL_NONE)

#define gfarmSecSessionAddPollEvent(s, m) { s->pollEvent |= (m); }
#define gfarmSecSessionDeletePollEvent(s, d) { s->pollEvent &= ~(d); }

ʲδؿϡGFARM_GSS_EXPORT_CRED_ENABLED ξΤͭ

gfarmExportedCredential *
		gfarmGssExportCredential(gss_cred_id_t cred,
					 OM_uint32 *statPtr);
	ꤵ줿 credential (== ̾ delegated credential) 
	ҥץѤǤǸ롣
	gfarmGssEnvForExportedCredential() ⻲ȡ

char *	gfarmGssEnvForExportedCredential(gfarmExportedCredential *exportedCred);
	gfarmGssExportCredential() Ǹ credential Ѥ
	ҥץƤӽФݤˡꤷʤФʤĶѿ
	("ENV_NAME=value" ʸ)

void	gfarmGssDeleteExportedCredential(gfarmExportedCredential *exportedCred);
	ҥץظ credential 롣

------------------------------------------------------------------------
1.

gfarmGssImportName() ѤǤ롢((nameValue, nameLength), nameType) 
ȹ礻˴ؤƤϡRFC2743/RFC2744 򻲾ȡ

Ūȹ礻ϰʲ̤ꡣ
	nameType			nameValue
	GSS_C_NO_OID			GSSᥫ˥¸ ( != NULL)
		Globus ξ硢X.509 Distinguish Name
	GSS_C_NT_HOSTBASED_SERVICE	"ӥ̾@ۥ̾" (ۥ̾FQDN)
		ӥ̾γƤϡ URL 
			http://www.iana.org/assignments/gssapi-service-names
		ӥ̾ "host" ϡRFC2743 졢Globus GSI Ǥ
		ۥȾ򻲾Ȥ롣
	GSS_C_NT_EXPORT_NAME		mechanism name 

 Globus ݡȤƤʤᡢGFSL ȼ˼Ƥ롣
	GSS_C_NT_USER_NAME		"桼̾"
(Globus  GSS_C_NT_USER_NAME դ뤬Ūˤ GSS_C_NT_USER_NAME
 νԤäƤ餺GCC_C_NO_OID Ʊˤʤ롣
 ʤX.509 Distinguish Name ׵᤹롣
 ΤᡢGFSL Υ٥ǺƼƤ롣)

 Globus ݡȤƤʤ
	GSS_C_NT_STRING_UID_NAME	"桼IDοͤɽʸ"
	GSS_C_NT_MACHINE_UID_NAME	uid_t ؤΥݥ (ۥȥХȥ)
(Globus Ϥͤդ뤬Ūˤä˽ԤäƤ餺
 GCC_C_NO_OID Ʊˤʤ롣)
------------------------------------------------------------------------
