Manpages

名 前

add_key − カ ー ネ ル の 鍵 管 理 機 能 に 鍵 を 追 加 す る

書 式

#include <keyutils.h>

key_serial_t add_key(const char *type, const char *description,
const void *
payload, size_t plen,
key_serial_t
keyring);

説 明

add_key() は 、 指 定 し た typedescription を 持 つ 鍵 の 作 成 、 更 新 を 行 う よ う に カ ー ネ ル に 指 示 し 、 長 さ plenpayload で 鍵 を 生 成 し 、 指 定 さ れ た keyring に そ の 鍵 を 追 加 し 、 鍵 リ ン グ の シ リ ア ル 番 号 を 返 す 。 鍵 タ イ プ に よ っ て は 、 フ ォ ー マ ッ ト が 違 っ て い た り 、 そ の 他 に も 無 効 な も の が あ る と 、 指 定 し た デ ー タ が 拒 否 さ れ る 場 合 も あ る 。 対 象 の keyring に 指 定 さ れ た typedescription に 合 致 す る 鍵 が す で に 含 ま れ る 場 合 、 鍵 タ イ プ が サ ポ ー ト し て い れ ば 、 新 し い 鍵 が 作 成 さ れ る の で は な く 、 そ の 鍵 が 更 新 さ れ る 。 鍵 タ イ プ が サ ポ ー ト し て い な い 場 合 、 新 し い 鍵 が 作 成 さ れ 、 鍵 リ ン グ の 現 在 の 鍵 の リ ン ク は こ の 鍵 で 置 き 換 え ら れ る 。 対 象 の keyring の シ リ ア ル 番 号 に は 、 呼 び 出 し 元 が 書 き 込 み 許 可 を 持 つ 有 効 な 鍵 リ ン グ の シ リ ア ル 番 号 か 、 以 下 の 特 別 な 鍵 リ ン グ ID を 指 定 す る 。
KEY_SPEC_THREAD_KEYRING
こ の 値 は 呼 び 出 し 元 ス レ ッ ド 固 有 の 鍵 リ ン グ を 指 定 す る 。
KEY_SPEC_PROCESS_KEYRING
こ の 値 は 呼 び 出 し 元 プ ロ セ ス 固 有 の 鍵 リ ン グ を 指 定 す る 。
KEY_SPEC_SESSION_KEYRING
こ の 値 は 呼 び 出 し 元 セ ッ シ ョ ン 固 有 の 鍵 リ ン グ を 指 定 す る 。
KEY_SPEC_USER_KEYRING
こ の 値 は 呼 び 出 し 元 の UID 固 有 の 鍵 リ ン グ を 指 定 す る 。
KEY_SPEC_USER_SESSION_KEYRING
こ の 値 は 呼 び 出 し 元 の UID の セ ッ シ ョ ン の 鍵 リ ン グ を 指 定 す る 。

鍵 タ イ プ

コ ア の 鍵 管 理 コ ー ド に は 様 々 な 鍵 タ イ プ が あ り 、 こ の 関 数 で こ れ ら を 指 定 す る こ と が で き る 。

“user” ユ ー ザ ー 定 義 の 鍵 タ イ プ の 鍵 に は 、 任 意 の デ ー タ の

blob を 入 れ る こ

と が で き 、 description に は 任 意 の 有 効 な 文 字 列 を 指 定 で き る が 、 鍵 が 対 象 と す る サ ー ビ ス を 表 す 文 字 列 と コ ロ ン を プ レ フ ィ ッ ク ス に 指 定 す る の が 推 奨 さ れ る 方 法 で あ る (例 え ば “afs:mykey”)。 こ の タ イ プ の 鍵 に は payload に 空 文 字 列 つ ま り NULL を 指 定 す る 。

“keyring” 鍵 リ ン グ は 、 任 意 の タ イ プ の 他 の 鍵 の 列 へ の リ ン ク を 保 持 で き る 特 別 な 鍵 タ イ プ で あ る 。 こ の イ ン タ ー フ ェ ー ス を 使 っ て 鍵 リ ン グ を 作 成 す る 場 合 、 payload に は NULL を 、 plen に は 0 を 指 定 し な け れ ば な ら な い 。

返 り 値

成 功 す る と add_key() は 、 作 成 ま た は 更 新 し た 鍵 の シ リ ア ル 番 号 を 返 す 。 エ ラ ー の 場 合 、 値 −1 が 返 さ れ errno に エ ラ ー を 示 す 値 が 設 定 さ れ る 。

エ ラ ー

ENOKEY 鍵 リ ン グ が 存 在 し な い 。

EKEYEXPIRED 鍵 リ ン グ が 期 限 切 れ で あ る 。
EKEYREVOKED
鍵 リ ン グ が 廃 止 さ れ て い る 。

EINVAL ペ イ ロ ー ド デ ー タ が 無 効 で あ る 。

ENOMEM 鍵 を 作 成 す る の に 十 分 な メ モ リ ー が な い 。

EDQUOT こ の 鍵 を 作 成 す る か 、 鍵 を 鍵 リ ン グ に 追 加 す る と 、 こ の ユ ー ザ ー の 鍵 リ ン グ の ク ォ ー タ を 超 過 し て し ま う 。

EACCES そ の ユ ー ザ ー は 指 定 さ れ た 鍵 リ ン グ を 変 更 で き な い 。

LINKING

こ れ は Linux の シ ス テ ム コ ー ル だ が 、 libc に は 存 在 せ ず 、 代 わ り に libkeyutils に 存 在 す る 。 リ ン ク す る 際 に は 、 リ ン カ ー に −lkeyutils を 指 定 す る 必 要 が あ る 。

関 連 項 目

keyctl(1), keyctl(2), request_key(2)

こ の 文 書 に つ い て

こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。