What we are looking for is the development and delivery of a standalone C++ 14 code library, which has been QA tested to work, and which we can afterwards easily integrate into our existing C++ codebase.
For the first project I'm looking to integrate with DigiCert's two certificate platforms. The first platform provides client certificates, the other platform provides server certificates.
The DigiCert API covers many products and features, but for this project customer is just focusing on:
- Being able to connect to the DigiCert platforms using appropriate configurable account authentication information
- Being able to request the status of the account (exists, does not exist, activated products, vetted domains)
- Being able to request server certificates based on a generated CSR (the actual logic togenerate CSRs we already have so for code implementation purposes having a CSR is a given)
- Being able to request client certificates (Authentication and S/MIME) based on a generated CSR the actual logic to generate CSRs we already have so for code implementation purposes having a CSR is a given)
- Being able to add appropriate SAN information to the certificate order for both 3) and 4)
- Requested certificates for items 3 and 4 must be able to come from both a private CA and a public CA source of DigiCert
- Must be able to revoke issued certificates
- Being able to renew a certificate order when its (about to) expire (the logic trigger to renewis a given and does not need to be developed)
- Comes with a healthy set of unit tests, CxxTest is preferred
- The provided code works on Ubuntu 16.04 and Ubuntu 20.04
- Use libcurl for communication, boost::property_tree for XML serialization; the usage of other 3rd party libs should be agreed with customer team first
- A sample code of another parties API integration has been included, to show the standards to refer to while writing own code to be integrated to customer
- using exceptions for error handling
- using defensive programming (checking return values of C API, sanity checks for untrusted data etc)
- detailed error reporting
- It is also possible to work remote.