Note: if the object has been read from an input stream, the only time you can be sure if isExplicit is returning the true state of affairs is if it returns false. An implicitly tagged object may appear to be explicitly tagged, so you need to understand the context under which the reading was done as well, see GetObject below.

Note: tagged objects are generally context dependent if you're trying to extract a tagged object you should be going via the appropriate GetInstance method.

1.3.6.1.4.1.22554

1.3.6.1.4.1.22554.1

1.3.6.1.4.1.22554.1.1

CAKeyUpdAnnContent ::= SEQUENCE { oldWithNew CmpCertificate, -- old pub signed with new priv newWithOld CmpCertificate, -- new pub signed with old priv newWithNew CmpCertificate -- new pub signed with new priv }@return a basic ASN.1 object representation.

CertConfirmContent ::= SEQUENCE OF CertStatus@return a basic ASN.1 object representation.

CertifiedKeyPair ::= SEQUENCE { certOrEncCert CertOrEncCert, privateKey [0] EncryptedValue OPTIONAL, -- see [CRMF] for comment on encoding publicationInfo [1] PKIPublicationInfo OPTIONAL }@return a basic ASN.1 object representation.

CertOrEncCert ::= CHOICE { certificate [0] CMPCertificate, encryptedCert [1] EncryptedValue }@return a basic ASN.1 object representation.

CertRepMessage ::= SEQUENCE { caPubs [1] SEQUENCE SIZE (1..MAX) OF CMPCertificate OPTIONAL, response SEQUENCE OF CertResponse }@return a basic ASN.1 object representation.

CertResponse ::= SEQUENCE { certReqId INTEGER, -- to match this response with corresponding request (a value -- of -1 is to be used if certReqId is not specified in the -- corresponding request) status PKIStatusInfo, certifiedKeyPair CertifiedKeyPair OPTIONAL, rspInfo OCTET STRING OPTIONAL -- analogous to the id-regInfo-utf8Pairs string defined -- for regInfo in CertReqMsg [CRMF] }@return a basic ASN.1 object representation.

CertStatus ::= SEQUENCE { certHash OCTET STRING, -- the hash of the certificate, using the same hash algorithm -- as is used to create and verify the certificate signature certReqId INTEGER, -- to match this confirmation with the corresponding req/rep statusInfo PKIStatusInfo OPTIONAL }@return a basic ASN.1 object representation.

Challenge ::= SEQUENCE { owf AlgorithmIdentifier OPTIONAL, -- MUST be present in the first Challenge; MAY be omitted in -- any subsequent Challenge in POPODecKeyChallContent (if -- omitted, then the owf used in the immediately preceding -- Challenge is to be used). witness OCTET STRING, -- the result of applying the one-way function (owf) to a -- randomly-generated INTEGER, A. [Note that a different -- INTEGER MUST be used for each Challenge.] challenge OCTET STRING -- the encryption (under the public key for which the cert. -- request is being made) of Rand, where Rand is specified as -- Rand ::= SEQUENCE { -- int INTEGER, -- - the randomly-generated INTEGER A (above) -- sender GeneralName -- - the sender's name (as included in PKIHeader) -- } }@return a basic ASN.1 object representation.

CMPCertificate ::= CHOICE { x509v3PKCert Certificate x509v2AttrCert [1] AttributeCertificate }Note: the addition of attribute certificates is a BC extension. @return a basic ASN.1 object representation.

CrlAnnContent ::= SEQUENCE OF CertificateList@return a basic ASN.1 object representation.

ErrorMsgContent ::= SEQUENCE { pKIStatusInfo PKIStatusInfo, errorCode INTEGER OPTIONAL, -- implementation-specific error codes errorDetails PKIFreeText OPTIONAL -- implementation-specific error details }@return a basic ASN.1 object representation.

GenMsgContent ::= SEQUENCE OF InfoTypeAndValue@return a basic ASN.1 object representation.

GenRepContent ::= SEQUENCE OF InfoTypeAndValue@return a basic ASN.1 object representation.

id-it-caProtEncCert OBJECT IDENTIFIER ::= {id-it 1} CAProtEncCertValue ::= CMPCertificate id-it-signKeyPairTypes OBJECT IDENTIFIER ::= {id-it 2} SignKeyPairTypesValue ::= SEQUENCE OF AlgorithmIdentifier id-it-encKeyPairTypes OBJECT IDENTIFIER ::= {id-it 3} EncKeyPairTypesValue ::= SEQUENCE OF AlgorithmIdentifier id-it-preferredSymmAlg OBJECT IDENTIFIER ::= {id-it 4} PreferredSymmAlgValue ::= AlgorithmIdentifier id-it-caKeyUpdateInfo OBJECT IDENTIFIER ::= {id-it 5} CAKeyUpdateInfoValue ::= CAKeyUpdAnnContent id-it-currentCRL OBJECT IDENTIFIER ::= {id-it 6} CurrentCRLValue ::= CertificateList id-it-unsupportedOIDs OBJECT IDENTIFIER ::= {id-it 7} UnsupportedOIDsValue ::= SEQUENCE OF OBJECT IDENTIFIER id-it-keyPairParamReq OBJECT IDENTIFIER ::= {id-it 10} KeyPairParamReqValue ::= OBJECT IDENTIFIER id-it-keyPairParamRep OBJECT IDENTIFIER ::= {id-it 11} KeyPairParamRepValue ::= AlgorithmIdentifer id-it-revPassphrase OBJECT IDENTIFIER ::= {id-it 12} RevPassphraseValue ::= EncryptedValue id-it-implicitConfirm OBJECT IDENTIFIER ::= {id-it 13} ImplicitConfirmValue ::= NULL id-it-confirmWaitTime OBJECT IDENTIFIER ::= {id-it 14} ConfirmWaitTimeValue ::= GeneralizedTime id-it-origPKIMessage OBJECT IDENTIFIER ::= {id-it 15} OrigPKIMessageValue ::= PKIMessages id-it-suppLangTags OBJECT IDENTIFIER ::= {id-it 16} SuppLangTagsValue ::= SEQUENCE OF UTF8String where id-pkix OBJECT IDENTIFIER ::= { iso(1) identified-organization(3) dod(6) internet(1) security(5) mechanisms(5) pkix(7)} and id-it OBJECT IDENTIFIER ::= {id-pkix 4}

InfoTypeAndValue ::= SEQUENCE { infoType OBJECT IDENTIFIER, infoValue ANY DEFINED BY infoType OPTIONAL }@return a basic ASN.1 object representation.

KeyRecRepContent ::= SEQUENCE { status PKIStatusInfo, newSigCert [0] CMPCertificate OPTIONAL, caCerts [1] SEQUENCE SIZE (1..MAX) OF CMPCertificate OPTIONAL, keyPairHist [2] SEQUENCE SIZE (1..MAX) OF CertifiedKeyPair OPTIONAL }@return a basic ASN.1 object representation.

OobCertHash ::= SEQUENCE { hashAlg [0] AlgorithmIdentifier OPTIONAL, certId [1] CertId OPTIONAL, hashVal BIT STRING -- hashVal is calculated over the Der encoding of the -- self-signed certificate with the identifier certID. }@return a basic ASN.1 object representation.

PbmParameter ::= SEQUENCE { salt OCTET STRING, -- note: implementations MAY wish to limit acceptable sizes -- of this string to values appropriate for their environment -- in order to reduce the risk of denial-of-service attacks owf AlgorithmIdentifier, -- AlgId for a One-Way Function (SHA-1 recommended) iterationCount INTEGER, -- number of times the OWF is applied -- note: implementations MAY wish to limit acceptable sizes -- of this integer to values appropriate for their environment -- in order to reduce the risk of denial-of-service attacks mac AlgorithmIdentifier -- the MAC AlgId (e.g., DES-MAC, Triple-DES-MAC [PKCS11], } -- or HMAC [RFC2104, RFC2202])@return a basic ASN.1 object representation.

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] popdecc [5] POPODecKeyChallContent, --pop Challenge popdecr [6] POPODecKeyRespContent, --pop Response 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. cann [16] CertAnnContent, --Certificate Ann. rann [17] RevAnnContent, --Revocation Ann. crlann [18] CRLAnnContent, --CRL Announcement pkiconf [19] PKIConfirmContent, --Confirmation nested [20] NestedMessageContent, --Nested Message genm [21] GenMsgContent, --General Message genp [22] GenRepContent, --General Response error [23] ErrorMsgContent, --Error Message certConf [24] CertConfirmContent, --Certificate confirm pollReq [25] PollReqContent, --Polling request pollRep [26] PollRepContent --Polling response }@return a basic ASN.1 object representation.

PkiConfirmContent ::= NULL@return a basic ASN.1 object representation.

