]> git.lizzy.rs Git - plan9front.git/blobdiff - sys/include/libsec.h
ndb/dnstcp: -x specifies the mountmoint
[plan9front.git] / sys / include / libsec.h
index 127395bef0634fa20eda6c7b8dfe28206867c21f..86cb342e5e35850a7fea6dd4a601d5242623d8ca 100644 (file)
@@ -70,6 +70,42 @@ void bfCBCdecrypt(uchar*, int, BFstate*);
 void   bfECBencrypt(uchar*, int, BFstate*);
 void   bfECBdecrypt(uchar*, int, BFstate*);
 
+/*
+ * Chacha definitions
+ */
+
+enum
+{
+       ChachaBsize=    64,
+       ChachaKeylen=   256/8,
+       ChachaIVlen=    96/8,
+};
+
+typedef struct Chachastate Chachastate;
+struct Chachastate
+{
+       union{
+               u32int  input[16];
+               struct {
+                       u32int  constant[4];
+                       u32int  key[8];
+                       u32int  counter;
+                       u32int  iv[3];
+               };
+       };
+       int     rounds;
+       int     ivwords;
+};
+
+void   setupChachastate(Chachastate*, uchar*, ulong, uchar*, ulong, int);
+void   chacha_setiv(Chachastate *, uchar*);
+void   chacha_setblock(Chachastate*, u64int);
+void   chacha_encrypt(uchar*, ulong, Chachastate*);
+void   chacha_encrypt2(uchar*, uchar*, ulong, Chachastate*);
+
+void   ccpoly_encrypt(uchar *dat, ulong ndat, uchar *aad, ulong naad, uchar tag[16], Chachastate *cs);
+int    ccpoly_decrypt(uchar *dat, ulong ndat, uchar *aad, ulong naad, uchar tag[16], Chachastate *cs);
+
 /*
  * DES definitions
  */
@@ -376,8 +412,10 @@ typedef struct TLSconn{
        char    dir[40];        /* connection directory */
        uchar   *cert;  /* certificate (local on input, remote on output) */
        uchar   *sessionID;
+       uchar   *psk;
        int     certlen;
        int     sessionIDlen;
+       int     psklen;
        int     (*trace)(char*fmt, ...);
        PEMChain*chain; /* optional extra certificate evidence for servers to present */
        char    *sessionType;
@@ -385,6 +423,7 @@ typedef struct TLSconn{
        int     sessionKeylen;
        char    *sessionConst;
        char    *serverName;
+       char    *pskID;
 } TLSconn;
 
 /* tlshand.c */
@@ -474,3 +513,5 @@ void pbkdf2_x(uchar *p, ulong plen, uchar *s, ulong slen, ulong rounds, uchar *d
 void hkdf_x(uchar *salt, ulong nsalt, uchar *info, ulong ninfo, uchar *key, ulong nkey, uchar *d, ulong dlen,
        DigestState* (*x)(uchar*, ulong, uchar*, ulong, uchar*, DigestState*), int xlen);
 
+/* timing safe memcmp() */
+int tsmemcmp(void*, void*, ulong);