This file is indexed.

/usr/include/dcmtk/dcmsign/sisprof.h is in libdcmtk-dev 3.6.2-3build3.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/*
 *
 *  Copyright (C) 1998-2011, OFFIS e.V.
 *  All rights reserved.  See COPYRIGHT file for details.
 *
 *  This software and supporting documentation were developed by
 *
 *    OFFIS e.V.
 *    R&D Division Health
 *    Escherweg 2
 *    D-26121 Oldenburg, Germany
 *
 *
 *  Module: dcmsign
 *
 *  Author: Norbert Loxen, Marco Eichelberg
 *
 *  Purpose:
 *    classes: SiSecurityProfile
 *
 */

#ifndef SISPROF_H
#define SISPROF_H

#include "dcmtk/config/osconfig.h"
#include "dcmtk/dcmsign/sitypes.h"  /* for E_KeyType */

#ifdef WITH_OPENSSL

#include "dcmtk/dcmdata/dcxfer.h"   /* for E_TransferSyntax */

class SiAlgorithm;
class DcmItem;
class DcmAttributeTag;
class SiMAC;
class DcmTagKey;

/** abstract base class for all security profiles.
 */
class DCMTK_DCMSIGN_EXPORT SiSecurityProfile
{
public:

  /// default constructor
  SiSecurityProfile() { }

  /// destructor
  virtual ~SiSecurityProfile() { }
  
  /** checks whether the given MAC type can be used with this security profile.
   *  @param macType MAC type to be checked
   *  @return true if MAC type is allowable for this profile, false otherwise.
   */
  virtual OFBool isAllowableMACType(E_MACType macType) const = 0;

  /** checks whether the given MAC object can be used with this security profile.
   *  @param macType object to be checked
   *  @return true if object is allowable for this profile, false otherwise.
   */
  virtual OFBool isAllowableMAC(const SiMAC& mac) const;

  /** checks whether the given public/private key algorithm can be used with this security profile.
   *  @param keyType public key algorithm type to be checked
   *  @return true if public key algorithm is allowable for this profile, false otherwise.
   */
  virtual OFBool isAllowableAlgorithmType(E_KeyType keyType) const = 0;
  
  /** checks whether the given public/private key object can be used with this security profile.
   *  @param algo object to be checked
   *  @return true if object is allowable for this profile, false otherwise.
   */
  virtual OFBool isAllowableAlgorithm(const SiAlgorithm& algo) const;

  /** checks whether the given transfer syntax can be used with this security profile
   *  @param xfer transfer syntax to be checked
   *  @return true if transfer syntax is allowable for this profile, false otherwise.
   */
  virtual OFBool isAllowableTransferSyntax(E_TransferSyntax xfer) const = 0;
  
  /** checks whether an attribute with the given tag is required to be signed
   *  for the current security profile.
   *  @param key tag key to be checked
   *  @return true if required, false otherwise.
   */
  virtual OFBool attributeRequired(const DcmTagKey& key) const = 0;

  /** checks whether an attribute with the given tag must not be signed
   *  for the current security profile.
   *  @param key tag key to be checked
   *  @return true if attribute must not be signed, false otherwise.
   */
  virtual OFBool attributeForbidden(const DcmTagKey& key) const = 0;
  
  /** updates the given list of attribute tags according to the
   *  requirements of the current security profile. For all elements present in the
   *  dataset, the attribute tag is inserted or removed from the list if required by the profile.
   *  @param item dataset to be handled
   *  @param tagList attribute tag list to be updated
   *  @return status code
   */
  virtual OFCondition updateAttributeList(DcmItem &item, DcmAttributeTag& tagList);

  /** checks whether the given list of attribute tags fulfils the requirements
   *  of the current security profile for the given dataset. 
   *  @param item dataset to be checked
   *  @param tagList attribute tag list. 
   *  @return true if minimum requirements for profile are fulfilled, false otherwise.
   */ 
  virtual OFBool checkAttributeList(DcmItem &item, DcmAttributeTag& tagList);

  /** checks if the given tag key is contained in the given list.
   *  @param tagList list of tag keys
   *  @param key tag key
   *  @return true if tag key is present in list, false otherwise.
   */
  static OFBool containsTag(DcmAttributeTag& tagList, const DcmTagKey& key);

private:

  /// private undefined copy constructor
  SiSecurityProfile(SiSecurityProfile& arg);

  /// private undefined copy assignment operator
  SiSecurityProfile& operator=(SiSecurityProfile& arg);

};

#endif
#endif