標準
標準/拡張機能 |
C/C++ |
依存項目 |
z/OS®UNIX
|
両方 |
OS/390 V2R7
|
形式
#define _OPEN_SYS
#include <unistd.h>
int __certificate(int function_code,
int certificate_length,
char *certificate,…);
機能説明
__certificate() 関数により、ユーザーは現行の安全保護環境に関連付けられたユーザー ID で、または、ユーザー ID からデジタル証明書を登録または登録解除したり、ユーザー ID/パスワードの組み合わせの代わりにデジタル証明書を使用して、安全保護環境を認証することができます。
この関数は、少なくとも以下の引数を取ります。- function_code
- 次の関数のどちらかを指定します。
- CERTIFICATE_REGISTER
- 引き渡された認証をユーザーに登録します。新規の安全保護環境は作成されません。
そして、ユーザーの認証は行われません。
- __CERTIFICATE_DEREGISTER
- 引き渡された認証をユーザーから登録解除します。ユーザーに対して認証が既に登録されていることが必要です。
- __CERTIFICATE_AUTHENTICATE
- z/OS V1R4 より、この呼び出し元にパス済みの証明書を認証します。証明書は、既に登録済みである必要があります。
- certificate_length
- デジタル認証の長さ。長さがゼロでは戻り値は -1 と
なり、errno に EINVAL が設定されます。
- certificate
- 認証は、単一の BER エンコード X.509 認証でなければなりません。PKCS7、PEM、または Base64 エンコード認証が許可されます。
注: 単一の BER エンコード X.509 認証のみが、認証関数でサポートされています。
z/OS V1R4 より、__CERTIFICATE_AUTHENTICATE 関数コードは、以下のパラメーターが関数呼び出しで指定されることを要求します。
- buflen (size_t)
- buf が指すバッファーのサイズを指定します。ユーザー ID の buflen バイト
(ヌル終了文字を含む) までがバッファーにコピーされます。
バッファーが過小だと、切り捨てが起こる場合があることに注意してください。バッファー・サイズは、システム上のいかなるユーザー ID にとっても十分大きいことが必要です。1 未満の値の場合、
戻り値は -1 となり、errno が EINVAL に設定されます。
- buf (char *)
- 文字バッファーのポインターで、_certificate() はデジタル証明書に関連付けられたユーザー ID を設置します。値が NULL の場合は、戻り値は -1
となり、errno が EINVAL に設定されます。
使用上の注意
- _certificate 関数は、サーバーが、例えば、WWW 上で、サポートしているクライアントの認証の自動登録をサポートするサーバー用のものです。
- __CERTIFICATE_REGISTER 関数コードは、どのようなユーザー ID が付いていようとも、引き渡された認証を関連付けます。タスク・レベル ID が存在する場合、認証は、そのタスクに関連付けられます。タスク・レベル・セキュリティーは、
pthread_security_np()、__login() またはタスク・レベル ACEE を作成するその他の手段によって作成できます。タスク・レベル ID (ACEE) が存在しない場合は、認証は、アドレス・スペース ID に関連付けられます。
- __certificate() 関数は、z/OS UNIX System Services BPX1SEC サービスを呼び出します。BPX1SEC サービスについての詳細記述は、「 z/OS UNIX System Services プログラミング: アセンブラー呼び出し可能サービス 解説書」を参照してください。
制約事項
デジタル認証の登録および登録解除をサポートする
セキュリティー・マネージャーがインストールされ、作動可能になっている
ことが必要です。
戻り値
正常に実行された場合、__certificate() は 0 を戻します。
正常に実行されなかった場合、__certificate() は -1 を戻して、errno を次のいずれかの
値に設定します。
- エラー・コード
- 説明
- EACCES
- 許可が拒否されました。
- EINVAL
- パラメーターが無効です。
- EMVSERR
- MVS™ の環境エラーまたは内部エラーが発生しました。
- EMVSSAF2ERR
- セキュリティー・プロダクトでエラーが発生しました。別のプロセスに認証が既に定義されているか無効です。または
認証が必須の形式に一致しません。また、内部エラーが発生したときに認識されました。
- ENOSYS
- 関数が設定またはインストールされていません。
- EPERM
- 操作が許可されていませんでした。呼び出しプロセスに
BPX.DAEMON 機能クラスの許可がない可能性があります。
__certificate() が失敗した場合 (ほとんどの場合) は、__errno2() を使用して詳細理由コードを入手します。