PKIFailureInfo ::= BIT STRING { badAlg (0), -- unrecognized or unsupported Algorithm Identifier badMessageCheck (1), -- integrity check failed (e.g., signature did not verify) badRequest (2), -- transaction not permitted or supported badTime (3), -- messageTime was not sufficiently close to the system time, as defined by local policy badCertId (4), -- no certificate could be found matching the provided criteria badDataFormat (5), -- the data submitted has the wrong format wrongAuthority (6), -- the authority indicated in the request is different from the one creating the response token incorrectData (7), -- the requester's data is incorrect (for notary services) missingTimeStamp (8), -- when the timestamp is missing but should be there (by policy) badPOP (9) -- the proof-of-possession failed certRevoked (10), certConfirmed (11), wrongIntegrity (12), badRecipientNonce (13), timeNotAvailable (14), -- the TSA's time source is not available unacceptedPolicy (15), -- the requested TSA policy is not supported by the TSA unacceptedExtension (16), -- the requested extension is not supported by the TSA addInfoNotAvailable (17) -- the additional information requested could not be understood -- or is not available badSenderNonce (18), badCertTemplate (19), signerNotTrusted (20), transactionIdInUse (21), unsupportedVersion (22), notAuthorized (23), systemUnavail (24), systemFailure (25), -- the request cannot be handled due to system failure duplicateCertReq (26)

PkiFreeText ::= SEQUENCE SIZE (1..MAX) OF UTF8String

PkiHeader ::= SEQUENCE { pvno INTEGER { cmp1999(1), cmp2000(2) }, sender GeneralName, -- identifies the sender recipient GeneralName, -- identifies the intended recipient messageTime [0] GeneralizedTime OPTIONAL, -- time of production of this message (used when sender -- believes that the transport will be "suitable"; i.e., -- that the time will still be meaningful upon receipt) protectionAlg [1] AlgorithmIdentifier OPTIONAL, -- algorithm used for calculation of protection bits senderKID [2] KeyIdentifier OPTIONAL, recipKID [3] KeyIdentifier OPTIONAL, -- to identify specific keys used for protection transactionID [4] OCTET STRING OPTIONAL, -- identifies the transaction; i.e., this will be the same in -- corresponding request, response, certConf, and PKIConf -- messages senderNonce [5] OCTET STRING OPTIONAL, recipNonce [6] OCTET STRING OPTIONAL, -- nonces used to provide replay protection, senderNonce -- is inserted by the creator of this message; recipNonce -- is a nonce previously inserted in a related message by -- the intended recipient of this message freeText [7] PKIFreeText OPTIONAL, -- this may be used to indicate context-specific instructions -- (this field is intended for human consumption) generalInfo [8] SEQUENCE SIZE (1..MAX) OF InfoTypeAndValue OPTIONAL -- this may be used to convey context-specific information -- (this field not primarily intended for human consumption) }@return a basic ASN.1 object representation.

PKIHeader ::= SEQUENCE { pvno INTEGER { cmp1999(1), cmp2000(2) }, sender GeneralName, -- identifies the sender recipient GeneralName, -- identifies the intended recipient messageTime [0] GeneralizedTime OPTIONAL, -- time of production of this message (used when sender -- believes that the transport will be "suitable"; i.e., -- that the time will still be meaningful upon receipt) protectionAlg [1] AlgorithmIdentifier OPTIONAL, -- algorithm used for calculation of protection bits senderKID [2] KeyIdentifier OPTIONAL, recipKID [3] KeyIdentifier OPTIONAL, -- to identify specific keys used for protection transactionID [4] OCTET STRING OPTIONAL, -- identifies the transaction; i.e., this will be the same in -- corresponding request, response, certConf, and PKIConf -- messages senderNonce [5] OCTET STRING OPTIONAL, recipNonce [6] OCTET STRING OPTIONAL, -- nonces used to provide replay protection, senderNonce -- is inserted by the creator of this message; recipNonce -- is a nonce previously inserted in a related message by -- the intended recipient of this message freeText [7] PKIFreeText OPTIONAL, -- this may be used to indicate context-specific instructions -- (this field is intended for human consumption) generalInfo [8] SEQUENCE SIZE (1..MAX) OF InfoTypeAndValue OPTIONAL -- this may be used to convey context-specific information -- (this field not primarily intended for human consumption) }@return a basic ASN.1 object representation.

PkiMessage ::= SEQUENCE { header PKIHeader, body PKIBody, protection [0] PKIProtection OPTIONAL, extraCerts [1] SEQUENCE SIZE (1..MAX) OF CMPCertificate OPTIONAL }@return a basic ASN.1 object representation.

PkiMessages ::= SEQUENCE SIZE (1..MAX) OF PkiMessage@return a basic ASN.1 object representation.

PkiStatusInfo ::= SEQUENCE { status PKIStatus, (INTEGER) statusString PkiFreeText OPTIONAL, failInfo PkiFailureInfo OPTIONAL (BIT STRING) } PKIStatus: granted (0), -- you got exactly what you asked for grantedWithMods (1), -- you got something like what you asked for rejection (2), -- you don't get it, more information elsewhere in the message waiting (3), -- the request body part has not yet been processed, expect to hear more later revocationWarning (4), -- this message contains a warning that a revocation is imminent revocationNotification (5), -- notification that a revocation has occurred keyUpdateWarning (6) -- update already done for the oldCertId specified in CertReqMsg PkiFailureInfo: badAlg (0), -- unrecognized or unsupported Algorithm Identifier badMessageCheck (1), -- integrity check failed (e.g., signature did not verify) badRequest (2), -- transaction not permitted or supported badTime (3), -- messageTime was not sufficiently close to the system time, as defined by local policy badCertId (4), -- no certificate could be found matching the provided criteria badDataFormat (5), -- the data submitted has the wrong format wrongAuthority (6), -- the authority indicated in the request is different from the one creating the response token incorrectData (7), -- the requester's data is incorrect (for notary services) missingTimeStamp (8), -- when the timestamp is missing but should be there (by policy) badPOP (9) -- the proof-of-possession failed

PollRepContent ::= SEQUENCE OF SEQUENCE { certReqId INTEGER, checkAfter INTEGER, -- time in seconds reason PKIFreeText OPTIONAL }@return a basic ASN.1 object representation.

PollReqContent ::= SEQUENCE OF SEQUENCE { certReqId INTEGER }@return a basic ASN.1 object representation.

PopoDecKeyChallContent ::= SEQUENCE OF Challenge@return a basic ASN.1 object representation.

PopoDecKeyRespContent ::= SEQUENCE OF INTEGER@return a basic ASN.1 object representation.

ProtectedPart ::= SEQUENCE { header PKIHeader, body PKIBody }@return a basic ASN.1 object representation.

RevAnnContent ::= SEQUENCE { status PKIStatus, certId CertId, willBeRevokedAt GeneralizedTime, badSinceDate GeneralizedTime, crlDetails Extensions OPTIONAL -- extra CRL details (e.g., crl number, reason, location, etc.) }@return a basic ASN.1 object representation.

RevDetails ::= SEQUENCE { certDetails CertTemplate, -- allows requester to specify as much as they can about -- the cert. for which revocation is requested -- (e.g., for cases in which serialNumber is not available) crlEntryDetails Extensions OPTIONAL -- requested crlEntryExtensions }@return a basic ASN.1 object representation.

RevRepContent ::= SEQUENCE { status SEQUENCE SIZE (1..MAX) OF PKIStatusInfo, -- in same order as was sent in RevReqContent revCerts [0] SEQUENCE SIZE (1..MAX) OF CertId OPTIONAL, -- IDs for which revocation was requested -- (same order as status) crls [1] SEQUENCE SIZE (1..MAX) OF CertificateList OPTIONAL -- the resulting CRLs (there may be more than one) }@return a basic ASN.1 object representation.

RevReqContent ::= SEQUENCE OF RevDetails@return a basic ASN.1 object representation.

Attribute ::= SEQUENCE { attrType OBJECT IDENTIFIER, attrValues SET OF AttributeValue }

Attributes ::= SET SIZE(1..MAX) OF Attribute -- according to RFC 5652@return

AuthenticatedData ::= SEQUENCE { version CMSVersion, originatorInfo [0] IMPLICIT OriginatorInfo OPTIONAL, recipientInfos RecipientInfos, macAlgorithm MessageAuthenticationCodeAlgorithm, digestAlgorithm [1] DigestAlgorithmIdentifier OPTIONAL, encapContentInfo EncapsulatedContentInfo, authAttrs [2] IMPLICIT AuthAttributes OPTIONAL, mac MessageAuthenticationCode, unauthAttrs [3] IMPLICIT UnauthAttributes OPTIONAL } AuthAttributes ::= SET SIZE (1..MAX) OF Attribute UnauthAttributes ::= SET SIZE (1..MAX) OF Attribute MessageAuthenticationCode ::= OCTET STRING

AuthenticatedData ::= SEQUENCE { version CMSVersion, originatorInfo [0] IMPLICIT OriginatorInfo OPTIONAL, recipientInfos RecipientInfos, macAlgorithm MessageAuthenticationCodeAlgorithm, digestAlgorithm [1] DigestAlgorithmIdentifier OPTIONAL, encapContentInfo EncapsulatedContentInfo, authAttrs [2] IMPLICIT AuthAttributes OPTIONAL, mac MessageAuthenticationCode, unauthAttrs [3] IMPLICIT UnauthAttributes OPTIONAL } AuthAttributes ::= SET SIZE (1..MAX) OF Attribute UnauthAttributes ::= SET SIZE (1..MAX) OF Attribute MessageAuthenticationCode ::= OCTET STRING

AuthEnvelopedData ::= SEQUENCE { version CMSVersion, originatorInfo [0] IMPLICIT OriginatorInfo OPTIONAL, recipientInfos RecipientInfos, authEncryptedContentInfo EncryptedContentInfo, authAttrs [1] IMPLICIT AuthAttributes OPTIONAL, mac MessageAuthenticationCode, unauthAttrs [2] IMPLICIT UnauthAttributes OPTIONAL }

AuthEnvelopedData ::= SEQUENCE { version CMSVersion, originatorInfo [0] IMPLICIT OriginatorInfo OPTIONAL, recipientInfos RecipientInfos, authEncryptedContentInfo EncryptedContentInfo, authAttrs [1] IMPLICIT AuthAttributes OPTIONAL, mac MessageAuthenticationCode, unauthAttrs [2] IMPLICIT UnauthAttributes OPTIONAL }

CMSAlgorithmProtection ::= SEQUENCE { digestAlgorithm DigestAlgorithmIdentifier, signatureAlgorithm [1] SignatureAlgorithmIdentifier OPTIONAL, macAlgorithm [2] MessageAuthenticationCodeAlgorithm OPTIONAL } (WITH COMPONENTS { signatureAlgorithm PRESENT, macAlgorithm ABSENT } | WITH COMPONENTS { signatureAlgorithm ABSENT, macAlgorithm PRESENT })

CompressedData ::= Sequence { version CMSVersion, compressionAlgorithm CompressionAlgorithmIdentifier, encapContentInfo EncapsulatedContentInfo }

CompressedData ::= SEQUENCE { version CMSVersion, compressionAlgorithm CompressionAlgorithmIdentifier, encapContentInfo EncapsulatedContentInfo }

ContentInfo ::= Sequence { contentType ContentType, content [0] EXPLICIT ANY DEFINED BY contentType OPTIONAL }

ContentInfo ::= SEQUENCE { contentType ContentType, content [0] EXPLICIT ANY DEFINED BY contentType OPTIONAL }

MQVuserKeyingMaterial ::= SEQUENCE { ephemeralPublicKey OriginatorPublicKey, addedukm [0] EXPLICIT UserKeyingMaterial OPTIONAL }

EncryptedContentInfo ::= Sequence { contentType ContentType, contentEncryptionAlgorithm ContentEncryptionAlgorithmIdentifier, encryptedContent [0] IMPLICIT EncryptedContent OPTIONAL }

EncryptedContentInfo ::= SEQUENCE { contentType ContentType, contentEncryptionAlgorithm ContentEncryptionAlgorithmIdentifier, encryptedContent [0] IMPLICIT EncryptedContent OPTIONAL }

EncryptedData ::= SEQUENCE { version CMSVersion, encryptedContentInfo EncryptedContentInfo, unprotectedAttrs [1] IMPLICIT UnprotectedAttributes OPTIONAL }@return a basic ASN.1 object representation.

EnvelopedData ::= Sequence { version CMSVersion, originatorInfo [0] IMPLICIT OriginatorInfo OPTIONAL, recipientInfos RecipientInfos, encryptedContentInfo EncryptedContentInfo, unprotectedAttrs [1] IMPLICIT UnprotectedAttributes OPTIONAL }

EnvelopedData ::= SEQUENCE { version CMSVersion, originatorInfo [0] IMPLICIT OriginatorInfo OPTIONAL, recipientInfos RecipientInfos, encryptedContentInfo EncryptedContentInfo, unprotectedAttrs [1] IMPLICIT UnprotectedAttributes OPTIONAL }

KekIdentifier ::= Sequence { keyIdentifier OCTET STRING, date GeneralizedTime OPTIONAL, other OtherKeyAttribute OPTIONAL }

KekRecipientInfo ::= Sequence { version CMSVersion, -- always set to 4 kekID KekIdentifier, keyEncryptionAlgorithm KeyEncryptionAlgorithmIdentifier, encryptedKey EncryptedKey }

KeyAgreeRecipientIdentifier ::= CHOICE { issuerAndSerialNumber IssuerAndSerialNumber, rKeyId [0] IMPLICIT RecipientKeyIdentifier }

* KeyAgreeRecipientInfo ::= Sequence { * version CMSVersion, -- always set to 3 * originator [0] EXPLICIT OriginatorIdentifierOrKey, * ukm [1] EXPLICIT UserKeyingMaterial OPTIONAL, * keyEncryptionAlgorithm KeyEncryptionAlgorithmIdentifier, * recipientEncryptedKeys RecipientEncryptedKeys * } * * UserKeyingMaterial ::= OCTET STRING *

KeyTransRecipientInfo ::= Sequence { version CMSVersion, -- always set to 0 or 2 rid RecipientIdentifier, keyEncryptionAlgorithm KeyEncryptionAlgorithmIdentifier, encryptedKey EncryptedKey }

MetaData ::= SEQUENCE { hashProtected BOOLEAN, fileName UTF8String OPTIONAL, mediaType IA5String OPTIONAL, otherMetaData Attributes OPTIONAL }@return

OriginatorIdentifierOrKey ::= CHOICE { issuerAndSerialNumber IssuerAndSerialNumber, subjectKeyIdentifier [0] SubjectKeyIdentifier, originatorKey [1] OriginatorPublicKey } SubjectKeyIdentifier ::= OCTET STRING

OriginatorInfo ::= Sequence { certs [0] IMPLICIT CertificateSet OPTIONAL, crls [1] IMPLICIT CertificateRevocationLists OPTIONAL }

OriginatorPublicKey ::= Sequence { algorithm AlgorithmIdentifier, publicKey BIT STRING }

OtherKeyAttribute ::= Sequence { keyAttrId OBJECT IDENTIFIER, keyAttr ANY DEFINED BY keyAttrId OPTIONAL }

OtherRecipientInfo ::= Sequence { oriType OBJECT IDENTIFIER, oriValue ANY DEFINED BY oriType }

OtherRevocationInfoFormat ::= SEQUENCE { otherRevInfoFormat OBJECT IDENTIFIER, otherRevInfo ANY DEFINED BY otherRevInfoFormat }

PasswordRecipientInfo ::= Sequence { version CMSVersion, -- Always set to 0 keyDerivationAlgorithm [0] KeyDerivationAlgorithmIdentifier OPTIONAL, keyEncryptionAlgorithm KeyEncryptionAlgorithmIdentifier, encryptedKey EncryptedKey }

RecipientEncryptedKey ::= SEQUENCE { rid KeyAgreeRecipientIdentifier, encryptedKey EncryptedKey }

RecipientIdentifier ::= CHOICE { issuerAndSerialNumber IssuerAndSerialNumber, subjectKeyIdentifier [0] SubjectKeyIdentifier } SubjectKeyIdentifier ::= OCTET STRING

RecipientInfo ::= CHOICE { ktri KeyTransRecipientInfo, kari [1] KeyAgreeRecipientInfo, kekri [2] KekRecipientInfo, pwri [3] PasswordRecipientInfo, ori [4] OtherRecipientInfo }

RecipientKeyIdentifier ::= Sequence { subjectKeyIdentifier SubjectKeyIdentifier, date GeneralizedTime OPTIONAL, other OtherKeyAttribute OPTIONAL } SubjectKeyIdentifier ::= OCTET STRING

ScvpReqRes ::= SEQUENCE { request [0] EXPLICIT ContentInfo OPTIONAL, response ContentInfo }@return the ASN.1 primitive representation.

SignedData ::= Sequence { version CMSVersion, digestAlgorithms DigestAlgorithmIdentifiers, encapContentInfo EncapsulatedContentInfo, certificates [0] IMPLICIT CertificateSet OPTIONAL, crls [1] IMPLICIT CertificateRevocationLists OPTIONAL, signerInfos SignerInfos }

SignedData ::= SEQUENCE { version CMSVersion, digestAlgorithms DigestAlgorithmIdentifiers, encapContentInfo EncapsulatedContentInfo, certificates [0] IMPLICIT CertificateSet OPTIONAL, crls [1] IMPLICIT CertificateRevocationLists OPTIONAL, signerInfos SignerInfos }

SignerIdentifier ::= CHOICE { issuerAndSerialNumber IssuerAndSerialNumber, subjectKeyIdentifier [0] SubjectKeyIdentifier } SubjectKeyIdentifier ::= OCTET STRING

SignerInfo ::= Sequence { version Version, SignerIdentifier sid, digestAlgorithm DigestAlgorithmIdentifier, authenticatedAttributes [0] IMPLICIT Attributes OPTIONAL, digestEncryptionAlgorithm DigestEncryptionAlgorithmIdentifier, encryptedDigest EncryptedDigest, unauthenticatedAttributes [1] IMPLICIT Attributes OPTIONAL } EncryptedDigest ::= OCTET STRING DigestAlgorithmIdentifier ::= AlgorithmIdentifier DigestEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier

Time ::= CHOICE { utcTime UTCTime, generalTime GeneralizedTime }

TimeStampAndCRL ::= SEQUENCE { timeStamp TimeStampToken, -- according to RFC 3161 crl CertificateList OPTIONAL -- according to RFC 5280 }@return

TimeStampedData ::= SEQUENCE { version INTEGER { v1(1) }, dataUri IA5String OPTIONAL, metaData MetaData OPTIONAL, content OCTET STRING OPTIONAL, temporalEvidence Evidence }@return

TimeStampTokenEvidence ::= SEQUENCE SIZE(1..MAX) OF TimeStampAndCrl@return

AttributeTypeAndValue ::= SEQUENCE { type OBJECT IDENTIFIER, value ANY DEFINED BY type }@return a basic ASN.1 object representation.

CertId ::= SEQUENCE { issuer GeneralName, serialNumber INTEGER }@return a basic ASN.1 object representation.

CertReqMessages ::= SEQUENCE SIZE (1..MAX) OF CertReqMsg@return a basic ASN.1 object representation.

CertReqMsg ::= SEQUENCE { certReq CertRequest, pop ProofOfPossession OPTIONAL, -- content depends upon key type regInfo SEQUENCE SIZE(1..MAX) OF AttributeTypeAndValue OPTIONAL }@return a basic ASN.1 object representation.

CertRequest ::= SEQUENCE { certReqId INTEGER, -- ID for matching request and reply certTemplate CertTemplate, -- Selected fields of cert to be issued controls Controls OPTIONAL } -- Attributes affecting issuance@return a basic ASN.1 object representation.

CertTemplate ::= SEQUENCE { version [0] Version OPTIONAL, serialNumber [1] INTEGER OPTIONAL, signingAlg [2] AlgorithmIdentifier OPTIONAL, issuer [3] Name OPTIONAL, validity [4] OptionalValidity OPTIONAL, subject [5] Name OPTIONAL, publicKey [6] SubjectPublicKeyInfo OPTIONAL, issuerUID [7] UniqueIdentifier OPTIONAL, subjectUID [8] UniqueIdentifier OPTIONAL, extensions [9] Extensions OPTIONAL }@return a basic ASN.1 object representation.

CertTemplate ::= SEQUENCE { version [0] Version OPTIONAL, serialNumber [1] INTEGER OPTIONAL, signingAlg [2] AlgorithmIdentifier OPTIONAL, issuer [3] Name OPTIONAL, validity [4] OptionalValidity OPTIONAL, subject [5] Name OPTIONAL, publicKey [6] SubjectPublicKeyInfo OPTIONAL, issuerUID [7] UniqueIdentifier OPTIONAL, subjectUID [8] UniqueIdentifier OPTIONAL, extensions [9] Extensions OPTIONAL }@return a basic ASN.1 object representation.

Controls ::= SEQUENCE SIZE(1..MAX) OF AttributeTypeAndValue@return a basic ASN.1 object representation.

EncKeyWithID ::= SEQUENCE { privateKey PrivateKeyInfo, identifier CHOICE { string UTF8String, generalName GeneralName } OPTIONAL }@return

EncryptedKey ::= CHOICE { encryptedValue EncryptedValue, -- deprecated envelopedData [0] EnvelopedData } -- The encrypted private key MUST be placed in the envelopedData -- encryptedContentInfo encryptedContent OCTET STRING.

EncryptedValue ::= SEQUENCE { intendedAlg [0] AlgorithmIdentifier OPTIONAL, -- the intended algorithm for which the value will be used symmAlg [1] AlgorithmIdentifier OPTIONAL, -- the symmetric algorithm used to encrypt the value encSymmKey [2] BIT STRING OPTIONAL, -- the (encrypted) symmetric key used to encrypt the value keyAlg [3] AlgorithmIdentifier OPTIONAL, -- algorithm used to encrypt the symmetric key valueHint [4] OCTET STRING OPTIONAL, -- a brief description or identifier of the encValue content -- (may be meaningful only to the sending entity, and used only -- if EncryptedValue might be re-examined by the sending entity -- in the future) encValue BIT STRING } -- the encrypted value itself@return a basic ASN.1 object representation.

OptionalValidity ::= SEQUENCE { notBefore [0] Time OPTIONAL, notAfter [1] Time OPTIONAL } --at least one MUST be present@return a basic ASN.1 object representation.

PkiArchiveOptions ::= CHOICE { encryptedPrivKey [0] EncryptedKey, -- the actual value of the private key keyGenParameters [1] KeyGenParameters, -- parameters which allow the private key to be re-generated archiveRemGenPrivKey [2] BOOLEAN } -- set to TRUE if sender wishes receiver to archive the private -- key of a key pair that the receiver generates in response to -- this request; set to FALSE if no archival is desired.

PkiPublicationInfo ::= SEQUENCE { action INTEGER { dontPublish (0), pleasePublish (1) }, pubInfos SEQUENCE SIZE (1..MAX) OF SinglePubInfo OPTIONAL } -- pubInfos MUST NOT be present if action is "dontPublish" -- (if action is "pleasePublish" and pubInfos is omitted, -- "dontCare" is assumed)@return a basic ASN.1 object representation.

PKMACValue ::= SEQUENCE { algId AlgorithmIdentifier, -- algorithm value shall be PasswordBasedMac 1.2.840.113533.7.66.13 -- parameter value is PBMParameter value BIT STRING }@return a basic ASN.1 object representation.

PopoPrivKey ::= CHOICE { thisMessage [0] BIT STRING, -- Deprecated -- possession is proven in this message (which contains the private -- key itself (encrypted for the CA)) subsequentMessage [1] SubsequentMessage, -- possession will be proven in a subsequent message dhMAC [2] BIT STRING, -- Deprecated agreeMAC [3] PKMACValue, encryptedKey [4] EnvelopedData }

PopoSigningKey ::= SEQUENCE { poposkInput [0] PopoSigningKeyInput OPTIONAL, algorithmIdentifier AlgorithmIdentifier, signature BIT STRING } -- The signature (using "algorithmIdentifier") is on the -- DER-encoded value of poposkInput. NOTE: If the CertReqMsg -- certReq CertTemplate contains the subject and publicKey values, -- then poposkInput MUST be omitted and the signature MUST be -- computed on the DER-encoded value of CertReqMsg certReq. If -- the CertReqMsg certReq CertTemplate does not contain the public -- key and subject values, then poposkInput MUST be present and -- MUST be signed. This strategy ensures that the public key is -- not present in both the poposkInput and CertReqMsg certReq -- CertTemplate fields.@return a basic ASN.1 object representation.

PopoSigningKeyInput ::= SEQUENCE { authInfo CHOICE { sender [0] GeneralName, -- used only if an authenticated identity has been -- established for the sender (e.g., a DN from a -- previously-issued and currently-valid certificate publicKeyMac PKMacValue }, -- used if no authenticated GeneralName currently exists for -- the sender; publicKeyMac contains a password-based MAC -- on the DER-encoded value of publicKey publicKey SubjectPublicKeyInfo } -- from CertTemplate@return a basic ASN.1 object representation.

ProofOfPossession ::= CHOICE { raVerified [0] NULL, -- used if the RA has already verified that the requester is in -- possession of the private key signature [1] PopoSigningKey, keyEncipherment [2] PopoPrivKey, keyAgreement [3] PopoPrivKey }@return a basic ASN.1 object representation.

SinglePubInfo ::= SEQUENCE { pubMethod INTEGER { dontCare (0), x500 (1), web (2), ldap (3) }, pubLocation GeneralName OPTIONAL }@return a basic ASN.1 object representation.

Gost28147-89-Parameters ::= SEQUENCE { iv Gost28147-89-IV, encryptionParamSet OBJECT IDENTIFIER } Gost28147-89-IV ::= OCTET STRING (SIZE (8))

`null`

if not set.
@param indirectReference The indirect reference or `null`

if not set.
@param dataValueDescriptor The data value descriptor or `null`

if not set.
@param externalData The external data in its encoded form.
`null`

if not set.
@param indirectReference The indirect reference or `null`

if not set.
@param dataValueDescriptor The data value descriptor or `null`

if not set.
@param encoding The encoding to be used for the external data
@param externalData The external data
`0`

single-ASN1-type`1`

OCTET STRING`2`

BIT STRING

Normally in a certificate we would expect "Z" rather than "GMT", however adding the "GMT" means we can just use:

dateF = new SimpleDateFormat("yyyyMMddHHmmssz");To read in the time and Get a date which is compatible with our local time zone.

The pool is also used by the ASN.1 parsers to limit the number of duplicated OID objects in circulation.

@return a reference to the identifier in the pool.@param time the time string.

Normally in a certificate we would expect "Z" rather than "GMT", however adding the "GMT" means we can just use:

dateF = new SimpleDateFormat("yyMMddHHmmssz");To read in the time and Get a date which is compatible with our local time zone.

**Note:** In some cases, due to the local date processing, this
may lead to unexpected results. If you want to stick the normal
convention of 1950 to 2049 use the GetAdjustedTime() method.

```
CertificateValues ::= SEQUENCE OF Certificate
```

CommitmentTypeIndication ::= SEQUENCE { commitmentTypeId CommitmentTypeIdentifier, commitmentTypeQualifier SEQUENCE SIZE (1..MAX) OF CommitmentTypeQualifier OPTIONAL }

CommitmentTypeQualifier ::= SEQUENCE { commitmentTypeIdentifier CommitmentTypeIdentifier, qualifier ANY DEFINED BY commitmentTypeIdentifier OPTIONAL }

`CommitmentTypeQualifier`

instance.
@param commitmentTypeIdentifier a `CommitmentTypeIdentifier`

value
`CommitmentTypeQualifier`

instance.
@param commitmentTypeIdentifier a `CommitmentTypeIdentifier`

value
@param qualifier the qualifier, defined by the above field.
`CommitmentTypeQualifier`

instance.
@param as `CommitmentTypeQualifier`

structure
encoded as an Asn1Sequence.
`Asn1Object`

value
```
CompleteCertificateRefs ::= SEQUENCE OF OtherCertID
```

```
CompleteRevocationRefs ::= SEQUENCE OF CrlOcspRef
```

```
CrlIdentifier ::= SEQUENCE
{
crlissuer Name,
crlIssuedTime UTCTime,
crlNumber INTEGER OPTIONAL
}
```

```
CRLListID ::= SEQUENCE
{
crls SEQUENCE OF CrlValidatedID
}
```

```
CrlOcspRef ::= SEQUENCE {
crlids [0] CRLListID OPTIONAL,
ocspids [1] OcspListID OPTIONAL,
otherRev [2] OtherRevRefs OPTIONAL
}
```

```
CrlValidatedID ::= SEQUENCE {
crlHash OtherHash,
crlIdentifier CrlIdentifier OPTIONAL}
```

```
OcspIdentifier ::= SEQUENCE {
ocspResponderID ResponderID,
-- As in OCSP response data
producedAt GeneralizedTime
-- As in OCSP response data
}
```

```
OcspListID ::= SEQUENCE {
ocspResponses SEQUENCE OF OcspResponsesID
}
```

```
OcspResponsesID ::= SEQUENCE {
ocspIdentifier OcspIdentifier,
ocspRepHash OtherHash OPTIONAL
}
```

```
OtherCertID ::= SEQUENCE {
otherCertHash OtherHash,
issuerSerial IssuerSerial OPTIONAL
}
```

```
OtherHash ::= CHOICE {
sha1Hash OtherHashValue, -- This contains a SHA-1 hash
otherHash OtherHashAlgAndValue
}
OtherHashValue ::= OCTET STRING
```

```
OtherHashAlgAndValue ::= SEQUENCE {
hashAlgorithm AlgorithmIdentifier,
hashValue OtherHashValue
}
OtherHashValue ::= OCTET STRING
```

```
OtherRevRefs ::= SEQUENCE
{
otherRevRefType OtherRevRefType,
otherRevRefs ANY DEFINED BY otherRevRefType
}
OtherRevRefType ::= OBJECT IDENTIFIER
```

```
OtherRevVals ::= SEQUENCE
{
otherRevValType OtherRevValType,
otherRevVals ANY DEFINED BY otherRevValType
}
OtherRevValType ::= OBJECT IDENTIFIER
```

```
OtherSigningCertificate ::= SEQUENCE {
certs SEQUENCE OF OtherCertID,
policies SEQUENCE OF PolicyInformation OPTIONAL
}
```

```
RevocationValues ::= SEQUENCE {
crlVals [0] SEQUENCE OF CertificateList OPTIONAL,
ocspVals [1] SEQUENCE OF BasicOCSPResponse OPTIONAL,
otherRevVals [2] OtherRevVals OPTIONAL
}
```

```
SignaturePolicyId ::= SEQUENCE {
sigPolicyIdentifier SigPolicyId,
sigPolicyHash SigPolicyHash,
sigPolicyQualifiers SEQUENCE SIZE (1..MAX) OF SigPolicyQualifierInfo OPTIONAL
}
SigPolicyId ::= OBJECT IDENTIFIER
SigPolicyHash ::= OtherHashAlgAndValue
```

```
SignaturePolicyIdentifier ::= CHOICE {
SignaturePolicyId SignaturePolicyId,
SignaturePolicyImplied SignaturePolicyImplied
}
SignaturePolicyImplied ::= NULL
```

SignerAttribute ::= SEQUENCE OF CHOICE { claimedAttributes [0] ClaimedAttributes, certifiedAttributes [1] CertifiedAttributes } ClaimedAttributes ::= SEQUENCE OF Attribute CertifiedAttributes ::= AttributeCertificate -- as defined in RFC 3281: see clause 4.1.

SignerLocation ::= SEQUENCE { countryName [0] DirectoryString OPTIONAL, localityName [1] DirectoryString OPTIONAL, postalAddress [2] PostalAddress OPTIONAL } PostalAddress ::= SEQUENCE SIZE(1..6) OF DirectoryString

SignerLocation ::= SEQUENCE { countryName [0] DirectoryString OPTIONAL, localityName [1] DirectoryString OPTIONAL, postalAddress [2] PostalAddress OPTIONAL } PostalAddress ::= SEQUENCE SIZE(1..6) OF DirectoryString DirectoryString ::= CHOICE { teletexString TeletexString (SIZE (1..MAX)), printableString PrintableString (SIZE (1..MAX)), universalString UniversalString (SIZE (1..MAX)), utf8String UTF8String (SIZE (1.. MAX)), bmpString BMPString (SIZE (1..MAX)) }

```
SigPolicyQualifierInfo ::= SEQUENCE {
sigPolicyQualifierId SigPolicyQualifierId,
sigQualifier ANY DEFINED BY sigPolicyQualifierId
}
SigPolicyQualifierId ::= OBJECT IDENTIFIER
```

ContentHints ::= SEQUENCE { contentDescription UTF8String (SIZE (1..MAX)) OPTIONAL, contentType ContentType }

ContentIdentifier ::= OCTET STRINGid-aa-contentIdentifier OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9) smime(16) id-aa(2) 7 }

