EN JA
hx509 CMS/pkcs7 functions(3)
hx509 CMS/pkcs7 functions(3) Heimdalx509library hx509 CMS/pkcs7 functions(3)

名称

hx509 CMS/pkcs7 functions -

関数


int hx509_cms_wrap_ContentInfo (const heim_oid *oid, const heim_octet_string *buf, heim_octet_string *res)
 
int hx509_cms_unwrap_ContentInfo (const heim_octet_string *in, heim_oid *oid, heim_octet_string *out, int *have_data)
 
int hx509_cms_unenvelope (hx509_context context, hx509_certs certs, int flags, const void *data, size_t length, const heim_octet_string *encryptedContent, time_t time_now, heim_oid *contentType, heim_octet_string *content)
 
int hx509_cms_envelope_1 (hx509_context context, int flags, hx509_cert cert, const void *data, size_t length, const heim_oid *encryption_type, const heim_oid *contentType, heim_octet_string *content)
 
int hx509_cms_verify_signed (hx509_context context, hx509_verify_ctx ctx, unsigned int flags, const void *data, size_t length, const heim_octet_string *signedContent, hx509_certs pool, heim_oid *contentType, heim_octet_string *content, hx509_certs *signer_certs)
 
int hx509_cms_create_signed_1 (hx509_context context, int flags, const heim_oid *eContentType, const void *data, size_t length, const AlgorithmIdentifier *digest_alg, hx509_cert cert, hx509_peer_info peer, hx509_certs anchors, hx509_certs pool, heim_octet_string *signed_data)
 

詳細説明

説明と実行例については、 CMS/PKCS7 メッセージ関数. 参照してください。

関数説明

int hx509_cms_create_signed_1 (hx509_context context, int flags, const heim_oid * eContentType, const void * data, size_t length, const AlgorithmIdentifier * digest_alg, hx509_cert cert, hx509_peer_info peer, hx509_certs anchors, hx509_certs pool, heim_octet_string * signed_data)

SignedData をデコードし、署名が正確であるか検証します。

パラメータ:

context hx509 コンテキスト。
 
flags
 
eContentType データのタイプ。
 
data 署名するべきデータ。
 
length data が指すデータの長さ。
 
digest_alg 使用する digest アルゴリズム、デフォルトを取得するために NULL を使用し、そうでなければ、peer 決定アルゴリズム。
 
cert データに署名するのために使用に証明書。
 
peer どの digest アルゴリズムを使用するかのように、メッセージを送信するメッセージのピアに関する情報。
 
anchors メッセージに含まれた証明書を追加するために使用される、クライアントが使用するアンカを信頼します。
 
pool 信頼されたアンカへのパスを構築する試みで使用する証明書。
 
signed_data 関数の出力、der_free_octet_string() で解放します。

 

int hx509_cms_envelope_1 (hx509_context context, int flags, hx509_cert cert, const void * data, size_t length, const heim_oid * encryption_type, const heim_oid * contentType, heim_octet_string * content)

EnvelopedData を暗号化して、エンコードします。

EnvelopedData を暗号化して、エンコードします。データは、ランダムキーで暗号化され、ランダムキーは、証明書秘密鍵で暗号化されます。これは、どの秘密鍵タイプを RSA に使用することができるかを制限します。

パラメータ:

context hx509 コンテキスト。
 
flags 振る舞いを制御するフラグ。
HX509_CMS_EV_NO_KU_CHECK - 証明書 KU をチェックしません。
HX509_CMS_EV_ALLOW_WEAK - 弱い暗号化を許可します。
HX509_CMS_EV_ID_NAME - 好みの発行人名とシリアル番号。

 

cert EnvelopedData 暗号鍵を暗号化する証明書。

 

data 暗号化するデータへのポインタ。

 

length data が指すデータの長さ。

 

encryption_type 大量のデータのために使用する暗号化暗号、デフォルトを取得するために NULL を使用します。

 

contentType 暗号化されるデータのタイプ。

 

content 関数の出力、der_free_octet_string() で解放します。

 

int hx509_cms_unenvelope (hx509_context context, hx509_certs certs, int flags, const void * data, size_t length, const heim_octet_string * encryptedContent, time_t time_now, heim_oid * contentType, heim_octet_string * content)

