Logo Search packages:      
Sourcecode: g2ipmsg version File versions  Download package

int select_signature ( const ipmsg_cap_t  peer_cap,
ipmsg_cap_t selected_algo,
const int  speed 
)

通信に使用する署名を選択する.

Parameters:
[in] peer_cap ピアの公開鍵暗号化能力ID
[out] selected_algo 署名に使用するアルゴリズム 暗号化能力IDの論理和)を格納する領域.
[in] speed 速度優先で選択を行う指示を指定する.
  • 真の場合, 処理速度優先で選択する.
  • 偽の場合, 暗号強度優先で選択する.
Return values:
0 正常終了
-EINVAL selected_algoがNULLである.
-ENOENT 使用可能な署名が無い.

Definition at line 2250 of file pubcrypt.c.

References SIGN_CAPS.

Referenced by ipmsg_encrypt_message(), and pcrypt_crypt_generate_anspubkey_string().

                     {
      int                  rc = 0;
      ipmsg_cap_t   candidate = 0;

      if (selected_algo == NULL)
            return -EINVAL;

      if ( !(peer_cap & SIGN_CAPS) )
            return -ENOENT;

       /*
      * 速度が早い順に探査し, 速度優先の場合は, 見つかったところでぬける
      * 下記の処理は, 処理速度順で判定を配置していくこと.
      */

      rc = 0; /* 正常終了を仮定  */

      

      if (peer_cap & IPMSG_SIGN_MD5) { /* MD5 */
            candidate = IPMSG_SIGN_MD5;
            if (speed)
              goto selected_out;  
      }

      if (peer_cap & IPMSG_SIGN_SHA1) { /* SHA1 */
            candidate = IPMSG_SIGN_SHA1;
            if (speed)
                  goto selected_out;  
      } 

      if (candidate == 0) {
            /* 上記でチェックしているので, ここには来ない */
            g_assert_not_reached(); 
            goto error_out;  /* 見つからなかった  */
      }

selected_out:
      *selected_algo = candidate;

error_out:
      return rc;
}


Generated by  Doxygen 1.6.0   Back to index