/* Pull in the protocol description */
#include <rx/rxgk_int.h>
+/* Pull in our basic type definitions */
+#include <rx/rxgk_types.h>
+
/* RX-internal headers we depend on. */
#include <rx/rx_opaque.h>
+#include <rx/rx_identity.h>
/* rxgkTime is defined in rxgk_int.xg. rxgkTime values are unix timestamps, but
* in 100-nanosecond units. */
return secondsToRxgkTime(tv.tv_sec) + (rxgkTime)tv.tv_usec * 10;
}
-/* rxgk_key is an opaque type to wrap our RFC3961 implementation's concept
- * of a key. It has (at least) the keyblock and length, and enctype. */
-typedef struct rxgk_key_s * rxgk_key;
-
typedef afs_int32 (*rxgk_getkey_func)(void *rock, afs_int32 *kvno,
afs_int32 *enctype, rxgk_key *key);
+
+/* Flags for our rx security stats */
+#define RXGK_STATS_UNALLOC 0x1
+#define RXGK_STATS_AUTH 0x2
+
/* rxgk_server.c */
struct rx_securityClass * rxgk_NewServerSecurityObject(void *getkey_rock,
rxgk_getkey_func getkey);
+afs_int32 rxgk_GetServerInfo(struct rx_connection *conn, RXGK_Level *level,
+ rxgkTime *expiry, struct rx_identity **identity);
+
/* rxgk_client.c */
struct rx_securityClass *rxgk_NewClientSecurityObject(RXGK_Level level,
afs_int32 enctype,
rxgk_key k0,
- RXGK_Data *token,
- afsUUID *uuid);
+ RXGK_Data *token);
/* rxgk_crypto_IMPL.c (currently rfc3961 is the only IMPL) */
afs_int32 rxgk_make_key(rxgk_key *key_out, void *raw_key, afs_uint32 length,
afs_uint32 key_number) AFS_NONNULL();
afs_int32 rxgk_cipher_expansion(rxgk_key k0, afs_uint32 *len_out) AFS_NONNULL();
afs_int32 rxgk_nonce(RXGK_Data *nonce, afs_uint32 len) AFS_NONNULL();
+int rxgk_enctype_better(afs_int32 old_enctype, afs_int32 new_enctype);
/* rxgk_token.c */
afs_int32 rxgk_make_token(struct rx_opaque *out, RXGK_TokenInfo *info,