]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
32/64 bit portability fixes
authorDan Harkins <dharkins@lounge.org>
Mon, 5 Mar 2012 09:52:42 +0000 (10:52 +0100)
committerAlan T. DeKok <aland@freeradius.org>
Mon, 5 Mar 2012 09:52:42 +0000 (10:52 +0100)
src/modules/rlm_eap/types/rlm_eap_pwd/eap_pwd.c
src/modules/rlm_eap/types/rlm_eap_pwd/eap_pwd.h
src/modules/rlm_eap/types/rlm_eap_pwd/rlm_eap_pwd.c

index 521d73f6b39ed82899a3e775fe81beb5290aa63d..c1f786312d1e37432fe758138f6f2b955e977b30 100644 (file)
@@ -41,23 +41,6 @@ RCSID("$Id$")
 #include <freeradius-devel/radiusd.h>
 #include <freeradius-devel/modules.h>
 
-#ifdef PRINT_BUF
-void
-print_buf (char *str, unsigned char *buf, int len)
-{
-    int i;
-
-    printf("%s\n", str);
-    for (i = 0; i < len; i++) {
-        if (i && (i % 16 == 0)) {
-            printf("\n");
-        }
-        printf("%02x ", buf[i]);
-    }
-    printf("\n");
-}        
-#endif  /* PRINT_BUF */
-
 /* The random function H(x) = HMAC-SHA256(0^32, x) */
 static void 
 H_Init(HMAC_CTX *ctx)
@@ -105,7 +88,7 @@ eap_pwd_kdf(unsigned char *key, int keylen, const char *label, int labellen,
             HMAC_Update(&hctx, digest, mdlen);
         }
         HMAC_Update(&hctx, (unsigned char *) &i, sizeof(unsigned short));
