int main(int argc, char **argv) { BIO *bio_err; X509_REQ *req=NULL; EVP_PKEY *pkey=NULL; CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON); bio_err=BIO_new_fp(stderr, BIO_NOCLOSE); mkreq(&req,&pkey,512,0,365); RSA_print_fp(stdout,pkey->pkey.rsa,0); X509_REQ_print_fp(stdout,req); PEM_write_X509_REQ(stdout,req); X509_REQ_free(req); EVP_PKEY_free(pkey); #ifndef OPENSSL_NO_ENGINE ENGINE_cleanup(); #endif CRYPTO_cleanup_all_ex_data(); CRYPTO_mem_leaks(bio_err); BIO_free(bio_err); return(0); }
int main(int argc, char **argv) { if (argc > 2) { printf("usage: %s [passwd]\n", argv[0]); return -1; } BIO* bio_err; X509_REQ* req = NULL; EVP_PKEY* pkey = NULL; CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON); bio_err = BIO_new_fp(stderr, BIO_NOCLOSE); mkreq(&req, &pkey, 1024, 0, 365); if (argc == 1) { mkcert(req, "rootkey.pem", "rootcert.pem", NULL); } else if (argc == 2) { mkcert(req, "rootkey.pem", "rootcert.pem", argv[1]); } RSA_print_fp(stdout, pkey->pkey.rsa, 0); X509_REQ_print_fp(stdout, req); PEM_write_X509_REQ(stdout, req); X509_REQ_free(req); EVP_PKEY_free(pkey); CRYPTO_cleanup_all_ex_data(); CRYPTO_mem_leaks(bio_err); BIO_free(bio_err); return 0; }
/* notify a slave that an area has changed. */ static void send_notify(char *slave, RR *soa, Request *req) { int i, len, n, reqno, status, fd; char *err; uchar ibuf[Maxudp+Udphdrsize], obuf[Maxudp+Udphdrsize]; RR *rp; Udphdr *up = (Udphdr*)obuf; DNSmsg repmsg; /* create the request */ reqno = rand(); n = mkreq(soa->owner, Cin, obuf, Fauth | Onotify, reqno); /* get an address */ if(strcmp(ipattr(slave), "ip") == 0) { if (parseip(up->raddr, slave) == -1) dnslog("bad address %s to notify", slave); } else { rp = dnresolve(slave, Cin, Ta, req, nil, 0, 1, 1, &status); if(rp == nil) rp = dnresolve(slave, Cin, Taaaa, req, nil, 0, 1, 1, &status); if(rp == nil) return; parseip(up->raddr, rp->ip->name); rrfreelist(rp); /* was rrfree */ } fd = udpport(nil); if(fd < 0) return; /* send 3 times or until we get anything back */ n += Udphdrsize; for(i = 0; i < 3; i++, freeanswers(&repmsg)){ dnslog("sending %d byte notify to %s/%I.%d about %s", n, slave, up->raddr, nhgets(up->rport), soa->owner->name); memset(&repmsg, 0, sizeof repmsg); if(write(fd, obuf, n) != n) break; alarm(2*1000); len = read(fd, ibuf, sizeof ibuf); alarm(0); if(len <= Udphdrsize) continue; err = convM2DNS(&ibuf[Udphdrsize], len, &repmsg, nil); if(err != nil) { free(err); continue; } if(repmsg.id == reqno && (repmsg.flags & Omask) == Onotify) break; } if (i < 3) freeanswers(&repmsg); close(fd); }
static struct hthead *parsereq(struct bufio *in) { struct hthead *req; struct charbuf method, url, ver; int c; req = NULL; bufinit(method); bufinit(url); bufinit(ver); while(1) { c = biogetc(in); if(c == ' ') { break; } else if((c == EOF) || (c < 32) || (c >= 128)) { goto fail; } else { bufadd(method, c); if(method.d >= 128) goto fail; } } while(1) { c = biogetc(in); if(c == ' ') { break; } else if((c == EOF) || (c < 32)) { goto fail; } else { bufadd(url, c); if(url.d >= 65536) goto fail; } } while(1) { c = biogetc(in); if(c == 10) { break; } else if(c == 13) { } else if((c == EOF) || (c < 32) || (c >= 128)) { goto fail; } else { bufadd(ver, c); if(ver.d >= 128) goto fail; } } bufadd(method, 0); bufadd(url, 0); bufadd(ver, 0); req = mkreq(method.b, url.b, ver.b); if(parseheadersb(req, in)) goto fail; trimx(req); goto out; fail: if(req != NULL) { freehthead(req); req = NULL; } out: buffree(method); buffree(url); buffree(ver); return(req); }
static void msend_req_del_stat_read(int s, mfile *m) { int r; mfile *d; uint16_t len; for(d=mftop[MFSEND];d;d=d->next){ if(d->link == m){ if(d->mdata.head.nstate == MAKUO_SENDSTATE_WAIT){ break; } } } if(!d){ d = mkreq(&(m->mdata), &(m->addr), MAKUO_SENDSTATE_WAIT); d->mdata.head.flags = m->mdata.head.flags; d->mdata.head.reqid = getrid(); d->initstate = 1; d->sendwait = 0; d->sendto = 1; d->dryrun = m->dryrun; d->recurs = m->recurs; d->link = m; d->mdata.p = d->mdata.data; } if(m->len >= sizeof(m->mod)){ len = m->len - sizeof(m->mod); data_safeset16(&(d->mdata), m->len); data_safeset32(&(d->mdata), m->mod); data_safeset(&(d->mdata), m->tn, len); m->len = 0; } while(1){ if((r = atomic_read(m->pipe, &(m->len), sizeof(m->len), 1))){ if(r == -1){ if(errno == EAGAIN){ return; }else{ lprintf(0, "[error] %s: length read error\n", __func__); } } break; } if(m->len <= sizeof(m->mod)){ lprintf(0, "[error] %s: length error\n", __func__); break; } len = m->len - sizeof(m->mod); if(atomic_read(m->pipe, &(m->mod), sizeof(m->mod), 0)){ lprintf(0, "[error] %s: filemode read error\n", __func__); break; } if(atomic_read(m->pipe, m->tn, len, 0)){ lprintf(0, "[error] %s: filename read error\n", __func__); break; } m->tn[len] = 0; if(lstat(m->tn, &(m->fs)) == -1){ if(errno == ENOENT){ m->len = 0; continue; } } if(msend_req_del_stat_read_pathcmp(s, m)){ m->len = 0; continue; } if(d->mdata.head.szdata + sizeof(m->len) + m->len > MAKUO_BUFFER_SIZE){ d->mdata.head.nstate = MAKUO_SENDSTATE_OPEN; }else{ strcpy(d->fn, m->tn); data_safeset16(&(d->mdata), m->len); data_safeset32(&(d->mdata), m->mod); data_safeset(&(d->mdata), m->tn, len); m->len = 0; } return; } d->mdata.head.nstate = MAKUO_SENDSTATE_OPEN; close(m->pipe); m->pipe = -1; m->initstate = 1; m->sendwait = 0; }