Skip to content

Commit

Permalink
add SetIssuer and SetSubject from buffers
Browse files Browse the repository at this point in the history
  • Loading branch information
toddouska committed Aug 22, 2011
1 parent 99539f9 commit e11fd00
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 13 deletions.
2 changes: 2 additions & 0 deletions ctaocrypt/include/ctc_asn_public.h
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,8 @@ CYASSL_API int MakeSelfCert(Cert*, byte* derBuffer, word32 derSz, RsaKey*,
RNG*);
CYASSL_API int SetIssuer(Cert*, const char*);
CYASSL_API int SetSubject(Cert*, const char*);
CYASSL_API int SetIssuerBuffer(Cert*, const byte*, int);
CYASSL_API int SetSubjectBuffer(Cert*, const byte*, int);

#ifdef HAVE_NTRU
CYASSL_API int MakeNtruCert(Cert*, byte* derBuffer, word32 derSz,
Expand Down
47 changes: 34 additions & 13 deletions ctaocrypt/src/asn.c
Original file line number Diff line number Diff line change
Expand Up @@ -3040,24 +3040,17 @@ int MakeSelfCert(Cert* cert, byte* buffer, word32 buffSz, RsaKey* key, RNG* rng)
}


/* forward from CyaSSL */
int CyaSSL_PemCertToDer(const char* fileName, unsigned char* derBuf, int derSz);

#ifndef NO_FILESYSTEM

static int SetNameFromCert(CertName* cn, const char* fromCertFile)
/* Set cn name from der buffer, return 0 on success */
static int SetNameFromCert(CertName* cn, const byte* der, int derSz)
{
DecodedCert decoded;
byte der[8192];
int derSz = CyaSSL_PemCertToDer(fromCertFile, der, sizeof(der));
int ret;
int sz;

if (derSz < 0)
return derSz;


InitDecodedCert(&decoded, der, derSz, 0);
InitDecodedCert(&decoded, (byte*)der, derSz, 0);
ret = ParseCertRelative(&decoded, CA_TYPE, NO_VERIFY, 0);

if (ret < 0)
Expand Down Expand Up @@ -3118,20 +3111,48 @@ static int SetNameFromCert(CertName* cn, const char* fromCertFile)
}


#ifndef NO_FILESYSTEM

/* forward from CyaSSL */
int CyaSSL_PemCertToDer(const char* fileName, unsigned char* derBuf, int derSz);

/* Set cert issuer from issuerFile in PEM */
int SetIssuer(Cert* cert, const char* issuerFile)
{
byte der[8192];
int derSz = CyaSSL_PemCertToDer(issuerFile, der, sizeof(der));

cert->selfSigned = 0;
return SetNameFromCert(&cert->issuer, issuerFile);
return SetNameFromCert(&cert->issuer, der, derSz);
}


/* Set cert subject from subjectFile in PEM */
int SetSubject(Cert* cert, const char* subjectFile)
{
return SetNameFromCert(&cert->subject, subjectFile);
}
byte der[8192];
int derSz = CyaSSL_PemCertToDer(subjectFile, der, sizeof(der));

return SetNameFromCert(&cert->subject, der, derSz);
}

#endif /* NO_FILESYSTEM */

/* Set cert issuer from DER buffer */
int SetIssuerBuffer(Cert* cert, const byte* der, int derSz)
{
cert->selfSigned = 0;
return SetNameFromCert(&cert->issuer, der, derSz);
}


/* Set cert subject from DER buffer */
int SetSubjectBuffer(Cert* cert, const byte* der, int derSz)
{
return SetNameFromCert(&cert->subject, der, derSz);
}


#endif /* CYASSL_CERT_GEN */


Expand Down

0 comments on commit e11fd00

Please sign in to comment.