diff --git a/armsrc/hitagS.c b/armsrc/hitagS.c index d4f4a775b..0b920e400 100644 --- a/armsrc/hitagS.c +++ b/armsrc/hitagS.c @@ -1160,21 +1160,6 @@ static void hts_send_receive(const uint8_t *tx, size_t txlen, uint8_t *rx, size_ *prxbits = k; } -static size_t concatbits(uint8_t *dst, size_t dstskip, const uint8_t *src, size_t srcstart, size_t srclen) { - // erase dstbuf bits that will be overriden - dst[dstskip / 8] &= 0xFF - ((1 << (7 - (dstskip % 8) + 1)) - 1); - for (size_t i = (dstskip / 8) + 1; i <= (dstskip + srclen) / 8; i++) { - dst[i] = 0; - } - - for (size_t i = 0; i < srclen; i++) { - // equiv of dstbufbits[dstbufskip + i] = srcbufbits[srcbufstart + i] - dst[(dstskip + i) / 8] |= ((src[(srcstart + i) / 8] >> (7 - ((srcstart + i) % 8))) & 1) << (7 - ((dstskip + i) % 8)); - } - - return dstskip + srclen; -} - static int hts_select_tag(const lf_hitag_data_t *packet, uint8_t *tx, size_t sizeoftx, uint8_t *rx, size_t sizeofrx, int t_wait, bool ledcontrol) { StopTicks(); diff --git a/client/src/cmdlfem410x.c b/client/src/cmdlfem410x.c index 7a01807ff..a7f9d3e7c 100644 --- a/client/src/cmdlfem410x.c +++ b/client/src/cmdlfem410x.c @@ -651,21 +651,6 @@ static int CmdEM410xSpoof(const char *Cmd) { return PM3_SUCCESS; } -static size_t concatbits(uint8_t *dst, size_t dstskip, const uint8_t *src, size_t srcstart, size_t srclen) { - // erase dstbuf bits that will be overriden - dst[dstskip / 8] &= 0xFF - ((1 << (7 - (dstskip % 8) + 1)) - 1); - for (size_t i = (dstskip / 8) + 1; i <= (dstskip + srclen) / 8; i++) { - dst[i] = 0; - } - - for (size_t i = 0; i < srclen; i++) { - // equiv of dstbufbits[dstbufskip + i] = srcbufbits[srcbufstart + i] - dst[(dstskip + i) / 8] |= ((src[(srcstart + i) / 8] >> (7 - ((srcstart + i) % 8))) & 1) << (7 - ((dstskip + i) % 8)); - } - - return dstskip + srclen; -} - static int CmdEM410xClone(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "lf em 410x clone", diff --git a/common/commonutil.c b/common/commonutil.c index 09608ac9e..439e1e3cb 100644 --- a/common/commonutil.c +++ b/common/commonutil.c @@ -563,3 +563,18 @@ void reverse_arraybytes_copy(uint8_t *arr, uint8_t *dest, size_t len) { dest[i] = reflect8(arr[i]); } } + +size_t concatbits(uint8_t *dst, size_t dstskip, const uint8_t *src, size_t srcstart, size_t srclen) { + // erase dstbuf bits that will be overriden + dst[dstskip / 8] &= 0xFF - ((1 << (7 - (dstskip % 8) + 1)) - 1); + for (size_t i = (dstskip / 8) + 1; i <= (dstskip + srclen) / 8; i++) { + dst[i] = 0; + } + + for (size_t i = 0; i < srclen; i++) { + // equiv of dstbufbits[dstbufskip + i] = srcbufbits[srcbufstart + i] + dst[(dstskip + i) / 8] |= ((src[(srcstart + i) / 8] >> (7 - ((srcstart + i) % 8))) & 1) << (7 - ((dstskip + i) % 8)); + } + + return dstskip + srclen; +} \ No newline at end of file diff --git a/common/commonutil.h b/common/commonutil.h index c5c7279d9..62b1b78e7 100644 --- a/common/commonutil.h +++ b/common/commonutil.h @@ -133,4 +133,6 @@ bool hexstr_to_byte_array(const char *hexstr, uint8_t *d, size_t *n); void reverse_arraybytes(uint8_t *arr, size_t len); void reverse_arraybytes_copy(uint8_t *arr, uint8_t *dest, size_t len); + +size_t concatbits(uint8_t *dst, size_t dstskip, const uint8_t *src, size_t srcstart, size_t srclen); #endif