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

static int select_rsa_key_for_answer ( ipmsg_cap_t  peer_cap,
ipmsg_cap_t selected_key,
const int  speed 
) [static]

IPMSG_ANSPUBKEYコマンドで返却するRSA鍵種別を算出する

Parameters:
[in] peer_cap ピアの暗号化能力
[out] selected_key ピアに返却するRSA鍵種別(使用可能なRSA公開鍵 暗号化能力IDの論理和)を格納する領域.
[in] speed 速度優先度選択を行う指示を指定する. 真の場合, 処理速度優先で選択する. 偽の場合, 暗号強度優先で選択する.
Return values:
0 正常終了
-EINVAL 引数異常(不正な暗号化能力IDを指定したか, rsaがNULLである).
-ENOENT 使用可能な鍵が見付からなかった.
Attention:
内部リンケージ

Definition at line 860 of file pubcrypt.c.

References get_asymkey_part, and key2ipmsg_key_type.

Referenced by pcrypt_crypt_generate_anspubkey_string().

                     {
      ipmsg_cap_t   candidates = 0;
      int                    i = 0;
      int            added_num = 1;
      int                first = 0;
      int             key_type = 0;

      if (selected_key == NULL)
            return -EINVAL;

      candidates = 
            (get_asymkey_part(peer_cap) & hostinfo_get_ipmsg_crypt_capability() );

      if (speed) {
            first = RSA_KEY_MAX - 1;
            added_num = -1;
      }

      for (i = first;
           ((i >= 0) && 
             (i < RSA_KEY_MAX) && (!(key2ipmsg_key_type[i] & candidates) ) );
           i += added_num);

      if ( !( (i >= 0) && (i < RSA_KEY_MAX) ) )
            return -ENOENT;

      *selected_key = key2ipmsg_key_type[i];
      
      dbg_out("Selected key name in ipmsg:0x%x\n", key2ipmsg_key_type[i]);
      
      return 0;
}


Generated by  Doxygen 1.6.0   Back to index