libcryptosec
CertificateBuilder.h
Go to the documentation of this file.
1 #ifndef CERTIFICATEBUILDER_H_
2 #define CERTIFICATEBUILDER_H_
3 
4 #include <openssl/x509.h>
5 #include <openssl/x509v3.h>
6 
7 #include <vector>
8 #include <string>
9 
10 #include <libcryptosec/ByteArray.h>
11 #include <libcryptosec/DateTime.h>
14 #include <libcryptosec/PublicKey.h>
15 
16 #include "Certificate.h"
17 #include "CertificateRequest.h"
18 #include "Extension.h"
19 #include "KeyUsageExtension.h"
29 
33 
35 {
36 public:
38  CertificateBuilder(std::string pemEncoded)
39  throw (EncodeException);
40  CertificateBuilder(ByteArray &derEncoded)
41  throw (EncodeException);
44  virtual ~CertificateBuilder();
45  std::string getPemEncoded() throw (EncodeException);
52  std::string getXmlEncoded();
53  std::string getXmlEncoded(std::string tab);
54  virtual std::string toXml(std::string tab = "");
55  void setSerialNumber(long serial);
59  void setSerialNumber(BigInteger serial) throw (BigIntegerException);
63  void setPublicKey(PublicKey &publicKey);
66  void setVersion(long version);
67  long getVersion() throw (CertificationException);
68  void setNotBefore(DateTime &dateTime);
70  void setNotAfter(DateTime &dateTime);
72 
79  void setIssuer(RDNSequence &name);
80 
87  void setIssuer(X509* issuer) throw (CertificationException);
88 
90 
98 
105  void setSubject(RDNSequence &name);
106 
113  void setSubject(X509_REQ* req) throw (CertificationException);
115  void addExtension(Extension &extension) throw (CertificationException);
116  void addExtensions(std::vector<Extension *> &extensions)
117  throw (CertificationException);
118  void replaceExtension(Extension &extension)
119  throw (CertificationException);
120  std::vector<Extension *> removeExtension(Extension::Name extensionName) throw (CertificationException);
121  std::vector<Extension *> removeExtension(ObjectIdentifier extOID) throw (CertificationException);
122  std::vector<Extension*> getExtension(Extension::Name extensionName);
123  std::vector<Extension*> getExtensions();
124  std::vector<Extension *> getUnknownExtensions();
125  Certificate* sign(PrivateKey &privateKey, MessageDigest::Algorithm messageDigestAlgorithm)
127  X509* getX509() const;
129  bool isIncludeEcdsaParameters() const;
131  void includeEcdsaParameters();
132 
133 protected:
134  X509 *cert;
136 
137 private:
138  int getCodification(RDNSequence& name);
139 
140 
141 };
142 
143 #endif /*CERTIFICATEBUILDER_H_*/
bool isIncludeEcdsaParameters() const
Definition: CertificateBuilder.cpp:1110
std::vector< Extension * > getExtensions()
Definition: CertificateBuilder.cpp:862
long getSerialNumber()
Definition: CertificateBuilder.cpp:431
Classe usada para representar números grandes. A limitação do tamanho do número depende da memória di...
Definition: BigInteger.h:23
Definition: MessageDigestException.h:6
Implementa a representação da data. É utilizada em certificados, LCRs. Utiliza o formato epoch (time_...
Definition: DateTime.h:27
Definition: PublicKey.h:19
Definition: RDNSequence.h:17
void setIncludeEcdsaParameters(bool includeEcdsaParameters)
Definition: CertificateBuilder.cpp:1114
ByteArray getDerEncoded()
Definition: CertificateBuilder.cpp:393
RDNSequence getSubject()
Definition: CertificateBuilder.cpp:747
CertificateBuilder & operator=(const CertificateBuilder &value)
Definition: CertificateBuilder.cpp:1099
BigInteger getSerialNumberBigInt()
Definition: CertificateBuilder.cpp:453
void alterSubject(RDNSequence &name)
Definition: CertificateBuilder.cpp:597
PublicKey * getPublicKey()
Definition: CertificateBuilder.cpp:482
Algorithm
Definition: MessageDigest.h:29
X509 * getX509() const
Definition: CertificateBuilder.cpp:1094
void setSerialNumber(long serial)
Definition: CertificateBuilder.cpp:421
std::vector< Extension * > getUnknownExtensions()
Definition: CertificateBuilder.cpp:916
std::string getXmlEncoded()
Definition: CertificateBuilder.cpp:115
Definition: CertificationException.h:6
ByteArray getPublicKeyInfo()
Definition: CertificateBuilder.cpp:504
void includeEcdsaParameters()
Definition: CertificateBuilder.cpp:1118
Definition: ObjectIdentifier.h:11
std::string getPemEncoded()
Definition: CertificateBuilder.cpp:362
Classe usada para transportar dados binários pelo sistema. Pode ser usada para conversão de texto em ...
Definition: ByteArray.h:24
Definition: CertificateBuilder.h:34
Definition: AsymmetricKeyException.h:6
void setVersion(long version)
Definition: CertificateBuilder.cpp:521
RDNSequence getIssuer()
Definition: CertificateBuilder.cpp:592
long getVersion()
Definition: CertificateBuilder.cpp:526
Definition: PrivateKey.h:21
void setPublicKey(PublicKey &publicKey)
Definition: CertificateBuilder.cpp:477
std::vector< Extension * > getExtension(Extension::Name extensionName)
Definition: CertificateBuilder.cpp:805
X509 * cert
Definition: CertificateBuilder.h:134
Definition: Extension.h:14
Definition: EncodeException.h:8
DateTime getNotBefore()
Definition: CertificateBuilder.cpp:550
Definition: BigIntegerException.h:7
Definition: CertificateRequest.h:29
Name
Definition: Extension.h:17
void setNotBefore(DateTime &dateTime)
Definition: CertificateBuilder.cpp:542
MessageDigest::Algorithm getMessageDigestAlgorithm()
Definition: CertificateBuilder.cpp:469
void addExtensions(std::vector< Extension *> &extensions)
Definition: CertificateBuilder.cpp:765
bool includeECDSAParameters
Definition: CertificateBuilder.h:135
void replaceExtension(Extension &extension)
Definition: CertificateBuilder.cpp:782
void addExtension(Extension &extension)
Definition: CertificateBuilder.cpp:752
std::vector< Extension * > removeExtension(Extension::Name extensionName)
Definition: CertificateBuilder.cpp:938
Certificate * sign(PrivateKey &privateKey, MessageDigest::Algorithm messageDigestAlgorithm)
Definition: CertificateBuilder.cpp:1073
void setNotAfter(DateTime &dateTime)
Definition: CertificateBuilder.cpp:557
DateTime getNotAfter()
Definition: CertificateBuilder.cpp:565
void setSubject(RDNSequence &name)
Definition: CertificateBuilder.cpp:727
virtual std::string toXml(std::string tab="")
Definition: CertificateBuilder.cpp:244
Definition: Certificate.h:38
virtual ~CertificateBuilder()
Definition: CertificateBuilder.cpp:109
CertificateBuilder()
Definition: CertificateBuilder.cpp:3
void setIssuer(RDNSequence &name)
Definition: CertificateBuilder.cpp:572