sha256-with-rsa-signature.hpp
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
22 #ifndef NDN_SHA256_WITH_RSA_SIGNATURE_HPP
23 #define NDN_SHA256_WITH_RSA_SIGNATURE_HPP
24 
25 #include "signature.hpp"
26 #include "key-locator.hpp"
27 #include "publisher-public-key-digest.hpp"
28 #include "util/change-counter.hpp"
29 
30 namespace ndn {
31 
37 public:
39  : changeCount_(0)
40  {
41  }
42 
46  virtual ptr_lib::shared_ptr<Signature>
47  clone() const;
48 
54  virtual void
55  get(struct ndn_Signature& signatureStruct) const;
56 
61  virtual void
62  set(const struct ndn_Signature& signatureStruct);
63 
67  const Blob&
68  DEPRECATED_IN_NDN_CPP getDigestAlgorithm() const;
69 
73  const Blob&
74  DEPRECATED_IN_NDN_CPP getWitness() const;
75 
80  virtual const Blob&
81  getSignature() const;
82 
88  DEPRECATED_IN_NDN_CPP getPublisherPublicKeyDigest() const { return publisherPublicKeyDigest_.get(); }
89 
95  DEPRECATED_IN_NDN_CPP getPublisherPublicKeyDigest() { return publisherPublicKeyDigest_.get(); }
96 
97  const KeyLocator&
98  getKeyLocator() const { return keyLocator_.get(); }
99 
100  KeyLocator&
101  getKeyLocator() { return keyLocator_.get(); }
102 
106  void
107  DEPRECATED_IN_NDN_CPP setDigestAlgorithm(const Blob& digestAlgorithm);
108 
112  void
113  DEPRECATED_IN_NDN_CPP setWitness(const Blob& witness);
114 
119  virtual void
120  setSignature(const Blob& signature);
121 
126  void
128  {
129  publisherPublicKeyDigest_.set(publisherPublicKeyDigest);
130  ++changeCount_;
131  }
132 
133  void
134  setKeyLocator(const KeyLocator& keyLocator)
135  {
136  keyLocator_.set(keyLocator);
137  ++changeCount_;
138  }
139 
143  void
145  {
146  digestAlgorithm_.reset();
147  witness_.reset();
148  signature_.reset();
149  publisherPublicKeyDigest_.get().clear();
150  keyLocator_.get().clear();
151  ++changeCount_;
152  }
153 
158  virtual uint64_t
160  {
161  // Make sure each of the checkChanged is called.
162  bool changed = publisherPublicKeyDigest_.checkChanged();
163  changed = keyLocator_.checkChanged() || changed;
164  if (changed)
165  // A child object has changed, so update the change count.
166  // This method can be called on a const object, but we want to be able to update the changeCount_.
167  ++const_cast<Sha256WithRsaSignature*>(this)->changeCount_;
168 
169  return changeCount_;
170  }
171 
172 private:
173  Blob digestAlgorithm_;
175  Blob witness_;
176  Blob signature_;
179  ChangeCounter<PublisherPublicKeyDigest> publisherPublicKeyDigest_;
180  ChangeCounter<KeyLocator> keyLocator_;
181  uint64_t changeCount_;
182 };
183 
184 }
185 
186 #endif
A Sha256WithRsaSignature extends Signature and holds the signature bits and other info representing a...
Definition: sha256-with-rsa-signature.hpp:36
Copyright (C) 2013-2015 Regents of the University of California.
Definition: common.hpp:35
struct ndn_PublisherPublicKeyDigest publisherPublicKeyDigest
Definition: data-types.h:72
virtual void set(const struct ndn_Signature &signatureStruct)
Clear this signature, and set the values by copying from the ndn_Signature struct.
Definition: sha256-with-rsa-signature.cpp:103
void DEPRECATED_IN_NDN_CPP setDigestAlgorithm(const Blob &digestAlgorithm)
Definition: sha256-with-rsa-signature.cpp:63
A PublisherPublicKeyDigest holds the publisher public key digest value, if any.
Definition: publisher-public-key-digest.hpp:37
virtual ptr_lib::shared_ptr< Signature > clone() const
Return a pointer to a new Sha256WithRsaSignature which is a copy of this signature.
Definition: sha256-with-rsa-signature.cpp:31
struct ndn_Blob witness
A Blob whose value is a pointer to pre-allocated buffer.
Definition: data-types.h:68
A ChangeCounter keeps a target object whose change count is tracked by a local change count...
Definition: change-counter.hpp:37
virtual uint64_t getChangeCount() const
Get the change count, which is incremented each time this object (or a child object) is changed...
Definition: sha256-with-rsa-signature.hpp:159
void clear()
Clear all the fields.
Definition: sha256-with-rsa-signature.hpp:144
A Signature is an abstract base class providing methods to work with the signature information in a D...
Definition: signature.hpp:36
A Blob holds a pointer to an immutable byte array implemented as const std::vector.
Definition: blob.hpp:42
const PublisherPublicKeyDigest &DEPRECATED_IN_NDN_CPP getPublisherPublicKeyDigest() const
Definition: sha256-with-rsa-signature.hpp:88
virtual const Blob & getSignature() const
Get the signature bytes.
Definition: sha256-with-rsa-signature.cpp:57
virtual void setSignature(const Blob &signature)
Set the signature bytes to the given value.
Definition: sha256-with-rsa-signature.cpp:85
const Blob &DEPRECATED_IN_NDN_CPP getWitness() const
Definition: sha256-with-rsa-signature.cpp:47
const Blob &DEPRECATED_IN_NDN_CPP getDigestAlgorithm() const
Definition: sha256-with-rsa-signature.cpp:37
void DEPRECATED_IN_NDN_CPP setPublisherPublicKeyDigest(const PublisherPublicKeyDigest &publisherPublicKeyDigest)
Definition: sha256-with-rsa-signature.hpp:127
void DEPRECATED_IN_NDN_CPP setWitness(const Blob &witness)
Definition: sha256-with-rsa-signature.cpp:74
Definition: key-locator.hpp:36
PublisherPublicKeyDigest &DEPRECATED_IN_NDN_CPP getPublisherPublicKeyDigest()
Definition: sha256-with-rsa-signature.hpp:95
An ndn_Signature struct holds the signature bits and other info representing the signature in a data ...
Definition: data-types.h:64
struct ndn_Blob digestAlgorithm
A Blob whose value is a pointer to a pre-allocated buffer.
Definition: data-types.h:66