diff options
author | Harald Welte <laforge@gnumonks.org> | 2010-08-14 16:22:56 +0800 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2010-08-14 16:22:56 +0800 |
commit | aacd31e32689c4dc1bf7b4cdc5e98d074c47619c (patch) | |
tree | 5c732a956933cabcb0d3ca8a8917384d37387eea /easytool/mifare_classic.c | |
parent | 26064db907df7b9bd8c54571c41e4e25f596f11a (diff) |
add functions to alter easycard log records and mifare value blocks
Diffstat (limited to 'easytool/mifare_classic.c')
-rw-r--r-- | easytool/mifare_classic.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/easytool/mifare_classic.c b/easytool/mifare_classic.c index e516631..5f21fd5 100644 --- a/easytool/mifare_classic.c +++ b/easytool/mifare_classic.c @@ -1,6 +1,7 @@ #include <stdint.h> #include <stdio.h> #include <string.h> +#include <errno.h> #include "mifare_classic.h" @@ -27,3 +28,18 @@ void mfcl_parse_acc_bits(struct acc_bits_parsed *abp, uint8_t *acc_bits) abp->block[block] |= ABP_C3; } } + +/* apply a delta (positive or negative) to a Mifare Classic VALUE block */ +int mfcl_update_value_block(struct mfcl_value_block *mvb, int32_t delta) +{ + int64_t sum = mvb->value + delta; + + if (sum > 0xffffffff || sum < 0) + return -ERANGE; + + mvb->value = sum; + mvb->value_backup = mvb->value; + mvb->value_inv = ~sum; + + return 0; +} |