00001 // $Id: XrdCryptosslMsgDigest.hh 22437 2008-03-04 14:35:16Z rdm $ 00002 #ifndef __CRYPTO_MSGDGSTSSL_H__ 00003 #define __CRYPTO_MSGDGSTSSL_H__ 00004 /******************************************************************************/ 00005 /* */ 00006 /* X r d C r y p t o S s l M s g D i g e s t . h h */ 00007 /* */ 00008 /* (c) 2004 by the Board of Trustees of the Leland Stanford, Jr., University */ 00009 /* All Rights Reserved. See XrdInfo.cc for complete License Terms */ 00010 /* Produced by Andrew Hanushevsky for Stanford University under contract */ 00011 /* DE-AC03-76-SFO0515 with the Department of Energy */ 00012 /******************************************************************************/ 00013 00014 /* ************************************************************************** */ 00015 /* */ 00016 /* OpenSSL implementation of XrdSecCMsgDigest */ 00017 /* */ 00018 /* ************************************************************************** */ 00019 00020 #include <openssl/evp.h> 00021 00022 #include <XrdCrypto/XrdCryptoMsgDigest.hh> 00023 00024 // ---------------------------------------------------------------------------// 00025 // 00026 // Message Digest implementation buffer 00027 // 00028 // ---------------------------------------------------------------------------// 00029 class XrdCryptosslMsgDigest : public XrdCryptoMsgDigest 00030 { 00031 private: 00032 bool valid; 00033 EVP_MD_CTX mdctx; 00034 00035 int Init(const char *dgst); 00036 00037 public: 00038 XrdCryptosslMsgDigest(const char *dgst); 00039 virtual ~XrdCryptosslMsgDigest() { } 00040 00041 // Validity 00042 bool IsValid() { return valid; } 00043 00044 // Support 00045 static bool IsSupported(const char *dgst); 00046 00047 int Reset(const char *dgst = 0); 00048 int Update(const char *b, int l); 00049 int Final(); 00050 }; 00051 00052 #endif