Movatterモバイル変換


[0]ホーム

URL:


Go to main content
oracle home

Developer's Guide to Oracle® Solaris 11.4 Security

Exit Print View

 
Search Scope:
  »  ...Documentation Home  »  Oracle Solaris 11.4 Information Library  »  Developer's Guide to Oracle® ...  »  GSS-API Client Example  »  GSSAPI Client Example: main Function
Updated: November 2020
 
 

GSSAPI Client Example:main() Function

    As with all C programs, the outer shell of the program is containedin the entry-point function,main().main() performsfour functions:

  • Parses command-line arguments and assigns the arguments tovariables.

  • Callsparse_oid() to create a GSS-API OID,object identifier, if a mechanism other than the default is to be used. Theobject identifier comes from the name of the security mechanism, providedthat a mechanism name has been supplied.

  • Callscall_server(), which does the actualwork of creating a context and sending data.

  • Releases the storage space for the OID if necessary, afterthe data is sent.

The source code for themain() routine is shownin the following example.

Example 12  GSSAPI Clientmain() Function
int main(argc, argv)     int argc;     char **argv;{     char *msg;     char service_name[128];      char hostname[128];       char *mechanism = 0;     u_short port = 4444;     int use_file = 0;     OM_uint32 deleg_flag = 0, min_stat;          display_file = stdout;     /* Parse command-line arguments. */        argc--; argv++;     while (argc) {          if (strcmp(*argv, "-port") == 0) {               argc--; argv++;               if (!argc) usage();               port = atoi(*argv);          } else if (strcmp(*argv, "-mech") == 0) {               argc--; argv++;               if (!argc) usage();               mechanism = *argv;          } else if (strcmp(*argv, "-d") == 0) {               deleg_flag = GSS_C_DELEG_FLAG;          } else if (strcmp(*argv, "-f") == 0) {               use_file = 1;          } else               break;          argc--; argv++;     }     if (argc != 3)          usage();     if (argc > 1) {                strcpy(hostname, argv[0]);        } else if (gethostname(hostname, sizeof(hostname)) == -1) {                        perror("gethostname");                        exit(1);        }     if (argc > 2) {         strcpy(service_name, argv[1]);        strcat(service_name, "@");        strcat(service_name, hostname);      }      msg = argv[2];     /* Create GSSAPI object ID. */     if (mechanism)         parse_oid(mechanism, &g_mechOid);     /* Call server to create context and send data. */     if (call_server(hostname, port, g_mechOid, service_name,                   deleg_flag, msg, use_file) < 0)          exit(1);     /* Release storage space for OID, if still allocated  */     if (g_mechOid != GSS_C_NULL_OID)         (void) gss_release_oid(&min_stat, &gmechOid);              return 0;}
Copyright © 2000, 2020, Oracle and/or its affiliates. 
Previous
Next

[8]ページ先頭

©2009-2025 Movatter.jp