• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef CRYPTO_AUTO_CBB_H_
6 #define CRYPTO_AUTO_CBB_H_
7 
8 #include <openssl/bytestring.h>
9 
10 #include "base/macros.h"
11 
12 namespace crypto {
13 
14 // AutoCBB is a wrapper over OpenSSL's CBB type that automatically releases
15 // resources when going out of scope.
16 class AutoCBB {
17  public:
AutoCBB()18   AutoCBB() { CBB_zero(&cbb_); }
~AutoCBB()19   ~AutoCBB() { CBB_cleanup(&cbb_); }
20 
get()21   CBB* get() { return &cbb_; }
22 
Reset()23   void Reset() {
24     CBB_cleanup(&cbb_);
25     CBB_zero(&cbb_);
26   }
27 
28  private:
29   CBB cbb_;
30   DISALLOW_COPY_AND_ASSIGN(AutoCBB);
31 };
32 
33 }  // namespace crypto
34 
35 #endif   // CRYPTO_AUTO_CBB_H_
36