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 Server Example  »  GSSAPI Server Example: main Function
Updated: November 2020
 
 

GSSAPI Server Example:main() Function

    Thegss-servermain() functionperforms the following tasks:

  • Parses command-line arguments and assigns the arguments tovariables

  • Acquires the credentials for the service corresponding tothe mechanism

  • Calls thesign_server() function, whichperforms the work involved with signing and returning the message

  • Releases the credentials that have been acquired

  • Releases the mechanism OID namespace

  • Closes the connection if the connection is still open

Example 20  GSSAPI Servermain() Function
intmain(argc, argv)     int argc;     char **argv;{     char *service_name;     gss_cred_id_t server_creds;     OM_uint32 min_stat;     u_short port = 4444;     int s;     int once = 0;     int do_inetd = 0;     log = stdout;     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, "-verbose") == 0) {          verbose = 1;     } else if (strcmp(*argv, "-once") == 0) {          once = 1;     } else if (strcmp(*argv, "-inetd") == 0) {          do_inetd = 1;     } else if (strcmp(*argv, "-logfile") == 0) {          argc--; argv++;          if (!argc) usage();          log = fopen(*argv, "a");          display_file = log;          if (!log) {          perror(*argv);          exit(1);          }     } else          break;     argc--; argv++;     }     if (argc != 1)          usage();     if ((*argv)[0] == '-')          usage();     service_name = *argv;     /* Acquire service credentials. */     if (server_acquire_creds(service_name, &server_creds) < 0)          return -1;          if (do_inetd) {          close(1);          close(2);          /* Sign and return message. */          sign_server(0, server_creds);          close(0);     } else {          int stmp;          if ((stmp = create_socket(port)) >= 0) {              do {                  /* Accept a TCP connection */                  if ((s = accept(stmp, NULL, 0)) < 0) {                      perror("accepting connection");                      continue;                  }                  /* This return value is not checked, because there is                     not really anything to do if it fails. */                  sign_server(s, server_creds);                  close(s);              } while (!once);              close(stmp);          }     }     /* Close down and clean up. */     (void) gss_release_cred(&min_stat, &server_creds);     /*NOTREACHED*/     (void) close(s);     return 0;}
Copyright © 2000, 2020, Oracle and/or its affiliates. 
Previous
Next

[8]ページ先頭

©2009-2025 Movatter.jp