付録 C: 1988 構文を用いた「互換性のある」 ASN.1 モジュール English
PKIXCMP {iso(1) identified-organization(3) dod(6) internet(1)
security(5) mechanisms(5) pkix(7) id-mod(0) id-mod-cmp(9)}
DEFINITIONS EXPLICIT TAGS ::=
BEGIN
-- EXPORTS ALL --
IMPORTS
Certificate, CertificateList, Extensions, AlgorithmIdentifier
FROM PKIX1Explicit88 {iso(1) identified-organization(3)
dod(6) internet(1) security(5) mechanisms(5) pkix(7)
id-mod(0) id-pkix1-explicit-88(1)}}
GeneralName, KeyIdentifier, ReasonFlags
FROM PKIX1Implicit88 {iso(1) identified-organization(3)
dod(6) internet(1) security(5) mechanisms(5) pkix(7)
id-mod(0) id-pkix1-implicit-88(2)}
CertTemplate, PKIPublicationInfo, EncryptedValue, CertId,
CertReqMessages
FROM PKIXCRMF {iso(1) identified-organization(3)
dod(6) internet(1) security(5) mechanisms(5) pkix(7)
id-mod(0) id-mod-crmf(5)}}
-- CertificationRequest
-- FROM PKCS10 {no standard ASN.1 module defined;
-- implementers need to create their own module to import
-- from, or directly include the PKCS10 syntax in this module}
-- Locally defined OIDs --
PKIMessage ::= SEQUENCE {
header PKIHeader,
body PKIBody,
protection [0] PKIProtection OPTIONAL,
extraCerts [1] SEQUENCE SIZE (1..MAX) OF Certificate OPTIONAL}
PKIHeader ::= SEQUENCE {
pvno INTEGER { ietf-version2 (1) },
sender GeneralName,
-- identifies the senderrecipient GeneralName,
-- 目的の受領者を識別します。messageTime [0] GeneralizedTime OPTIONAL,
-- このメッセージを作成した時刻(送信者が伝送が適切であると考えた場合に使用されます。すなわち、この時間は受領した後も意味があります。)protectionAlg [1] AlgorithmIdentifier OPTIONAL,
-- 保護ビットの計算に使用されたアルゴリズム。senderKID [2] KeyIdentifier OPTIONAL,
recipKID [3] KeyIdentifier OPTIONAL,
-- 保護目的の明確な鍵を見分けます。transactionID [4] OCTET STRING OPTIONAL,
-- トランザクションを識別します。;すなわち、対応の要求、応答および確認メッセージは同一のはずです。senderNonce [5] OCTET STRING OPTIONAL,
recipNonce [6] OCTET STRING OPTIONAL,
-- リプレイ保護を提供するためのノンス、senderNonce は、このメッセージの作成者によって挿入され、recipNonce は、このメッセージを意図した受領者が以前に関連のメッセージに挿入したノンスです。freeText [7] PKIFreeText OPTIONAL,
-- これはコンテキスト固有の命令を表記するために使用できます。(このフィールドは、人間による使用を想定しています。)generalInfo [8] SEQUENCE SIZE (1..MAX) OF InfoTypeAndValue OPTIONAL
-- コンテキスト固有の情報を伝送するために使用できます。(このフィールドは人間による使用を想定しています。)}
PKIFreeText ::= SEQUENCE SIZE (1..MAX) OF UTF8String
-- UTF-8 Stringにエンコード化されたテキスト(注意事項: UTF8String ごとに RFC 1766 言語タグを入れ、中のテキストの使用言語を示します 。)PKIBody ::= CHOICE { -- message-specific body elements(メッセージ固有本体エレメント)
ir [0] CertReqMessages, --Initialization Request(初期化リクエスト)
ip [1] CertRepMessage, --Initialization Response(初期化レスポンス)
cr [2] CertReqMessages, --Certification Request(認証リクエスト)
cp [3] CertRepMessage, --Certification Response(認証レスポンス)
p10cr [4] CertificationRequest, --imported from [PKCS10]([PKCS10]からインポートします 。)
popdecc [5] POPODecKeyChallContent, --pop Challenge(popチャレンジ)
popdecr [6] POPODecKeyRespContent, --pop Response(popレスポンス)
kur [7] CertReqMessages, --Key Update Request(鍵更新リクエスト)
kup [8] CertRepMessage, --Key Update Response(鍵更新レスポンス)
krr [9] CertReqMessages, --Key Recovery Request(鍵回復リクエスト)
krp [10] KeyRecRepContent, --Key Recovery Response(鍵回復レスポンス)
rr [11] RevReqContent, --Revocation Request(失効リクエスト)
rp [12] RevRepContent, --Revocation Response(失効レスポンス)
ccr [13] CertReqMessages, --Cross-Cert. Request(相互認証リクエスト)
ccp [14] CertRepMessage, --Cross-Cert. Response(相互認証レスポンス)
ckuann [15] CAKeyUpdAnnContent, --CA Key Update Ann.(CA 鍵更新声明)
cann [16] CertAnnContent, --Certificate Ann.(証明書公開)
rann [17] RevAnnContent, --Revocation Ann.(失効声明)
crlann [18] CRLAnnContent, --CRL Announcement (CRL 公開)
conf [19] PKIConfirmContent, --Confirmation(確認)
nested [20] NestedMessageContent, --Nested Message(ネスト化メッセージ)
genm [21] GenMsgContent, --General Message(一般メッセージ)
genp [22] GenRepContent, --General Response(一般レスポンス)
error [23] ErrorMsgContent --Error Message(エラーメッセージ)}
PKIProtection ::= BIT STRING
ProtectedPart ::= SEQUENCE {
header PKIHeader,
body PKIBody}
PasswordBasedMac ::= OBJECT IDENTIFIER --{1 2 840 113533 7 66 13}
PBMParameter ::= SEQUENCE {
salt OCTET STRING,
owf AlgorithmIdentifier,
-- 一方向関数のAlgId(SHA-1 推奨)iterationCount INTEGER,
-- OWF の適用回数mac AlgorithmIdentifier
-- MAC AlgId(例: DES-MAC、Triple-DES-MAC [PKCS11] 、} -- あるいはHMAC [RFC2104, RFC2202])
DHBasedMac ::= OBJECT IDENTIFIER --{1 2 840 113533 7 66 30}
DHBMParameter ::= SEQUENCE {
owf AlgorithmIdentifier,
-- 一方向関数のAlgId(SHA-1 推奨)mac AlgorithmIdentifier
-- MAC AlgId(例えば、DES-MAC、Triple-DES-MAC [PKCS11]、} -- あるいはHMAC [RFC2104, RFC2202])
NestedMessageContent ::= PKIMessage
PKIStatus ::= INTEGER {
granted (0),
-- 要求していたものをそのまま取得できた。grantedWithMods (1),
-- 要求したものに近いものを取得した。; リクエスタがその違いを確める責任があります。rejection (2),
-- 取得できませんでした。このメッセージのほかの場所に詳細の情報があります。waiting (3),
-- リクエスト本体の部分はまだ未処理で、後でもっと多くの情報入手を望みます。revocationWarning (4),
-- このメッセージは失効が間近に迫っているとの警告を含んでいます。revocationNotification (5),
-- 失効が発生したことを通知します。keyUpdateWarning (6)
-- CertReqMsg に明記された oldCertId のための更新が完了。}
PKIFailureInfo ::= BIT STRING {
-- 失敗する原因は1つ以上考えられるゆえに、将来的に必要に応じてほかのコードを追加することもあります。badAlg (0),
-- 認識不能または未対応のアルゴリズム識別子。badMessageCheck (1),
-- 完全性確認失敗(例: 署名が検証できませんでした。)badRequest (2),
-- 未許可または未対応のトランザクション。badTime (3),
--ローカルポリシーの定義に従って、messageTime がローカルシステム時間に十分に接近していません。badCertId (4),
-- 指定の基準に一致するような証明書が存在しません。badDataFormat (5),
-- 提示されたデータの形式が間違っています。wrongAuthority (6),
-- リクエストに表記された機関はレスポンス・トークンを作成する機関と異なります。incorrectData (7),
-- リクエスタのデータが間違っています(公証サービスに関して)。missingTimeStamp (8),
-- 存在すべきタイムスタンプが見つかりません。badPOP (9)
-- proof-of-possession が失敗しました。}
PKIStatusInfo ::= SEQUENCE {
status PKIStatus,
statusString PKIFreeText OPTIONAL,
failInfo PKIFailureInfo OPTIONAL
}
OOBCert ::= Certificate
OOBCertHash ::= SEQUENCE {
hashAlg [0] AlgorithmIdentifier OPTIONAL,
certId [1] CertId OPTIONAL,
hashVal BIT STRING
-- 対応する証明書の subjectPublicKey フィールドの DER エンコードを基づいて計算された hashVal です。}
POPODecKeyChallContent ::= SEQUENCE OF Challenge
-- 暗号鍵認証リクエストごとに1つのチャレンジ(CertReqMessage に表示されているリクエスト順と同じ)
Challenge ::= SEQUENCE {
owf AlgorithmIdentifier OPTIONAL,
-- 最初のチャレンジに必ず存在します。;
-- POPODecKeyChallContent の任意の後続チャレンジのなかに省略できます。(省略された場合に、直前チャレンジで使用された owf が利用されることになります)
witness OCTET STRING,
-- 一方向関数をランダム生成の整数Aに適用した結果[チャレンジごとに必ず異なる整数を使用しなければなりません。]challenge OCTET STRING
-- Randの暗号化。Randは下記の通りに明記されます。:
-- Rand ::= SEQUENCE {
-- int INTEGER,
-- - ランダム生成の整数 A (上記)-- sender GeneralName
-- - 送信者の名前(PKIHeaderにある記述と同様。)}
}
POPODecKeyRespContent ::= SEQUENCE OF INTEGER
-- 暗号鍵認証リクエストごとに 1つの整数(CertReqMessages に表示されているリクエストと同じ順序)戻り値の整数 A(上記)が対応するチャレンジの送信者に返されます。
CertRepMessage ::= SEQUENCE {
caPubs [1] SEQUENCE SIZE (1..MAX) OF Certificate OPTIONAL,
response SEQUENCE OF CertResponse}
CertResponse ::= SEQUENCE {
certReqId INTEGER,
-- 対応するリクエストにレスポンスを対応づけるために(certReqIdが対応するリクエストに明記されていない場合、その値が -1 に設定されることになります 。)status PKIStatusInfo,
certifiedKeyPair CertifiedKeyPair OPTIONAL,
rspInfo OCTET STRING OPTIONAL
-- CertReqMsg [CRMF] の regInfo のために定義された id-regInfo-asciiPairs OCTET STRING に類似します。}
CertifiedKeyPair ::= SEQUENCE {
certOrEncCert CertOrEncCert,
privateKey [0] EncryptedValue OPTIONAL,
publicationInfo [1] PKIPublicationInfo OPTIONAL}
CertOrEncCert ::= CHOICE {
certificate [0] Certificate,
encryptedCert [1] EncryptedValue}
KeyRecRepContent ::= SEQUENCE {
status PKIStatusInfo,
newSigCert [0] Certificate OPTIONAL,
caCerts [1] SEQUENCE SIZE (1..MAX) OF Certificate OPTIONAL,
keyPairHist [2] SEQUENCE SIZE (1..MAX) OF CertifiedKeyPair OPTIONAL}
RevReqContent ::= SEQUENCE OF RevDetails
RevDetails ::= SEQUENCE {
certDetails CertTemplate,
--失効要求に必要な分だけの証明書をリクエスタが指定することができる。(例: serialNumber が利用不可の場合)revocationReason ReasonFlags OPTIONAL,
-- 失効を要求された原因。badSinceDate GeneralizedTime OPTIONAL,
-- 送信者について利用可能な情報の明記。crlEntryDetails Extensions OPTIONAL
-- 要求の crlEntryExtensions 。}
RevRepContent ::= SEQUENCE {
status SEQUENCE SIZE (1..MAX) OF PKIStatusInfo,
-- RevReqContent の中の送付順番と同じ。revCerts [0] SEQUENCE SIZE (1..MAX) OF CertId OPTIONAL,
-- 失効を要求されたものの ID(ステータスと同じ順番。)crls [1] SEQUENCE SIZE (1..MAX) OF CertificateList OPTIONAL
-- 結果の CRL(1つ以上の可能性があります。)}
CAKeyUpdAnnContent ::= SEQUENCE {
oldWithNew Certificate,
-- old pub signed with new priv(新しい秘密鍵で署名した古い公開鍵)newWithOld Certificate,
-- new pub signed with old priv(古い秘密鍵で署名した新しい公開鍵)newWithNew Certificate
-- new pub signed with new priv(新しい秘密鍵で署名した新しい公開鍵)}
CertAnnContent ::= Certificate
RevAnnContent ::= SEQUENCE {
status PKIStatus,
certId CertId,
willBeRevokedAt GeneralizedTime,
badSinceDate GeneralizedTime,
crlDetails Extensions OPTIONAL
-- 追加CRL詳細(例えば、crl number、reason、 location)}
CRLAnnContent ::= SEQUENCE OF CertificateList
PKIConfirmContent ::= NULL
InfoTypeAndValue ::= SEQUENCE {
infoType OBJECT IDENTIFIER,
infoValue ANY DEFINED BY infoType OPTIONAL}
-- 例として、InfoTypeAndValue が 以下の内容を含んでいますが、この限りではありません。
-- { CAProtEncCert = {id-it 1}, Certificate }
-- { SignKeyPairTypes = {id-it 2}, SEQUENCE OF AlgorithmIdentifier }
-- { EncKeyPairTypes = {id-it 3}, SEQUENCE OF AlgorithmIdentifier }
-- { PreferredSymmAlg = {id-it 4}, AlgorithmIdentifier }
-- { CAKeyUpdateInfo = {id-it 5}, CAKeyUpdAnnContent }
-- { CurrentCRL = {id-it 6}, CertificateList }
-- where {id-it} = {id-pkix 4} = {1 3 6 1 5 5 7 4}
-- 将来的な必要性に応じて、または特定の環境に対応するために、この構造体を新しい PKIX 証明書管理プロトコルリクエストおよびレスポンス・メッセージ、もしくは汎用目的(例えば、公開)メッセージに適用することができます。
GenMsgContent ::= SEQUENCE OF InfoTypeAndValue
-- EE、RA、または CA(メッセージの内容次第)によって送信することができます。
-- InfoTypeAndValue のオプションとしての infoValue パラメータは上記のいくつかの例のなかで典型的に省略されています。中に認識できない任意のOBJ. ID があれば、受信者が自由に無視してもよいです。もし空のセット(empty set)が EE から CA に送られた場合、 CA が送信希望の任意のまたはすべての情報を送信できることを意味します。
GenRepContent ::= SEQUENCE OF InfoTypeAndValue
-- 受信者が中の認識できない OBJ. ID を自由に無視してもよいです。
ErrorMsgContent ::= SEQUENCE {
pKIStatusInfo PKIStatusInfo,
errorCode INTEGER OPTIONAL,
-- 実装特有のエラー・コードerrorDetails PKIFreeText OPTIONAL
--実装特有のエラー詳細}
-- 下記の定義はUNIVERSAL クラスタグ(正式な ASN.1 の一部分ではない)の使用を許可する 1988 および 1993ASN.1 コンパイラとの互換性を図るために提供するものです。1997版およびそれ以降の版のコンパイラーはこの文をコメント・アウトすることにします。
UTF8String ::= [UNIVERSAL 12] IMPLICIT OCTET STRING
以上