[haiku-commits] haiku: hrev49788 - src/kits/network/libnetapi headers/os/net

  • From: pulkomandy@xxxxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sun, 8 Nov 2015 23:49:08 +0100 (CET)

hrev49788 adds 1 changeset to branch 'master'
old head: ba307a12db6daf4930149a3e86dccb72a7b7d392
new head: 6c32f50a645c8bbb774ae2cd4f38779dd91c1d2e
overview:
http://cgit.haiku-os.org/haiku/log/?qt=range&q=6c32f50a645c+%5Eba307a12db6d

----------------------------------------------------------------------------

6c32f50a645c: BCertificate: fixup the API

* Add an operator== and a copy constructor
* Make the getters const so they are easier to use

[ Adrien Destugues <pulkomandy@xxxxxxxxxxxxx> ]

----------------------------------------------------------------------------

Revision: hrev49788
Commit: 6c32f50a645c8bbb774ae2cd4f38779dd91c1d2e
URL: http://cgit.haiku-os.org/haiku/commit/?id=6c32f50a645c
Author: Adrien Destugues <pulkomandy@xxxxxxxxxxxxx>
Date: Sun Nov 8 22:43:38 2015 UTC

----------------------------------------------------------------------------

3 files changed, 61 insertions(+), 30 deletions(-)
headers/os/net/Certificate.h | 24 ++++----
src/kits/network/libnetapi/Certificate.cpp | 66 +++++++++++++++------
src/kits/network/libnetapi/CertificatePrivate.h | 1 +

----------------------------------------------------------------------------

diff --git a/headers/os/net/Certificate.h b/headers/os/net/Certificate.h
index 7be21b3..fe06452 100644
--- a/headers/os/net/Certificate.h
+++ b/headers/os/net/Certificate.h
@@ -12,30 +12,30 @@

class BCertificate {
public:
+ BCertificate(const BCertificate& other);
~BCertificate();

- int Version();
+ int Version() const;
+
+ time_t StartDate() const;
+ time_t ExpirationDate() const;

- time_t StartDate();
- time_t ExpirationDate();
+ bool IsValidAuthority() const;
+ bool IsSelfSigned() const;

- bool IsValidAuthority();
- bool IsSelfSigned();
+ BString Issuer() const;
+ BString Subject() const;
+ BString SignatureAlgorithm() const;

- BString Issuer();
- BString Subject();
- BString SignatureAlgorithm();
+ BString String() const;

- BString String();
+ bool operator==(const BCertificate& other);

private:
friend class BSecureSocket::Private;
class Private;
BCertificate(Private* data);

- BCertificate(const BCertificate& other);
- // copy-construction not allowed
-
Private* fPrivate;
};

diff --git a/src/kits/network/libnetapi/Certificate.cpp
b/src/kits/network/libnetapi/Certificate.cpp
index 290a9bb..f82decf 100644
--- a/src/kits/network/libnetapi/Certificate.cpp
+++ b/src/kits/network/libnetapi/Certificate.cpp
@@ -58,6 +58,12 @@ BCertificate::BCertificate(Private* data)
}


+BCertificate::BCertificate(const BCertificate& other)
+{
+ fPrivate = new<std::nothrow>BCertificate::Private(other.fPrivate);
+}
+
+
BCertificate::~BCertificate()
{
delete fPrivate;
@@ -65,42 +71,42 @@ BCertificate::~BCertificate()


int
-BCertificate::Version()
+BCertificate::Version() const
{
return X509_get_version(fPrivate->fX509) + 1;
}


time_t
-BCertificate::StartDate()
+BCertificate::StartDate() const
{
return parse_ASN1(X509_get_notBefore(fPrivate->fX509));
}


time_t
-BCertificate::ExpirationDate()
+BCertificate::ExpirationDate() const
{
return parse_ASN1(X509_get_notAfter(fPrivate->fX509));
}


bool
-BCertificate::IsValidAuthority()
+BCertificate::IsValidAuthority() const
{
return X509_check_ca(fPrivate->fX509) > 0;
}


bool
-BCertificate::IsSelfSigned()
+BCertificate::IsSelfSigned() const
{
return X509_check_issued(fPrivate->fX509, fPrivate->fX509) == X509_V_OK;
}


BString
-BCertificate::Issuer()
+BCertificate::Issuer() const
{
X509_NAME* name = X509_get_issuer_name(fPrivate->fX509);
return decode_X509_NAME(name);
@@ -108,7 +114,7 @@ BCertificate::Issuer()


BString
-BCertificate::Subject()
+BCertificate::Subject() const
{
X509_NAME* name = X509_get_subject_name(fPrivate->fX509);
return decode_X509_NAME(name);
@@ -116,7 +122,7 @@ BCertificate::Subject()


BString
-BCertificate::SignatureAlgorithm()
+BCertificate::SignatureAlgorithm() const
{
int algorithmIdentifier = OBJ_obj2nid(
fPrivate->fX509->cert_info->key->algor->algorithm);
@@ -130,7 +136,7 @@ BCertificate::SignatureAlgorithm()


BString
-BCertificate::String()
+BCertificate::String() const
{
BIO *buffer = BIO_new(BIO_s_mem());
X509_print_ex(buffer, fPrivate->fX509, XN_FLAG_COMPAT,
X509_FLAG_COMPAT);
@@ -144,18 +150,36 @@ BCertificate::String()
}


+bool
+BCertificate::operator==(const BCertificate& other)
+{
+ return X509_cmp(fPrivate.fX509, other.fPrivate.fX509) == 0;
+}
+
+
// #pragma mark - BCertificate::Private


BCertificate::Private::Private(X509* data)
- : fX509(data)
+ : fX509(X509_dup(data))
+{
+}
+
+
+BCertificate::Private::~Private()
{
+ sk_X509_pop_free(chain, X509_free)
}


#else


+BCertificate::BCertificate(const BCertificate& other)
+{
+}
+
+
BCertificate::BCertificate(Private* data)
{
}
@@ -167,59 +191,65 @@ BCertificate::~BCertificate()


time_t
-BCertificate::StartDate()
+BCertificate::StartDate() const
{
return B_NOT_SUPPORTED;
}


time_t
-BCertificate::ExpirationDate()
+BCertificate::ExpirationDate() const
{
return B_NOT_SUPPORTED;
}


bool
-BCertificate::IsValidAuthority()
+BCertificate::IsValidAuthority() const
{
return false;
}


int
-BCertificate::Version()
+BCertificate::Version() const
{
return B_NOT_SUPPORTED;
}


BString
-BCertificate::Issuer()
+BCertificate::Issuer() const
{
return BString();
}


BString
-BCertificate::Subject()
+BCertificate::Subject() const
{
return BString();
}


BString
-BCertificate::SignatureAlgorithm()
+BCertificate::SignatureAlgorithm() const
{
return BString();
}


BString
-BCertificate::String()
+BCertificate::String() const
{
return BString();
}


+bool
+BCertificate::operator==(const BCertificate& other)
+{
+ return false;
+}
+
#endif
diff --git a/src/kits/network/libnetapi/CertificatePrivate.h
b/src/kits/network/libnetapi/CertificatePrivate.h
index d75495c..54e1301 100644
--- a/src/kits/network/libnetapi/CertificatePrivate.h
+++ b/src/kits/network/libnetapi/CertificatePrivate.h
@@ -13,6 +13,7 @@
class BCertificate::Private {
public:
Private(X509* data);
+ ~Private();

public:
X509* fX509;


Other related posts:

  • » [haiku-commits] haiku: hrev49788 - src/kits/network/libnetapi headers/os/net - pulkomandy