Index: webrtc/base/sec_buffer.h |
diff --git a/webrtc/base/sec_buffer.h b/webrtc/base/sec_buffer.h |
deleted file mode 100644 |
index 3ef720a9b295e15c000375c97523ee193595e661..0000000000000000000000000000000000000000 |
--- a/webrtc/base/sec_buffer.h |
+++ /dev/null |
@@ -1,149 +0,0 @@ |
-/* |
- * Copyright 2004 The WebRTC Project Authors. All rights reserved. |
- * |
- * Use of this source code is governed by a BSD-style license |
- * that can be found in the LICENSE file in the root of the source |
- * tree. An additional intellectual property rights grant can be found |
- * in the file PATENTS. All contributing project authors may |
- * be found in the AUTHORS file in the root of the source tree. |
- */ |
- |
-// @file Contains utility classes that make it easier to use SecBuffers |
- |
-#ifndef WEBRTC_BASE_SEC_BUFFER_H__ |
-#define WEBRTC_BASE_SEC_BUFFER_H__ |
- |
-namespace rtc { |
- |
-// A base class for CSecBuffer<T>. Contains |
-// all implementation that does not require |
-// template arguments. |
-class CSecBufferBase : public SecBuffer { |
- public: |
- CSecBufferBase() { |
- Clear(); |
- } |
- |
- // Uses the SSPI to free a pointer, must be |
- // used for buffers returned from SSPI APIs. |
- static void FreeSSPI(void *ptr) { |
- if ( ptr ) { |
- SECURITY_STATUS status; |
- status = ::FreeContextBuffer(ptr); |
- ASSERT(SEC_E_OK == status); // "Freeing context buffer" |
- } |
- } |
- |
- // Deletes a buffer with operator delete |
- static void FreeDelete(void *ptr) { |
- delete [] reinterpret_cast<char*>(ptr); |
- } |
- |
- // A noop delete, for buffers over other |
- // people's memory |
- static void FreeNone(void *ptr) { |
- } |
- |
- protected: |
- // Clears the buffer to EMPTY & NULL |
- void Clear() { |
- this->BufferType = SECBUFFER_EMPTY; |
- this->cbBuffer = 0; |
- this->pvBuffer = NULL; |
- } |
-}; |
- |
-// Wrapper class for SecBuffer to take care |
-// of initialization and destruction. |
-template <void (*pfnFreeBuffer)(void *ptr)> |
-class CSecBuffer: public CSecBufferBase { |
- public: |
- // Initializes buffer to empty & NULL |
- CSecBuffer() { |
- } |
- |
- // Frees any allocated memory |
- ~CSecBuffer() { |
- Release(); |
- } |
- |
- // Frees the buffer appropriately, and re-nulls |
- void Release() { |
- pfnFreeBuffer(this->pvBuffer); |
- Clear(); |
- } |
- |
- // This class must not extend the size of SecBuffer, since we use arrays of |
- // CSecBuffer in CSecBufferBundle below. |
- static_assert(sizeof(CSecBuffer<pfnFreeBuffer>) == sizeof(SecBuffer), ""); |
-}; |
- |
-// Contains all generic implementation for the |
-// SecBufferBundle class |
-class SecBufferBundleBase { |
- public: |
-}; |
- |
-// A template class that bundles a SecBufferDesc with |
-// one or more SecBuffers for convenience. Can take |
-// care of deallocating buffers appropriately, as indicated |
-// by pfnFreeBuffer function. |
-// By default does no deallocation. |
-template <int num_buffers, |
- void (*pfnFreeBuffer)(void *ptr) = CSecBufferBase::FreeNone> |
-class CSecBufferBundle : public SecBufferBundleBase { |
- public: |
- // Constructs a security buffer bundle with num_buffers |
- // buffers, all of which are empty and nulled. |
- CSecBufferBundle() { |
- desc_.ulVersion = SECBUFFER_VERSION; |
- desc_.cBuffers = num_buffers; |
- desc_.pBuffers = buffers_; |
- } |
- |
- // Frees all currently used buffers. |
- ~CSecBufferBundle() { |
- Release(); |
- } |
- |
- // Accessor for the descriptor |
- PSecBufferDesc desc() { |
- return &desc_; |
- } |
- |
- // Accessor for the descriptor |
- PSecBufferDesc desc() const { |
- return &desc_; |
- } |
- |
- // returns the i-th security buffer |
- SecBuffer &operator[] (size_t num) { |
- ASSERT(num < num_buffers); // "Buffer index out of bounds" |
- return buffers_[num]; |
- } |
- |
- // returns the i-th security buffer |
- const SecBuffer &operator[] (size_t num) const { |
- ASSERT(num < num_buffers); // "Buffer index out of bounds" |
- return buffers_[num]; |
- } |
- |
- // Frees all non-NULL security buffers, |
- // using the deallocation function |
- void Release() { |
- for ( size_t i = 0; i < num_buffers; ++i ) { |
- buffers_[i].Release(); |
- } |
- } |
- |
- private: |
- // Our descriptor |
- SecBufferDesc desc_; |
- // Our bundled buffers, each takes care of its own |
- // initialization and destruction |
- CSecBuffer<pfnFreeBuffer> buffers_[num_buffers]; |
-}; |
- |
-} // namespace rtc |
- |
-#endif // WEBRTC_BASE_SEC_BUFFER_H__ |