* Get the certificate sent by this peer
* @return The SSL certificate sent by the peer, NULL if no cert was sent
*/
- ssl_cert* GetCertificate() const
+ virtual ssl_cert* GetCertificate() const
{
- if (certificate && certificate->IsUsable())
- return certificate;
- return NULL;
+ return certificate;
}
/**
* @return The fingerprint of the SSL client certificate sent by the peer,
* empty if no cert was sent
*/
- std::string GetFingerprint() const
+ virtual std::string GetFingerprint() const
{
ssl_cert* cert = GetCertificate();
- if (cert)
+ if (cert && cert->IsUsable())
return cert->GetFingerprint();
return "";
}
*/
virtual ssl_cert* GetCertificate(User* user) = 0;
+ /** Set the SSL certificate of a user.
+ * @param user The user whose certificate to set.
+ * @param cert The SSL certificate to set for the user.
+ */
+ virtual void SetCertificate(User* user, ssl_cert* cert) = 0;
+
/** Get the key fingerprint from a user's certificate
* @param user The user whose key fingerprint to get, user may be remote
* @return The key fingerprint from the user's SSL certificate or an empty string