mirror of
https://github.com/DarkStore-3DS/Project_CTR.git
synced 2026-07-02 16:59:03 +00:00
102 lines
2.1 KiB
C
102 lines
2.1 KiB
C
#ifndef _CTR_CRYPTO_H_
|
|
#define _CTR_CRYPTO_H_
|
|
|
|
#include "polarssl/config.h"
|
|
#include "polarssl/aes.h"
|
|
#include "polarssl/rsa.h"
|
|
#include "polarssl/sha1.h"
|
|
#include "polarssl/sha2.h"
|
|
|
|
typedef enum
|
|
{
|
|
RSA_4096_SHA1 = 0x00010000,
|
|
RSA_2048_SHA1 = 0x00010001,
|
|
ECC_SHA1 = 0x00010002,
|
|
RSA_4096_SHA256 = 0x00010003,
|
|
RSA_2048_SHA256 = 0x00010004,
|
|
ECC_SHA256 = 0x00010005
|
|
} sig_types;
|
|
|
|
typedef enum
|
|
{
|
|
RSA_2048 = 0,
|
|
RSA_4096 = 1,
|
|
ECC = 2,
|
|
} ctr_sig_types;
|
|
|
|
typedef enum
|
|
{
|
|
CTR_RSA_VERIFY = 0,
|
|
CTR_RSA_SIGN = 1,
|
|
} ctr_rsa_functions;
|
|
|
|
typedef enum
|
|
{
|
|
CTR_SHA_1 = 1,
|
|
CTR_SHA_256 = 256,
|
|
} ctr_sha_modes;
|
|
|
|
typedef enum
|
|
{
|
|
RSA_4096_PUBK = 0,
|
|
RSA_2048_PUBK,
|
|
ECC_PUBK
|
|
} pubk_types;
|
|
|
|
typedef enum
|
|
{
|
|
ENC,
|
|
DEC
|
|
} aescbcmode;
|
|
|
|
typedef enum
|
|
{
|
|
RSAKEY_INVALID,
|
|
RSAKEY_PRIV,
|
|
RSAKEY_PUB
|
|
} rsakeytype;
|
|
|
|
typedef struct
|
|
{
|
|
u8 ctr[16];
|
|
u8 iv[16];
|
|
aes_context aes;
|
|
} ctr_aes_context;
|
|
|
|
typedef struct
|
|
{
|
|
rsa_context rsa;
|
|
} ctr_rsa_context;
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
// SHA
|
|
void ctr_sha(void *data, u64 size, u8 *hash, int mode);
|
|
// AES
|
|
void ctr_add_counter(ctr_aes_context* ctx, u32 carry);
|
|
void ctr_init_counter(ctr_aes_context* ctx, u8 key[16],u8 ctr[16]);
|
|
void ctr_crypt_counter_block(ctr_aes_context* ctx, u8 input[16], u8 output[16]);
|
|
void ctr_crypt_counter(ctr_aes_context* ctx, u8* input, u8* output, u32 size);
|
|
void ctr_init_aes_cbc(ctr_aes_context* ctx,u8 key[16],u8 iv[16], u8 mode);
|
|
void ctr_aes_cbc(ctr_aes_context* ctx,u8* input,u8* output,u32 size,u8 mode);
|
|
// RSA
|
|
void ctr_rsa_free(ctr_rsa_context* ctx);
|
|
int ctr_rsa_init(ctr_rsa_context* ctx, u8 *modulus, u8 *private_exp, u8 *exponent, u8 rsa_type, u8 mode);
|
|
int ctr_rsa(u8 *hash, u8 *signature, u8 *modulus, u8 *private_exp, u32 type, u8 mode);
|
|
int ctr_rsa_rsassa_pkcs1_v15_sign( rsa_context *ctx,
|
|
int mode,
|
|
int hash_id,
|
|
unsigned int hashlen,
|
|
const unsigned char *hash,
|
|
unsigned char *sig );
|
|
|
|
// Signature Functions
|
|
int ctr_sig(void *data, u64 size, u8 *signature, u8 *modulus, u8 *private_exp, u32 type, u8 mode);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|