/* Forward declaration of the Authentication Payload */
typedef struct SilcAuthPayloadStruct *SilcAuthPayload;
+/* Forward declaration of the Key Agreement Payload */
+typedef struct SilcKeyAgreementPayloadStruct *SilcKeyAgreementPayload;
+
/* Authentication method type */
-typedef unsigned short SilcAuthMethod;
+typedef uint16 SilcAuthMethod;
/* Authentication methods in SILC protocol */
#define SILC_AUTH_NONE 0
#define SILC_AUTH_FAILED 1
/* Prototypes */
-SilcAuthPayload silc_auth_payload_parse(SilcBuffer buffer);
+SilcAuthPayload silc_auth_payload_parse(unsigned char *data,
+ uint32 data_len);
SilcBuffer silc_auth_payload_encode(SilcAuthMethod method,
unsigned char *random_data,
- unsigned short random_len,
+ uint16 random_len,
unsigned char *auth_data,
- unsigned short auth_len);
+ uint16 auth_len);
void silc_auth_payload_free(SilcAuthPayload payload);
-SilcBuffer silc_auth_public_key_auth_generate(SilcPKCS pkcs,
- SilcHash hash);
-int silc_auth_public_key_auth_verify(SilcAuthPayload paylaod,
- SilcPKCS pkcs, SilcHash hash);
+SilcAuthMethod silc_auth_get_method(SilcAuthPayload payload);
+unsigned char *silc_auth_get_data(SilcAuthPayload payload,
+ uint32 *auth_len);
+SilcBuffer silc_auth_public_key_auth_generate(SilcPublicKey public_key,
+ SilcPrivateKey private_key,
+ SilcHash hash,
+ void *id, SilcIdType type);
+int silc_auth_public_key_auth_verify(SilcAuthPayload payload,
+ SilcPublicKey public_key, SilcHash hash,
+ void *id, SilcIdType type);
int silc_auth_public_key_auth_verify_data(SilcBuffer payload,
- SilcPKCS pkcs, SilcHash hash);
+ SilcPublicKey public_key,
+ SilcHash hash,
+ void *id, SilcIdType type);
+int silc_auth_verify(SilcAuthPayload payload, SilcAuthMethod auth_method,
+ void *auth_data, uint32 auth_data_len,
+ SilcHash hash, void *id, SilcIdType type);
+int silc_auth_verify_data(unsigned char *payload, uint32 payload_len,
+ SilcAuthMethod auth_method, void *auth_data,
+ uint32 auth_data_len, SilcHash hash,
+ void *id, SilcIdType type);
+SilcKeyAgreementPayload silc_key_agreement_payload_parse(SilcBuffer buffer);
+SilcBuffer silc_key_agreement_payload_encode(char *hostname,
+ uint32 port);
+void silc_key_agreement_payload_free(SilcKeyAgreementPayload payload);
+char *silc_key_agreement_get_hostname(SilcKeyAgreementPayload payload);
+uint32 silc_key_agreement_get_port(SilcKeyAgreementPayload payload);
#endif