EssCertID ::= SEQUENCE { certHash Hash, issuerSerial IssuerSerial OPTIONAL }

EssCertIDv2 ::= SEQUENCE { hashAlgorithm AlgorithmIdentifier DEFAULT {algorithm id-sha256}, certHash Hash, issuerSerial IssuerSerial OPTIONAL } Hash ::= OCTET STRING IssuerSerial ::= SEQUENCE { issuer GeneralNames, serialNumber CertificateSerialNumber }

SigningCertificate ::= SEQUENCE { certs SEQUENCE OF EssCertID, policies SEQUENCE OF PolicyInformation OPTIONAL }id-aa-signingCertificate OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9) smime(16) id-aa(2) 12 }

SigningCertificateV2 ::= SEQUENCE { certs SEQUENCE OF EssCertIDv2, policies SEQUENCE OF PolicyInformation OPTIONAL }id-aa-signingCertificateV2 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9) smime(16) id-aa(2) 47 }

If you use this interface your class should also implement the getInstance pattern which takes a tag object and the tagging mode used.

CscaMasterList ::= SEQUENCE { version CscaMasterListVersion, certList SET OF Certificate } CscaMasterListVersion :: INTEGER {v0(0)}

DataGroupHash ::= SEQUENCE { dataGroupNumber DataGroupNumber, dataGroupHashValue OCTET STRING } DataGroupNumber ::= INTEGER { dataGroup1 (1), dataGroup1 (2), dataGroup1 (3), dataGroup1 (4), dataGroup1 (5), dataGroup1 (6), dataGroup1 (7), dataGroup1 (8), dataGroup1 (9), dataGroup1 (10), dataGroup1 (11), dataGroup1 (12), dataGroup1 (13), dataGroup1 (14), dataGroup1 (15), dataGroup1 (16) }

LDSSecurityObject ::= SEQUENCE { version LDSSecurityObjectVersion, hashAlgorithm DigestAlgorithmIdentifier, dataGroupHashValues SEQUENCE SIZE (2..ub-DataGroups) OF DataHashGroup, ldsVersionInfo LDSVersionInfo OPTIONAL -- if present, version MUST be v1 } DigestAlgorithmIdentifier ::= AlgorithmIdentifier, LDSSecurityObjectVersion :: INTEGER {V0(0)}

LDSVersionInfo ::= SEQUENCE { ldsVersion PRINTABLE STRING unicodeVersion PRINTABLE STRING }@return

DateOfCertGenSyntax ::= GeneralizedTime

ICCSNSyntax ::= OCTET STRING (SIZE(8..20))

PKReferenceSyntax ::= OCTET STRING (SIZE(20))

RestrictionSyntax ::= DirectoryString (SIZE(1..1024))@see Org.BouncyCastle.Asn1.IsisMtt.X509.Restriction

RetrieveIfAllowed ::= BOOLEAN

CertInDirSince ::= GeneralizedTime

NameAtBirth ::= DirectoryString(SIZE(1..64)Used in {@link Org.BouncyCastle.Asn1.X509.SubjectDirectoryAttributes SubjectDirectoryAttributes}

AdditionalInformationSyntax ::= DirectoryString (SIZE(1..2048))@see Org.BouncyCastle.Asn1.IsisMtt.X509.AdditionalInformationSyntax

LiabilityLimitationFlagSyntax ::= BOOLEAN

CertHash ::= SEQUENCE { hashAlgorithm AlgorithmIdentifier, certificateHash OCTET STRING }

The sequence is of type CertHash:

CertHash ::= SEQUENCE { hashAlgorithm AlgorithmIdentifier, certificateHash OCTET STRING }@param seq The ASN.1 sequence.

Returns:

CertHash ::= SEQUENCE { hashAlgorithm AlgorithmIdentifier, certificateHash OCTET STRING }@return an Asn1Object

ISIS-MTT-SigG: The signature act allows publishing certificates only then, when the certificate owner gives his isExplicit permission. Accordingly, there may be ï¿½nondownloadableï¿½ certificates, about which the responder must provide status information, but MUST NOT include them in the response. Clients may get therefore the following three kind of answers on a single request including the RetrieveIfAllowed extension:

- a) the responder supports the extension and is allowed to publish the certificate: RequestedCertificate returned including the requested certificate
- b) the responder supports the extension but is NOT allowed to publish the certificate: RequestedCertificate returned including an empty OCTET STRING
- c) the responder does not support the extension: RequestedCertificate is not included in the response

RequestedCertificate ::= CHOICE { Certificate Certificate, publicKeyCertificate [0] EXPLICIT OCTET STRING, attributeCertificate [1] EXPLICIT OCTET STRING }

Only one parameter can be given. All other must be `null`

.
@param certificate Given as Certificate

Returns:

RequestedCertificate ::= CHOICE { Certificate Certificate, publicKeyCertificate [0] EXPLICIT OCTET STRING, attributeCertificate [1] EXPLICIT OCTET STRING }@return an Asn1Object

AdditionalInformationSyntax ::= DirectoryString (SIZE(1..2048))

Returns:

AdditionalInformationSyntax ::= DirectoryString (SIZE(1..2048))@return an Asn1Object

Admissions ::= SEQUENCE { admissionAuthority [0] EXPLICIT GeneralName OPTIONAL namingAuthority [1] EXPLICIT NamingAuthority OPTIONAL professionInfos SEQUENCE OF ProfessionInfo }@see Org.BouncyCastle.Asn1.IsisMtt.X509.AdmissionSyntax @see Org.BouncyCastle.Asn1.IsisMtt.X509.ProfessionInfo @see Org.BouncyCastle.Asn1.IsisMtt.X509.NamingAuthority

The sequence is of type ProcurationSyntax:

Admissions ::= SEQUENCE { admissionAuthority [0] EXPLICIT GeneralName OPTIONAL namingAuthority [1] EXPLICIT NamingAuthority OPTIONAL professionInfos SEQUENCE OF ProfessionInfo }@param seq The ASN.1 sequence.

Parameter `professionInfos`

