static char * rw_serialize_pub (const dckey *key) { const rw_pub *pk = (const rw_pub *) key; char *res = NULL; if (cat_str (&res, rabin_1.name) || cat_str (&res, ":Pub,n=") || cat_mpz (&res, pk->n)) { free (res); res = NULL; } return res; }
static char *fill_formatted_bytes(char *str, uint64_t bytes){ const static char *sizes[]={"Bytes", "KB", "MB", "GB", "TB"}; uint32_t rem, sz; rem=0; sz=0; while (bytes>=1024 && sz<ARRAY_SIZE(sizes)-1){ rem=bytes%1024; bytes/=1024; sz++; } str=cat_uint32(str, (uint32_t)bytes); if (sz && bytes<100){ rem=rem*1000/1024; assert(rem<=999); *str++='.'; if (bytes<10){ rem/=10; *str++='0'+rem/10; *str++='0'+rem%10; } else *str++='0'+rem/100; } return cat_str(str, sizes[sz]); }
void uart_report(char *line) { to_print = line; #if 0 char *buf = report; unsigned int cnt1_A; _DINT(); cnt1_A = cnt1_a; cnt1_a = 0; _EINT(); buf = cat_ul(buf, jiffies); buf = cat_str(buf, "\t"); buf = cat_ul(buf, cnt1_A); buf = cat_str(buf, "\t"); buf = cat_ul(buf, cnt1_b); # if 0 buf = cat_ul(buf, curr_state); buf = cat_str(buf, "\t"); buf = cat_ul(buf, temp_up); buf = cat_str(buf, "\t"); buf = cat_ul(buf, temp_bottom); buf = cat_str(buf, "\t"); buf = cat_ul(buf, temp_ctl); #endif buf = cat_str(buf, "\r\n"); *buf = 0; #endif i = 0; IE2 |= UCA0TXIE; }
void LibRnrsUnicode::CharGeneralCategory::func(KevesVM* vm, const_KevesIterator pc) { KevesChar chr(vm->acc_); const char* cat[] { "XX", "Mn", "Mc", "Me", "Nd", "Nl", "No", "Zs", "Zp", "Zl", "Cc", "Cf", "Cs", "Co", "Cn", "Lu", "Ll", "Lt", "Lm", "Lo", "Pc", "Pd", "Ps", "Pe", "Pi", "Pf", "Po", "Sm", "Sc", "Sk", "So", }; QChar::Category cat_n(chr.category()); StringKevWithArray<0x4> cat_str(cat[cat_n]); SymbolKev cat_sym(cat_str); vm->acc_ = &cat_sym; return KevesVM::returnValueSafe(vm, pc); }
int main(int argc, char *argv[]) { command_number number; typedef enum {None, Udp, Tcp, Ipm} proto_list; proto_list proto; soc_token soc = NULL; int port_no; char buff[500]; request_message_t request; report_message_t report; int i, n, res; soc_host my_host; soc_port my_port; /* printf("Req_size: %d\n", sizeof(request_message_t)); */ /* printf("Rep_size: %d\n", sizeof(report_message_t)); */ proto = None; if (argc == 4) { if (strcmp (argv[1], "-u") == 0) { proto = Udp; } else if (strcmp (argv[1], "-t") == 0) { proto = Tcp; } else if (strcmp (argv[1], "-m") == 0) { proto = Ipm; } } if (proto == None) { fprintf(stderr, "Error. Three args -u/-t/-m <hostname> <port_name/num> expected.\n"); exit(1); } /* Socket stuff */ res = soc_open(&soc, (proto == Tcp ? tcp_header_socket : udp_socket)); if (res != SOC_OK) { perror("soc_open"); terror("soc_open", res); exit(1); } /* Dest to host (tcp/udp) or lan (ipm) */ port_no = atoi(argv[3]); if (port_no <= 0) { res = soc_set_dest_name_service(soc, argv[2], proto == Ipm, argv[3]); if (res != SOC_OK) { perror("soc_set_dest_name_service"); terror("soc_set_dest_name_service", res); exit (1); } } else { res = soc_set_dest_name_port(soc, argv[2], proto == Ipm, port_no); if (res != SOC_OK) { perror("soc_set_dest_name_port"); terror("soc_open", res); exit (1); } } if (proto != Tcp) { res = soc_link_dynamic(soc); if (res != SOC_OK) { perror("soc_link_dynamic"); terror("soc_link_dynamic", res); exit(1); } } res = soc_set_blocking(soc, FALSE); if (res != SOC_OK) { perror("soc_set_blocking"); terror("soc_set_blocking", res); exit(1); } /* Get current host and port */ res = soc_get_local_host_id(&my_host); if (res != SOC_OK) { perror("soc_get_local_host"); terror("soc_get_local_host", res); exit(1); } my_port = 0; if (proto != Tcp) { res = soc_get_linked_port(soc, &my_port); if (res != SOC_OK) { perror("soc_get_linked_port"); terror("soc_get_linked_port", res); exit(1); } } printf ("I am host %u port %u\n", my_host.integer, my_port); number = 0; for (;;) { printf ("\n"); printf ("Start Kill Exit Ping Read (s k e p r) ? "); i = get_line (NULL, buff, sizeof(buff)); if (strcmp(buff, "s") == 0) { /* Start */ memset(request.start_req.command_text, 0, sizeof(request.start_req.command_text)); memset(request.start_req.environ_variables, 0, sizeof(request.start_req.environ_variables)); request.kind = start_command; printf ("Number: %d\n", number); request.start_req.number = number; number += 1; printf ("Command ? "); i = get_line (NULL, request.start_req.command_text, sizeof(request.start_req.command_text)); for (;;) { printf ("Argument (Empty to end) ? "); i = get_line (NULL, buff, sizeof(buff)); if (i == 0) break; cat_str (request.start_req.command_text, buff); } for (n = 1;;n++) { printf ("Environ (Empty to end) ? "); i = get_line (NULL, buff, sizeof(buff)); if (i == 0) break; if (n == 1) { strcpy (request.start_req.environ_variables, buff); } else { cat_str (request.start_req.environ_variables, buff); } } printf ("Current dir ? "); i = get_line (NULL, request.start_req.currend_dir, sizeof(request.start_req.currend_dir)); printf ("Output flow ? "); i = get_line (NULL, request.start_req.output_flow, sizeof(request.start_req.output_flow)); if (i != 0) { for (;;) { printf (" Append (t or [f]) ? "); i = get_line (NULL, buff, sizeof(buff)); if (strcmp(buff, "t") == 0) { request.start_req.append_output = 1; break; } else if ( (i == 0) || (strcmp(buff, "f") == 0) ) { request.start_req.append_output = 0; break; } } } printf ("Error flow ? "); i = get_line (NULL, request.start_req.error_flow, sizeof(request.start_req.error_flow)); if (i != 0) { for (;;) { printf (" Append (t or [f]) ? "); i = get_line (NULL, buff, sizeof(buff)); if (strcmp(buff, "t") == 0) { request.start_req.append_error = 1; break; } else if ( (i == 0) || (strcmp(buff, "f") == 0) ) { request.start_req.append_error = 0; break; } } } res = soc_send(soc, (char*)&request, sizeof(request)); if (res != SOC_OK) { perror("soc_send"); terror("soc_send", res); } } else if (strcmp(buff, "k") == 0) { /* Kill */ request.kind = kill_command; for (;;) { printf ("Number ? "); i = get_line (NULL, buff, sizeof(buff)); i = atoi(buff); if (i >= 0) break; } request.start_req.number = i; for (;;) { printf ("Signal ? "); i = get_line (NULL, buff, sizeof(buff)); i = atoi(buff); if (i >= 0) break; } request.kill_req.signal_number = i; res = soc_send(soc, (char*)&request, sizeof(request)); if (res != SOC_OK) { perror("soc_send"); terror("soc_send", res); } } else if (strcmp(buff, "e") == 0) { /* Exit */ request.kind = fexit_command; for (;;) { printf ("Exit code ? "); i = get_line (NULL, buff, sizeof(buff)); i = atoi(buff); if (i >= 0) break; } request.fexit_req.exit_code = i; res = soc_send(soc, (char*)&request, sizeof(request)); if (res != SOC_OK) { perror("soc_send"); terror("soc_send", res); } } else if (strcmp(buff, "p") == 0) { /* Exit */ request.kind = ping_command; res = soc_send(soc, (char*)&request, sizeof(request)); if (res != SOC_OK) { perror("soc_send"); terror("soc_send", res); } } else if (strcmp(buff, "r") == 0) { /* Read report */ n = soc_receive(soc, &report, sizeof(report), FALSE); if (n == sizeof(report)) { switch (report.kind) { case start_report : printf ("Start: command %d pid %d\n", report.start_rep.number, report.start_rep.started_pid); break; case kill_report : printf ("Kill: command %d pid %d\n", report.kill_rep.number, report.kill_rep.killed_pid); break; case exit_report : printf ("Exit: command %d pid %d code %d ", report.exit_rep.number, report.exit_rep.exit_pid, report.exit_rep.exit_status); if (WIFEXITED(report.exit_rep.exit_status)) { printf ("exit normally code %d\n", WEXITSTATUS(report.exit_rep.exit_status)); } else if (WIFSIGNALED(report.exit_rep.exit_status)) { printf ("exit on signal %d\n", WTERMSIG(report.exit_rep.exit_status)); } else { printf ("stopped on signal %d\n", WSTOPSIG(report.exit_rep.exit_status)); } break; case fexit_report : printf ("Forker exited\n"); break; case pong_report : printf ("Pong\n"); break; default : printf ("Unknown report kind\n"); break; } } else if (n == SOC_WOULD_BLOCK) { printf ("No report\n"); } else if (n == SOC_READ_0) { printf ("Disconnected\n"); exit (0); } else { perror("soc_receive"); } } } }
int main (int argc, char **argv) { int fdca, fdpk; dckey *ca = NULL, *pk = NULL; char *id = NULL; char *cert_file = NULL, *pk_file = NULL; int duration = -1; ri (); if (argc < 2) usage (argv[0]); else if (argc == 2) { if (strcmp (argv[1], "init") != 0) usage (argv[0]); else { setprogname (argv[0]); pki_init (); } } else if (argc == 5) { if (strcmp (argv[1], "check") != 0) usage (argv[0]); else { setprogname (argv[0]); pki_check (argv[2], argv[3], argv[4]); } } else if (strcmp (argv[1], "cert") != 0) { usage (argv[0]); } else { /* cert commnad */ setprogname (argv[0]); /* first, let's take care of the options, if any */ parse_options (&pk, &cert_file, &duration, argc, argv); /* the last two args are ID and PK-FILE */ pk_file = argv[argc - 2]; id = argv[argc - 1]; /* set up default values for parameters not affected by the options */ if (!cert_file) { /* default cert_file is ID.cert */ if (cat_str (&cert_file, id) || cat_str (&cert_file, ".cert")) { xfree (cert_file); exit (1); } } if (duration == -1) /* default duration is 30 days */ duration = 30; /* take care of the public key that we are certifying */ /* if the -g option was used, we have to write the pk to pk_file */ if (pk) write_pkfile (pk_file, pk); /* otherwise, import pk from pk_file */ else { if ((fdpk = open (pk_file, O_RDONLY)) == -1) { if (errno == ENOENT) { usage (argv[0]); } else { perror (argv[0]); exit (1); } } else if (!(pk = import_pub_from_file (fdpk))) { fprintf (stderr, "%s: no public key found in %s\n", argv[0], pk_file); close (fdpk); exit (1); } close (fdpk); fdpk = -1; } /* now read the ca private key from ./.pki/ca.priv */ if ((fdca = open ("./.pki/ca.priv", O_RDONLY)) == -1) { if (errno == ENOENT) { usage (argv[0]); } else { perror (argv[0]); exit (1); } } else { if (!(ca = import_priv_from_file (fdca))) { fprintf (stderr, "%s: no private key found in %s\n", argv[0], "./.pki/ca.priv"); close (fdca); exit (1); } close (fdca); fdca = -1; /* prepare a cert, sign it and write it to cert_file */ switch (cert_sign_n_write (ca, id, pk, duration, cert_file)) { case 0: /* no error */ /* the ca signing key is not needed anymore: wipe it out */ dcfree (ca); ca = NULL; break; case -1: /* trouble with the write system call */ check_n_free (&cert_file); dcfree (ca); exit (1); case -2: /* trouble preparing/signinig the certificate */ check_n_free (&cert_file); dcfree (ca); exit (1); default: check_n_free (&cert_file); dcfree (ca); exit (1); } assert (cert_verify (cert_read (cert_file))); dcfree (pk); pk = NULL; } } check_n_free (&cert_file); return 0; }
char * cert_export (const cert *c, int with_sig) { char *res = NULL; if (!c || cat_str (&res, c->version) || cat_str (&res, ":ca=(") || cat_str (&res, dcexport_pub (c->issuer)) || cat_str (&res, "),id=") || cat_str (&res, c->identity) || cat_str (&res, ",pk=(") || cat_str (&res, dcexport_pub (c->public_key)) || cat_str (&res, "),issued=") || cat_str (&res, ctime (&(c->day_issued))) || (res[strlen(res) - 1] = ',', /* replace '\n' by ',' */ cat_str (&res, "expires=")) || cat_str (&res, ((c->day_expires == c->day_issued) ? "NEVER\n" : ctime (&(c->day_expires)))) /* this one always eval to false; done just to remove trailing '\n' */ || (res [strlen (res) - 1] = ((with_sig && c->sig) ? ',' : '\0'), 0) || (with_sig && c->sig && (cat_str (&res, "sig=") || cat_str (&res, c->sig)))) { xfree (res); res = NULL; } return res; }