summaryrefslogtreecommitdiff
path: root/MPQCryptography.h
blob: b1d621e2a5b1c45431a5a1dabf94220efa9eb191 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/*
 *  MPQCryptography.h
 *  MPQKit
 *
 *  Created by Jean-Francois Roy on Sat Oct 05 2002.
 *  Copyright (c) 2002-2007 MacStorm. All rights reserved.
 *
 */

#include <stdbool.h>
#include <stdint.h>
#include <openssl/rsa.h>

#if defined(__cplusplus)
extern "C" {
#endif

#if !defined(__MPQLIB_WEAK_SIGNATURE_SIZE)
#define __MPQLIB_WEAK_SIGNATURE_SIZE 64
#endif

#if !defined(__MPQLIB_STRONG_SIGNATURE_SIZE)
#define __MPQLIB_STRONG_SIGNATURE_SIZE 256
#endif

    void __mpqlib_init_cryptography(void);

    const uint32_t *__mpqlib_get_cryptography_table(void);

    void __mpqlib_encrypt(void *data, uint32_t length, uint32_t key,
                                 bool disable_input_swapping);
    void __mpqlib_decrypt(void *data, uint32_t length, uint32_t key,
                                 bool disable_output_swapping);

    uint32_t __mpqlib_hash_cstring(const char *string, uint32_t type);
    uint32_t __mpqlib_hash_data(const char *data, uint32_t length, uint32_t type);

#define __MPQLIB_CRC_INIT 0x1
#define __MPQLIB_CRC_UPDATE 0x2
#define __MPQLIB_CRC_FINALIZE 0x4
    void __mpqlib_crc32(const unsigned char *buffer, uint32_t length, uint32_t * crc, uint32_t flags);

    int __mpqlib_verify_weak_signature(RSA * public_key, const unsigned char *signature, const unsigned char *digest);
    int __mpqlib_verify_strong_signature(RSA * public_key, const unsigned char *signature, const unsigned char *digest);

#if defined(__cplusplus)
}
#endif