⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ismacryplib.c

📁 完整的RTP RTSP代码库
💻 C
📖 第 1 页 / 共 3 页
字号:
  err_status_t rc;#endif  ismacryp_rc_t irc;  ismacryp_session_t *sp;  // get sp by session ID  irc = findInSessionList (session, &sp);   if (irc != ismacryp_rc_ok)	return irc;  if (sp == NULL) {    fprintf(stdout, "Error. Try to uninit NULL session.\n");    return ismacryp_rc_sessid_error;  }#ifdef HAVE_SRTP  rc = err_status_ok;  rc=aes_icm_dealloc(sp->cp);#endif  return ismacryp_rc_ok;}//// init ismacryp lib//ismacryp_rc_t ismacrypInitLib (void){  return ismacryp_rc_ok;}//// init ismacryp session//ismacryp_rc_t ismacrypInitSession (ismacryp_session_id_t *session,                                   ismacryp_keytype_t keytype ){  ismacryp_session_t *sp = NULL;  ismacryp_rc_t  rc;  int len;  char *temp;  sp = malloc(sizeof(ismacryp_session_t));  if ( sp == NULL ) {     fprintf(stdout, "Init Session: %d malloc FAILED keytype %c\n", *session,                                                          ismacryp_keytypeStr[keytype][7]);     *session = 0;     return ismacryp_rc_memory_error;  }  memset(sp,0,sizeof(*sp));  // critical section  *session = session_g++;  // critical section  #if defined(ISMACRYP_ENC_DEBUG) || defined(ISMACRYP_DEC_DEBUG)  fprintf(stdout, "Init Session: %d with keytype %c\n", *session,                                                          ismacryp_keytypeStr[keytype][7]);  #endif // ISMACRYP_ENC_DEBUG || ISMACRYP_DEC_DEBUG   sp->sessid = *session;  sp->next = NULL;  sp->prev = NULL;  // load default keys from file  rc =  loadKeyFromFile(sp, keytype, 0);  if( rc != ismacryp_rc_ok ) {     fprintf(stdout, "Init Session: %d WARNING keytype %c default keys file\n",		*session, ismacryp_keytypeStr[keytype][7]);  }  sp->keycount      = 1;  sp->sample_count  = 0;  sp->BSO           = 0;  sp->IV_len        = ISMACRYP_DEFAULT_IV_LENGTH;  sp->deltaIV_len   = ISMACRYP_DEFAULT_DELTA_IV_LENGTH;  sp->key_type      = keytype;  sp->selective_enc = FALSE;  // store default kms_uri  len = strlen(KMS_URI_STR) + 1; // add 1 for null char  temp = malloc(len);   if ( temp == NULL ) {      fprintf(stderr, "save kms_uri: FAILED for session %d\n", *session);      *session = 0;      free (sp);      return ismacryp_rc_memory_error;  }  strncpy(temp, KMS_URI_STR, len);  sp->kms_uri = temp;  addToSessionList(sp);   #if defined(ISMACRYP_ENC_DEBUG) || defined(ISMACRYP_DEC_DEBUG)  printSessionList();  #endif // ISMACRYP_ENC_DEBUG || ISMACRYP_DEC_DEBUG  // init cipher context  return initSessionData(*session);}ismacryp_rc_t ismacrypEndSession (ismacryp_session_id_t session){  ismacryp_session_t *sp;    if( findInSessionList(session, &sp) ) {     fprintf(stderr, "\nEnd Session: %d FAILED\n", session);     return ismacryp_rc_sessid_error;  }  unInitSessionData(session);  removeFromSessionList(session);   #if defined(ISMACRYP_ENC_DEBUG) || defined(ISMACRYP_DEC_DEBUG)  printSessionList();  #endif // ISMACRYP_ENC_DEBUG || ISMACRYP_DEC_DEBUG  return ismacryp_rc_ok;}ismacryp_rc_t ismacrypSetScheme (ismacryp_session_id_t session,                                 ismacryp_scheme_t scheme){  return ismacryp_rc_ok;}ismacryp_rc_t ismacrypGetScheme (ismacryp_session_id_t session,                                 ismacryp_scheme_t *scheme){  *scheme = FOUR_CHAR_CODE(ISMACRYP_DEFAULT_SCHEME);  return ismacryp_rc_ok;}ismacryp_rc_t ismacrypSetSchemeVersion (ismacryp_session_id_t session,                                        ismacryp_schemeversion_t schemeversion){  return ismacryp_rc_ok;}ismacryp_rc_t ismacrypGetSchemeVersion (ismacryp_session_id_t session,                                        ismacryp_schemeversion_t *schemeversion){  *schemeversion = ISMACRYP_DEFAULT_SCHEME_VERSION;  return ismacryp_rc_ok;}//// unload current cipher if it exists, // load new cipher from file referenced by kms_uri//// save kms_uri associated with this session//ismacryp_rc_t ismacrypSetKMSUri (ismacryp_session_id_t session,                                 char *kms_uri ){  ismacryp_rc_t rc;  ismacryp_session_t *sp;  int len;  char *temp;  if (!session)     return ismacryp_rc_sessid_error;  // get sp by session ID  rc = findInSessionList (session, &sp);   if (rc != ismacryp_rc_ok)	return rc;  // deallocate current cipher  rc = unInitSessionData(session);  // load new key from file  rc = loadKeyFromFile (sp,	                      sp->key_type,	                      kms_uri);  // update cipher context  rc = initSessionData(session);  // store kms_uri  len = strlen(kms_uri) + 1; // add 1 for null char  temp = malloc(len);   if ( temp == NULL ) {      fprintf(stderr, "save kms_uri: FAILED for session %d\n", session);      return ismacryp_rc_memory_error;  }  strncpy(temp, kms_uri, len);  sp->kms_uri = temp;  #if defined(ISMACRYP_ENC_DEBUG) || defined(ISMACRYP_DEC_DEBUG)  printSessionList();  #endif // ISMACRYP_ENC_DEBUG || ISMACRYP_DEC_DEBUG  return rc;}////  retrieve kms_uri associated with this session// ismacryp_rc_t ismacrypGetKMSUri (ismacryp_session_id_t session,                                 const char **kms_uri ){ismacryp_session_t *sp;int len;char *temp;ismacryp_rc_t rc;  // get sp from session  if (!session)     return ismacryp_rc_sessid_error;  // get sp by session ID  rc = findInSessionList (session, &sp);   if (rc != ismacryp_rc_ok)	return rc;  len = strlen(sp->kms_uri);   temp = malloc(len);   if ( temp == NULL ) {      fprintf(stderr, "get kms uri: FAILED for session %d\n", session);      return ismacryp_rc_memory_error;  }  strncpy(temp, sp->kms_uri, len);  *kms_uri = temp;  return ismacryp_rc_ok;}ismacryp_rc_t ismacrypSetSelectiveEncryption (ismacryp_session_id_t session,                                              uint8_t selective_is_on ){  ismacryp_session_t *sp;  if (findInSessionList(session, &sp)) {     fprintf(stderr, "\nFailed to set selective encryption. Unknown session %d\n", session);     return ismacryp_rc_sessid_error;  }  sp->selective_enc = selective_is_on;  return ismacryp_rc_ok;}ismacryp_rc_t ismacrypGetSelectiveEncryption (ismacryp_session_id_t session,                                              uint8_t *selective_is_on ){  ismacryp_session_t *sp;  if (findInSessionList(session, &sp)) {    fprintf(stderr, "\nFailed to get selective encryption. Unknown session %d\n", session);    return ismacryp_rc_sessid_error;  }  *selective_is_on = sp->selective_enc;  return ismacryp_rc_ok;}ismacryp_rc_t ismacrypSetKeyIndicatorLength (ismacryp_session_id_t session,                                              uint8_t key_indicator_len){  return ismacryp_rc_ok;}ismacryp_rc_t ismacrypGetKeyIndicatorLength (ismacryp_session_id_t session,                                              uint8_t *key_indicator_len){  *key_indicator_len = ISMACRYP_DEFAULT_KEYINDICATOR_LENGTH;  return ismacryp_rc_ok;}ismacryp_rc_t ismacrypGetKeyIndPerAU (ismacryp_session_id_t session,                                      uint8_t *key_ind_per_au){  *key_ind_per_au = ISMACRYP_DEFAULT_KEYINDICATOR_PER_AU;  return ismacryp_rc_ok;}ismacryp_rc_t ismacrypGetKeyCount (ismacryp_session_id_t session,                                   uint8_t *keycount){  ismacryp_session_t *sp;  if (findInSessionList(session, &sp)) {    fprintf(stderr, "\nFailed to get key count. Unknown session %d\n", session);    return ismacryp_rc_sessid_error;  }  *keycount = sp->keycount;  return ismacryp_rc_ok;}////	This API copies key and salt to malloc buffer.//      the key and salt pointers are updated to // 	point at the malloc buffers. the application// 	must free these buffers when no longer needed.// ismacryp_rc_t ismacrypGetKey (ismacryp_session_id_t session,                              uint8_t key_num,                              uint8_t *key_len,                              uint8_t *salt_len,                              uint8_t **key,                              uint8_t **salt,                              uint8_t *lifetime_exp){   int i;  ismacryp_session_t *sp;  uint8_t *tempk, *temps;  // only support one key for now so key_num is irrelevant  if (findInSessionList(session, &sp)) {    fprintf(stderr, "\nFailed to get key. Unknown session %d\n", session);    return ismacryp_rc_sessid_error;  }  *key_len      = AES_KEY_LEN;  *salt_len     = AES_SALT_LEN;  *lifetime_exp = ISMACRYP_DEFAULT_KEY_LIFETIME_EXP;  tempk = (uint8_t *) malloc((size_t) *key_len);  temps = (uint8_t *) malloc((size_t) *salt_len);     if ( tempk == NULL || temps == NULL ) {     CHECK_AND_FREE(tempk);     CHECK_AND_FREE(temps);     fprintf(stdout, "\nFailed to get key mem error. Session %d\n", session);     return ismacryp_rc_memory_error;  }  for (i=0; i<*key_len; i++ ) {    tempk[i] = sp->kk.ksc.key[i];  }  *key = tempk;  for (i=0; i<*salt_len; i++ ) {    temps[i] = sp->kk.ksc.salt[i];  }  *salt = temps;  return ismacryp_rc_ok;}                            ////	This API has the same invocation signature//	as ismacrypGetKey, but instead of making//	copies of key and salt to malloc buffers,//	this API instead updates key and salt pointers to the //	live key and salt buffers.  The application must NOT //	attempt to free the key and salt pointers!// ismacryp_rc_t ismacrypGetKey2 (ismacryp_session_id_t session,                              uint8_t key_num,                              uint8_t *key_len,                              uint8_t *salt_len,                              uint8_t **key,                              uint8_t **salt,                              uint8_t *lifetime_exp){   ismacryp_session_t *sp;  // only support one key for now so key_num is irrelevant  if (findInSessionList(session, &sp)) {    fprintf(stderr, "\nFailed to get key. Unknown session %d\n", session);    return ismacryp_rc_sessid_error;  }  *key_len      = AES_KEY_LEN;  *salt_len     = AES_SALT_LEN;  *lifetime_exp = ISMACRYP_DEFAULT_KEY_LIFETIME_EXP;  *key = sp->kk.ksc.key;  *salt = sp->kk.ksc.salt;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -