名 前
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()
は 、 指 定 し た
type と description を 持
つ 鍵 の 作 成 、
更 新 を 行 う よ
う に カ ー ネ ル
に 指 示 し 、 長
さ plen の payload で
鍵 を 生 成 し 、
指 定 さ れ た keyring
に そ の 鍵 を 追
加 し 、 鍵 リ ン
グ の シ リ ア ル
番 号 を 返 す 。
鍵 タ イ プ に よ
っ て は 、 フ ォ
ー マ ッ ト が 違
っ て い た り 、
そ の 他 に も 無
効 な も の が あ
る と 、 指 定 し
た デ ー タ が 拒
否 さ れ る 場 合
も あ る 。 対 象
の keyring に 指 定 さ
れ た type と description
に 合 致 す る 鍵
が す で に 含 ま
れ る 場 合 、 鍵
タ イ プ が サ ポ
ー ト し て い れ
ば 、 新 し い 鍵
が 作 成 さ れ る
の で は な く 、
そ の 鍵 が 更 新
さ れ る 。 鍵 タ
イ プ が サ ポ ー
ト し て い な い
場 合 、 新 し い
鍵 が 作 成 さ れ
、 鍵 リ ン グ の
現 在 の 鍵 の リ
ン ク は こ の 鍵
で 置 き 換 え ら
れ る 。 対 象 の
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/ に 書 か れ て い る 。