@@ -188,8 +188,13 @@ char *getkey(apr_pool_t *mp) {
188
188
*
189
189
* \retval hex_digest The MAC
190
190
*/
191
+ #ifdef __NetBSD__
192
+ char * mschmac (modsec_rec * msr , const char * key , int key_len ,
193
+ unsigned char * msg , int msglen ) {
194
+ #else
191
195
char * hmac (modsec_rec * msr , const char * key , int key_len ,
192
196
unsigned char * msg , int msglen ) {
197
+ #endif
193
198
apr_sha1_ctx_t ctx ;
194
199
unsigned char digest [APR_SHA1_DIGESTSIZE ];
195
200
unsigned char hmac_ipad [HMAC_PAD_SIZE ], hmac_opad [HMAC_PAD_SIZE ];
@@ -1260,8 +1265,11 @@ char *do_hash_link(modsec_rec *msr, char *link, int type) {
1260
1265
}
1261
1266
1262
1267
if (msr -> txcfg -> crypto_key_add == HASH_KEYONLY )
1268
+ #ifdef __NetBSD__
1269
+ hash_value = mschmac (msr , msr -> txcfg -> crypto_key , msr -> txcfg -> crypto_key_len , (unsigned char * ) path_chunk + 1 , strlen ((char * )path_chunk )- 1 );
1270
+ #else
1263
1271
hash_value = hmac (msr , msr -> txcfg -> crypto_key , msr -> txcfg -> crypto_key_len , (unsigned char * ) path_chunk + 1 , strlen ((char * )path_chunk )- 1 );
1264
-
1272
+ #endif
1265
1273
if (msr -> txcfg -> crypto_key_add == HASH_SESSIONID ) {
1266
1274
if (msr -> sessionid == NULL || strlen (msr -> sessionid ) == 0 ) {
1267
1275
#if AP_SERVER_MAJORVERSION_NUMBER > 1 && AP_SERVER_MINORVERSION_NUMBER > 2
@@ -1272,13 +1280,21 @@ char *do_hash_link(modsec_rec *msr, char *link, int type) {
1272
1280
if (msr -> txcfg -> debuglog_level >= 4 )
1273
1281
msr_log (msr , 4 , "Session id is empty. Using REMOTE_IP" );
1274
1282
msr -> txcfg -> crypto_key_len = strlen (new_pwd );
1283
+ #ifdef __NetBSD__
1284
+ hash_value = mschmac (msr , new_pwd , msr -> txcfg -> crypto_key_len , (unsigned char * ) path_chunk + 1 , strlen ((char * )path_chunk )- 1 );
1285
+ #else
1275
1286
hash_value = hmac (msr , new_pwd , msr -> txcfg -> crypto_key_len , (unsigned char * ) path_chunk + 1 , strlen ((char * )path_chunk )- 1 );
1287
+ #endif
1276
1288
} else {
1277
1289
const char * new_pwd = apr_psprintf (msr -> mp ,"%s%s" , msr -> txcfg -> crypto_key , msr -> sessionid );
1278
1290
if (msr -> txcfg -> debuglog_level >= 4 )
1279
1291
msr_log (msr , 4 , "Using session id [%s]" , msr -> sessionid );
1280
1292
msr -> txcfg -> crypto_key_len = strlen (new_pwd );
1293
+ #ifdef __NetBSD__
1294
+ hash_value = mschmac (msr , new_pwd , msr -> txcfg -> crypto_key_len , (unsigned char * ) path_chunk + 1 , strlen ((char * )path_chunk )- 1 );
1295
+ #else
1281
1296
hash_value = hmac (msr , new_pwd , msr -> txcfg -> crypto_key_len , (unsigned char * ) path_chunk + 1 , strlen ((char * )path_chunk )- 1 );
1297
+ #endif
1282
1298
}
1283
1299
}
1284
1300
@@ -1289,7 +1305,11 @@ char *do_hash_link(modsec_rec *msr, char *link, int type) {
1289
1305
const char * new_pwd = apr_psprintf (msr -> mp ,"%s%s" , msr -> txcfg -> crypto_key , msr -> r -> connection -> remote_ip );
1290
1306
#endif
1291
1307
msr -> txcfg -> crypto_key_len = strlen (new_pwd );
1308
+ #ifdef __NetBSD__
1309
+ hash_value = mschmac (msr , new_pwd , msr -> txcfg -> crypto_key_len , (unsigned char * ) path_chunk + 1 , strlen ((char * )path_chunk )- 1 );
1310
+ #else
1292
1311
hash_value = hmac (msr , new_pwd , msr -> txcfg -> crypto_key_len , (unsigned char * ) path_chunk + 1 , strlen ((char * )path_chunk )- 1 );
1312
+ #endif
1293
1313
}
1294
1314
} else {
1295
1315
return NULL ;
@@ -1303,8 +1323,11 @@ char *do_hash_link(modsec_rec *msr, char *link, int type) {
1303
1323
}
1304
1324
1305
1325
if (msr -> txcfg -> crypto_key_add == HASH_KEYONLY )
1326
+ #ifdef __NetBSD__
1327
+ hash_value = mschmac (msr , msr -> txcfg -> crypto_key , msr -> txcfg -> crypto_key_len , (unsigned char * ) path_chunk + 1 , strlen ((char * )path_chunk )- 1 );
1328
+ #else
1306
1329
hash_value = hmac (msr , msr -> txcfg -> crypto_key , msr -> txcfg -> crypto_key_len , (unsigned char * ) path_chunk + 1 , strlen ((char * )path_chunk )- 1 );
1307
-
1330
+ #endif
1308
1331
if (msr -> txcfg -> crypto_key_add == HASH_SESSIONID ) {
1309
1332
if (msr -> sessionid == NULL || strlen (msr -> sessionid ) == 0 ) {
1310
1333
#if AP_SERVER_MAJORVERSION_NUMBER > 1 && AP_SERVER_MINORVERSION_NUMBER > 2
@@ -1315,13 +1338,21 @@ char *do_hash_link(modsec_rec *msr, char *link, int type) {
1315
1338
if (msr -> txcfg -> debuglog_level >= 4 )
1316
1339
msr_log (msr , 4 , "Session id is empty. Using REMOTE_IP" );
1317
1340
msr -> txcfg -> crypto_key_len = strlen (new_pwd );
1341
+ #ifdef __NetBSD__
1342
+ hash_value = mschmac (msr , new_pwd , msr -> txcfg -> crypto_key_len , (unsigned char * ) path_chunk + 1 , strlen ((char * )path_chunk )- 1 );
1343
+ #else
1318
1344
hash_value = hmac (msr , new_pwd , msr -> txcfg -> crypto_key_len , (unsigned char * ) path_chunk + 1 , strlen ((char * )path_chunk )- 1 );
1345
+ #endif
1319
1346
} else {
1320
1347
const char * new_pwd = apr_psprintf (msr -> mp ,"%s%s" , msr -> txcfg -> crypto_key , msr -> sessionid );
1321
1348
if (msr -> txcfg -> debuglog_level >= 4 )
1322
1349
msr_log (msr , 4 , "Using session id [%s]" , msr -> sessionid );
1323
1350
msr -> txcfg -> crypto_key_len = strlen (new_pwd );
1351
+ #ifdef __NetBSD__
1352
+ hash_value = mschmac (msr , new_pwd , msr -> txcfg -> crypto_key_len , (unsigned char * ) path_chunk + 1 , strlen ((char * )path_chunk )- 1 );
1353
+ #else
1324
1354
hash_value = hmac (msr , new_pwd , msr -> txcfg -> crypto_key_len , (unsigned char * ) path_chunk + 1 , strlen ((char * )path_chunk )- 1 );
1355
+ #endif
1325
1356
}
1326
1357
}
1327
1358
@@ -1332,7 +1363,11 @@ char *do_hash_link(modsec_rec *msr, char *link, int type) {
1332
1363
const char * new_pwd = apr_psprintf (msr -> mp ,"%s%s" , msr -> txcfg -> crypto_key , msr -> r -> connection -> remote_ip );
1333
1364
#endif
1334
1365
msr -> txcfg -> crypto_key_len = strlen (new_pwd );
1366
+ #ifdef __NetBSD__
1367
+ hash_value = mschmac (msr , new_pwd , msr -> txcfg -> crypto_key_len , (unsigned char * ) path_chunk + 1 , strlen ((char * )path_chunk )- 1 );
1368
+ #else
1335
1369
hash_value = hmac (msr , new_pwd , msr -> txcfg -> crypto_key_len , (unsigned char * ) path_chunk + 1 , strlen ((char * )path_chunk )- 1 );
1370
+ #endif
1336
1371
}
1337
1372
} else {
1338
1373
return NULL ;
@@ -1344,8 +1379,11 @@ char *do_hash_link(modsec_rec *msr, char *link, int type) {
1344
1379
}
1345
1380
1346
1381
if (msr -> txcfg -> crypto_key_add == HASH_KEYONLY )
1382
+ #ifdef __NetBSD__
1383
+ hash_value = mschmac (msr , msr -> txcfg -> crypto_key , msr -> txcfg -> crypto_key_len , (unsigned char * ) link + 1 , strlen ((char * )link )- 1 );
1384
+ #else
1347
1385
hash_value = hmac (msr , msr -> txcfg -> crypto_key , msr -> txcfg -> crypto_key_len , (unsigned char * ) link + 1 , strlen ((char * )link )- 1 );
1348
-
1386
+ #endif
1349
1387
if (msr -> txcfg -> crypto_key_add == HASH_SESSIONID ) {
1350
1388
if (msr -> sessionid == NULL || strlen (msr -> sessionid ) == 0 ) {
1351
1389
#if AP_SERVER_MAJORVERSION_NUMBER > 1 && AP_SERVER_MINORVERSION_NUMBER > 2
@@ -1356,13 +1394,21 @@ char *do_hash_link(modsec_rec *msr, char *link, int type) {
1356
1394
if (msr -> txcfg -> debuglog_level >= 4 )
1357
1395
msr_log (msr , 4 , "Session id is empty. Using REMOTE_IP" );
1358
1396
msr -> txcfg -> crypto_key_len = strlen (new_pwd );
1397
+ #ifdef __NetBSD__
1398
+ hash_value = mschmac (msr , new_pwd , msr -> txcfg -> crypto_key_len , (unsigned char * ) link + 1 , strlen ((char * )link )- 1 );
1399
+ #else
1359
1400
hash_value = hmac (msr , new_pwd , msr -> txcfg -> crypto_key_len , (unsigned char * ) link + 1 , strlen ((char * )link )- 1 );
1401
+ #endif
1360
1402
} else {
1361
1403
const char * new_pwd = apr_psprintf (msr -> mp ,"%s%s" , msr -> txcfg -> crypto_key , msr -> sessionid );
1362
1404
if (msr -> txcfg -> debuglog_level >= 4 )
1363
1405
msr_log (msr , 4 , "Using session id [%s]" , msr -> sessionid );
1364
1406
msr -> txcfg -> crypto_key_len = strlen (new_pwd );
1407
+ #ifdef __NetBSD__
1408
+ hash_value = mschmac (msr , new_pwd , msr -> txcfg -> crypto_key_len , (unsigned char * ) link + 1 , strlen ((char * )link )- 1 );
1409
+ #else
1365
1410
hash_value = hmac (msr , new_pwd , msr -> txcfg -> crypto_key_len , (unsigned char * ) link + 1 , strlen ((char * )link )- 1 );
1411
+ #endif
1366
1412
}
1367
1413
}
1368
1414
@@ -1373,7 +1419,11 @@ char *do_hash_link(modsec_rec *msr, char *link, int type) {
1373
1419
const char * new_pwd = apr_psprintf (msr -> mp ,"%s%s" , msr -> txcfg -> crypto_key , msr -> r -> connection -> remote_ip );
1374
1420
#endif
1375
1421
msr -> txcfg -> crypto_key_len = strlen (new_pwd );
1422
+ #ifdef __NetBSD__
1423
+ hash_value = mschmac (msr , new_pwd , msr -> txcfg -> crypto_key_len , (unsigned char * ) link + 1 , strlen ((char * )link )- 1 );
1424
+ #else
1376
1425
hash_value = hmac (msr , new_pwd , msr -> txcfg -> crypto_key_len , (unsigned char * ) link + 1 , strlen ((char * )link )- 1 );
1426
+ #endif
1377
1427
}
1378
1428
1379
1429
}
@@ -1398,7 +1448,11 @@ char *do_hash_link(modsec_rec *msr, char *link, int type) {
1398
1448
}
1399
1449
1400
1450
if (msr -> txcfg -> crypto_key_add == HASH_KEYONLY )
1451
+ #ifdef __NetBSD__
1452
+ hash_value = mschmac (msr , msr -> txcfg -> crypto_key , msr -> txcfg -> crypto_key_len , (unsigned char * ) relative_link , strlen ((char * )relative_link ));
1453
+ #else
1401
1454
hash_value = hmac (msr , msr -> txcfg -> crypto_key , msr -> txcfg -> crypto_key_len , (unsigned char * ) relative_link , strlen ((char * )relative_link ));
1455
+ #endif
1402
1456
1403
1457
if (msr -> txcfg -> crypto_key_add == HASH_SESSIONID ) {
1404
1458
if (msr -> sessionid == NULL || strlen (msr -> sessionid ) == 0 ) {
@@ -1410,13 +1464,21 @@ char *do_hash_link(modsec_rec *msr, char *link, int type) {
1410
1464
if (msr -> txcfg -> debuglog_level >= 4 )
1411
1465
msr_log (msr , 4 , "Session id is empty. Using REMOTE_IP" );
1412
1466
msr -> txcfg -> crypto_key_len = strlen (new_pwd );
1467
+ #ifdef __NetBSD__
1468
+ hash_value = mschmac (msr , new_pwd , msr -> txcfg -> crypto_key_len , (unsigned char * ) relative_link , strlen ((char * )relative_link ));
1469
+ #else
1413
1470
hash_value = hmac (msr , new_pwd , msr -> txcfg -> crypto_key_len , (unsigned char * ) relative_link , strlen ((char * )relative_link ));
1471
+ #endif
1414
1472
} else {
1415
1473
const char * new_pwd = apr_psprintf (msr -> mp ,"%s%s" , msr -> txcfg -> crypto_key , msr -> sessionid );
1416
1474
if (msr -> txcfg -> debuglog_level >= 4 )
1417
1475
msr_log (msr , 4 , "Using session id [%s]" , msr -> sessionid );
1418
1476
msr -> txcfg -> crypto_key_len = strlen (new_pwd );
1477
+ #ifdef __NetBSD__
1478
+ hash_value = mschmac (msr , new_pwd , msr -> txcfg -> crypto_key_len , (unsigned char * ) relative_link , strlen ((char * )relative_link ));
1479
+ #else
1419
1480
hash_value = hmac (msr , new_pwd , msr -> txcfg -> crypto_key_len , (unsigned char * ) relative_link , strlen ((char * )relative_link ));
1481
+ #endif
1420
1482
}
1421
1483
}
1422
1484
@@ -1427,7 +1489,11 @@ char *do_hash_link(modsec_rec *msr, char *link, int type) {
1427
1489
const char * new_pwd = apr_psprintf (msr -> mp ,"%s%s" , msr -> txcfg -> crypto_key , msr -> r -> connection -> remote_ip );
1428
1490
#endif
1429
1491
msr -> txcfg -> crypto_key_len = strlen (new_pwd );
1492
+ #ifdef __NetBSD__
1493
+ hash_value = mschmac (msr , new_pwd , msr -> txcfg -> crypto_key_len , (unsigned char * ) relative_link , strlen ((char * )relative_link ));
1494
+ #else
1430
1495
hash_value = hmac (msr , new_pwd , msr -> txcfg -> crypto_key_len , (unsigned char * ) relative_link , strlen ((char * )relative_link ));
1496
+ #endif
1431
1497
}
1432
1498
1433
1499
link = relative_uri ;
0 commit comments