annotate dvdread/md5.h @ 25065:54dba785e683

New media format negotiation code: loop through all available formats trying to establish connection between pins. Negotiation stops either when all formats are rejected (error reported in this case) or when connection is established (which can happen only when current media format is accepted by both of the pins).
author voroshil
date Sun, 18 Nov 2007 11:13:28 +0000
parents 1542693b2a30
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
24050
1542693b2a30 Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents: 20981
diff changeset
1 /* -*- c-basic-offset: 2; indent-tabs-mode: nil -*- */
15876
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
2 /* md5.h - Declaration of functions and data types used for MD5 sum
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
3 computing library functions.
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
4 Copyright (C) 1995, 1996, 1999 Free Software Foundation, Inc.
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
5 NOTE: The canonical source of this file is maintained with the GNU C
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
6 Library. Bugs can be reported to bug-glibc@prep.ai.mit.edu.
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
7
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
8 This program is free software; you can redistribute it and/or modify it
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
9 under the terms of the GNU General Public License as published by the
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
10 Free Software Foundation; either version 2, or (at your option) any
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
11 later version.
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
12
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
13 This program is distributed in the hope that it will be useful,
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
16 GNU General Public License for more details.
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
17
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
18 You should have received a copy of the GNU General Public License
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
19 along with this program; if not, write to the Free Software Foundation,
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
20 Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
21
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
22 #ifndef _MD5_H
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
23 #define _MD5_H 1
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
24
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
25 #include <stdio.h>
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
26
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
27 #if defined HAVE_LIMITS_H || _LIBC
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
28 # include <limits.h>
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
29 #endif
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
30
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
31 /* The following contortions are an attempt to use the C preprocessor
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
32 to determine an unsigned integral type that is 32 bits wide. An
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
33 alternative approach is to use autoconf's AC_CHECK_SIZEOF macro, but
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
34 doing that would require that the configure script compile and *run*
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
35 the resulting executable. Locally running cross-compiled executables
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
36 is usually not possible. */
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
37
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
38 #ifdef _LIBC
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
39 # include <sys/types.h>
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
40 typedef u_int32_t md5_uint32;
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
41 #else
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
42 # if defined __STDC__ && __STDC__
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
43 # define UINT_MAX_32_BITS 4294967295U
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
44 # else
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
45 # define UINT_MAX_32_BITS 0xFFFFFFFF
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
46 # endif
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
47
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
48 /* If UINT_MAX isn't defined, assume it's a 32-bit type.
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
49 This should be valid for all systems GNU cares about because
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
50 that doesn't include 16-bit systems, and only modern systems
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
51 (that certainly have <limits.h>) have 64+-bit integral types. */
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
52
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
53 # ifndef UINT_MAX
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
54 # define UINT_MAX UINT_MAX_32_BITS
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
55 # endif
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
56
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
57 # if UINT_MAX == UINT_MAX_32_BITS
24050
1542693b2a30 Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents: 20981
diff changeset
58 typedef unsigned int md5_uint32;
15876
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
59 # else
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
60 # if USHRT_MAX == UINT_MAX_32_BITS
24050
1542693b2a30 Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents: 20981
diff changeset
61 typedef unsigned short md5_uint32;
15876
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
62 # else
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
63 # if ULONG_MAX == UINT_MAX_32_BITS
24050
1542693b2a30 Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents: 20981
diff changeset
64 typedef unsigned long md5_uint32;
15876
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
65 # else
24050
1542693b2a30 Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents: 20981
diff changeset
66 /* The following line is intended to evoke an error.
1542693b2a30 Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents: 20981
diff changeset
67 Using #error is not portable enough. */
1542693b2a30 Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents: 20981
diff changeset
68 "Cannot determine unsigned 32-bit data type."
15876
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
69 # endif
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
70 # endif
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
71 # endif
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
72 #endif
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
73
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
74 #undef __P
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
75 #if defined (__STDC__) && __STDC__
24050
1542693b2a30 Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents: 20981
diff changeset
76 #define __P(x) x
15876
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
77 #else
24050
1542693b2a30 Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents: 20981
diff changeset
78 #define __P(x) ()
15876
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
79 #endif
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
80
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
81 /* Structure to save state of computation between the single steps. */
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
82 struct md5_ctx
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
83 {
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
84 md5_uint32 A;
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
85 md5_uint32 B;
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
86 md5_uint32 C;
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
87 md5_uint32 D;
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
88
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
89 md5_uint32 total[2];
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
90 md5_uint32 buflen;
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
91 char buffer[128];
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
92 };
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
93
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
94 /*
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
95 * The following three functions are build up the low level used in
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
96 * the functions `md5_stream' and `md5_buffer'.
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
97 */
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
98
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
99 /* Initialize structure containing state of computation.
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
100 (RFC 1321, 3.3: Step 3) */
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
101 extern void md5_init_ctx __P ((struct md5_ctx *ctx));
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
102
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
103 /* Starting with the result of former calls of this function (or the
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
104 initialization function update the context for the next LEN bytes
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
105 starting at BUFFER.
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
106 It is necessary that LEN is a multiple of 64!!! */
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
107 extern void md5_process_block __P ((const void *buffer, size_t len,
24050
1542693b2a30 Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents: 20981
diff changeset
108 struct md5_ctx *ctx));
15876
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
109
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
110 /* Starting with the result of former calls of this function (or the
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
111 initialization function update the context for the next LEN bytes
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
112 starting at BUFFER.
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
113 It is NOT required that LEN is a multiple of 64. */
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
114 extern void md5_process_bytes __P ((const void *buffer, size_t len,
24050
1542693b2a30 Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents: 20981
diff changeset
115 struct md5_ctx *ctx));
15876
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
116
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
117 /* Process the remaining bytes in the buffer and put result from CTX
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
118 in first 16 bytes following RESBUF. The result is always in little
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
119 endian byte order, so that a byte-wise output yields to the wanted
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
120 ASCII representation of the message digest.
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
121
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
122 IMPORTANT: On some systems it is required that RESBUF be correctly
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
123 aligned for a 32 bits value. */
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
124 extern void *md5_finish_ctx __P ((struct md5_ctx *ctx, void *resbuf));
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
125
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
126
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
127 /* Put result from CTX in first 16 bytes following RESBUF. The result is
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
128 always in little endian byte order, so that a byte-wise output yields
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
129 to the wanted ASCII representation of the message digest.
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
130
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
131 IMPORTANT: On some systems it is required that RESBUF is correctly
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
132 aligned for a 32 bits value. */
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
133 extern void *md5_read_ctx __P ((const struct md5_ctx *ctx, void *resbuf));
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
134
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
135
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
136 /* Compute MD5 message digest for bytes read from STREAM. The
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
137 resulting message digest number will be written into the 16 bytes
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
138 beginning at RESBLOCK. */
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
139 extern int md5_stream __P ((FILE *stream, void *resblock));
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
140
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
141 /* Compute MD5 message digest for LEN bytes beginning at BUFFER. The
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
142 result is always in little endian byte order, so that a byte-wise
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
143 output yields to the wanted ASCII representation of the message
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
144 digest. */
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
145 extern void *md5_buffer __P ((const char *buffer, size_t len, void *resblock));
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
146
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
147 /* The following is from gnupg-1.0.2's cipher/bithelp.h. */
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
148 /* Rotate a 32 bit integer by n bytes */
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
149 #if defined __GNUC__ && defined __i386__
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
150 static inline md5_uint32
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
151 rol(md5_uint32 x, int n)
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
152 {
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
153 __asm__("roll %%cl,%0"
24050
1542693b2a30 Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents: 20981
diff changeset
154 :"=r" (x)
1542693b2a30 Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents: 20981
diff changeset
155 :"0" (x),"c" (n));
15876
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
156 return x;
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
157 }
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
158 #else
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
159 # define rol(x,n) ( ((x) << (n)) | ((x) >> (32-(n))) )
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
160 #endif
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
161
15f4ed477c39 add missing files from libdvdread 0.9.4
henry
parents:
diff changeset
162 #endif