00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040 using System;
00041 using System.Text;
00042
00043 namespace ICSharpCode.SharpZipLib.Zip
00044 {
00045
00049 public enum CompressionMethod
00050 {
00054 Stored = 0,
00055
00060 Deflated = 8,
00061
00065 Deflate64 = 9,
00066
00070 BZip2 = 11,
00071
00075 WinZipAES = 99,
00076
00077 }
00078
00082 [Flags]
00083 enum GeneralBitFlags : int
00084 {
00088 Encrypted = 0x0001,
00092 Method = 0x0006,
00096 Descriptor = 0x0008,
00097 Reserved = 0x0010,
00101 Patched = 0x0020,
00105 StrongEncryption = 0x0040,
00109 EnhancedCompress = 0x1000,
00117 HeaderMasked = 0x2000
00118 }
00119
00123 public sealed class ZipConstants
00124 {
00132 public const int VERSION_MADE_BY = 20;
00133
00137 public const int VERSION_STRONG_ENCRYPTION = 50;
00138
00139
00140
00144 public const int LOCHDR = 30;
00145
00149 public const int LOCSIG = 'P' | ('K' << 8) | (3 << 16) | (4 << 24);
00150
00154 public const int LOCVER = 4;
00155
00159 public const int LOCFLG = 6;
00160
00164 public const int LOCHOW = 8;
00165
00169 public const int LOCTIM = 10;
00170
00174 public const int LOCCRC = 14;
00175
00179 public const int LOCSIZ = 18;
00180
00184 public const int LOCLEN = 22;
00185
00189 public const int LOCNAM = 26;
00190
00194 public const int LOCEXT = 28;
00195
00196
00200 public const int SPANNINGSIG = 'P' | ('K' << 8) | (7 << 16) | (8 << 24);
00201
00205 public const int SPANTEMPSIG = 'P' | ('K' << 8) | ('0' << 16) | ('0' << 24);
00206
00216 public const int EXTSIG = 'P' | ('K' << 8) | (7 << 16) | (8 << 24);
00217
00221 public const int EXTHDR = 16;
00222
00226 public const int EXTCRC = 4;
00227
00231 public const int EXTSIZ = 8;
00232
00236 public const int EXTLEN = 12;
00237
00238
00242 public const int CENSIG = 'P' | ('K' << 8) | (1 << 16) | (2 << 24);
00243
00247 public const int CENHDR = 46;
00248
00252 public const int CENVEM = 4;
00253
00257 public const int CENVER = 6;
00258
00262 public const int CENFLG = 8;
00263
00267 public const int CENHOW = 10;
00268
00272 public const int CENTIM = 12;
00273
00277 public const int CENCRC = 16;
00278
00282 public const int CENSIZ = 20;
00283
00287 public const int CENLEN = 24;
00288
00292 public const int CENNAM = 28;
00293
00297 public const int CENEXT = 30;
00298
00302 public const int CENCOM = 32;
00303
00307 public const int CENDSK = 34;
00308
00312 public const int CENATT = 36;
00313
00317 public const int CENATX = 38;
00318
00322 public const int CENOFF = 42;
00323
00324
00328 public const int CENSIG64 = 'P' | ('K' << 8) | (6 << 16) | (6 << 24);
00329
00330
00331
00335 public const int CENDIGITALSIG = 'P' | ('K' << 8) | (5 << 16) | (5 << 24);
00336
00337
00338
00339
00343 public const int ENDSIG = 'P' | ('K' << 8) | (5 << 16) | (6 << 24);
00344
00348 public const int ENDHDR = 22;
00349
00350
00351
00355 public const int ENDNRD = 4;
00356
00360 public const int ENDDCD = 6;
00361
00365 public const int ENDSUB = 8;
00366
00370 public const int ENDTOT = 10;
00371
00375 public const int ENDSIZ = 12;
00376
00380 public const int ENDOFF = 16;
00381
00385 public const int ENDCOM = 20;
00386
00390 public const int CRYPTO_HEADER_SIZE = 12;
00391
00392
00393 #if !COMPACT_FRAMEWORK
00394
00395 static int defaultCodePage = 0;
00396
00404 public static int DefaultCodePage {
00405 get {
00406 return defaultCodePage;
00407 }
00408 set {
00409 defaultCodePage = value;
00410 }
00411 }
00412 #endif
00413
00426 public static string ConvertToString(byte[] data, int length)
00427 {
00428 #if COMPACT_FRAMEWORK
00429 return Encoding.ASCII.GetString(data, 0, length);
00430 #else
00431 return Encoding.GetEncoding(DefaultCodePage).GetString(data, 0, length);
00432 #endif
00433 }
00434
00444 public static string ConvertToString(byte[] data)
00445 {
00446 return ConvertToString(data, data.Length);
00447 }
00448
00456 public static byte[] ConvertToArray(string str)
00457 {
00458 #if COMPACT_FRAMEWORK
00459 return Encoding.ASCII.GetBytes(str);
00460 #else
00461 return Encoding.GetEncoding(DefaultCodePage).GetBytes(str);
00462 #endif
00463 }
00464 }
00465 }