-        HMAC_Update(&hctx, label, labellen);
+        HMAC_Update(&hctx, (const unsigned char *)label, labellen);
         HMAC_Update(&hctx, (unsigned char *) &L, sizeof(unsigned short));
         HMAC_Final(&hctx, digest, &mdlen);
         if ((len + (int) mdlen) > resultbytelen) {
@@ -129,7 +112,7 @@ compute_password_element (pwd_session_t *sess, unsigned short grp_num,
                           char *password, int password_len,
                           char *id_server, int id_server_len,
                           char *id_peer, int id_peer_len, 
-                          unsigned long *token)
+                          uint32_t *token)
 {
     BIGNUM *x_candidate = NULL, *rnd = NULL, *cofactor = NULL;
     HMAC_CTX ctx;
@@ -210,7 +193,7 @@ compute_password_element (pwd_session_t *sess, unsigned short grp_num,
          *                counter)
          */
         H_Init(&ctx);
-        H_Update(&ctx, (unsigned char *)token, sizeof(unsigned long));
+        H_Update(&ctx, (unsigned char *)token, sizeof(*token));
         H_Update(&ctx, (unsigned char *)id_peer, id_peer_len);
         H_Update(&ctx, (unsigned char *)id_server, id_server_len);
         H_Update(&ctx, (unsigned char *)password, password_len);
@@ -476,10 +459,6 @@ compute_server_confirm (pwd_session_t *sess, unsigned char *buf, BN_CTX *bnctx)
     memset(cruft, 0, BN_num_bytes(sess->prime));
     offset = BN_num_bytes(sess->prime) - BN_num_bytes(sess->k);
     BN_bn2bin(sess->k, cruft + offset);
-#ifdef PRINTBUF
-    printf("computing server confirm\n");
-    print_buf("k", cruft, BN_num_bytes(sess->prime));
-#endif  /* PRINTBUF */
     H_Update(&ctx, cruft, BN_num_bytes(sess->prime));
 
     /* 
@@ -494,17 +473,11 @@ compute_server_confirm (pwd_session_t *sess, unsigned char *buf, BN_CTX *bnctx)
     memset(cruft, 0, BN_num_bytes(sess->prime));
     offset = BN_num_bytes(sess->prime) - BN_num_bytes(x);
     BN_bn2bin(x, cruft + offset);
-#ifdef PRINTBUF
-    print_buf("server x", cruft, BN_num_bytes(sess->prime));
-#endif  /* PRINTBUF */
     H_Update(&ctx, cruft, BN_num_bytes(sess->prime));
 
     memset(cruft, 0, BN_num_bytes(sess->prime));
     offset = BN_num_bytes(sess->prime) - BN_num_bytes(y);
     BN_bn2bin(y, cruft + offset);
-#ifdef PRINTBUF
-    print_buf("server y", cruft, BN_num_bytes(sess->prime));
-#endif  /* PRINTBUF */
     H_Update(&ctx, cruft, BN_num_bytes(sess->prime));
 
     /* 
@@ -513,9 +486,6 @@ compute_server_confirm (pwd_session_t *sess, unsigned char *buf, BN_CTX *bnctx)
     memset(cruft, 0, BN_num_bytes(sess->prime));
     offset = BN_num_bytes(sess->order) - BN_num_bytes(sess->my_scalar);
     BN_bn2bin(sess->my_scalar, cruft + offset);
-#ifdef PRINTBUF
-    print_buf("server scalar", cruft, BN_num_bytes(sess->order));
-#endif  /* PRINTBUF */
     H_Update(&ctx, cruft, BN_num_bytes(sess->order));
 
     /* 
@@ -531,17 +501,11 @@ compute_server_confirm (pwd_session_t *sess, unsigned char *buf, BN_CTX *bnctx)
     memset(cruft, 0, BN_num_bytes(sess->prime));
     offset = BN_num_bytes(sess->prime) - BN_num_bytes(x);
     BN_bn2bin(x, cruft + offset);
-#ifdef PRINTBUF
-    print_buf("peer x", cruft, BN_num_bytes(sess->prime));
-#endif  /* PRINTBUF */
     H_Update(&ctx, cruft, BN_num_bytes(sess->prime));
 
     memset(cruft, 0, BN_num_bytes(sess->prime));
     offset = BN_num_bytes(sess->prime) - BN_num_bytes(y);
     BN_bn2bin(y, cruft + offset);
-#ifdef PRINTBUF
-    print_buf("peer y", cruft, BN_num_bytes(sess->prime));
-#endif  /* PRINTBUF */
     H_Update(&ctx, cruft, BN_num_bytes(sess->prime));
 
     /* 
@@ -550,23 +514,14 @@ compute_server_confirm (pwd_session_t *sess, unsigned char *buf, BN_CTX *bnctx)
     memset(cruft, 0, BN_num_bytes(sess->prime));
     offset = BN_num_bytes(sess->order) - BN_num_bytes(sess->peer_scalar);
     BN_bn2bin(sess->peer_scalar, cruft + offset);
-#ifdef PRINTBUF
-    print_buf("peer scalar", cruft, BN_num_bytes(sess->order));
-#endif  /* PRINTBUF */
     H_Update(&ctx, cruft, BN_num_bytes(sess->order));
 
-#ifdef PRINTBUF
-    print_buf("ciphersuite", (char *)&sess->ciphersuite, sizeof(unsigned long));
-#endif  /* PRINTBUF */
     /* 
      * finally, ciphersuite 
      */
-    H_Update(&ctx, (unsigned char *)&sess->ciphersuite, sizeof(unsigned long));
+    H_Update(&ctx, (unsigned char *)&sess->ciphersuite, sizeof(sess->ciphersuite));
 
     H_Final(&ctx, buf);
-#ifdef PRINTBUF
-    print_buf("confirm", buf, SHA256_DIGEST_LENGTH);
-#endif  /* PRINTBUF */
 
     req = 0;
 fin:
@@ -611,10 +566,6 @@ compute_peer_confirm (pwd_session_t *sess, unsigned char *buf, BN_CTX *bnctx)
     memset(cruft, 0, BN_num_bytes(sess->prime));
     offset = BN_num_bytes(sess->prime) - BN_num_bytes(sess->k);
     BN_bn2bin(sess->k, cruft + offset);
-#ifdef PRINTBUF
-    printf("computing peer confirm\n");
-    print_buf("k", cruft, BN_num_bytes(sess->prime));
-#endif  /* PRINTBUF */
     H_Update(&ctx, cruft, BN_num_bytes(sess->prime));
 
     /* 
@@ -630,17 +581,11 @@ compute_peer_confirm (pwd_session_t *sess, unsigned char *buf, BN_CTX *bnctx)
     memset(cruft, 0, BN_num_bytes(sess->prime));
     offset = BN_num_bytes(sess->prime) - BN_num_bytes(x);
     BN_bn2bin(x, cruft + offset);
-#ifdef PRINTBUF
-    print_buf("peer x", cruft, BN_num_bytes(sess->prime));
-#endif  /* PRINTBUF */
     H_Update(&ctx, cruft, BN_num_bytes(sess->prime));
 
     memset(cruft, 0, BN_num_bytes(sess->prime));
     offset = BN_num_bytes(sess->prime) - BN_num_bytes(y);
     BN_bn2bin(y, cruft + offset);
-#ifdef PRINTBUF
-    print_buf("peer x", cruft, BN_num_bytes(sess->prime));
-#endif  /* PRINTBUF */
     H_Update(&ctx, cruft, BN_num_bytes(sess->prime));
 
     /* 
@@ -649,9 +594,6 @@ compute_peer_confirm (pwd_session_t *sess, unsigned char *buf, BN_CTX *bnctx)
     memset(cruft, 0, BN_num_bytes(sess->prime));
     offset = BN_num_bytes(sess->order) - BN_num_bytes(sess->peer_scalar);
     BN_bn2bin(sess->peer_scalar, cruft + offset);
-#ifdef PRINTBUF
-    print_buf("peer scalar", cruft, BN_num_bytes(sess->order));
-#endif  /* PRINTBUF */
     H_Update(&ctx, cruft, BN_num_bytes(sess->order));
 
     /* 
@@ -666,17 +608,11 @@ compute_peer_confirm (pwd_session_t *sess, unsigned char *buf, BN_CTX *bnctx)
     memset(cruft, 0, BN_num_bytes(sess->prime));
     offset = BN_num_bytes(sess->prime) - BN_num_bytes(x);
     BN_bn2bin(x, cruft + offset);
-#ifdef PRINTBUF
-    print_buf("server x", cruft, BN_num_bytes(sess->prime));
-#endif  /* PRINTBUF */
     H_Update(&ctx, cruft, BN_num_bytes(sess->prime));
 
     memset(cruft, 0, BN_num_bytes(sess->prime));
     offset = BN_num_bytes(sess->prime) - BN_num_bytes(y);
     BN_bn2bin(y, cruft + offset);
-#ifdef PRINTBUF
-    print_buf("server y", cruft, BN_num_bytes(sess->prime));
-#endif  /* PRINTBUF */
     H_Update(&ctx, cruft, BN_num_bytes(sess->prime));
 
     /* 
@@ -685,18 +621,12 @@ compute_peer_confirm (pwd_session_t *sess, unsigned char *buf, BN_CTX *bnctx)
     memset(cruft, 0, BN_num_bytes(sess->prime));
     offset = BN_num_bytes(sess->order) - BN_num_bytes(sess->my_scalar);
     BN_bn2bin(sess->my_scalar, cruft + offset);
-#ifdef PRINTBUF
-    print_buf("server scalar", cruft, BN_num_bytes(sess->order));
-#endif  /* PRINTBUF */
     H_Update(&ctx, cruft, BN_num_bytes(sess->order));
 
-#ifdef PRINTBUF
-    print_buf("ciphersuite", (char *)&sess->ciphersuite, sizeof(unsigned long));
-#endif  /* PRINTBUF */
     /* 
      * finally, ciphersuite 
      */
-    H_Update(&ctx, (unsigned char *)&sess->ciphersuite, sizeof(unsigned long));
+    H_Update(&ctx, (unsigned char *)&sess->ciphersuite, sizeof(sess->ciphersuite));
 
     H_Final(&ctx, buf);
 
@@ -731,7 +661,7 @@ compute_keys (pwd_session_t *sess, unsigned char *peer_confirm,
      */
     session_id[0] = PW_EAP_PWD;
     H_Init(&ctx);
-    H_Update(&ctx, (unsigned char *)&sess->ciphersuite, sizeof(unsigned long));
+    H_Update(&ctx, (unsigned char *)&sess->ciphersuite, sizeof(sess->ciphersuite));
     offset = BN_num_bytes(sess->order) - BN_num_bytes(sess->peer_scalar);
     memset(cruft, 0, BN_num_bytes(sess->prime));
     BN_bn2bin(sess->peer_scalar, cruft + offset);
@@ -740,7 +670,7 @@ compute_keys (pwd_session_t *sess, unsigned char *peer_confirm,
     memset(cruft, 0, BN_num_bytes(sess->prime));
     BN_bn2bin(sess->my_scalar, cruft + offset);
     H_Update(&ctx, cruft, BN_num_bytes(sess->order));
-    H_Final(&ctx, &session_id[1]);
+    H_Final(&ctx, (unsigned char *)&session_id[1]);
 
     /* then compute MK = H(k | commit-peer | commit-server) */
     H_Init(&ctx);
@@ -758,7 +688,7 @@ compute_keys (pwd_session_t *sess, unsigned char *peer_confirm,
 
     /* stretch the mk with the session-id to get MSK | EMSK */
     eap_pwd_kdf(mk, SHA256_DIGEST_LENGTH,
-                session_id, SHA256_DIGEST_LENGTH+1,
+                (const char *)session_id, SHA256_DIGEST_LENGTH+1,
                 msk_emsk, 1024);  /* it's bits, ((64 + 64) * 8) */
 
     memcpy(msk, msk_emsk, 64);
index d2e81a27fa826b4f010374847a54227c1b4a1038..20391c202d5ea637230ba578095f974acb6fa916 100644 (file)
 
 #include <freeradius-devel/ident.h>
 RCSIDH(eap_pwd_h, "$Id$")
+#include "eap.h"
 #include <openssl/bn.h>
 #include <openssl/sha.h>
 #include <openssl/ec.h>
 #include <openssl/evp.h>
 #include <openssl/hmac.h>
-#include "eap.h"
 
 typedef struct _pwd_hdr {
     unsigned char lm_exchange;
@@ -79,8 +79,8 @@ typedef struct _pwd_session_t {
 #define PWD_STATE_COMMIT                2
 #define PWD_STATE_CONFIRM               3
     unsigned short group_num;
-    unsigned long ciphersuite;
-    unsigned long token;
+    uint32_t ciphersuite;
+    uint32_t token;
     char peer_id[MAX_STRING_LEN];
     int peer_id_len;
     int mtu;
@@ -107,7 +107,7 @@ int compute_password_element(pwd_session_t *sess, unsigned short grp_num,
                              char *password, int password_len,
                              char *id_server, int id_server_len,
                              char *id_peer, int id_peer_len, 
-                             unsigned long *token);
+                             uint32_t *token);
 int compute_scalar_element(pwd_session_t *sess, BN_CTX *bnctx);
 int process_peer_commit (pwd_session_t *sess, unsigned char *commit, BN_CTX *bnctx);
 int compute_server_confirm(pwd_session_t *sess, unsigned char *buf, BN_CTX *bnctx);
index 1143a1a57450cdad81cd037f06de57f2caa1d050..e8c1d60797bbd1df753118682988dcbd1fc9e64b 100644 (file)
@@ -195,7 +195,7 @@ send_pwd_request (pwd_session_t *sess, EAP_DS *eap_ds)
              */
             EAP_PWD_SET_LENGTH_BIT(hdr);
             totlen = ntohs(sess->out_buf_len);
-            memcpy(hdr->data, (char *)&totlen, sizeof(unsigned short));
+            memcpy(hdr->data, (char *)&totlen, sizeof(totlen));
             memcpy(hdr->data + sizeof(unsigned short),
                    sess->out_buf,
                    sess->mtu - sizeof(pwd_hdr) - sizeof(unsigned short));