aboutsummaryrefslogtreecommitdiffstats
path: root/libparc/parc/security/parc_CertificateFactory.c
diff options
context:
space:
mode:
Diffstat (limited to 'libparc/parc/security/parc_CertificateFactory.c')
-rw-r--r--libparc/parc/security/parc_CertificateFactory.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/libparc/parc/security/parc_CertificateFactory.c b/libparc/parc/security/parc_CertificateFactory.c
index 3825ae04..3a758c53 100644
--- a/libparc/parc/security/parc_CertificateFactory.c
+++ b/libparc/parc/security/parc_CertificateFactory.c
@@ -78,10 +78,20 @@ parcCertificateFactory_CreateCertificateFromBuffer(PARCCertificateFactory *facto
PARCCertificate *
parcCertificateFactory_CreateSelfSignedCertificate(PARCCertificateFactory *factory, PARCBuffer **privateKey,
- char *subjectName, size_t keyLength, size_t valdityDays)
+ char *subjectName, PARCSigningAlgorithm signAlgo,
+ size_t keyLength, size_t valdityDays)
{
if (factory->type == PARCCertificateType_X509 && factory->encoding == PARCContainerEncoding_DER) {
- PARCX509Certificate *certificate = parcX509Certificate_CreateSelfSignedCertificate(privateKey, subjectName, (int) keyLength, valdityDays);
+ PARCX509Certificate *certificate = NULL;
+ switch (signAlgo)
+ {
+ case PARCSigningAlgorithm_RSA:
+ certificate = parcX509Certificate_CreateSelfSignedCertificate(privateKey, subjectName, (int) keyLength, valdityDays, PARCKeyType_RSA);
+ break;
+ case PARCSigningAlgorithm_ECDSA:
+ certificate = parcX509Certificate_CreateSelfSignedCertificate(privateKey, subjectName, (int) keyLength, valdityDays, PARCKeyType_EC);
+ break;
+ }
// This may fail.
if (certificate == NULL) {