mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-22 22:33:48 -07:00
move des functions to pcrypto
This commit is contained in:
parent
afb06ec72c
commit
2fb090e560
2 changed files with 45 additions and 0 deletions
|
@ -15,6 +15,7 @@
|
|||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
#include <mbedtls/asn1.h>
|
||||
#include <mbedtls/des.h>
|
||||
#include <mbedtls/aes.h>
|
||||
#include <mbedtls/cmac.h>
|
||||
#include <mbedtls/pk.h>
|
||||
|
@ -27,6 +28,43 @@
|
|||
#include <mbedtls/error.h>
|
||||
#include "util.h"
|
||||
#include "ui.h"
|
||||
|
||||
void des_encrypt(void *out, const void *in, const void *key) {
|
||||
mbedtls_des_context ctx;
|
||||
mbedtls_des_setkey_enc(&ctx, key);
|
||||
mbedtls_des_crypt_ecb(&ctx, in, out);
|
||||
mbedtls_des_free(&ctx);
|
||||
}
|
||||
|
||||
void des_decrypt(void *out, const void *in, const void *key) {
|
||||
mbedtls_des_context ctx;
|
||||
mbedtls_des_setkey_dec(&ctx, key);
|
||||
mbedtls_des_crypt_ecb(&ctx, in, out);
|
||||
mbedtls_des_free(&ctx);
|
||||
}
|
||||
|
||||
void des_encrypt_ecb(void *out, const void *in, const int length, const void *key) {
|
||||
for (int i = 0; i < length; i += 8)
|
||||
des_encrypt((uint8_t *)out + i, (uint8_t *)in + i, key);
|
||||
}
|
||||
|
||||
void des_decrypt_ecb(void *out, const void *in, const int length, const void *key) {
|
||||
for (int i = 0; i < length; i += 8)
|
||||
des_decrypt((uint8_t *)out + i, (uint8_t *)in + i, key);
|
||||
}
|
||||
|
||||
void des_encrypt_cbc(void *out, const void *in, const int length, const void *key, uint8_t *iv) {
|
||||
mbedtls_des_context ctx;
|
||||
mbedtls_des_setkey_enc(&ctx, key);
|
||||
mbedtls_des_crypt_cbc(&ctx, MBEDTLS_DES_ENCRYPT, length, iv, in, out);
|
||||
}
|
||||
|
||||
void des_decrypt_cbc(void *out, const void *in, const int length, const void *key, uint8_t *iv) {
|
||||
mbedtls_des_context ctx;
|
||||
mbedtls_des_setkey_dec(&ctx, key);
|
||||
mbedtls_des_crypt_cbc(&ctx, MBEDTLS_DES_DECRYPT, length, iv, in, out);
|
||||
}
|
||||
|
||||
// NIST Special Publication 800-38A — Recommendation for block cipher modes of operation: methods and techniques, 2001.
|
||||
int aes_encode(uint8_t *iv, uint8_t *key, uint8_t *input, uint8_t *output, int length) {
|
||||
uint8_t iiv[16] = {0};
|
||||
|
|
|
@ -16,6 +16,13 @@
|
|||
#include <stddef.h>
|
||||
#include <mbedtls/pk.h>
|
||||
|
||||
void des_encrypt(void *out, const void *in, const void *key);
|
||||
void des_decrypt(void *out, const void *in, const void *key);
|
||||
void des_encrypt_ecb(void *out, const void *in, const int length, const void *key);
|
||||
void des_decrypt_ecb(void *out, const void *in, const int length, const void *key);
|
||||
void des_encrypt_cbc(void *out, const void *in, const int length, const void *key, uint8_t *iv);
|
||||
void des_decrypt_cbc(void *out, const void *in, const int length, const void *key, uint8_t *iv);
|
||||
|
||||
int aes_encode(uint8_t *iv, uint8_t *key, uint8_t *input, uint8_t *output, int length);
|
||||
int aes_decode(uint8_t *iv, uint8_t *key, uint8_t *input, uint8_t *output, int length);
|
||||
int aes_cmac(uint8_t *iv, uint8_t *key, uint8_t *input, uint8_t *mac, int length);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue