Added SilcConnAuth connection auth protocol API.
[silc.git] / lib / silcske / silcske_i.h
diff --git a/lib/silcske/silcske_i.h b/lib/silcske/silcske_i.h
new file mode 100644 (file)
index 0000000..833d157
--- /dev/null
@@ -0,0 +1,76 @@
+/*
+
+  silcske_i.h
+
+  Author: Pekka Riikonen <priikone@silcnet.org>
+
+  Copyright (C) 2005 Pekka Riikonen
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; version 2 of the License.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+*/
+
+#ifndef SILCSKE_I_H
+#define SILCSKE_I_H
+
+/* Length of cookie in Start Payload */
+#define SILC_SKE_COOKIE_LEN 16
+
+/* SKE context */
+struct SilcSKEStruct {
+  SilcPacketStream stream;
+  SilcRng rng;
+  SilcSKECallbacks callbacks;
+  void *user_data;
+  SilcSKEStatus status;
+
+  /* Negotiated Security properties.  May be NULL in case of error. */
+  SilcSKESecurityProperties prop;
+
+  /* Key Exchange payloads filled during key negotiation with
+     remote data. Responder may save local data here as well. */
+  SilcSKEStartPayload start_payload;
+  SilcSKEKEPayload ke1_payload;
+  SilcSKEKEPayload ke2_payload;
+
+  /* Temporary copy of the KE Start Payload used in the
+     HASH computation. */
+  SilcBuffer start_payload_copy;
+
+  /* Random number x, 1 < x < q. This is the secret exponent
+     used in Diffie Hellman computations. */
+  SilcMPInt *x;
+
+  /* The secret shared key */
+  SilcMPInt *KEY;
+
+  /* The hash value HASH of the key exchange */
+  unsigned char *hash;
+  SilcUInt32 hash_len;
+
+  char *version;                     /* Local version */
+  char *remote_version;                      /* Remote version */
+
+  SilcPublicKey public_key;
+  SilcPrivateKey private_key;
+  SilcSKEPKType pk_type;
+  SilcPacket packet;
+  SilcSKESecurityPropertyFlag flags;
+  SilcSKEKeyMaterial keymat;
+  SilcSKERekeyMaterial rekey;
+  SilcSchedule schedule;
+  SilcFSMStruct fsm;
+  SilcAsyncOperationStruct op;
+
+  unsigned int aborted    : 1;
+  unsigned int responder  : 1;
+};
+
+#endif /* SILCSKE_I_H */