is mandatory.
@param admissionAuthority The admission authority.
@param namingAuthority The naming authority.
@param professionInfos The profession infos.

Returns:

Admissions ::= SEQUENCE { admissionAuthority [0] EXPLICIT GeneralName OPTIONAL namingAuthority [1] EXPLICIT NamingAuthority OPTIONAL professionInfos SEQUENCE OF ProfessionInfo }@return an Asn1Object

AdmissionSyntax ::= SEQUENCE { admissionAuthority GeneralName OPTIONAL, contentsOfAdmissions SEQUENCE OF Admissions }NamingAuthority ::= SEQUENCE { namingAuthorityId OBJECT IDENTIFIER OPTIONAL, namingAuthorityUrl IA5String OPTIONAL, namingAuthorityText DirectoryString(SIZE(1..128)) OPTIONAL }

ProfessionInfo ::= SEQUENCE { namingAuthority [0] EXPLICIT NamingAuthority OPTIONAL, professionItems SEQUENCE OF DirectoryString (SIZE(1..128)), professionOIDs SEQUENCE OF OBJECT IDENTIFIER OPTIONAL, registrationNumber PrintableString(SIZE(1..128)) OPTIONAL, addProfessionInfo OCTET STRING OPTIONAL }

ISIS-MTT PROFILE: The relatively complex structure of AdmissionSyntax supports the following concepts and requirements:

- External institutions (e.g. professional associations, chambers, unions, administrative bodies, companies, etc.), which are responsible for granting and verifying professional admissions, are indicated by means of the data field admissionAuthority. An admission authority is indicated by a GeneralName object. Here an X.501 directory name (distinguished name) can be indicated in the field directoryName, a URL address can be indicated in the field uniformResourceIdentifier, and an object identifier can be indicated in the field registeredId.
- The names of authorities which are responsible for the administration of title registers are indicated in the data field namingAuthority. The name of the authority can be identified by an object identifier in the field namingAuthorityId, by means of a text string in the field namingAuthorityText, by means of a URL address in the field namingAuthorityUrl, or by a combination of them. For example, the text string can contain the name of the authority, the country and the name of the title register. The URL-option refers to a web page which contains lists with officially registered professions (text and possibly OID) as well as further information on these professions. Object identifiers for the component namingAuthorityId are grouped under the OID-branch id-isis-at-namingAuthorities and must be applied for.
- See http://www.teletrust.de/anwend.asp?Id=30200&Sprache=E_&HomePG=0 for an application form and http://www.teletrust.de/links.asp?id=30220,11 for an overview of registered naming authorities.
- By means of the data type ProfessionInfo certain professions, specializations, disciplines, fields of activity, etc. are identified. A profession is represented by one or more text strings, resp. profession OIDs in the fields professionItems and professionOIDs and by a registration number in the field registrationNumber. An indication in text form must always be present, whereas the other indications are optional. The component addProfessionInfo may contain additional applicationspecific information in DER-encoded form.

By means of different namingAuthority-OIDs or profession OIDs hierarchies of professions, specializations, disciplines, fields of activity, etc. can be expressed. The issuing admission authority should always be indicated (field admissionAuthority), whenever a registration number is presented. Still, information on admissions can be given without indicating an admission or a naming authority by the exclusive use of the component professionItems. In this case the certification authority is responsible for the verification of the admission information.

This attribute is single-valued. Still, several admissions can be captured in the sequence structure of the component contentsOfAdmissions of AdmissionSyntax or in the component professionInfos of Admissions. The component admissionAuthority of AdmissionSyntax serves as default value for the component admissionAuthority of Admissions. Within the latter component the default value can be overwritten, in case that another authority is responsible. The component namingAuthority of Admissions serves as a default value for the component namingAuthority of ProfessionInfo. Within the latter component the default value can be overwritten, in case that another naming authority needs to be recorded.

The length of the string objects is limited to 128 characters. It is
recommended to indicate a namingAuthorityURL in all issued attribute
certificates. If a namingAuthorityURL is indicated, the field professionItems
of ProfessionInfo should contain only registered titles. If the field
professionOIDs exists, it has to contain the OIDs of the professions listed
in professionItems in the same order. In general, the field professionInfos
should contain only one entry, unless the admissions that are to be listed
are logically connected (e.g. they have been issued under the same admission
number).
@see Org.BouncyCastle.Asn1.IsisMtt.X509.Admissions
@see Org.BouncyCastle.Asn1.IsisMtt.X509.ProfessionInfo
@see Org.BouncyCastle.Asn1.IsisMtt.X509.NamingAuthority

The sequence is of type ProcurationSyntax:

AdmissionSyntax ::= SEQUENCE { admissionAuthority GeneralName OPTIONAL, contentsOfAdmissions SEQUENCE OF Admissions }@param seq The ASN.1 sequence.NamingAuthority ::= SEQUENCE { namingAuthorityId OBJECT IDENTIFIER OPTIONAL, namingAuthorityUrl IA5String OPTIONAL, namingAuthorityText DirectoryString(SIZE(1..128)) OPTIONAL }

ProfessionInfo ::= SEQUENCE { namingAuthority [0] EXPLICIT NamingAuthority OPTIONAL, professionItems SEQUENCE OF DirectoryString (SIZE(1..128)), professionOIDs SEQUENCE OF OBJECT IDENTIFIER OPTIONAL, registrationNumber PrintableString(SIZE(1..128)) OPTIONAL, addProfessionInfo OCTET STRING OPTIONAL }

Returns:

AdmissionSyntax ::= SEQUENCE { admissionAuthority GeneralName OPTIONAL, contentsOfAdmissions SEQUENCE OF Admissions }@return an Asn1ObjectNamingAuthority ::= SEQUENCE { namingAuthorityId OBJECT IDENTIFIER OPTIONAL, namingAuthorityUrl IA5String OPTIONAL, namingAuthorityText DirectoryString(SIZE(1..128)) OPTIONAL }

ProfessionInfo ::= SEQUENCE { namingAuthority [0] EXPLICIT NamingAuthority OPTIONAL, professionItems SEQUENCE OF DirectoryString (SIZE(1..128)), professionOIDs SEQUENCE OF OBJECT IDENTIFIER OPTIONAL, registrationNumber PrintableString(SIZE(1..128)) OPTIONAL, addProfessionInfo OCTET STRING OPTIONAL }

DeclarationOfMajoritySyntax ::= CHOICE { notYoungerThan [0] IMPLICIT INTEGER, fullAgeAtCountry [1] IMPLICIT SEQUENCE { fullAge BOOLEAN DEFAULT TRUE, country PrintableString (SIZE(2)) } dateOfBirth [2] IMPLICIT GeneralizedTime }

fullAgeAtCountry indicates the majority of the owner with respect to the laws
of a specific country.

Returns:

DeclarationOfMajoritySyntax ::= CHOICE { notYoungerThan [0] IMPLICIT INTEGER, fullAgeAtCountry [1] IMPLICIT SEQUENCE { fullAge BOOLEAN DEFAULT TRUE, country PrintableString (SIZE(2)) } dateOfBirth [2] IMPLICIT GeneralizedTime }@return an Asn1Object

Indicates a monetary limit within which the certificate holder is authorized to act. (This value DOES NOT express a limit on the liability of the certification authority).

MonetaryLimitSyntax ::= SEQUENCE { currency PrintableString (SIZE(3)), amount INTEGER, exponent INTEGER }

currency must be the ISO code.

value = amountï¿½10*exponent

value = amountï¿½10^exponent
@param currency The currency. Must be the ISO code.
@param amount The amount
@param exponent The exponent

Returns:

MonetaryLimitSyntax ::= SEQUENCE { currency PrintableString (SIZE(3)), amount INTEGER, exponent INTEGER }@return an Asn1Object

NamingAuthority ::= SEQUENCE { namingAuthorityID OBJECT IDENTIFIER OPTIONAL, namingAuthorityUrl IA5String OPTIONAL, namingAuthorityText DirectoryString(SIZE(1..128)) OPTIONAL }@see Org.BouncyCastle.Asn1.IsisMtt.X509.AdmissionSyntax

NamingAuthority ::= SEQUENCE { namingAuthorityID OBJECT IDENTIFIER OPTIONAL, namingAuthorityUrl IA5String OPTIONAL, namingAuthorityText DirectoryString(SIZE(1..128)) OPTIONAL }@param seq The ASN.1 sequence.

All parameters can be combined.
@param namingAuthorityID ObjectIdentifier for naming authority.
@param namingAuthorityUrl URL for naming authority.
@param namingAuthorityText Textual representation of naming authority.

Returns:

NamingAuthority ::= SEQUENCE { namingAuthorityID OBJECT IDENTIFIER OPTIONAL, namingAuthorityUrl IA5String OPTIONAL, namingAuthorityText DirectoryString(SIZE(1..128)) OPTIONAL }@return an Asn1Object

ISIS-MTT PROFILE: The corresponding ProcurationSyntax contains either the name of the person who is represented (subcomponent thirdPerson) or a reference to his/her base certificate (in the component signingFor, subcomponent certRef), furthermore the optional components country and typeSubstitution to indicate the country whose laws apply, and respectively the type of procuration (e.g. manager, procuration, custody).

ISIS-MTT PROFILE: The GeneralName MUST be of type directoryName and MAY only contain: - RFC3039 attributes, except pseudonym (countryName, commonName, surname, givenName, serialNumber, organizationName, organizationalUnitName, stateOrProvincename, localityName, postalAddress) and - SubjectDirectoryName attributes (title, dateOfBirth, placeOfBirth, gender, countryOfCitizenship, countryOfResidence and NameAtBirth).

ProcurationSyntax ::= SEQUENCE { country [1] EXPLICIT PrintableString(SIZE(2)) OPTIONAL, typeOfSubstitution [2] EXPLICIT DirectoryString (SIZE(1..128)) OPTIONAL, signingFor [3] EXPLICIT SigningFor } SigningFor ::= CHOICE { thirdPerson GeneralName, certRef IssuerSerial }

The sequence is of type ProcurationSyntax:

ProcurationSyntax ::= SEQUENCE { country [1] EXPLICIT PrintableString(SIZE(2)) OPTIONAL, typeOfSubstitution [2] EXPLICIT DirectoryString (SIZE(1..128)) OPTIONAL, signingFor [3] EXPLICIT SigningFor }@param seq The ASN.1 sequence.SigningFor ::= CHOICE { thirdPerson GeneralName, certRef IssuerSerial }

Either `generalName`

or `certRef`

MUST be
`null`

.
@param country The country code whose laws apply.
@param typeOfSubstitution The type of procuration.
@param certRef Reference to certificate of the person who is represented.

Either `generalName`

or `certRef`

MUST be
`null`

.
@param country The country code whose laws apply.
@param typeOfSubstitution The type of procuration.
@param thirdPerson The GeneralName of the person who is represented.

Returns:

ProcurationSyntax ::= SEQUENCE { country [1] EXPLICIT PrintableString(SIZE(2)) OPTIONAL, typeOfSubstitution [2] EXPLICIT DirectoryString (SIZE(1..128)) OPTIONAL, signingFor [3] EXPLICIT SigningFor }@return an Asn1ObjectSigningFor ::= CHOICE { thirdPerson GeneralName, certRef IssuerSerial }

ProfessionInfo ::= SEQUENCE { namingAuthority [0] EXPLICIT NamingAuthority OPTIONAL, professionItems SEQUENCE OF DirectoryString (SIZE(1..128)), professionOids SEQUENCE OF OBJECT IDENTIFIER OPTIONAL, registrationNumber PrintableString(SIZE(1..128)) OPTIONAL, addProfessionInfo OCTET STRING OPTIONAL }@see Org.BouncyCastle.Asn1.IsisMtt.X509.AdmissionSyntax

ProfessionInfo ::= SEQUENCE { namingAuthority [0] EXPLICIT NamingAuthority OPTIONAL, professionItems SEQUENCE OF DirectoryString (SIZE(1..128)), professionOids SEQUENCE OF OBJECT IDENTIFIER OPTIONAL, registrationNumber PrintableString(SIZE(1..128)) OPTIONAL, addProfessionInfo OCTET STRING OPTIONAL }@param seq The ASN.1 sequence.

`professionItems`

is mandatory, all other parameters are
optional.
@param namingAuthority The naming authority.
@param professionItems Directory strings of the profession.
@param professionOids DERObjectIdentfier objects for the
profession.
@param registrationNumber Registration number.
@param addProfessionInfo Additional infos in encoded form.

Returns:

ProfessionInfo ::= SEQUENCE { namingAuthority [0] EXPLICIT NamingAuthority OPTIONAL, professionItems SEQUENCE OF DirectoryString (SIZE(1..128)), professionOids SEQUENCE OF OBJECT IDENTIFIER OPTIONAL, registrationNumber PrintableString(SIZE(1..128)) OPTIONAL, addProfessionInfo OCTET STRING OPTIONAL }@return an Asn1Object

RestrictionSyntax ::= DirectoryString (SIZE(1..1024))

The DirectoryString is of type RestrictionSyntax:

RestrictionSyntax ::= DirectoryString (SIZE(1..1024))@param restriction A IAsn1String.

Returns:

RestrictionSyntax ::= DirectoryString (SIZE(1..1024))@return an Asn1Object

cast5CBCParameters ::= Sequence { iv OCTET STRING DEFAULT 0, -- Initialization vector keyLength Integer -- Key length, in bits }

IDEA-CBCPar ::= Sequence { iv OCTET STRING OPTIONAL -- exactly 8 octets }

NetscapeCertType ::= BIT STRING { SSLClient (0), SSLServer (1), S/MIME (2), Object Signing (3), Reserved (4), SSL CA (5), S/MIME CA (6), Object Signing CA (7) }

PublicKeyAndChallenge ::= SEQUENCE { spki SubjectPublicKeyInfo, challenge IA5STRING }

BasicOcspResponse ::= Sequence { tbsResponseData ResponseData, signatureAlgorithm AlgorithmIdentifier, signature BIT STRING, certs [0] EXPLICIT Sequence OF Certificate OPTIONAL }

