32 const char*
name() const noexcept
override {
return "EncryptionManagerException"; }
48 EncryptionManager::Result processCertMessage(CertMessage* cert);
49 Contents* sign(std::shared_ptr<SipMessage> msg,
const Data& senderAor,
bool* noCerts);
50 Contents* encrypt(std::shared_ptr<SipMessage> msg,
const Data& recipientAor,
bool* noCerts);
51 Contents* signAndEncrypt(std::shared_ptr<SipMessage> msg,
const Data& senderAor,
const Data& recipientAor,
bool* noCerts);
52 bool decrypt(SipMessage* msg);
57 Request(DialogUsageManager& dum, RemoteCertStore* store, std::shared_ptr<SipMessage> msg, DumFeature& feature);
59 virtual Result received(
bool success,
MessageId::Type type,
const Data& aor,
const Data& data) = 0;
60 Data getId()
const {
return mMsgToEncrypt->getTransactionId(); }
65 DialogUsageManager& mDum;
66 RemoteCertStore* mStore;
67 std::shared_ptr<SipMessage> mMsgToEncrypt;
75 class Sign :
public Request
78 Sign(DialogUsageManager& dum, RemoteCertStore* store, std::shared_ptr<SipMessage> msg,
const Data& senderAor, DumFeature& feature);
79 Result received(
bool success,
MessageId::Type type,
const Data& aor,
const Data& data);
80 bool sign(Contents**,
bool* noCerts);
86 class Encrypt :
public Request
89 Encrypt(DialogUsageManager& dum, RemoteCertStore* store, std::shared_ptr<SipMessage> msg,
const Data& recipientAor, DumFeature& feature);
90 Result received(
bool success,
MessageId::Type type,
const Data& aor,
const Data& data);
91 bool encrypt(Contents**,
bool* noCerts);
97 class SignAndEncrypt :
public Request
100 SignAndEncrypt(DialogUsageManager& dum, RemoteCertStore* store, std::shared_ptr<SipMessage> msg,
const Data& senderAor,
const Data& recipientAor, DumFeature& feature);
101 Result received(
bool success,
MessageId::Type type,
const Data& aor,
const Data& data);
102 bool signAndEncrypt(Contents**,
bool* noCerts);
112 class Decrypt :
public Request
115 Decrypt(DialogUsageManager& dum, RemoteCertStore* store, SipMessage* msg, DumFeature& feature);
117 Result received(
bool success,
MessageId::Type type,
const Data& aor,
const Data& data);
118 bool decrypt(Helper::ContentsSecAttrs& csa);
119 const Mime& getOriginalContentsType()
const {
return mOriginalMsgContentsType; }
120 const Data& getOriginalContents()
const {
return mOriginalMsgContents; }
121 void handleInvalidContents();
122 Data getId()
const {
return mMsgToDecrypt->getTransactionId(); }
126 bool isSigned(
bool noDecryptionKey);
127 bool isEncryptedRecurse(Contents**);
128 bool isSignedRecurse(Contents**,
const Data& decryptorAor,
bool noDecryptionKey);
129 Helper::ContentsSecAttrs getContents(SipMessage* msg, Security& security,
bool noDecryption);
130 Contents* getContentsRecurse(Contents**, Security&,
bool, SecurityAttributes* attr);
131 InvalidContents* createInvalidContents(Contents*);
132 bool isMultipart(Contents*);
135 Data mOriginalMsgContents;
136 Mime mOriginalMsgContentsType;
138 SipMessage* mMsgToDecrypt;
142 std::unique_ptr<RemoteCertStore> mRemoteCertStore;
144 typedef std::list<Request*> RequestList;
145 RequestList mRequests;