add SetIssuer and SetSubject from buffers

pull/1/head v2.0rc2b
Todd A Ouska 2011-08-22 15:32:04 -07:00
parent 99539f9f2f
commit e11fd002ce
2 changed files with 36 additions and 13 deletions

View File

@ -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,

View File

@ -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)
@ -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 /* NO_FILESYSTEM */
#endif /* CYASSL_CERT_GEN */