CertID ::= Sequence { hashAlgorithm AlgorithmIdentifier, issuerNameHash OCTET STRING, -- Hash of Issuer's DN issuerKeyHash OCTET STRING, -- Hash of Issuers public key serialNumber CertificateSerialNumber }

CertStatus ::= CHOICE { good [0] IMPLICIT Null, revoked [1] IMPLICIT RevokedInfo, unknown [2] IMPLICIT UnknownInfo }

CrlID ::= Sequence { crlUrl [0] EXPLICIT IA5String OPTIONAL, crlNum [1] EXPLICIT Integer OPTIONAL, crlTime [2] EXPLICIT GeneralizedTime OPTIONAL }

OcspRequest ::= Sequence { tbsRequest TBSRequest, optionalSignature [0] EXPLICIT Signature OPTIONAL }

OcspResponse ::= Sequence { responseStatus OcspResponseStatus, responseBytes [0] EXPLICIT ResponseBytes OPTIONAL }

OcspResponseStatus ::= Enumerated { successful (0), --Response has valid confirmations malformedRequest (1), --Illegal confirmation request internalError (2), --Internal error in issuer tryLater (3), --Try again later --(4) is not used sigRequired (5), --Must sign the request unauthorized (6) --Request unauthorized }

Request ::= Sequence { reqCert CertID, singleRequestExtensions [0] EXPLICIT Extensions OPTIONAL }

ResponderID ::= CHOICE { byName [1] Name, byKey [2] KeyHash }

ResponseBytes ::= Sequence { responseType OBJECT IDENTIFIER, response OCTET STRING }

ResponseData ::= Sequence { version [0] EXPLICIT Version DEFAULT v1, responderID ResponderID, producedAt GeneralizedTime, responses Sequence OF SingleResponse, responseExtensions [1] EXPLICIT Extensions OPTIONAL }

RevokedInfo ::= Sequence { revocationTime GeneralizedTime, revocationReason [0] EXPLICIT CRLReason OPTIONAL }

ServiceLocator ::= Sequence { issuer Name, locator AuthorityInfoAccessSyntax OPTIONAL }

Signature ::= Sequence { signatureAlgorithm AlgorithmIdentifier, signature BIT STRING, certs [0] EXPLICIT Sequence OF Certificate OPTIONAL}

SingleResponse ::= Sequence { certID CertID, certStatus CertStatus, thisUpdate GeneralizedTime, nextUpdate [0] EXPLICIT GeneralizedTime OPTIONAL, singleExtensions [1] EXPLICIT Extensions OPTIONAL }

TBSRequest ::= Sequence { version [0] EXPLICIT Version DEFAULT v1, requestorName [1] EXPLICIT GeneralName OPTIONAL, requestList Sequence OF Request, requestExtensions [2] EXPLICIT Extensions OPTIONAL }

Attr ::= Sequence { attrType OBJECT IDENTIFIER, attrValues Set OF AttributeValue }

CertificationRequest ::= Sequence { certificationRequestInfo CertificationRequestInfo, signatureAlgorithm AlgorithmIdentifier{{ SignatureAlgorithms }}, signature BIT STRING }

CertificationRequestInfo ::= Sequence { version Integer { v1(0) } (v1,...), subject Name, subjectPKInfo SubjectPublicKeyInfo{{ PKInfoAlgorithms }}, attributes [0] Attributes{{ CRIAttributes }} } Attributes { ATTRIBUTE:IOSet } ::= Set OF Attr{{ IOSet }} Attr { ATTRIBUTE:IOSet } ::= Sequence { type ATTRIBUTE.&id({IOSet}), values Set SIZE(1..MAX) OF ATTRIBUTE.&Type({IOSet}{\@type}) }

ContentInfo ::= Sequence { contentType ContentType, content [0] EXPLICIT ANY DEFINED BY contentType OPTIONAL }

EncryptedData ::= Sequence { version Version, encryptedContentInfo EncryptedContentInfo } EncryptedContentInfo ::= Sequence { contentType ContentType, contentEncryptionAlgorithm ContentEncryptionAlgorithmIdentifier, encryptedContent [0] IMPLICIT EncryptedContent OPTIONAL } EncryptedContent ::= OCTET STRING

EncryptedPrivateKeyInfo ::= Sequence { encryptionAlgorithm AlgorithmIdentifier {{KeyEncryptionAlgorithms}}, encryptedData EncryptedData } EncryptedData ::= OCTET STRING KeyEncryptionAlgorithms ALGORITHM-IDENTIFIER ::= { ... -- For local profiles }

MacData ::= SEQUENCE { mac DigestInfo, macSalt OCTET STRING, iterations INTEGER DEFAULT 1 -- Note: The default is for historic reasons and its use is deprecated. A -- higher value, like 1024 is recommended.@return the basic DERObject construction.

PrivateKeyInfo ::= Sequence { version Version, privateKeyAlgorithm AlgorithmIdentifier {{PrivateKeyAlgorithms}}, privateKey PrivateKey, attributes [0] IMPLICIT Attributes OPTIONAL } Version ::= Integer {v1(0)} (v1,...) PrivateKey ::= OCTET STRING Attributes ::= Set OF Attr

RSAES-OAEP-params ::= SEQUENCE { hashAlgorithm [0] OAEP-PSSDigestAlgorithms DEFAULT sha1, maskGenAlgorithm [1] PKCS1MGFAlgorithms DEFAULT mgf1SHA1, pSourceAlgorithm [2] PKCS1PSourceAlgorithms DEFAULT pSpecifiedEmpty } OAEP-PSSDigestAlgorithms ALGORITHM-IDENTIFIER ::= { { OID id-sha1 PARAMETERS NULL }| { OID id-sha256 PARAMETERS NULL }| { OID id-sha384 PARAMETERS NULL }| { OID id-sha512 PARAMETERS NULL }, ... -- Allows for future expansion -- } PKCS1MGFAlgorithms ALGORITHM-IDENTIFIER ::= { { OID id-mgf1 PARAMETERS OAEP-PSSDigestAlgorithms }, ... -- Allows for future expansion -- } PKCS1PSourceAlgorithms ALGORITHM-IDENTIFIER ::= { { OID id-pSpecified PARAMETERS OCTET STRING }, ... -- Allows for future expansion -- }@return the asn1 primitive representing the parameters.

RsaPrivateKey ::= Sequence { version Version, modulus Integer, -- n publicExponent Integer, -- e privateExponent Integer, -- d prime1 Integer, -- p prime2 Integer, -- q exponent1 Integer, -- d mod (p-1) exponent2 Integer, -- d mod (q-1) coefficient Integer -- (inverse of q) mod p } Version ::= Integer

This routine is written to output Pkcs1 version 0, private keys.

RSASSA-PSS-params ::= SEQUENCE { hashAlgorithm [0] OAEP-PSSDigestAlgorithms DEFAULT sha1, maskGenAlgorithm [1] PKCS1MGFAlgorithms DEFAULT mgf1SHA1, saltLength [2] INTEGER DEFAULT 20, trailerField [3] TrailerField DEFAULT trailerFieldBC } OAEP-PSSDigestAlgorithms ALGORITHM-IDENTIFIER ::= { { OID id-sha1 PARAMETERS NULL }| { OID id-sha256 PARAMETERS NULL }| { OID id-sha384 PARAMETERS NULL }| { OID id-sha512 PARAMETERS NULL }, ... -- Allows for future expansion -- } PKCS1MGFAlgorithms ALGORITHM-IDENTIFIER ::= { { OID id-mgf1 PARAMETERS OAEP-PSSDigestAlgorithms }, ... -- Allows for future expansion -- } TrailerField ::= INTEGER { trailerFieldBC(1) }@return the asn1 primitive representing the parameters.

SignedData ::= Sequence { version Version, digestAlgorithms DigestAlgorithmIdentifiers, contentInfo ContentInfo, certificates [0] IMPLICIT ExtendedCertificatesAndCertificates OPTIONAL, crls [1] IMPLICIT CertificateRevocationLists OPTIONAL, signerInfos SignerInfos }

SignerInfo ::= Sequence { version Version, issuerAndSerialNumber IssuerAndSerialNumber, digestAlgorithm DigestAlgorithmIdentifier, authenticatedAttributes [0] IMPLICIT Attributes OPTIONAL, digestEncryptionAlgorithm DigestEncryptionAlgorithmIdentifier, encryptedDigest EncryptedDigest, unauthenticatedAttributes [1] IMPLICIT Attributes OPTIONAL } EncryptedDigest ::= OCTET STRING DigestAlgorithmIdentifier ::= AlgorithmIdentifier DigestEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier

SMIMECapabilities ::= Sequence OF SMIMECapability

SMIMECapability ::= Sequence { capabilityID OBJECT IDENTIFIER, parameters ANY DEFINED BY capabilityID OPTIONAL }

SmimeEncryptionKeyPreference ::= CHOICE { issuerAndSerialNumber [0] IssuerAndSerialNumber, receipentKeyId [1] RecipientKeyIdentifier, subjectAltKeyIdentifier [2] SubjectKeyIdentifier }

Accuracy ::= SEQUENCE { seconds INTEGER OPTIONAL, millis [0] INTEGER (1..999) OPTIONAL, micros [1] INTEGER (1..999) OPTIONAL }

MessageImprint ::= SEQUENCE { hashAlgorithm AlgorithmIdentifier, hashedMessage OCTET STRING }

TimeStampReq ::= SEQUENCE { version INTEGER { v1(1) }, messageImprint MessageImprint, --a hash algorithm OID and the hash value of the data to be --time-stamped reqPolicy TSAPolicyId OPTIONAL, nonce INTEGER OPTIONAL, certReq BOOLEAN DEFAULT FALSE, extensions [0] IMPLICIT Extensions OPTIONAL }

TimeStampResp ::= SEQUENCE { status PkiStatusInfo, timeStampToken TimeStampToken OPTIONAL }

TstInfo ::= SEQUENCE { version INTEGER { v1(1) }, policy TSAPolicyId, messageImprint MessageImprint, -- MUST have the same value as the similar field in -- TimeStampReq serialNumber INTEGER, -- Time-Stamping users MUST be ready to accommodate integers -- up to 160 bits. genTime GeneralizedTime, accuracy Accuracy OPTIONAL, ordering BOOLEAN DEFAULT FALSE, nonce INTEGER OPTIONAL, -- MUST be present if the similar field was present -- in TimeStampReq. In that case it MUST have the same value. tsa [0] GeneralName OPTIONAL, extensions [1] IMPLICIT Extensions OPTIONAL }

DirectoryString ::= CHOICE { teletexString TeletexString (SIZE (1..MAX)), printableString PrintableString (SIZE (1..MAX)), universalString UniversalString (SIZE (1..MAX)), utf8String UTF8String (SIZE (1..MAX)), bmpString BMPString (SIZE (1..MAX)) }

RelativeDistinguishedName ::= SET OF AttributeTypeAndValue AttributeTypeAndValue ::= SEQUENCE { type AttributeType, value AttributeValue }@return this object as its ASN1Primitive type

All other string values are send to {@link AbstractX500NameStyle#encodeStringValue(ASN1ObjectIdentifier, String)}.

Subclasses should overwrite {@link AbstractX500NameStyle#encodeStringValue(ASN1ObjectIdentifier, String)} to change the encoding of specific types. @param oid the DN name of the value. @param value the String representation of the value.Subclasses should overwrite this method to change the encoding of specific types.

@param oid the DN oid of the value @param value the String representation of the value @return a the value encoded into a ASN.1 object. Never returns`null`

.
Note: if you're trying to be ultra orthodox, don't use this! It shouldn't be in here.

Name ::= CHOICE { RDNSequence } RDNSequence ::= SEQUENCE OF RelativeDistinguishedName RelativeDistinguishedName ::= SET SIZE (1..MAX) OF AttributeTypeAndValue AttributeTypeAndValue ::= SEQUENCE { type OBJECT IDENTIFIER, value ANY }

AccessDescription ::= SEQUENCE { accessMethod OBJECT IDENTIFIER, accessLocation GeneralName }

AlgorithmIdentifier ::= Sequence { algorithm OBJECT IDENTIFIER, parameters ANY DEFINED BY algorithm OPTIONAL }

AttCertIssuer ::= CHOICE { v1Form GeneralNames, -- MUST NOT be used in this -- profile v2Form [0] V2Form -- v2 only }

AttCertValidityPeriod ::= Sequence { notBeforeTime GeneralizedTime, notAfterTime GeneralizedTime }

Attr ::= Sequence { attrType OBJECT IDENTIFIER, attrValues Set OF AttributeValue }

AttributeCertificate ::= Sequence { acinfo AttributeCertificateInfo, signatureAlgorithm AlgorithmIdentifier, signatureValue BIT STRING }

AttributeCertificateInfo ::= Sequence { version AttCertVersion -- version is v2, holder Holder, issuer AttCertIssuer, signature AlgorithmIdentifier, serialNumber CertificateSerialNumber, attrCertValidityPeriod AttCertValidityPeriod, attributes Sequence OF Attr, issuerUniqueID UniqueIdentifier OPTIONAL, extensions Extensions OPTIONAL } AttCertVersion ::= Integer { v2(1) }

id-pe-authorityInfoAccess OBJECT IDENTIFIER ::= { id-pe 1 } AuthorityInfoAccessSyntax ::= Sequence SIZE (1..MAX) OF AccessDescription AccessDescription ::= Sequence { accessMethod OBJECT IDENTIFIER, accessLocation GeneralName } id-ad OBJECT IDENTIFIER ::= { id-pkix 48 } id-ad-caIssuers OBJECT IDENTIFIER ::= { id-ad 2 } id-ad-ocsp OBJECT IDENTIFIER ::= { id-ad 1 }

id-ce-authorityKeyIdentifier OBJECT IDENTIFIER ::= { id-ce 35 } AuthorityKeyIdentifier ::= Sequence { keyIdentifier [0] IMPLICIT KeyIdentifier OPTIONAL, authorityCertIssuer [1] IMPLICIT GeneralNames OPTIONAL, authorityCertSerialNumber [2] IMPLICIT CertificateSerialNumber OPTIONAL } KeyIdentifier ::= OCTET STRING

* SubjectPublicKeyInfo apki = new SubjectPublicKeyInfo((ASN1Sequence)new ASN1InputStream( * publicKey.getEncoded()).readObject()); * AuthorityKeyIdentifier aki = new AuthorityKeyIdentifier(apki); ** *

BasicConstraints := Sequence { cA Boolean DEFAULT FALSE, pathLenConstraint Integer (0..MAX) OPTIONAL }

CertificateList ::= Sequence { tbsCertList TbsCertList, signatureAlgorithm AlgorithmIdentifier, signatureValue BIT STRING }

crossCertificatePairATTRIBUTE::={ WITH SYNTAX CertificatePair EQUALITY MATCHING RULE certificatePairExactMatch ID joint-iso-ccitt(2) ds(5) attributeType(4) crossCertificatePair(40)}

The forward elements of the crossCertificatePair attribute of a CA's directory entry shall be used to store all, except self-issued certificates issued to this CA. Optionally, the reverse elements of the crossCertificatePair attribute, of a CA's directory entry may contain a subset of certificates issued by this CA to other CAs. When both the forward and the reverse elements are present in a single attribute value, issuer name in one certificate shall match the subject name in the other and vice versa, and the subject public key in one certificate shall be capable of verifying the digital signature on the other certificate and vice versa. When a reverse element is present, the forward element value and the reverse element value need not be stored in the same attribute value; in other words, they can be stored in either a single attribute value or two attribute values.

CertificatePair ::= SEQUENCE { forward [0] Certificate OPTIONAL, reverse [1] Certificate OPTIONAL, -- at least one of the pair shall be present -- }

The sequence is of type CertificatePair:

CertificatePair ::= SEQUENCE { forward [0] Certificate OPTIONAL, reverse [1] Certificate OPTIONAL, -- at least one of the pair shall be present -- }@param seq The ASN.1 sequence.

Returns:

CertificatePair ::= SEQUENCE { forward [0] Certificate OPTIONAL, reverse [1] Certificate OPTIONAL, -- at least one of the pair shall be present -- }@return a DERObject

CertificatePolicies ::= SEQUENCE SIZE {1..MAX} OF PolicyInformation

CertPolicyId ::= OBJECT IDENTIFIER

CrlDistPoint ::= Sequence SIZE {1..MAX} OF DistributionPoint

CRLNumber::= Integer(0..MAX)

CRLReason ::= Enumerated { unspecified (0), keyCompromise (1), cACompromise (2), affiliationChanged (3), superseded (4), cessationOfOperation (5), certificateHold (6), removeFromCRL (8), privilegeWithdrawn (9), aACompromise (10) }

DigestInfo::=Sequence{ digestAlgorithm AlgorithmIdentifier, digest OCTET STRING }

`DisplayText`

class, used in
`CertificatePolicies`

X509 V3 extensions (in policy qualifiers).
It stores a string in a chosen encoding.

DisplayText ::= CHOICE { ia5String IA5String (SIZE (1..200)), visibleString VisibleString (SIZE (1..200)), bmpString BMPString (SIZE (1..200)), utf8String UTF8String (SIZE (1..200)) }@see PolicyQualifierInfo @see PolicyInformation

`DisplayTextMaximumSize`

here.
`DisplayText`

instance.
@param type the desired encoding type for the text.
@param text the text to store. Strings longer than 200
characters are truncated.
`DisplayText`

instance.
@param text the text to encapsulate. Strings longer than 200
characters are truncated.
`DisplayText`

instance.
Useful when reading back a `DisplayText`

class
from it's Asn1Encodable form.

`Asn1Encodable`

instance.
`string`

object.
@return the stored text as a `string`

.
DistributionPoint ::= Sequence { distributionPoint [0] DistributionPointName OPTIONAL, reasons [1] ReasonFlags OPTIONAL, cRLIssuer [2] GeneralNames OPTIONAL }

DistributionPointName ::= CHOICE { fullName [0] GeneralNames, nameRelativeToCRLIssuer [1] RDN }

extendedKeyUsage ::= Sequence SIZE (1..MAX) OF KeyPurposeId

GeneralName ::= CHOICE { otherName [0] OtherName, rfc822Name [1] IA5String, dNSName [2] IA5String, x400Address [3] ORAddress, directoryName [4] Name, ediPartyName [5] EDIPartyName, uniformResourceIdentifier [6] IA5String, iPAddress [7] OCTET STRING, registeredID [8] OBJECT IDENTIFIER} OtherName ::= Sequence { type-id OBJECT IDENTIFIER, value [0] EXPLICIT ANY DEFINED BY type-id } EDIPartyName ::= Sequence { nameAssigner [0] DirectoryString OPTIONAL, partyName [1] DirectoryString }

This constructor can handle:

- rfc822Name
- iPAddress
- directoryName
- dNSName
- uniformResourceIdentifier
- registeredID

Note: A directory name can be encoded in different ways into a byte representation. Be aware of this if the byte representation is used for comparing results.

@param tag tag number @param name string representation of name @throws ArgumentException if the string encoding is not correct or not supported.GeneralNames ::= Sequence SIZE {1..MAX} OF GeneralName

GeneralSubtree ::= SEQUENCE { baseName GeneralName, minimum [0] BaseDistance DEFAULT 0, maximum [1] BaseDistance OPTIONAL }@see org.bouncycastle.asn1.x509.NameConstraints

If minimum is `null`

, zero is assumed, if
maximum is `null`

, maximum is absent.

GeneralSubtree ::= SEQUENCE { baseName GeneralName, minimum [0] BaseDistance DEFAULT 0, maximum [1] BaseDistance OPTIONAL }@return a DERObject

For an v2 attribute certificate this is:

Holder ::= SEQUENCE { baseCertificateID [0] IssuerSerial OPTIONAL, -- the issuer and serial number of -- the holder's Public Key Certificate entityName [1] GeneralNames OPTIONAL, -- the name of the claimant or role objectDigestInfo [2] ObjectDigestInfo OPTIONAL -- used to directly authenticate the holder, -- for example, an executable }

For an v1 attribute certificate this is:

subject CHOICE { baseCertificateID [0] IssuerSerial, -- associated with a Public Key Certificate subjectName [1] GeneralNames }, -- associated with a name

Holder ::= Sequence { baseCertificateID [0] IssuerSerial OPTIONAL, -- the issuer and serial number of -- the holder's Public Key Certificate entityName [1] GeneralNames OPTIONAL, -- the name of the claimant or role objectDigestInfo [2] ObjectDigestInfo OPTIONAL -- used to directly authenticate the holder, -- for example, an executable }

`IetfAttrSyntax`

as specified by RFC3281.
IetfAttrSyntax ::= Sequence { policyAuthority [0] GeneralNames OPTIONAL, values Sequence OF CHOICE { octets OCTET STRING, oid OBJECT IDENTIFIER, string UTF8String } }

IssuerSerial ::= Sequence { issuer GeneralNames, serial CertificateSerialNumber, issuerUid UniqueIdentifier OPTIONAL }

IssuingDistributionPoint ::= SEQUENCE { distributionPoint [0] DistributionPointName OPTIONAL, onlyContainsUserCerts [1] BOOLEAN DEFAULT FALSE, onlyContainsCACerts [2] BOOLEAN DEFAULT FALSE, onlySomeReasons [3] ReasonFlags OPTIONAL, indirectCRL [4] BOOLEAN DEFAULT FALSE, onlyContainsAttributeCerts [5] BOOLEAN DEFAULT FALSE }

`true`

then the CRL contains revocation
information about certificates ssued by other CAs.
@param onlyContainsAttributeCerts Covers revocation information for attribute certificates.
KeyPurposeID ::= OBJECT IDENTIFIER

id-ce-keyUsage OBJECT IDENTIFIER ::= { id-ce 15 } KeyUsage ::= BIT STRING { digitalSignature (0), nonRepudiation (1), keyEncipherment (2), dataEncipherment (3), keyAgreement (4), keyCertSign (5), cRLSign (6), encipherOnly (7), decipherOnly (8) }

permitted and excluded are Vectors of GeneralSubtree objects.

@param permitted Permitted subtrees @param excluded Excluded subtrees`NoticeReference`

class, used in
`CertificatePolicies`

X509 V3 extensions
(in policy qualifiers).
NoticeReference ::= Sequence { organization DisplayText, noticeNumbers Sequence OF Integer }@see PolicyQualifierInfo @see PolicyInformation

`NoticeReference`

instance.
@param organization a `String`

value
@param numbers a `Vector`

value
`NoticeReference`

instance.
@param organization a `String`

value
@param noticeNumbers an `ASN1EncodableVector`

value
`NoticeReference`

instance.
@param organization displayText
@param noticeNumbers an `ASN1EncodableVector`

value
`NoticeReference`

instance.
Useful for reconstructing a `NoticeReference`

instance from its encodable/encoded form.

`Asn1Sequence`

value obtained from either
calling @{link ToAsn1Object()} for a `NoticeReference`

instance or from parsing it from a Der-encoded stream.
`ToAsn1Object`

method here.
@return a `Asn1Object`

value
ObjectDigestInfo ::= SEQUENCE { digestedObjectType ENUMERATED { publicKey (0), publicKeyCert (1), otherObjectTypes (2) }, -- otherObjectTypes MUST NOT -- be used in this profile otherObjectTypeID OBJECT IDENTIFIER OPTIONAL, digestAlgorithm AlgorithmIdentifier, objectDigest BIT STRING }

If `digestedObjectType`

is not {@link #publicKeyCert} or
{@link #publicKey} `otherObjectTypeID`

must be given,
otherwise it is ignored.

`otherObjectDigest`

.
@param digestAlgorithm The algorithm identifier for the hash.
@param objectDigest The hash value.
ObjectDigestInfo ::= SEQUENCE { digestedObjectType ENUMERATED { publicKey (0), publicKeyCert (1), otherObjectTypes (2) }, -- otherObjectTypes MUST NOT -- be used in this profile otherObjectTypeID OBJECT IDENTIFIER OPTIONAL, digestAlgorithm AlgorithmIdentifier, objectDigest BIT STRING }

PolicyMappings ::= Sequence SIZE (1..MAX) OF Sequence { issuerDomainPolicy CertPolicyId, subjectDomainPolicy CertPolicyId }@see RFC 3280, section 4.2.1.6

`PolicyMappings`

instance.
@param seq an `Asn1Sequence`

constructed as specified
in RFC 3280
`PolicyMappings`

instance.
@param mappings a `HashMap`

value that maps
`string`

oids
to other `string`

oids.
id-qt OBJECT IDENTIFIER ::= { id-pkix 2 } id-qt-cps OBJECT IDENTIFIER ::= { id-qt 1 } id-qt-unotice OBJECT IDENTIFIER ::= { id-qt 2 } PolicyQualifierId ::= OBJECT IDENTIFIER ( id-qt-cps | id-qt-unotice )

PolicyQualifierInfo ::= Sequence { policyQualifierId PolicyQualifierId, qualifier ANY DEFINED BY policyQualifierId }

`PolicyQualifierInfo`

instance.
@param policyQualifierId a `PolicyQualifierId`

value
@param qualifier the qualifier, defined by the above field.
`PolicyQualifierInfo`

containing a
cPSuri qualifier.
@param cps the CPS (certification practice statement) uri as a
`string`

.
`PolicyQualifierInfo`

instance.
@param as `PolicyQualifierInfo`

X509 structure
encoded as an Asn1Sequence.
`Asn1Object`

value
PrivateKeyUsagePeriod ::= SEQUENCE { notBefore [0] GeneralizedTime OPTIONAL, notAfter [1] GeneralizedTime OPTIONAL }

BiometricData ::= SEQUENCE { typeOfBiometricData TypeOfBiometricData, hashAlgorithm AlgorithmIdentifier, biometricDataHash OCTET STRING, sourceDataUri IA5String OPTIONAL }

Iso4217CurrencyCode ::= CHOICE { alphabetic PrintableString (SIZE 3), --Recommended numeric INTEGER (1..999) } -- Alphabetic or numeric currency code as defined in ISO 4217 -- It is recommended that the Alphabetic form is used

MonetaryValue ::= SEQUENCE { currency Iso4217CurrencyCode, amount INTEGER, exponent INTEGER } -- value = amount * 10^exponent

QCStatement ::= SEQUENCE { statementId OBJECT IDENTIFIER, statementInfo ANY DEFINED BY statementId OPTIONAL}

SemanticsInformation ::= SEQUENCE { semanticsIdentifier OBJECT IDENTIFIER OPTIONAL, nameRegistrationAuthorities NameRegistrationAuthorities OPTIONAL } (WITH COMPONENTS {..., semanticsIdentifier PRESENT}| WITH COMPONENTS {..., nameRegistrationAuthorities PRESENT}) NameRegistrationAuthorities ::= SEQUENCE SIZE (1..MAX) OF GeneralName

TypeOfBiometricData ::= CHOICE { predefinedBiometricType PredefinedBiometricType, biometricDataOid OBJECT IDENTIFIER } PredefinedBiometricType ::= INTEGER { picture(0),handwritten-signature(1)} (picture|handwritten-signature)

ReasonFlags ::= BIT STRING { unused(0), keyCompromise(1), cACompromise(2), affiliationChanged(3), superseded(4), cessationOfOperation(5), certficateHold(6) }

RoleSyntax ::= SEQUENCE { roleAuthority [0] GeneralNames OPTIONAL, roleName [1] GeneralName }

```
RoleSyntax
```

. It must be an instance of ```
RoleSyntax
```

or `Asn1Sequence`

.
@return the instance of `RoleSyntax`

built from the
supplied object.
@throws java.lang.ArgumentException if the object passed
to the factory is not an instance of `RoleSyntax`

or
`Asn1Sequence`

.
`new RoleSyntax(null, roleName)`

.
@param roleName the role name of this RoleSyntax.
`string`

argument representing
the role name, builds a `GeneralName`

to hold the role name
and calls the constructor that takes a `GeneralName`

.
@param roleName
`RoleSyntax`

by
extracting the encoded elements from the `Asn1Sequence`

object supplied.
@param seq an instance of `Asn1Sequence`

that holds
the encoded elements used to build this `RoleSyntax`

.
`GeneralNames`

holding the
role authority of this RoleSyntax.
`GeneralName`

holding the
role name of this RoleSyntax.
`java.lang.string`

object.
@return the role name of this RoleSyntax represented as a
`string`

object.
`string[]`

object.
@return the role authority of this RoleSyntax represented as a
`string[]`

array.
`ToAsn1Object`

as
required by the superclass `ASN1Encodable`

.
RoleSyntax ::= SEQUENCE { roleAuthority [0] GeneralNames OPTIONAL, roleName [1] GeneralName }

RSAPublicKey ::= Sequence { modulus Integer, -- n publicExponent Integer, -- e }

NameOrPseudonym ::= CHOICE { surAndGivenName SEQUENCE { surName DirectoryString, givenName SEQUENCE OF DirectoryString }, pseudonym DirectoryString }@see org.bouncycastle.asn1.x509.sigi.PersonalData

The sequence is of type NameOrPseudonym:

NameOrPseudonym ::= CHOICE { surAndGivenName SEQUENCE { surName DirectoryString, givenName SEQUENCE OF DirectoryString }, pseudonym DirectoryString }@param pseudonym pseudonym value to use.

The sequence is of type NameOrPseudonym:

NameOrPseudonym ::= CHOICE { surAndGivenName SEQUENCE { surName DirectoryString, givenName SEQUENCE OF DirectoryString }, pseudonym DirectoryString }@param seq The ASN.1 sequence.

Returns:

PersonalData ::= SEQUENCE { nameOrPseudonym NameOrPseudonym, nameDistinguisher [0] INTEGER OPTIONAL, dateOfBirth [1] GeneralizedTime OPTIONAL, placeOfBirth [2] DirectoryString OPTIONAL, gender [3] PrintableString OPTIONAL, postalAddress [4] DirectoryString OPTIONAL }@see org.bouncycastle.asn1.x509.sigi.NameOrPseudonym @see org.bouncycastle.asn1.x509.sigi.SigIObjectIdentifiers

The sequence is of type NameOrPseudonym:

PersonalData ::= SEQUENCE { nameOrPseudonym NameOrPseudonym, nameDistinguisher [0] INTEGER OPTIONAL, dateOfBirth [1] GeneralizedTime OPTIONAL, placeOfBirth [2] DirectoryString OPTIONAL, gender [3] PrintableString OPTIONAL, postalAddress [4] DirectoryString OPTIONAL }@param seq The ASN.1 sequence.

Returns:

PersonalData ::= SEQUENCE { nameOrPseudonym NameOrPseudonym, nameDistinguisher [0] INTEGER OPTIONAL, dateOfBirth [1] GeneralizedTime OPTIONAL, placeOfBirth [2] DirectoryString OPTIONAL, gender [3] PrintableString OPTIONAL, postalAddress [4] DirectoryString OPTIONAL }@return an Asn1Object

SubjectDirectoryAttributes ::= Attributes Attributes ::= SEQUENCE SIZE (1..MAX) OF Attribute Attribute ::= SEQUENCE { type AttributeType values SET OF AttributeValue } AttributeType ::= OBJECT IDENTIFIER AttributeValue ::= ANY DEFINED BY AttributeType@see org.bouncycastle.asn1.x509.X500Name for AttributeType ObjectIdentifiers.

SubjectDirectoryAttributes ::= Attributes Attributes ::= SEQUENCE SIZE (1..MAX) OF Attribute Attribute ::= SEQUENCE { type AttributeType values SET OF AttributeValue } AttributeType ::= OBJECT IDENTIFIER AttributeValue ::= ANY DEFINED BY AttributeType@param seq The ASN.1 sequence.

SubjectDirectoryAttributes ::= Attributes Attributes ::= SEQUENCE SIZE (1..MAX) OF Attribute Attribute ::= SEQUENCE { type AttributeType values SET OF AttributeValue } AttributeType ::= OBJECT IDENTIFIER AttributeValue ::= ANY DEFINED BY AttributeType@return a DERObject

SubjectKeyIdentifier::= OCTET STRING

(1) The keyIdentifier is composed of the 160-bit SHA-1 hash of the value of the BIT STRING subjectPublicKey (excluding the tag, length, and number of unused bits).@param keyInfo the key info object containing the subjectPublicKey field. @return the key identifier.

(2) The keyIdentifier is composed of a four bit type field with the value 0100 followed by the least significant 60 bits of the SHA-1 hash of the value of the BIT STRING subjectPublicKey.@param keyInfo the key info object containing the subjectPublicKey field. @return the key identifier.

The GetEncoded() method in the public keys in the JCE produces a DER encoded one of these.

SubjectPublicKeyInfo ::= Sequence { algorithm AlgorithmIdentifier, publicKey BIT STRING }

Target ::= CHOICE { targetName [0] GeneralName, targetGroup [1] GeneralName, targetCert [2] TargetCert }

The targetCert field is currently not supported and must not be used according to RFC 3281.

`obj`

can be a Target or a {@link Asn1TaggedObject}

Exactly one of the parameters must be not `null`

.

Target ::= CHOICE { targetName [0] GeneralName, targetGroup [1] GeneralName, targetCert [2] TargetCert }@return an Asn1Object

SEQUENCE OF Targets

`obj`

can be a TargetInformation or a {@link Asn1Sequence}

The ArrayList is cloned before it is returned.

@return Returns the targets.SEQUENCE OF Targets

According to RFC 3281 only one targets element must be produced. If multiple targets are given in the constructor they are merged into one targets element. If this was produced from a {@link Org.BouncyCastle.Asn1.Asn1Sequence} the encoding is kept.

@return an Asn1ObjectTargets ::= SEQUENCE OF Target Target ::= CHOICE { targetName [0] GeneralName, targetGroup [1] GeneralName, targetCert [2] TargetCert } TargetCert ::= SEQUENCE { targetCertificate IssuerSerial, targetName GeneralName OPTIONAL, certDigestInfo ObjectDigestInfo OPTIONAL }@see org.bouncycastle.asn1.x509.Target @see org.bouncycastle.asn1.x509.TargetInformation

`obj`

can be a Targets or a {@link Asn1Sequence}

The ArrayList is copied.

@param targets An`ArrayList`

of {@link Target}s.
@see Target
@throws ArgumentException if the ArrayList contains not only Targets.
`ArrayList`

.
The ArrayList is cloned before it is returned.

@return Returns the targets.Targets ::= SEQUENCE OF Target@return an Asn1Object

TbsCertificate ::= Sequence { version [ 0 ] Version DEFAULT v1(0), serialNumber CertificateSerialNumber, signature AlgorithmIdentifier, issuer Name, validity Validity, subject Name, subjectPublicKeyInfo SubjectPublicKeyInfo, issuerUniqueID [ 1 ] IMPLICIT UniqueIdentifier OPTIONAL, subjectUniqueID [ 2 ] IMPLICIT UniqueIdentifier OPTIONAL, extensions [ 3 ] Extensions OPTIONAL }

Note: issuerUniqueID and subjectUniqueID are both deprecated by the IETF. This class will parse them, but you really shouldn't be creating new ones.

TbsCertList ::= Sequence { version Version OPTIONAL, -- if present, shall be v2 signature AlgorithmIdentifier, issuer Name, thisUpdate Time, nextUpdate Time OPTIONAL, revokedCertificates Sequence OF Sequence { userCertificate CertificateSerialNumber, revocationDate Time, crlEntryExtensions Extensions OPTIONAL -- if present, shall be v2 } OPTIONAL, crlExtensions [0] EXPLICIT Extensions OPTIONAL -- if present, shall be v2 }

Time ::= CHOICE { utcTime UTCTime, generalTime GeneralizedTime }

`UserNotice`

class, used in
`CertificatePolicies`

X509 extensions (in policy
qualifiers).
UserNotice ::= Sequence { noticeRef NoticeReference OPTIONAL, explicitText DisplayText OPTIONAL}@see PolicyQualifierId @see PolicyInformation

`UserNotice`

instance.
@param noticeRef a `NoticeReference`

value
@param explicitText a `DisplayText`

value
`UserNotice`

instance.
@param noticeRef a `NoticeReference`

value
@param str the explicitText field as a string.
`UserNotice`

instance.
Useful from reconstructing a `UserNotice`

instance
from its encodable/encoded form.
@param as an `ASN1Sequence`

value obtained from either
calling @{link toASN1Object()} for a `UserNotice`

instance or from parsing it from a DER-encoded stream.

TbsCertificate ::= Sequence { version [ 0 ] Version DEFAULT v1(0), serialNumber CertificateSerialNumber, signature AlgorithmIdentifier, issuer Name, validity Validity, subject Name, subjectPublicKeyInfo SubjectPublicKeyInfo, }

AttributeCertificateInfo ::= Sequence { version AttCertVersion -- version is v2, holder Holder, issuer AttCertIssuer, signature AlgorithmIdentifier, serialNumber CertificateSerialNumber, attrCertValidityPeriod AttCertValidityPeriod, attributes Sequence OF Attr, issuerUniqueID UniqueIdentifier OPTIONAL, extensions Extensions OPTIONAL }

V2Form ::= Sequence { issuerName GeneralNames OPTIONAL, baseCertificateID [0] IssuerSerial OPTIONAL, objectDigestInfo [1] ObjectDigestInfo OPTIONAL -- issuerName MUST be present in this profile -- baseCertificateID and objectDigestInfo MUST NOT -- be present in this profile }

TbsCertList ::= Sequence { version Version OPTIONAL, -- if present, shall be v2 signature AlgorithmIdentifier, issuer Name, thisUpdate Time, nextUpdate Time OPTIONAL, revokedCertificates Sequence OF Sequence { userCertificate CertificateSerialNumber, revocationDate Time, crlEntryExtensions Extensions OPTIONAL -- if present, shall be v2 } OPTIONAL, crlExtensions [0] EXPLICIT Extensions OPTIONAL -- if present, shall be v2 }

TbsCertificate ::= Sequence { version [ 0 ] Version DEFAULT v1(0), serialNumber CertificateSerialNumber, signature AlgorithmIdentifier, issuer Name, validity Validity, subject Name, subjectPublicKeyInfo SubjectPublicKeyInfo, issuerUniqueID [ 1 ] IMPLICIT UniqueIdentifier OPTIONAL, subjectUniqueID [ 2 ] IMPLICIT UniqueIdentifier OPTIONAL, extensions [ 3 ] Extensions OPTIONAL }

Certificate ::= Sequence { tbsCertificate TbsCertificate, signatureAlgorithm AlgorithmIdentifier, signature BIT STRING }

it's is assumed the table contains Oid/string pairs.

It's is assumed the table contains Oid/string pairs.

Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension Extension ::= SEQUENCE { extnId EXTENSION.&id ({ExtensionSet}), critical BOOLEAN DEFAULT FALSE, extnValue OCTET STRING }

KeySpecificInfo ::= Sequence { algorithm OBJECT IDENTIFIER, counter OCTET STRING SIZE (4..4) }

OtherInfo ::= Sequence { keyInfo KeySpecificInfo, partyAInfo [0] OCTET STRING OPTIONAL, suppPubInfo [2] OCTET STRING }

Parameters ::= CHOICE { ecParameters ECParameters, namedCurve CURVES.&id({CurveNames}), implicitlyCA Null }

Curve ::= Sequence { a FieldElement, b FieldElement, seed BIT STRING OPTIONAL }

ECParameters ::= Sequence { version Integer { ecpVer1(1) } (ecpVer1), fieldID FieldID {{FieldTypes}}, curve X9Curve, base X9ECPoint, order Integer, cofactor Integer OPTIONAL }

ECPoint ::= OCTET STRING

Octet string produced using ECPoint.GetEncoded().

FieldElement ::= OCTET STRING

- if
*q*is an odd prime then the field element is processed as an Integer and converted to an octet string according to x 9.62 4.3.1. - if
*q*is 2^{m}then the bit string contained in the field element is converted into an octet string with the same ordering padded at the front if necessary.

`F`_{2}

.
@param primeP The prime `p`

defining the prime field.
`F`_{2m}

.
@param m The exponent `m`

of
`F`_{2m}

.
@param k1 The integer `k1`

where `x`^{m} +
x^{k1} + 1

represents the reduction polynomial `f(z)`

.
`F`_{2m}

.
@param m The exponent `m`

of
`F`_{2m}

.
@param k1 The integer `k1`

where `x`^{m} +
x^{k3} + x^{k2} + x^{k1} + 1

represents the reduction polynomial `f(z)`

.
@param k2 The integer `k2`

where `x`^{m} +
x^{k3} + x^{k2} + x^{k1} + 1

represents the reduction polynomial `f(z)`

.
@param k3 The integer `k3`

where `x`^{m} +
x^{k3} + x^{k2} + x^{k1} + 1

represents the reduction polynomial `f(z)`

..
FieldID ::= Sequence { fieldType FIELD-ID.&id({IOSet}), parameters FIELD-ID.&Type({IOSet}{@fieldType}) }

Minimum entropy requirement is the security strength requested.

@param engine underlying block cipher to use to support DRBG @param keySizeInBits size of the key to use with the block cipher. @param securityStrength security strength required (in bits) @param entropySource source of entropy to use for seeding/reseeding. @param personalizationString personalization string to distinguish this DRBG (may be null). @param nonce nonce to further distinguish this DRBG (may be null).Minimum entropy requirement is the security strength requested.

@param digest source digest to use for DRB stream. @param securityStrength security strength required (in bits) @param entropySource source of entropy to use for seeding/reseeding. @param personalizationString personalization string to distinguish this DRBG (may be null). @param nonce nonce to further distinguish this DRBG (may be null).Minimum entropy requirement is the security strength requested.

@param hMac Hash MAC to base the DRBG on. @param securityStrength security strength required (in bits) @param entropySource source of entropy to use for seeding/reseeding. @param personalizationString personalization string to distinguish this DRBG (may be null). @param nonce nonce to further distinguish this DRBG (may be null).Note: As stated P1363 compatibility mode with ECDH can be preset, and in this case the implementation doesn't have a ECDH compatibility mode (if you want that just use ECDHBasicAgreement and note they both implement BasicAgreement!).

Note: in the case where the underlying cipher is either a CFB cipher or an OFB one the last block may not be a multiple of the block size.

block word digest SHA-1 512 32 160 SHA-224 512 32 224 SHA-256 512 32 256 SHA-384 1024 64 384 SHA-512 1024 64 512

block word digest SHA-1 512 32 160 SHA-256 512 32 256 SHA-384 1024 64 384 SHA-512 1024 64 512

block word digest SHA-1 512 32 160 SHA-256 512 32 256 SHA-384 1024 64 384 SHA-512 1024 64 512

block word digest SHA-1 512 32 160 SHA-256 512 32 256 SHA-384 1024 64 384 SHA-512 1024 64 512

The system property is checked during construction of the encoding object, it is set to true by default.

For further details see: http://csrc.nist.gov/encryption/aes/. This implementation is based on optimizations from Dr. Brian Gladman's paper and C code at http://fp.gladman.plus.com/cryptography_technology/rijndael/ There are three levels of tradeoff of speed vs memory Because java has no preprocessor), they are written as three separate classes from which to choose The fastest uses 8Kbytes of static tables to precompute round calculations), 4 256 word tables for encryption and 4 for decryption. The middle performance version uses only one 256 word table for each), for a total of 2Kbytes), adding 12 rotate operations per round to compute the values contained in the other tables from the contents of the first The slowest version uses no static tables at all and computes the values in each round

This file contains the fast version with 8Kbytes of static tables for round precomputation

* Serpent was designed by Ross Anderson, Eli Biham and Lars Knudsen as a * candidate algorithm for the NIST AES Quest. *

** For full details see The Serpent home page *

This implementation is based on ISO 18033/P1363a.

This implementation is based on IEEE P1363/ISO 18033.

The scheme is a simple extension of PKCS 5 V2.0 Scheme 1 using MD5 with an iteration count of 1.

The document this implementation is based on can be found at RSA's Pkcs12 Page

The document this implementation is based on can be found at RSA's Pkcs5 Page

The {@code r} value has a specific format with some bits required to be cleared, resulting in an effective 106 bit key.

A separately generated 256 bit key can be modified to fit the Poly1305 key format by using the {@link #clamp(byte[])} method to clear the required bits.

`k[0] ... k[15], r[0] ... r[15]`

with the required bits in `r`

cleared
as per `r`

(second 16 bytes) portion of the key.Specifically:

- r[3], r[7], r[11], r[15] have top four bits clear (i.e., are {0, 1, . . . , 15})
- r[4], r[8], r[12] have bottom two bits clear (i.e., are in {0, 4, 8, . . . , 252})

`k[0] ... k[15], r[0] ... r[15]`

`k[0] ... k[15], r[0] ... r[15]`

with the required bits in `r`

cleared
as per `r`

portion of the key.doFinal leaves the MAC in the same state it was after the last init.

@param out the array the MAC is to be output to. @param outOff the offset into the out buffer the output is to start at. @exception DataLengthException if there isn't enough space in out. @exception InvalidOperationException if the MAC is not initialised.Note: the size of the MAC must be at least 24 bits (FIPS Publication 81), or 16 bits if being used as a data authenticator (FIPS Publication 113), and in general should be less than the size of the block cipher as it reduces the chance of an exhaustive attack (see Handbook of Applied Cryptography).

@param cipher the cipher to be used as the basis of the MAC generation. @param macSizeInBits the size of the MAC in bits, must be a multiple of 8.Note: the size of the MAC must be at least 24 bits (FIPS Publication 81), or 16 bits if being used as a data authenticator (FIPS Publication 113), and in general should be less than the size of the block cipher as it reduces the chance of an exhaustive attack (see Handbook of Applied Cryptography).

@param cipher the cipher to be used as the basis of the MAC generation. @param macSizeInBits the size of the MAC in bits, must be a multiple of 8. @param padding the padding to be used to complete the last block.CMAC is analogous to OMAC1 - see also en.wikipedia.org/wiki/CMAC

CMAC is a NIST recomendation - see csrc.nist.gov/CryptoToolkit/modes/800-38_Series_Publications/SP800-38B.pdf

CMAC/OMAC1 is a blockcipher-based message authentication code designed and analyzed by Tetsu Iwata and Kaoru Kurosawa.

CMAC/OMAC1 is a simple variant of the CBC MAC (Cipher Block Chaining Message Authentication Code). OMAC stands for One-Key CBC MAC.

It supports 128- or 64-bits block ciphers, with any key size, and returns a MAC with dimension less or equal to the block size of the underlying cipher.

Note: the size of the MAC must be at least 24 bits (FIPS Publication 81),
or 16 bits if being used as a data authenticator (FIPS Publication 113),
and in general should be less than the size of the block cipher as it reduces
the chance of an exhaustive attack (see Handbook of Applied Cryptography).
@param cipher the cipher to be used as the basis of the MAC generation.
@param macSizeInBits the size of the MAC in bits, must be a multiple of 8 and @lt;= 128.

**Note**: this mode is a packet mode - it needs all the data up front.

This class implements the NIST version as documented in "Addendum to NIST SP 800-38A, Recommendation for Block Cipher Modes of Operation: Three Variants of Ciphertext Stealing for CBC Mode"

* For further info see RFC 2440. *

See "Applied Cryptography" by Bruce Schneier for more information.

@return true if the given DES key material is weak or semi-weak, false otherwise.This implementation is heavily based on the reference implementation in SUPERCOP, the main difference being the digests used for message hashing and tree construction are now configurable (within limits...)

Internal access to the digest is synchronized so a single one of these can be shared.

Note: the usual value for the salt length is the number of bytes in the hash function.

The message digest hash, H, is encapsulated to form a byte string as follows

EB = 06 || PS || 0xBA || H || TRAILERwhere PS is a string of bytes all of value 0xBB of length such that |EB|=|n|, and TRAILER is the ISO/IEC 10118 part numberÃ¢â‚¬Â for the digest. The byte string, EB, is converted to an integer value, the message representative, f.

For further details see: http://www.ietf.org/rfc/rfc3394.txt
and http://csrc.nist.gov/encryption/kms/key-wrap.pdf.

For further details see: http://www.ietf.org/rfc/rfc3394.txt
and http://csrc.nist.gov/encryption/kms/key-wrap.pdf.

From Knuth Vol 2, pg 395.

Based algorithm 14.36 of Handbook of Applied Cryptography.

The result is put in x

NOTE: the indices of x, y, m, a different in HAC and in Java

`SimpleBigDecimal`

is basically a
{@link java.math.BigInteger BigInteger} with a few digits on the right of
the decimal point. The number of (binary) digits on the right of the decimal
point is called the `scale`

of the `SimpleBigDecimal`

.
Unlike in {@link java.math.BigDecimal BigDecimal}, the scale is not adjusted
automatically, but must be set manually. All `SimpleBigDecimal`

s
taking part in the same arithmetic operation must have equal scale. The
result of a multiplication of two `SimpleBigDecimal`

s returns a
`SimpleBigDecimal`

with double scale.
`SimpleBigDecimal`

representing the same numerical
value as `value`

.
@param value The value of the `SimpleBigDecimal`

to be
created.
@param scale The scale of the `SimpleBigDecimal`

to be
created.
@return The such created `SimpleBigDecimal`

.
`SimpleBigDecimal`

. The value of the
constructed `SimpleBigDecimal`

Equals ```
bigInt /
2
```^{scale}

.
@param bigInt The `bigInt`

value parameter.
@param scale The scale of the constructed `SimpleBigDecimal`

.
`α`_{u}

's must be computed differently, see
e.g. "Guide to Elliptic Curve Cryptography", Darrel Hankerson,
Alfred Menezes, Scott Vanstone, Springer-Verlag New York Inc., 2004,
p. 121-122
`α`_{u}

's for `a=0`

as an array
of `ZTauElement`

s.
`α`_{u}

's for `a=0`

as an array
of TNAFs.
`α`_{u}

's for `a=1`

as an array
of `ZTauElement`

s.
`α`_{u}

's for `a=1`

as an array
of TNAFs.
`λ`

of
**Z**[τ]

.
@param mu The parameter `μ`

of the elliptic curve.
@param lambda The element `λ`

of
**Z**[τ]

.
@return The norm of `λ`

.
`λ`

of
**R**[τ]

, where `λ = u + vτ`

and `u`

and `u`

are real numbers (elements of
**R**

).
@param mu The parameter `μ`

of the elliptic curve.
@param u The real part of the element `λ`

of
**R**[τ]

.
@param v The `τ`

-adic part of the element
`λ`

of **R**[τ]

.
@return The norm of `λ`

.
`λ`

of **R**[τ]

to an element of **Z**[τ]

, such that their difference
has minimal norm. `λ`

is given as
`λ = λ`_{0} + λ_{1}τ

.
@param lambda0 The component `λ`_{0}

.
@param lambda1 The component `λ`_{1}

.
@param mu The parameter `μ`

of the elliptic curve. Must
equal 1 or -1.
@return The rounded element of **Z**[τ]

.
@throws ArgumentException if `lambda0`

and
`lambda1`

do not have same scale.
`n`

. For an integer
`k`

, the value `λ = s k / n`

is
computed to `c`

bits of accuracy.
@param k The parameter `k`

.
@param s The curve parameter `s`_{0}

or
`s`_{1}

.
@param vm The Lucas Sequence element `V`_{m}

.
@param a The parameter `a`

of the elliptic curve.
@param m The bit length of the finite field
**F**_{m}

.
@param c The number of bits of accuracy, i.e. the scale of the returned
`SimpleBigDecimal`

.
@return The value `λ = s k / n`

computed to
`c`

bits of accuracy.
`τ`

-adic NAF (non-adjacent form) of an
element `λ`

of **Z**[τ]

.
@param mu The parameter `μ`

of the elliptic curve.
@param lambda The element `λ`

of
**Z**[τ]

.
@return The `τ`

-adic NAF of `λ`

.
`τ()`

to an
`AbstractF2mPoint`

.
@param p The AbstractF2mPoint to which `τ()`

is applied.
@return `τ(p)`

`μ`

of the elliptic curve.
@param curve The elliptic curve from which to obtain `μ`

.
The curve must be a Koblitz curve, i.e. `a`

Equals
`0`

or `1`

and `b`

Equals
`1`

.
@return `μ`

of the elliptic curve.
@throws ArgumentException if the given ECCurve is not a Koblitz
curve.
`U`_{k-1}

and
`U`_{k}

or `V`_{k-1}

and
`V`_{k}

.
@param mu The parameter `μ`

of the elliptic curve.
@param k The index of the second element of the Lucas Sequence to be
returned.
@param doV If set to true, computes `V`_{k-1}

and
`V`_{k}

, otherwise `U`_{k-1}

and
`U`_{k}

.
@return An array with 2 elements, containing `U`_{k-1}

and `U`_{k}

or `V`_{k-1}

and `V`_{k}

.
`t`_{w}

. If the width is
4, then for `mu = 1`

, `t`_{w} = 6

and for
`mu = -1`

, `t`_{w} = 10

@param mu The parameter `μ`

of the elliptic curve.
@param w The window width of the WTNAF.
@return the auxiliary value `t`_{w}

`s`_{0}

and
`s`_{1}

used for partial modular reduction.
@param curve The elliptic curve for which to compute
`s`_{0}

and `s`_{1}

.
@throws ArgumentException if `curve`

is not a
Koblitz curve (Anomalous Binary Curve, ABC).
`(τ`^{m} - 1)/(τ - 1)

.
@param k The integer to be reduced.
@param m The bitlength of the underlying finite field.
@param a The parameter `a`

of the elliptic curve.
@param s The auxiliary values `s`_{0}

and
`s`_{1}

.
@param mu The parameter μ of the elliptic curve.
@param c The precision (number of bits of accuracy) of the partial
modular reduction.
@return `ρ := k partmod (τ`^{m} - 1)/(τ - 1)

`BigInteger`

using the reduced `τ`

-adic
NAF (RTNAF) method.
@param p The AbstractF2mPoint to Multiply.
@param k The `BigInteger`

by which to Multiply `p`

.
@return `k * p`

`λ`

of **Z**[τ]

using the `τ`

-adic NAF (TNAF) method.
@param p The AbstractF2mPoint to Multiply.
@param lambda The element `λ`

of
**Z**[τ]

.
@return `λ * p`

`λ`

of **Z**[τ]

using the `τ`

-adic NAF (TNAF) method, given the TNAF
of `λ`

.
@param p The AbstractF2mPoint to Multiply.
@param u The the TNAF of `λ`

..
@return `λ * p`

`[τ]`

-adic window NAF of an element
`λ`

of **Z**[τ]

.
@param mu The parameter μ of the elliptic curve.
@param lambda The element `λ`

of
**Z**[τ]

of which to compute the
`[τ]`

-adic NAF.
@param width The window width of the resulting WNAF.
@param pow2w 2`t`_{w}

.
@param alpha The `α`_{u}

's for the window width.
@return The `[τ]`

-adic window NAF of
`λ`

.
`ECPoint`

for which to do the precomputation.
@param a The parameter `a`

of the elliptic curve.
@return The precomputation array for `p`

.
**Z**[τ]

. Let
`λ`

be an element of **Z**[τ]

. Then
`λ`

is given as `λ = u + vτ`

. The
components `u`

and `v`

may be used directly, there
are no accessor methods.
Immutable class.
`λ`

.
`τ`

-adic" part of `λ`

.
`λ`

of
**Z**[τ]

.
@param u The "real" part of `λ`

.
@param v The "`τ`

-adic" part of
`λ`

.
`kP`

.
`PreCompInfo`

for a point on this curve, under a given name. Used by
`ECMultiplier`

s to save the precomputation for this `ECPoint`

for use
by subsequent multiplication.
@param point
The `ECPoint`

to store precomputations for.
@param name
A `String`

used to index precomputations of different types.
@param preCompInfo
The values precomputed by the `ECMultiplier`

.
`ECMultiplier`

, unless already set.
`F`_{p}

(X9.62 s 4.2.1 pg 17).
@return The decoded point.
`s`_{0}

and
`s`_{1}

used for partial modular reduction for
Koblitz curves.
`z`^{2} + z = beta

(X9.62
D.1.6) The other solution is `z + 1`

.
@param beta
The value to solve the qradratic equation for.
@return the solution for `z`^{2} + z = beta

or
`null`

if no solution exists.
`s`_{0}

and
`s`_{1}

used for partial modular reduction for
Koblitz curves.
`y`^{2} + xy = x^{3} + ax^{2} + b

.
`m`

of `F`_{2m}

.
`k`

where `x`^{m} +
x^{k} + 1

represents the reduction polynomial
`f(z)`

.PPB: The integer

`k1`

where `x`^{m} +
x^{k3} + x^{k2} + x^{k1} + 1

represents the reduction polynomial `f(z)`

.`0`

PPB: The integer

`k2`

where `x`^{m} +
x^{k3} + x^{k2} + x^{k1} + 1

represents the reduction polynomial `f(z)`

.`0`

PPB: The integer

`k3`

where `x`^{m} +
x^{k3} + x^{k2} + x^{k1} + 1

represents the reduction polynomial `f(z)`

.`m`

of
`F`_{2m}

.
@param k The integer `k`

where `x`^{m} +
x^{k} + 1

represents the reduction
polynomial `f(z)`

.
@param a The coefficient `a`

in the Weierstrass equation
for non-supersingular elliptic curves over
`F`_{2m}

.
@param b The coefficient `b`

in the Weierstrass equation
for non-supersingular elliptic curves over
`F`_{2m}

.
`m`

of
`F`_{2m}

.
@param k The integer `k`

where `x`^{m} +
x^{k} + 1

represents the reduction
polynomial `f(z)`

.
@param a The coefficient `a`

in the Weierstrass equation
for non-supersingular elliptic curves over
`F`_{2m}

.
@param b The coefficient `b`

in the Weierstrass equation
for non-supersingular elliptic curves over
`F`_{2m}

.
@param order The order of the main subgroup of the elliptic curve.
@param cofactor The cofactor of the elliptic curve, i.e.
`#E`_{a}(F_{2m}) = h * n

.
`m`

of
`F`_{2m}

.
@param k1 The integer `k1`

where `x`^{m} +
x^{k3} + x^{k2} + x^{k1} + 1

represents the reduction polynomial `f(z)`

.
@param k2 The integer `k2`

where `x`^{m} +
x^{k3} + x^{k2} + x^{k1} + 1

represents the reduction polynomial `f(z)`

.
@param k3 The integer `k3`

where `x`^{m} +
x^{k3} + x^{k2} + x^{k1} + 1

represents the reduction polynomial `f(z)`

.
@param a The coefficient `a`

in the Weierstrass equation
for non-supersingular elliptic curves over
`F`_{2m}

.
@param b The coefficient `b`

in the Weierstrass equation
for non-supersingular elliptic curves over
`F`_{2m}

.
`m`

of
`F`_{2m}

.
@param k1 The integer `k1`

where `x`^{m} +
x^{k3} + x^{k2} + x^{k1} + 1

represents the reduction polynomial `f(z)`

.
@param k2 The integer `k2`

where `x`^{m} +
x^{k3} + x^{k2} + x^{k1} + 1

represents the reduction polynomial `f(z)`

.
@param k3 The integer `k3`

where `x`^{m} +
x^{k3} + x^{k2} + x^{k1} + 1

represents the reduction polynomial `f(z)`

.
@param a The coefficient `a`

in the Weierstrass equation
for non-supersingular elliptic curves over
`F`_{2m}

.
@param b The coefficient `b`

in the Weierstrass equation
for non-supersingular elliptic curves over
`F`_{2m}

.
@param order The order of the main subgroup of the elliptic curve.
@param cofactor The cofactor of the elliptic curve, i.e.
`#E`_{a}(F_{2m}) = h * n

.
`F`_{2m}

in polynomial basis (PB)
representation. Both trinomial (Tpb) and pentanomial (Ppb) polynomial
basis representations are supported. Gaussian normal basis (GNB)
representation is not supported.
`m`

of `F`_{2m}

.
`LongArray`

holding the bits.
`m`

of
`F`_{2m}

.
@param k1 The integer `k1`

where `x`^{m} +
x^{k3} + x^{k2} + x^{k1} + 1

represents the reduction polynomial `f(z)`

.
@param k2 The integer `k2`

where `x`^{m} +
x^{k3} + x^{k2} + x^{k1} + 1

represents the reduction polynomial `f(z)`

.
@param k3 The integer `k3`

where `x`^{m} +
x^{k3} + x^{k2} + x^{k1} + 1

represents the reduction polynomial `f(z)`

.
@param x The BigInteger representing the value of the field element.
`m`

of
`F`_{2m}

.
@param k The integer `k`

where `x`^{m} +
x^{k} + 1

represents the reduction
polynomial `f(z)`

.
@param x The BigInteger representing the value of the field element.
`a`

and `b`

are elements of the same field `F`_{2m}

(having the same representation).
@param a field element.
@param b field element to be compared.
@throws ArgumentException if `a`

and `b`

are not elements of the same field
`F`_{2m}

(having the same
representation).
`F`_{2m}

, either of
{@link F2mFieldElement.Tpb} (trinomial
basis representation) or
{@link F2mFieldElement.Ppb} (pentanomial
basis representation).
`m`

of the reduction polynomial
`f(z)`

.
`k`

where `x`^{m} +
x^{k} + 1

represents the reduction polynomial
`f(z)`

.Ppb: The integer

`k1`

where `x`^{m} +
x^{k3} + x^{k2} + x^{k1} + 1

represents the reduction polynomial `f(z)`

.`0`

Ppb: The integer

`k2`

where `x`^{m} +
x^{k3} + x^{k2} + x^{k1} + 1

represents the reduction polynomial `f(z)`

.`0`

Ppb: The integer

`k3`

where `x`^{m} +
x^{k3} + x^{k2} + x^{k1} + 1

represents the reduction polynomial `f(z)`

.`ECPoint`

by the given number.
@param k The multiplicator.
@return `k * this`

.
`ECPoint`

s.
`ECPoint p`

by `k`

, i.e.
`p`

is added `k`

times to itself.
@param p The `ECPoint`

to be multiplied.
@param k The factor by which `p`

is multiplied.
@return `p`

multiplied by `k`

.
`ECPoint`

s used for a fixed
point multiplication.
`WNafMultiplier`

.
`this`

by an integer `k`

using the
Window NAF method.
@param k The integer by which `this`

is multiplied.
@return A new `ECPoint`

which equals `this`

multiplied by `k`

.
`ECPoint`

s used for a Window
NAF multiplication.
`ECPoint`

s used
for a Window NAF multiplication.
`ECPoint`

representing Twice(this). Used for the
Window NAF multiplication to create or extend the precomputed values.
`w`

of the Window NAF. The width is
defined as the minimal number `w`

, such that for any
`w`

consecutive digits in the resulting representation, at
most one is non-zero.
@param k The integer of which the Window NAF is computed.
@return The Window NAF of the given width, such that the following holds:
`k = ∑`_{i=0}^{l-1} k_{i}2^{i}

, where the `k`_{i}

denote the elements of the
returned `byte[]`

.
`τ`

-adic Non-Adjacent Form) algorithm.
`k`

using the reduced `τ`

-adic NAF (RTNAF)
method.
@param p The AbstractF2mPoint to multiply.
@param k The integer by which to multiply `k`

.
@return `p`

multiplied by `k`

.
`λ`

of **Z**[τ]

using
the `τ`

-adic NAF (TNAF) method.
@param p The AbstractF2mPoint to multiply.
@param lambda The element `λ`

of
**Z**[τ]

of which to compute the
`[τ]`

-adic NAF.
@return `p`

multiplied by `λ`

.
`λ`

of **Z**[τ]

using the window `τ`

-adic NAF (TNAF) method, given the
WTNAF of `λ`

.
@param p The AbstractF2mPoint to multiply.
@param u The the WTNAF of `λ`

..
@return `λ * p`

`τ`

-adic Non-Adjacent Form) algorithm.
`AbstractF2mPoint`

s used for the
WTNAF multiplication in ```
{@link org.bouncycastle.math.ec.multiplier.WTauNafMultiplier.multiply()
WTauNafMultiplier.multiply()}
```

.
`true`

if the candidate is found to have any small factors,
`false`

otherwise.
`false`

if any witness to compositeness is found amongst the chosen bases
(so `candidate`

is definitely NOT prime), or else `true`

(indicating primality with some probability dependent on the number of iterations
that were performed).
`false`

if the specified base is a witness to compositeness (so
`candidate`

is definitely NOT prime), or else `true`

.
The purpose of UrlBase64 encoding is to provide a compact encoding of binary data that is safe for use as an URL parameter. Base64 encoding does not produce encoded values that are safe for use in URLs, since "/" can be interpreted as a path delimiter; "+" is the encoded form of a space; and "=" is used to separate a name from the corresponding value in an URL parameter.

The purpose of UrlBase64 encoding is to provide a compact encoding of binary data that is safe for use as an URL parameter. Base64 encoding does not produce encoded values that are safe for use in URLs, since "/" can be interpreted as a path delimiter; "+" is the encoded form of a space; and "=" is used to separate a name from the corresponding value in an URL parameter.

The exception extends InvalidCastException to enable users to have a single handling case, only introducing specific handling of this one if required.