EnvelopedData をデコードして、復号化します。

EnvelopedData からデータとパラメータを抽出します。また、デタッチされた EnvelopedData を使用することをサポートします。

パラメータ:

context hx509 コンテキスト。
 
certs EnvelopedData 暗号鍵を復号化することができる証明書。
 
flags 振る舞いを制御する HX509_CMS_UE フラグ。
 
data DER/BER エンコードされた EnvelopedData 構造体を含むポインタ構造体。
 
length data が指すデータの長さ。
 
encryptedContent デタッチされた署名の場合に、これは、実際の暗号化されたデータを含んでいます、そうでなければ、NULL であるべきです。
 
time_now 現在の時間を設定します、0 であるなら、ライブラリは、日付として今を使用します。
 
contentType 出力タイプ oid、der_free_oid() で解放されるべきです。
 
content データ、der_free_octet_string() で解放します。

 

int hx509_cms_unwrap_ContentInfo (const heim_octet_string * in, heim_oid * oid, heim_octet_string * out, int * have_data)

ContentInfo をデコードし、データと oid をアンラップ (unwrap) します。

パラメータ:

in エンコードされたバッファ。
 
oid 内容のタイプ。
 
out ラップされるデータ。
 
have_data データは、オプションであるので、これのフラグは、データなしと 0 の長さのデータの間の違いを表示します。

返り値:

hx509 エラーコードを返します。

 

int hx509_cms_verify_signed (hx509_context context, hx509_verify_ctx ctx, unsigned int flags, const void * data, size_t length, const heim_octet_string * signedContent, hx509_certs pool, heim_oid * contentType, heim_octet_string * content, hx509_certs * signer_certs)

SignedData をデコードし、署名が正確であるか検証します。

パラメータ:

context hx509 コンテキスト。
 
ctx hx509 検証コンテキスト。
 
flags 関数の振る舞いを制御する。
HX509_CMS_VS_NO_KU_CHECK - KeyUsage をチェックしません。
HX509_CMS_VS_ALLOW_DATA_OID_MISMATCH - oid ミスマッチを許可します。
HX509_CMS_VS_ALLOW_ZERO_SIGNER - 署名者なし、下記参照。

 

data CMS SignedData エンコードされたデータへのポインタ。

 

length data が指すデータの長さ。

 

signedContent 署名のために使用される外部データ。

 

pool 証明書にパスを構築する証明書プール。

 

contentType der_free_oid() で解放します。

 

content 関数の出力、der_free_octet_string() で解放します。

 

signer_certs このリクエストを署名するために使用する証明書のりすと、 hx509_certs_free() で解放します。

 

HX509_CMS_VS_NO_KU_CHECK が設定されるなら、証明書の KeyUsage ビットを考慮しないことによって、証明書とマッチするためのより進歩的な検索を許可します。

HX509_CMS_VS_ALLOW_DATA_OID_MISMATCH であるなら、 signedAttributes の oid がある encapContentInfo ミスマッチを許可します、 (または、使用するところで、signedAttributes でないなら、 pkcs7-data oid)。これは、CMS signedAttributes 規則に従わない故障した CMS 実装で動作するためだけに必要です。

HX509_CMS_VS_NO_VALIDATE フラグが設定されるなら、署名証明書を検証せず、呼び出し側に任せます。

HX509_CMS_VS_ALLOW_ZERO_SIGNER が設定されるなら、 (署名なしの) 空の SignerInfo を許可します。 SignedData に署名がなければ、関数は、signer_certs を NULL に設定して、 0 を返します。 0 の署名者は、標準によって許可されますが、角の場合だけに役に立つので、呼び出し側がオンにしなければならない、フラグに行います。

int hx509_cms_wrap_ContentInfo (const heim_oid * oid, const heim_octet_string * buf, heim_octet_string * res)

ContentInfo のデータと oid をラップして、それをエンコードします。

パラメータ:

oid 内容のタイプ。
 
buf ラップされるデータ。 NULL ポインタが渡されるなら、ContentInfo のオプションの内容のフィールドは、書き込まれないようにします。
 
res エンコードされるバッファ、結果は、der_free_octet_string() で解放されるべきです。

返り値:

hx509 エラーコードを返します。

 
11 Jan 2012 Version 1.5.2