proxygen
OpenSSLPortabilityTest.cpp File Reference
#include <ctime>
#include <folly/portability/GTest.h>
#include <folly/ssl/OpenSSLPtrTypes.h>

Go to the source code of this file.

Functions

 TEST (OpenSSLPortabilityTest, TestRSASetter)
 
 TEST (OpenSSLPortabilityTest, TestEcdsaSigPortability)
 
 TEST (OpenSSLPortabilityTest, TestX509RevokedApi)
 

Function Documentation

TEST ( OpenSSLPortabilityTest  ,
TestRSASetter   
)

Definition at line 26 of file OpenSSLPortabilityTest.cpp.

References EXPECT_FALSE, EXPECT_TRUE, and folly::portability::ssl::RSA_set0_key().

26  {
27  RsaUniquePtr r(RSA_new());
28  BIGNUM* n = BN_new();
29  BIGNUM* e = BN_new();
30  BIGNUM* d = BN_new();
31  BIGNUM* n_actual;
32  BIGNUM* e_actual;
33  BIGNUM* d_actual;
34  EXPECT_TRUE(BN_set_bit(n, 1));
35  EXPECT_TRUE(BN_set_bit(e, 3));
36  EXPECT_TRUE(BN_set_bit(d, 2));
37  RSA_set0_key(r.get(), n, e, d);
38  RSA_get0_key(
39  r.get(),
40  (const BIGNUM**)&n_actual,
41  (const BIGNUM**)&e_actual,
42  (const BIGNUM**)&d_actual);
43  // BN_cmp returns 0 if the two BIGNUMs are equal
44  EXPECT_FALSE(BN_cmp(n, n_actual));
45  EXPECT_FALSE(BN_cmp(e, e_actual));
46  EXPECT_FALSE(BN_cmp(d, d_actual));
47 
48  RsaUniquePtr public_key(RSA_new());
49  BIGNUM* n_public = BN_new();
50  BIGNUM* e_public = BN_new();
51  EXPECT_TRUE(BN_set_bit(n_public, 1));
52  EXPECT_TRUE(BN_set_bit(e_public, 3));
53  RSA_set0_key(public_key.get(), n_public, e_public, nullptr);
54  BIGNUM* n_public_actual;
55  BIGNUM* e_public_actual;
56  RSA_get0_key(
57  public_key.get(),
58  (const BIGNUM**)&n_public_actual,
59  (const BIGNUM**)&e_public_actual,
60  nullptr);
61  EXPECT_FALSE(BN_cmp(n_public, n_public_actual));
62  EXPECT_FALSE(BN_cmp(e_public, e_public_actual));
63 }
bool RSA_set0_key(RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d)
Definition: OpenSSL.cpp:353
std::unique_ptr< RSA, RsaDeleter > RsaUniquePtr
#define EXPECT_TRUE(condition)
Definition: gtest.h:1859
#define EXPECT_FALSE(condition)
Definition: gtest.h:1862
TEST ( OpenSSLPortabilityTest  ,
TestEcdsaSigPortability   
)

Definition at line 65 of file OpenSSLPortabilityTest.cpp.

References folly::portability::ssl::ECDSA_SIG_get0(), folly::portability::ssl::ECDSA_SIG_set0(), EXPECT_FALSE, EXPECT_TRUE, and s.

65  {
66  EcdsaSigUniquePtr ecdsa(ECDSA_SIG_new());
67  BIGNUM* r = BN_new();
68  BIGNUM* s = BN_new();
69  BIGNUM* r_actual;
70  BIGNUM* s_actual;
71  EXPECT_TRUE(BN_set_bit(r, 1));
72  EXPECT_TRUE(BN_set_bit(s, 2));
73  EXPECT_TRUE(ECDSA_SIG_set0(ecdsa.get(), r, s));
75  ecdsa.get(), (const BIGNUM**)&r_actual, (const BIGNUM**)&s_actual);
76  // BN_cmp returns 0 if the two BIGNUMs are equal
77  EXPECT_FALSE(BN_cmp(r, r_actual));
78  EXPECT_FALSE(BN_cmp(s, s_actual));
79 }
void ECDSA_SIG_get0(const ECDSA_SIG *sig, const BIGNUM **pr, const BIGNUM **ps)
Definition: OpenSSL.cpp:417
std::unique_ptr< ECDSA_SIG, EcdsaSigDeleter > EcdsaSigUniquePtr
int ECDSA_SIG_set0(ECDSA_SIG *sig, BIGNUM *r, BIGNUM *s)
Definition: OpenSSL.cpp:405
#define EXPECT_TRUE(condition)
Definition: gtest.h:1859
static set< string > s
#define EXPECT_FALSE(condition)
Definition: gtest.h:1862
TEST ( OpenSSLPortabilityTest  ,
TestX509RevokedApi   
)

Definition at line 81 of file OpenSSLPortabilityTest.cpp.

References EXPECT_EQ, folly::pushmi::detail::t, folly::detail::distributed_mutex::time(), folly::portability::ssl::X509_REVOKED_get0_revocationDate(), and folly::portability::ssl::X509_REVOKED_get0_serialNumber().

81  {
82  X509_REVOKED* rev = X509_REVOKED_new();
83 
84  ASN1_INTEGER* serial = ASN1_INTEGER_new();
85  ASN1_INTEGER_set(serial, 1234L);
86 
87  ASN1_TIME* revocation_date = ASN1_TIME_new();
88  time_t t = time(nullptr);
89  ASN1_TIME_set(revocation_date, t);
90 
91  X509_REVOKED_set_serialNumber(rev, serial);
92  X509_REVOKED_set_revocationDate(rev, revocation_date);
93 
94  const ASN1_INTEGER* retrieved_serial = X509_REVOKED_get0_serialNumber(rev);
95  const ASN1_TIME* retrieved_date = X509_REVOKED_get0_revocationDate(rev);
96 
97  EXPECT_EQ(0, ASN1_INTEGER_cmp(serial, retrieved_serial));
98 
99 #if FOLLY_HAVE_OPENSSL_ASN1_TIME_DIFF
100  int diff_days;
101  int diff_secs;
102  ASN1_TIME_diff(&diff_days, &diff_secs, revocation_date, retrieved_date);
103  EXPECT_EQ(0, diff_days);
104  EXPECT_EQ(0, diff_secs);
105 #else
106  (void)revocation_date;
107  (void)retrieved_date;
108 #endif
109 
110  ASN1_INTEGER_free(serial);
111  ASN1_TIME_free(revocation_date);
112  X509_REVOKED_free(rev);
113 }
#define EXPECT_EQ(val1, val2)
Definition: gtest.h:1922
const ASN1_INTEGER * X509_REVOKED_get0_serialNumber(const X509_REVOKED *r)
Definition: OpenSSL.cpp:463
const ASN1_TIME * X509_REVOKED_get0_revocationDate(const X509_REVOKED *r)
Definition: OpenSSL.cpp:467
std::chrono::nanoseconds time()