32 #include <gtest/gtest.h>
55 using std::shared_ptr;
56 using std::stringstream;
60 struct DerCertTest :
public testing::Test
67 auto sd = getenv(
"TEST_SRCDIR");
68 auto wd = getenv(
"TEST_WORKSPACE");
74 dir << sd <<
"/" << wd <<
"/crypto/unittest/openssl/";
84 static shared_ptr<PemDocument> pem_doc()
90 static shared_ptr<DerDocument> der_doc()
96 void parse(shared_ptr<PemDocument> doc,
const string& name)
98 string infile = reldir+
name;
99 cout <<
"opening " << infile << endl;
101 ASSERT_TRUE(f.is_open());
102 ASSERT_NO_THROW(doc->parse(f));
103 cout <<
"***** PEM " << infile <<
" label=" << doc->label() <<
" chars=" << doc->chars_per_line() <<
":" << endl;
104 cout << *doc << endl;
107 void parse(shared_ptr<DerDocument> doc,
const string& name)
109 string infile = reldir+
name;
110 cout <<
"opening " << infile << endl;
112 ASSERT_TRUE(f.is_open());
113 ASSERT_NO_THROW(doc->parse(f));
114 cout <<
"***** DER " << infile <<
":" << endl;
115 cout << *doc << endl;
119 TEST_F(DerCertTest, rsapriv)
121 auto pem = pem_doc();
122 parse(pem,
"rsapriv.pem");
123 auto der = der_doc();
124 parse(der,
"rsapriv.crt");
125 ASSERT_TRUE(pem->equal(*der));
128 TEST_F(DerCertTest, rsapub)
130 auto pem = pem_doc();
131 parse(pem,
"rsapub.pem");
132 auto der = der_doc();
133 parse(der,
"rsapub.crt");
134 ASSERT_TRUE(pem->equal(*der));
137 TEST_F(DerCertTest, rsacert)
139 auto pem = pem_doc();
140 parse(pem,
"rsacert.pem");
141 auto der = der_doc();
142 parse(der,
"rsacert.crt");
143 ASSERT_TRUE(pem->equal(*der));
146 TEST_F(DerCertTest, ecpriv)
148 auto pem = pem_doc();
149 parse(pem,
"ecpriv.pem");
152 TEST_F(DerCertTest, ecpub)
154 auto pem = pem_doc();
155 parse(pem,
"ecpub.pem");
158 TEST_F(DerCertTest, eccert)
160 auto pem = pem_doc();
161 parse(pem,
"eccert.pem");
164 TEST_F(DerCertTest, rsacert_dumptest)
166 auto pem = pem_doc();
167 parse(pem,
"rsacert.pem");
170 cout <<
"**** NEW CERT:" << endl;
171 cout << outs.str() << endl;
173 auto newpem = pem_doc();
174 ASSERT_NO_THROW(newpem->parse(outs));
175 ASSERT_EQ(pem->chars_per_line(), newpem->chars_per_line());
176 ASSERT_EQ(pem->label(), newpem->label());
177 ASSERT_TRUE(pem->equal(*newpem));
PEM formatted DER document.
Distinguished encoding rules (DER).