1 // Copyright 2007,2008 Segher Boessenkool <segher@kernel.crashing.org>
2 // Licensed under the terms of the GNU GPL, version 2
3 // http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
9 typedef unsigned char u8
;
10 typedef unsigned short u16
;
11 typedef unsigned int u32
;
12 typedef unsigned long long u64
;
14 u16
be16(const u8
*p
);
15 u32
be32(const u8
*p
);
16 u64
be64(const u8
*p
);
17 u64
be34(const u8
*p
);
19 void wbe16(u8
*p
, u16 x
);
20 void wbe32(u8
*p
, u32 x
);
21 void wbe64(u8
*p
, u64 x
);
23 //#define round_down(x,n) ((x) & -(n))
24 #define round_up(x,n) (-(-(x) & -(n)))
27 int bn_compare(u8
*a
, u8
*b
, u32 n
);
28 void bn_sub_modulus(u8
*a
, u8
*N
, u32 n
);
29 void bn_add(u8
*d
, u8
*a
, u8
*b
, u8
*N
, u32 n
);
30 void bn_mul(u8
*d
, u8
*a
, u8
*b
, u8
*N
, u32 n
);
31 void bn_inv(u8
*d
, u8
*a
, u8
*N
, u32 n
); // only for prime N
32 void bn_exp(u8
*d
, u8
*a
, u8
*N
, u32 n
, u8
*e
, u32 en
);
35 void md5(u8
*data
, u32 len
, u8
*hash
);
36 void sha(u8
*data
, u32 len
, u8
*hash
);
37 void get_key(const char *name
, u8
*key
, u32 len
);
38 void aes_cbc_dec(u8
*key
, u8
*iv
, u8
*in
, u32 len
, u8
*out
);
39 void aes_cbc_enc(u8
*key
, u8
*iv
, u8
*in
, u32 len
, u8
*out
);
40 void decrypt_title_key(u8
*tik
, u8
*title_key
);
41 int check_cert_chain(u8
*data
, u32 data_len
, u8
*cert
, u32 cert_len
);
42 int check_ec(u8
*ng
, u8
*ap
, u8
*sig
, u8
*sig_hash
);
43 void generate_ecdsa(u8
*R
, u8
*S
, u8
*k
, u8
*hash
);
44 int check_ecdsa(u8
*Q
, u8
*R
, u8
*S
, u8
*hash
);
45 void ec_priv_to_pub(u8
*k
, u8
*Q
);
48 void do_yaz0(u8
*in
, u32 in_size
, u8
*out
, u32 out_size
);
51 void fatal(const char *s
, ...);
54 void print_bytes(u8
*x
, u32 n
);
55 void hexdump(u8
*x
, u32 n
);
56 void dump_tmd(u8
*tmd
);