#ifndef EXTERN_H
#define EXTERN_H
#include "parse.h"
#define MAX_SERVERS_DNS 8
#ifndef nitems
#define nitems(_a) (sizeof((_a)) / sizeof((_a)[0]))
#endif
enum acctop {
ACCT_STOP = 0,
ACCT_READY,
ACCT_SIGN,
ACCT_KID_SIGN,
ACCT_THUMBPRINT,
ACCT__MAX
};
enum chngop {
CHNG_STOP = 0,
CHNG_SYN,
CHNG_ACK,
CHNG__MAX
};
enum keyop {
KEY_STOP = 0,
KEY_READY,
KEY__MAX
};
enum certop {
CERT_STOP = 0,
CERT_REVOKE,
CERT_UPDATE,
CERT__MAX
};
enum fileop {
FILE_STOP = 0,
FILE_REMOVE,
FILE_CREATE,
FILE__MAX
};
enum dnsop {
DNS_STOP = 0,
DNS_LOOKUP,
DNS__MAX
};
enum revokeop {
REVOKE_STOP = 0,
REVOKE_CHECK,
REVOKE_EXP,
REVOKE_OK,
REVOKE__MAX
};
enum comp {
COMP_NET,
COMP_KEY,
COMP_CERT,
COMP_ACCOUNT,
COMP_CHALLENGE,
COMP_FILE,
COMP_DNS,
COMP_REVOKE,
COMP__MAX
};
enum comm {
COMM_REQ,
COMM_THUMB,
COMM_CERT,
COMM_PAY,
COMM_NONCE,
COMM_KID,
COMM_URL,
COMM_TOK,
COMM_CHNG_OP,
COMM_CHNG_ACK,
COMM_ACCT,
COMM_ACCT_STAT,
COMM_CSR,
COMM_CSR_OP,
COMM_ISSUER,
COMM_CHAIN,
COMM_CHAIN_OP,
COMM_DNS,
COMM_DNSQ,
COMM_DNSA,
COMM_DNSF,
COMM_DNSLEN,
COMM_KEY_STAT,
COMM_REVOKE_OP,
COMM_REVOKE_CHECK,
COMM_REVOKE_RESP,
COMM__MAX
};
enum chngstatus {
CHNG_INVALID = -1,
CHNG_PENDING = 0,
CHNG_PROCESSING = 1,
CHNG_VALID = 2
};
struct chng {
char *uri;
char *token;
char *error;
size_t retry;
enum chngstatus status;
};
enum orderstatus {
ORDER_INVALID = -1,
ORDER_PENDING = 0,
ORDER_READY = 1,
ORDER_PROCESSING = 2,
ORDER_VALID = 3
};
struct order {
char *uri;
char *finalize;
char *certificate;
enum orderstatus status;
char **auths;
size_t authsz;
};
struct capaths {
char *newaccount;
char *newnonce;
char *neworder;
char *revokecert;
};
struct jsmnn;
__BEGIN_DECLS
int acctproc(int, const char *, enum keytype);
int certproc(int, int);
int chngproc(int, const char *);
int dnsproc(int);
int revokeproc(int, const char *, int, int, struct domain_c *);
int fileproc(int, const char *, const char *, const char *,
const char *);
int keyproc(int, struct domain_c *);
int netproc(int, int, int, int, int, int, int,
struct authority_c *, struct domain_c *);
void dodbg(const char *, ...)
__attribute__((format(printf, 1, 2)));
void doddbg(const char *, ...)
__attribute__((format(printf, 1, 2)));
long readop(int, enum comm);
char *readbuf(int, enum comm, size_t *);
char *readstr(int, enum comm);
int writebuf(int, enum comm, const void *, size_t);
int writestr(int, enum comm, const char *);
int writeop(int, enum comm, long);
int checkexit(pid_t, enum comp);
int checkexit_ext(int *, pid_t, enum comp);
size_t base64len(size_t);
char *base64buf_url(const char *, size_t);
struct jsmnn *json_parse(const char *, size_t);
void json_free(struct jsmnn *);
int json_parse_response(struct jsmnn *);
void json_free_challenge(struct chng *);
int json_parse_challenge(struct jsmnn *, struct chng *);
void json_free_order(struct order *);
int json_parse_order(struct jsmnn *, struct order *);
int json_parse_upd_order(struct jsmnn *, struct order *);
void json_free_capaths(struct capaths *);
int json_parse_capaths(struct jsmnn *, struct capaths *);
char *json_getstr(struct jsmnn *, const char *);
char *json_fmt_newcert(const char *);
char *json_fmt_chkacc(void);
char *json_fmt_newacc(const char *);
char *json_fmt_neworder(struct domain_c *);
char *json_fmt_protected_rsa(const char *,
const char *, const char *, const char *);
char *json_fmt_protected_ec(const char *, const char *, const char *,
const char *);
char *json_fmt_protected_kid(const char*, const char *, const char *,
const char *);
char *json_fmt_revokecert(const char *);
char *json_fmt_thumb_rsa(const char *, const char *);
char *json_fmt_thumb_ec(const char *, const char *);
char *json_fmt_signed(const char *, const char *, const char *);
extern int verbose;
extern enum comp proccomp;
__END_DECLS
#endif