Implement the rxgk server security object routines
[openafs.git] / src / rxgk / rxgk_int.xg
index 995f940..76effd6 100644 (file)
@@ -28,7 +28,13 @@ const RXGK_SERVER_ENC_TOKEN             = 1036;
 enum RXGK_Level {
     RXGK_LEVEL_CLEAR = 0,
     RXGK_LEVEL_AUTH = 1,
-    RXGK_LEVEL_CRYPT = 2
+    RXGK_LEVEL_CRYPT = 2,
+
+    /* RXGK_LEVEL_BOGUS is an invalid level we only use internally for objects
+     * that are not yet initialized. This can be used to make sure we don't
+     * accidentally treat an uninitialized context as an RXGK_LEVEL_CLEAR
+     * connection. This level should never be used on the wire. */
+    RXGK_LEVEL_BOGUS = 71
 };
 
 /* limits for variable-length arrays */
@@ -94,9 +100,11 @@ CombineTokens(IN RXGK_Data *token0, IN RXGK_Data *token1,
 
 /* Begin definitions for security class operation. */
 
+const RXGK_CHALLENGE_NONCE_LEN = 20;
+
 /* RX challenge and response structures */
 struct RXGK_Challenge {
-    opaque nonce[20];
+    opaque nonce[RXGK_CHALLENGE_NONCE_LEN];
 };
 const RXGK_MAXAUTHENTICATOR = 1416;    /* better fit in a packet! */
 struct RXGK_Response {
@@ -106,7 +114,7 @@ struct RXGK_Response {
 };
 
 struct RXGK_Authenticator {
-    opaque nonce[20];
+    opaque nonce[RXGK_CHALLENGE_NONCE_LEN];
     opaque appdata<>;
     RXGK_Level level;
     afs_uint32 epoch;
@@ -124,8 +132,14 @@ struct PrAuthName {
     opaque display<AUTHPRINTABLEMAX>;
 };
 
+/* PrAuthName 'kind' values */
+const PRAUTHTYPE_KRB4 = 1;
+const PRAUTHTYPE_GSS = 2;
+
 /* RPC-L from draft-wilkinson-afs3-rxgk-afs. */
 
+const RXGK_NEVERDATE = 0;
+
 /* Begin authenticator appdata definition. */
 
 struct RXGK_Authenticator_AFSAppData {