+static int
+_buildConfigurationSpecificSessionCacheKey(SSLContext *myCtx, SSLBuffer *sessionKey, SSLBuffer *outputBuffer)
+{
+ SSLBuffer configurationBuffer;
+ configurationBuffer.data = NULL;
+ configurationBuffer.length = 0;
+ int err = SSLGetSessionConfigurationIdentifier(myCtx, &configurationBuffer);
+ if (err != errSecSuccess) {
+ return err;
+ }
+
+ outputBuffer->length = configurationBuffer.length + sessionKey->length;
+ outputBuffer->data = (uint8_t *) malloc(outputBuffer->length);
+ if (outputBuffer->data == NULL) {
+ free(configurationBuffer.data);
+ return errSecAllocate;
+ }
+
+ memcpy(outputBuffer->data, configurationBuffer.data, configurationBuffer.length);
+ memcpy(outputBuffer->data + configurationBuffer.length, sessionKey->data, sessionKey->length);
+
+ free(configurationBuffer.data);
+
+ return errSecSuccess;
+}
+