<commit_before>/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
/**
 * Copyright (C) 2013 Regents of the University of California.
 * @author: <NAME> <<EMAIL>>
 * @author: <NAME> <<EMAIL>>
 * See COPYING for copyright and distribution information.
 */

#ifndef NDN_CERTIFICATE_EXTENSION_HPP
#define NDN_CERTIFICATE_EXTENSION_HPP

#include "../../common.hpp"
#include "../../encoding/buffer.hpp"
#include "../../encoding/oid.hpp"

namespace CryptoPP { class BufferedTransformation; }

namespace ndn {

/**
 * A CertificateExtension represents the Extension entry in a certificate.
 */
class CertificateExtension
{
public:
  CertificateExtension(CryptoPP::BufferedTransformation &in)
  {
    decode(in);
  }

  /**
   * Create a new CertificateExtension.
   * @param oid The oid of subject description entry.
   * @param isCritical If true, the extension must be handled.
   * @param value The extension value.
   */
  CertificateExtension(const OID& oid, const bool isCritical, const Buffer& value)
    : extensionId_(oid), isCritical_(isCritical), extensionValue_(value)
  {
  }

  CertificateExtension(const OID& oid, const bool isCritical, const uint8_t* value, size_t valueSize)
    : extensionId_(oid), isCritical_(isCritical), extensionValue_(value, valueSize)
  {
  }
  
  /**
   * The virtual destructor.
   */
  virtual
  ~CertificateExtension() {}

  void
  encode(CryptoPP::BufferedTransformation &out) const;
<commit_msg>security: Adding Error in CertificateExtension<commit_after>/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
/**
 * Copyright (C) 2013 Regents of the University of California.
 * @author: <NAME> <<EMAIL>>
 * @author: <NAME> <<EMAIL>>
 * See COPYING for copyright and distribution information.
 */

#ifndef NDN_CERTIFICATE_EXTENSION_HPP
#define NDN_CERTIFICATE_EXTENSION_HPP

#include "../../common.hpp"
#include "../../encoding/buffer.hpp"
#include "../../encoding/oid.hpp"

namespace CryptoPP { class BufferedTransformation; }

namespace ndn {

/**
 * A CertificateExtension represents the Extension entry in a certificate.
 */
class CertificateExtension
{
public:
  struct Error : public std::runtime_error { Error(const std::string &what) : std::runtime_error(what) {} };

  CertificateExtension(CryptoPP::BufferedTransformation &in)
  {
    decode(in);
  }

  /**
   * Create a new CertificateExtension.
   * @param oid The oid of subject description entry.
   * @param isCritical If true, the extension must be handled.
   * @param value The extension value.
   */
  CertificateExtension(const OID& oid, const bool isCritical, const Buffer& value)
    : extensionId_(oid), isCritical_(isCritical), extensionValue_(value)
  {
  }

  CertificateExtension(const OID& oid, const bool isCritical, const uint8_t* value, size_t valueSize)
    : extensionId_(oid), isCritical_(isCritical), extensionValue_(value, valueSize)
  {
  }
  
  /**
   * The virtual destructor.
   */
  virtual
  ~CertificateExtension() {}

  void
  encode(CryptoPP::BufferedTransformation &out) const;

{'fraction_non_alphanumeric': 0.12668641000329056, 'fraction_numerical': 0.003290556103981573, 'mean_word_length': 4.178875638841567, 'pattern_counts': {'":': 0, '<': 15, '<?xml version=': 0, '>': 15, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3401356', 'n_tokens_mistral': 970, 'n_tokens_neox': 906, 'n_words': 250}