ukeyset_add_key、ukeyset_remove_key、ukeyset_add_set または ukeyset_remove_set サブルーチン
目的
ユーザー・キー・セットに対して操作および変更を行います。
ライブラリー
標準 C ライブラリー (libc.a)
構文
int ukeyset_add_key (uset, key, flags)
ukeyset_t * uset;
ukey_t key;
unsigned int flags;
int ukeyset_remove_key (uset, key, flags)
ukeyset_t * uset;
ukey_t key;
unsigned int flags;
int ukeyset_add_set (uset, aset)
ukeyset_t * uset;
ukeyset_t aset;
int ukeyset_remove_set (uset, rset)
ukeyset_t * uset;
ukeyset_t rset;
説明
これらのサブルーチンは、ユーザー・キー・セットに対して操作および変更を行います。 ユーザー・キー・セットは、最初に 鍵セット初期化 サブルーチンによって初期化されていなければなりません。
ユーザー・キーの個別またはグループ (セット) を追加または削除できます。 個々のキーを追加または除去する場合は、追加または除去するアクセス (読み取りまたは書き込み、あるいは読み取りと書き込みの両方) を フラグ パラメーターで指定する必要があります。 ユーザー・キー・セットを追加または除去する場合、キー・セットには、どのキーが使用可能になっているかに関する情報だけでなく、それらのキーのそれぞれについてどの特定のアクセス許可が使用可能になっているかに関する情報も含まれているため、指定する必要はありません。
ukeyset_add_key サブルーチンは、 フラグ パラメーターで指定されたアクセス権を持つ キー パラメーターで指定されたユーザー・キーを、 USET パラメーターで指定されたユーザー・キー・セットに追加します。 ukeyset_remove_key サブルーチンは、 キー パラメーターによって指定されたキーの フラグ パラメーターによって指定されたアクセスを、 USET パラメーターによって指定されたユーザー・キー・セットから除去します。 ukeyset_add_set サブルーチンは、 ASET キー・セット・パラメーターによって指定されたキーとアクセスを、 USET パラメーターによって指定されたユーザー・キー・セットに追加します。 jpkeyset_remove_set サブルーチンは、 RSET キー・セット・パラメーターによって指定されたキーおよびアクセスを、 USET パラメーターによって指定されたユーザー・キー・セットから除去します。
ソース・キー・セットに存在しない定義済みユーザー・キーを除去しようとすると、シグナル・セット・サービスと同様の方法でサイレントに無視されます。
ukey_enable サブルーチンがプロセス内のスレッドによって既に正常に実行されていない限り、これらのサブルーチンは失敗します。 詳しくは、 Storage Protect Keys の記事 を参照してください。
パラメーター
| 項目 | 説明 |
|---|---|
| USET | 変更されるユーザー・キー・セット。 |
| rset | 除去するユーザー・キー・セット。 |
| ASET | 追加するユーザー・キー・セット。 |
| key | キー・セットに追加またはキー・セットから削除するユーザー・キー。 このパラメーターは、追加操作または削除操作の実行時に読み取りフラグまたは書き込みフラグと結合されます。 |
| flags | ukeyset_add_key () および ukeyset_remove_key () サービスには、以下のフラグが定義されています。
|
戻り値
正常に実行された場合、ユーザー・キー・セット・サブルーチンは値 0 を戻します。 そうでない場合は-1を返し、エラーを示すグローバル変数errnoをセットする。
エラー・コード
以下の条件に該当する場合、 ukeyset_add_key および ukeyset_remove_key サブルーチンは失敗します。
| 項目 | 説明 |
|---|---|
| EINVAL | フラグ パラメーターが無効です。 USET パラメーターに無効なキー・セットが指定されているか、 キー パラメーターに無効な (未定義の) キーが指定されています。 |
| ENOSYS | キー パラメーターまたはプロセスで指定された未構成の (使用不可の) 秘密鍵が、ユーザー鍵対応ではありません。 |
ukeyset_add_set、 ukeyset_remove_set、 ukeyset_add_set および ukeyset_remove_set サブルーチンは、以下の条件が真の場合には失敗します。
| 項目 | 説明 |
|---|---|
| EINVAL | USET 、 RSET 、または ASET パラメーターに無効なキー・セットが指定されました。 |
| ENOSYS | プロセスでユーザー・キーが有効になっていません。 |
追加または除去のために (キー・セットではなく) キーを取るサブルーチンのみが、無効または未使用のキー番号または無効なアクセス・フラグのために失敗する可能性があります。