HP-UX C SIP Stack Programmer's Guide (Novembery 2007)

316 HP-UX C SIP Stack Programmers Guide
SIP Stack and TLS
unsigned char *keyEnd = privKey;
RvInt privKeyLen = 0;
RvChar cert[STRING_SIZE] = {'\0'};
unsigned char *certEnd = cert;
RvInt certLen = 0;
RvSipTransportTlsEngineHandle hTlsServerEngine = NULL;
memset(&TlsEngineCfg,0,sizeof(TlsEngineCfg));
/*Loads the key for the server engine.*/
inKey=BIO_new(BIO_s_file_internal());
if (BIO_read_filename(inKey,SERVER_KEY_N_CERT_FILE) <= 0)
{
HandleErrorFunction("Cannot load key");
}
pkey=PEM_read_bio_PrivateKey(inKey,NULL,NULL,NULL);
privKeyLen = i2d_PrivateKey(pkey,NULL);
privKeyLen = i2d_PrivateKey(pkey,&keyEnd);
BIO_free(inKey);
/*Loads the certificate for the server engine.*/
inCert=BIO_new(BIO_s_file_internal());
if (BIO_read_filename(inCert,SERVER_KEY_N_CERT_FILE) <= 0)
{
HandleErrorFunction("Can not load certificate");
}
x509=PEM_read_bio_X509(inCert,NULL,NULL,NULL);
certLen = i2d_X509(x509,NULL);
certLen = i2d_X509(x509,&certEnd);
BIO_free(inCert);
/*Initializes the configuration structure for the server engine.*/
TlsEngineCfg.eTlsMethod = RVSIP_TRANSPORT_TLS_METHOD_TLS_V1;
TlsEngineCfg.strCert = cert;
TlsEngineCfg.certLen = certLen;
TlsEngineCfg.strPrivateKey = privKey;
TlsEngineCfg.privateKeyLen = privKeyLen;
TlsEngineCfg.ePrivateKeyType = RVSIP_TRANSPORT_PRIVATE_KEY_TYPE_RSA_KEY;
TlsEngineCfg.certDepth = 5;