windows-nt/Source/XPSP1/NT/ds/security/csps/cryptoflex/slbpki/pkiberoctet.h
2020-09-26 16:20:57 +08:00

68 lines
1.8 KiB
C++

// pkiBEROctet.h - Interface to BEROctet class
//
// (c) Copyright Schlumberger Technology Corp., unpublished work, created
// 1999. This computer program includes Confidential, Proprietary
// Information and is a Trade Secret of Schlumberger Technology Corp. All
// use, disclosure, and/or reproduction is prohibited unless authorized
// in writing. All Rights Reserved.
/////////////////////////////////////////////////////////////////////////////////
#ifndef SLBPKI_BEROCTET_H
#define SLBPKI_BEROCTET_H
#if defined(WIN32)
#pragma warning(disable : 4786) // Suppress VC++ warnings
#endif
#include <string>
#include <vector>
#include "pkiExc.h"
namespace pki {
class BEROctet
{
public:
BEROctet();
BEROctet(const BEROctet &oct);
BEROctet(const unsigned char *buffer, const unsigned long length);
~BEROctet();
BEROctet& operator=(const BEROctet &oct);
unsigned char *Octet() const;
unsigned long OctetSize() const;
bool Constructed() const;
unsigned long Class() const;
unsigned long Tag() const;
unsigned char *Data() const;
unsigned long DataSize() const;
std::vector<BEROctet*> SubOctetList() const;
std::string ObjectID() const;
void SearchOID(std::string const &OID, std::vector<BEROctet const*> &result) const;
void SearchOIDNext(std::string const &OID, std::vector<BEROctet const*> &result) const;
private:
void Decode();
unsigned char *m_Octet; // Full octet buffer
unsigned long m_OctetSize; // Size of octet buffer
unsigned long m_Class;
unsigned long m_PrimConst;
unsigned long m_Tag;
unsigned char *m_Data; // Start of data part of octet
unsigned long m_DataSize; // Size of data part of octet as decoded from data.
std::vector<BEROctet*> m_SubOctetList;
};
} // namespace pki
#endif // SLBPKI_BEROCTET_H