00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef _RTL_DIGEST_H_
00021 #define _RTL_DIGEST_H_
00022
00023 #include "sal/config.h"
00024
00025 #include "sal/saldllapi.h"
00026 #include "sal/types.h"
00027
00028 #ifdef __cplusplus
00029 extern "C" {
00030 #endif
00031
00032
00033
00034
00035
00036
00039 typedef void* rtlDigest;
00040
00041
00045 enum __rtl_DigestAlgorithm
00046 {
00047 rtl_Digest_AlgorithmMD2,
00048 rtl_Digest_AlgorithmMD5,
00049 rtl_Digest_AlgorithmSHA,
00050 rtl_Digest_AlgorithmSHA1,
00051
00052 rtl_Digest_AlgorithmHMAC_MD5,
00053 rtl_Digest_AlgorithmHMAC_SHA1,
00054
00055 rtl_Digest_AlgorithmInvalid,
00056 rtl_Digest_Algorithm_FORCE_EQUAL_SIZE = SAL_MAX_ENUM
00057 };
00058
00061 typedef enum __rtl_DigestAlgorithm rtlDigestAlgorithm;
00062
00063
00066 enum __rtl_DigestError
00067 {
00068 rtl_Digest_E_None,
00069 rtl_Digest_E_Argument,
00070 rtl_Digest_E_Algorithm,
00071 rtl_Digest_E_BufferSize,
00072 rtl_Digest_E_Memory,
00073 rtl_Digest_E_Unknown,
00074 rtl_Digest_E_FORCE_EQUAL_SIZE = SAL_MAX_ENUM
00075 };
00076
00079 typedef enum __rtl_DigestError rtlDigestError;
00080
00081
00088 SAL_DLLPUBLIC rtlDigest SAL_CALL rtl_digest_create (
00089 rtlDigestAlgorithm Algorithm
00090 ) SAL_THROW_EXTERN_C();
00091
00092
00098 SAL_DLLPUBLIC void SAL_CALL rtl_digest_destroy (
00099 rtlDigest Digest
00100 ) SAL_THROW_EXTERN_C();
00101
00102
00107 SAL_DLLPUBLIC rtlDigestAlgorithm SAL_CALL rtl_digest_queryAlgorithm (
00108 rtlDigest Digest
00109 ) SAL_THROW_EXTERN_C();
00110
00111
00116 SAL_DLLPUBLIC sal_uInt32 SAL_CALL rtl_digest_queryLength (
00117 rtlDigest Digest
00118 ) SAL_THROW_EXTERN_C();
00119
00120
00128 SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_init (
00129 rtlDigest Digest,
00130 const sal_uInt8 *pData, sal_uInt32 nDatLen
00131 ) SAL_THROW_EXTERN_C();
00132
00133
00141 SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_update (
00142 rtlDigest Digest,
00143 const void *pData, sal_uInt32 nDatLen
00144 ) SAL_THROW_EXTERN_C();
00145
00146
00159 SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_get (
00160 rtlDigest Digest,
00161 sal_uInt8 *pBuffer, sal_uInt32 nBufLen
00162 ) SAL_THROW_EXTERN_C();
00163
00164
00165
00166
00167
00168
00169 #define RTL_DIGEST_LENGTH_MD2 16
00170
00179 SAL_DLLPUBLIC rtlDigest SAL_CALL rtl_digest_createMD2 (void) SAL_THROW_EXTERN_C();
00180
00181
00185 SAL_DLLPUBLIC void SAL_CALL rtl_digest_destroyMD2 (
00186 rtlDigest Digest
00187 ) SAL_THROW_EXTERN_C();
00188
00189
00193 SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_updateMD2 (
00194 rtlDigest Digest,
00195 const void *pData, sal_uInt32 nDatLen
00196 ) SAL_THROW_EXTERN_C();
00197
00198
00202 SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_getMD2 (
00203 rtlDigest Digest,
00204 sal_uInt8 *pBuffer, sal_uInt32 nBufLen
00205 ) SAL_THROW_EXTERN_C();
00206
00207
00222 SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_MD2 (
00223 const void *pData, sal_uInt32 nDatLen,
00224 sal_uInt8 *pBuffer, sal_uInt32 nBufLen
00225 ) SAL_THROW_EXTERN_C();
00226
00227
00228
00229
00230
00231
00232 #define RTL_DIGEST_LENGTH_MD5 16
00233
00242 SAL_DLLPUBLIC rtlDigest SAL_CALL rtl_digest_createMD5 (void) SAL_THROW_EXTERN_C();
00243
00244
00248 SAL_DLLPUBLIC void SAL_CALL rtl_digest_destroyMD5 (
00249 rtlDigest Digest
00250 ) SAL_THROW_EXTERN_C();
00251
00252
00256 SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_updateMD5 (
00257 rtlDigest Digest,
00258 const void *pData, sal_uInt32 nDatLen
00259 ) SAL_THROW_EXTERN_C();
00260
00261
00265 SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_getMD5 (
00266 rtlDigest Digest,
00267 sal_uInt8 *pBuffer, sal_uInt32 nBufLen
00268 ) SAL_THROW_EXTERN_C();
00269
00270
00278 SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_rawMD5 (
00279 rtlDigest Digest,
00280 sal_uInt8 *pBuffer, sal_uInt32 nBufLen
00281 ) SAL_THROW_EXTERN_C();
00282
00283
00298 SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_MD5 (
00299 const void *pData, sal_uInt32 nDatLen,
00300 sal_uInt8 *pBuffer, sal_uInt32 nBufLen
00301 ) SAL_THROW_EXTERN_C();
00302
00303
00304
00305
00306
00307
00308 #define RTL_DIGEST_LENGTH_SHA 20
00309
00318 SAL_DLLPUBLIC rtlDigest SAL_CALL rtl_digest_createSHA (void) SAL_THROW_EXTERN_C();
00319
00320
00324 SAL_DLLPUBLIC void SAL_CALL rtl_digest_destroySHA (
00325 rtlDigest Digest
00326 ) SAL_THROW_EXTERN_C();
00327
00328
00332 SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_updateSHA (
00333 rtlDigest Digest,
00334 const void *pData, sal_uInt32 nDatLen
00335 ) SAL_THROW_EXTERN_C();
00336
00337
00341 SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_getSHA (
00342 rtlDigest Digest,
00343 sal_uInt8 *pBuffer, sal_uInt32 nBufLen
00344 ) SAL_THROW_EXTERN_C();
00345
00346
00361 SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_SHA (
00362 const void *pData, sal_uInt32 nDatLen,
00363 sal_uInt8 *pBuffer, sal_uInt32 nBufLen
00364 ) SAL_THROW_EXTERN_C();
00365
00366
00367
00368
00369
00370
00371 #define RTL_DIGEST_LENGTH_SHA1 20
00372
00381 SAL_DLLPUBLIC rtlDigest SAL_CALL rtl_digest_createSHA1 (void) SAL_THROW_EXTERN_C();
00382
00383
00387 SAL_DLLPUBLIC void SAL_CALL rtl_digest_destroySHA1 (
00388 rtlDigest Digest
00389 ) SAL_THROW_EXTERN_C();
00390
00391
00395 SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_updateSHA1 (
00396 rtlDigest Digest,
00397 const void *pData, sal_uInt32 nDatLen
00398 ) SAL_THROW_EXTERN_C();
00399
00400
00404 SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_getSHA1 (
00405 rtlDigest Digest,
00406 sal_uInt8 *pBuffer, sal_uInt32 nBufLen
00407 ) SAL_THROW_EXTERN_C();
00408
00409
00424 SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_SHA1 (
00425 const void *pData, sal_uInt32 nDatLen,
00426 sal_uInt8 *pBuffer, sal_uInt32 nBufLen
00427 ) SAL_THROW_EXTERN_C();
00428
00429
00430
00431
00432
00433
00434 #define RTL_DIGEST_LENGTH_HMAC_MD5 RTL_DIGEST_LENGTH_MD5
00435
00444 SAL_DLLPUBLIC rtlDigest SAL_CALL rtl_digest_createHMAC_MD5 (void) SAL_THROW_EXTERN_C();
00445
00446
00450 SAL_DLLPUBLIC void SAL_CALL rtl_digest_destroyHMAC_MD5 (
00451 rtlDigest Digest
00452 ) SAL_THROW_EXTERN_C();
00453
00454
00464 SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_initHMAC_MD5 (
00465 rtlDigest Digest,
00466 const sal_uInt8 *pKeyData, sal_uInt32 nKeyLen
00467 ) SAL_THROW_EXTERN_C();
00468
00469
00473 SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_updateHMAC_MD5 (
00474 rtlDigest Digest,
00475 const void *pData, sal_uInt32 nDatLen
00476 ) SAL_THROW_EXTERN_C();
00477
00478
00482 SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_getHMAC_MD5 (
00483 rtlDigest Digest,
00484 sal_uInt8 *pBuffer, sal_uInt32 nBufLen
00485 ) SAL_THROW_EXTERN_C();
00486
00487
00505 SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_HMAC_MD5 (
00506 const sal_uInt8 *pKeyData, sal_uInt32 nKeyLen,
00507 const void *pData, sal_uInt32 nDatLen,
00508 sal_uInt8 *pBuffer, sal_uInt32 nBufLen
00509 ) SAL_THROW_EXTERN_C();
00510
00511
00512
00513
00514
00515
00516 #define RTL_DIGEST_LENGTH_HMAC_SHA1 RTL_DIGEST_LENGTH_SHA1
00517
00528 SAL_DLLPUBLIC rtlDigest SAL_CALL rtl_digest_createHMAC_SHA1 (void) SAL_THROW_EXTERN_C();
00529
00530
00534 SAL_DLLPUBLIC void SAL_CALL rtl_digest_destroyHMAC_SHA1 (
00535 rtlDigest Digest
00536 ) SAL_THROW_EXTERN_C();
00537
00538
00548 SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_initHMAC_SHA1 (
00549 rtlDigest Digest,
00550 const sal_uInt8 *pKeyData, sal_uInt32 nKeyLen
00551 ) SAL_THROW_EXTERN_C();
00552
00553
00557 SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_updateHMAC_SHA1 (
00558 rtlDigest Digest,
00559 const void *pData, sal_uInt32 nDatLen
00560 ) SAL_THROW_EXTERN_C();
00561
00562
00566 SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_getHMAC_SHA1 (
00567 rtlDigest Digest,
00568 sal_uInt8 *pBuffer, sal_uInt32 nBufLen
00569 ) SAL_THROW_EXTERN_C();
00570
00571
00589 SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_HMAC_SHA1 (
00590 const sal_uInt8 *pKeyData, sal_uInt32 nKeyLen,
00591 const void *pData, sal_uInt32 nDatLen,
00592 sal_uInt8 *pBuffer, sal_uInt32 nBufLen
00593 ) SAL_THROW_EXTERN_C();
00594
00595
00596
00597
00598
00599
00616 SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_PBKDF2 (
00617 sal_uInt8 *pKeyData , sal_uInt32 nKeyLen,
00618 const sal_uInt8 *pPassData, sal_uInt32 nPassLen,
00619 const sal_uInt8 *pSaltData, sal_uInt32 nSaltLen,
00620 sal_uInt32 nCount
00621 ) SAL_THROW_EXTERN_C();
00622
00623
00624
00625
00626
00627
00628
00629 #ifdef __cplusplus
00630 }
00631 #endif
00632
00633 #endif
00634
00635