McEliecePKCSCipherSpi (Bouncy Castle Library 1.52 API Specification)
Date: 2015-03-01

org.bouncycastle.pqc.jcajce.provider.mceliece

## Class McEliecePKCSCipherSpi

- java.lang.Object
- - javax.crypto.CipherSpi
  - - org.bouncycastle.pqc.jcajce.provider.util.CipherSpiExt
    - - org.bouncycastle.pqc.jcajce.provider.util.AsymmetricBlockCipher
      - - org.bouncycastle.pqc.jcajce.provider.mceliece.McEliecePKCSCipherSpi

- All Implemented Interfaces:
    PKCSObjectIdentifiers, X509ObjectIdentifiers
  Direct Known Subclasses:
    McEliecePKCSCipherSpi.McEliecePKCS, McEliecePKCSCipherSpi.McEliecePKCS224, McEliecePKCSCipherSpi.McEliecePKCS256, McEliecePKCSCipherSpi.McEliecePKCS384, McEliecePKCSCipherSpi.McEliecePKCS512

      public class McEliecePKCSCipherSpi
      extends AsymmetricBlockCipher
      implements PKCSObjectIdentifiers, X509ObjectIdentifiers

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `McEliecePKCSCipherSpi.McEliecePKCS`
    `static class` | `McEliecePKCSCipherSpi.McEliecePKCS224`
    `static class` | `McEliecePKCSCipherSpi.McEliecePKCS256`
    `static class` | `McEliecePKCSCipherSpi.McEliecePKCS384`
    `static class` | `McEliecePKCSCipherSpi.McEliecePKCS512`

  - ### Field Summary

    - ### Fields inherited from class org.bouncycastle.pqc.jcajce.provider.util.AsymmetricBlockCipher

      `buf, cipherTextSize, maxPlainTextSize, paramSpec`

    - ### Fields inherited from class org.bouncycastle.pqc.jcajce.provider.util.CipherSpiExt

      `DECRYPT_MODE, ENCRYPT_MODE, opMode`

    - ### Fields inherited from interface org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers

      `bagtypes, canNotDecryptAny, certBag, certTypes, crlBag, crlTypes, data, des_EDE3_CBC, dhKeyAgreement, digestAlgorithm, digestedData, encryptedData, encryptionAlgorithm, envelopedData, id_aa, id_aa_commitmentType, id_aa_contentHint, id_aa_contentIdentifier, id_aa_contentReference, id_aa_encrypKeyPref, id_aa_ets_archiveTimestamp, id_aa_ets_certCRLTimestamp, id_aa_ets_certificateRefs, id_aa_ets_certValues, id_aa_ets_commitmentType, id_aa_ets_contentTimestamp, id_aa_ets_escTimeStamp, id_aa_ets_otherSigCert, id_aa_ets_revocationRefs, id_aa_ets_revocationValues, id_aa_ets_signerAttr, id_aa_ets_signerLocation, id_aa_ets_sigPolicyId, id_aa_msgSigDigest, id_aa_otherSigCert, id_aa_receiptRequest, id_aa_signatureTimeStampToken, id_aa_signerLocation, id_aa_signingCertificate, id_aa_signingCertificateV2, id_aa_sigPolicyId, id_alg, id_alg_CMS3DESwrap, id_alg_CMSRC2wrap, id_alg_PWRI_KEK, id_ct, id_ct_authData, id_ct_authEnvelopedData, id_ct_compressedData, id_ct_timestampedData, id_ct_TSTInfo, id_cti, id_cti_ets_proofOfApproval, id_cti_ets_proofOfCreation, id_cti_ets_proofOfDelivery, id_cti_ets_proofOfOrigin, id_cti_ets_proofOfReceipt, id_cti_ets_proofOfSender, id_hmacWithSHA1, id_hmacWithSHA224, id_hmacWithSHA256, id_hmacWithSHA384, id_hmacWithSHA512, id_mgf1, id_PBES2, id_PBKDF2, id_pSpecified, id_RSAES_OAEP, id_RSASSA_PSS, id_smime, id_spq, id_spq_ets_unotice, id_spq_ets_uri, keyBag, md2, md2WithRSAEncryption, md4, md4WithRSAEncryption, md5, md5WithRSAEncryption, pbeWithMD2AndDES_CBC, pbeWithMD2AndRC2_CBC, pbeWithMD5AndDES_CBC, pbeWithMD5AndRC2_CBC, pbeWithSHA1AndDES_CBC, pbeWithSHA1AndRC2_CBC, pbeWithSHAAnd128BitRC2_CBC, pbeWithSHAAnd128BitRC4, pbeWithSHAAnd2_KeyTripleDES_CBC, pbeWithSHAAnd3_KeyTripleDES_CBC, pbewithSHAAnd40BitRC2_CBC, pbeWithSHAAnd40BitRC2_CBC, pbeWithSHAAnd40BitRC4, pkcs_1, pkcs_12, pkcs_12PbeIds, pkcs_3, pkcs_5, pkcs_7, pkcs_9, pkcs_9_at_challengePassword, pkcs_9_at_contentType, pkcs_9_at_counterSignature, pkcs_9_at_emailAddress, pkcs_9_at_extendedCertificateAttributes, pkcs_9_at_extensionRequest, pkcs_9_at_friendlyName, pkcs_9_at_localKeyId, pkcs_9_at_messageDigest, pkcs_9_at_signingDescription, pkcs_9_at_signingTime, pkcs_9_at_smimeCapabilities, pkcs_9_at_unstructuredAddress, pkcs_9_at_unstructuredName, pkcs8ShroudedKeyBag, preferSignedData, RC2_CBC, rc4, rsaEncryption, safeContentsBag, sdsiCertificate, secretBag, sha1WithRSAEncryption, sha224WithRSAEncryption, sha256WithRSAEncryption, sha384WithRSAEncryption, sha512WithRSAEncryption, signedAndEnvelopedData, signedData, sMIMECapabilitiesVersions, srsaOAEPEncryptionSET, x509Certificate, x509certType, x509Crl`

    - ### Fields inherited from interface org.bouncycastle.asn1.x509.X509ObjectIdentifiers

      `commonName, countryName, crlAccessMethod, id_ad, id_ad_caIssuers, id_ad_ocsp, id_at_name, id_at_telephoneNumber, id_ce, id_ea_rsa, id_pe, id_pkix, id_SHA1, localityName, ocspAccessMethod, organization, organizationalUnitName, ripemd160, ripemd160WithRSAEncryption, stateOrProvinceName`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `McEliecePKCSCipherSpi(Digest digest, McEliecePKCSCipher cipher)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `getKeySize(java.security.Key key)` Return the key size of the given key object in bits.
    `java.lang.String` | `getName()`
    `protected void` | `initCipherDecrypt(java.security.Key key, java.security.spec.AlgorithmParameterSpec params)` Initialize the AsymmetricBlockCipher with a certain key for data encryption.
    `protected void` | `initCipherEncrypt(java.security.Key key, java.security.spec.AlgorithmParameterSpec params, java.security.SecureRandom sr)` Initialize the AsymmetricBlockCipher with a certain key for data encryption.
    `protected byte[]` | `messageDecrypt(byte[] input)` Decrypt the ciphertext stored in input.
    `protected byte[]` | `messageEncrypt(byte[] input)` Encrypt the message stored in input.

    - ### Methods inherited from class org.bouncycastle.pqc.jcajce.provider.util.AsymmetricBlockCipher

      `checkLength, doFinal, doFinal, getBlockSize, getIV, getOutputSize, getParameters, initDecrypt, initDecrypt, initEncrypt, initEncrypt, initEncrypt, initEncrypt, setMode, setPadding, update, update`

    - ### Methods inherited from class org.bouncycastle.pqc.jcajce.provider.util.CipherSpiExt

      `doFinal, doFinal, engineDoFinal, engineDoFinal, engineGetBlockSize, engineGetIV, engineGetKeySize, engineGetOutputSize, engineGetParameters, engineInit, engineInit, engineInit, engineSetMode, engineSetPadding, engineUpdate, engineUpdate, update`

    - ### Methods inherited from class javax.crypto.CipherSpi

      `engineDoFinal, engineUnwrap, engineUpdate, engineUpdateAAD, engineUpdateAAD, engineWrap`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### McEliecePKCSCipherSpi

          public McEliecePKCSCipherSpi(Digest digest,
                               McEliecePKCSCipher cipher)

  - ### Method Detail

    - #### initCipherEncrypt

          protected void initCipherEncrypt(java.security.Key key,
                               java.security.spec.AlgorithmParameterSpec params,
                               java.security.SecureRandom sr)
                                    throws java.security.InvalidKeyException,
                                           java.security.InvalidAlgorithmParameterException

      Description copied from class: `AsymmetricBlockCipher`
      Initialize the AsymmetricBlockCipher with a certain key for data encryption.
      Specified by:
        `initCipherEncrypt` in class `AsymmetricBlockCipher`
      Parameters:
        `key` - the key which has to be used to encrypt data
        `params` - the algorithm parameters
        `sr` - the source of randomness
      Throws:
        `java.security.InvalidKeyException` - if the given key is inappropriate for initializing this cipher.
        `java.security.InvalidAlgorithmParameterException` - if the given parameters are inappropriate for initializing this cipher.

    - #### initCipherDecrypt

          protected void initCipherDecrypt(java.security.Key key,
                               java.security.spec.AlgorithmParameterSpec params)
                                    throws java.security.InvalidKeyException,
                                           java.security.InvalidAlgorithmParameterException

      Description copied from class: `AsymmetricBlockCipher`
      Initialize the AsymmetricBlockCipher with a certain key for data encryption.
      Specified by:
        `initCipherDecrypt` in class `AsymmetricBlockCipher`
      Parameters:
        `key` - the key which has to be used to decrypt data
        `params` - the algorithm parameters
      Throws:
        `java.security.InvalidKeyException` - if the given key is inappropriate for initializing this cipher
        `java.security.InvalidAlgorithmParameterException` - if the given parameters are inappropriate for initializing this cipher.

    - #### messageEncrypt

          protected byte[] messageEncrypt(byte[] input)
                                   throws javax.crypto.IllegalBlockSizeException,
                                          javax.crypto.BadPaddingException

      Description copied from class: `AsymmetricBlockCipher`
      Encrypt the message stored in input. The method should also perform an additional length check.
      Specified by:
        `messageEncrypt` in class `AsymmetricBlockCipher`
      Parameters:
        `input` - the message to be encrypted (usually the message length is less than or equal to maxPlainTextSize)
      Returns:
        the encrypted message (it has length equal to maxCipherTextSize_)
      Throws:
        `javax.crypto.IllegalBlockSizeException` - if the input is inappropriate for this cipher.
        `javax.crypto.BadPaddingException` - if the input format is invalid.

    - #### messageDecrypt

          protected byte[] messageDecrypt(byte[] input)
                                   throws javax.crypto.IllegalBlockSizeException,
                                          javax.crypto.BadPaddingException

      Description copied from class: `AsymmetricBlockCipher`
      Decrypt the ciphertext stored in input. The method should also perform an additional length check.
      Specified by:
        `messageDecrypt` in class `AsymmetricBlockCipher`
      Parameters:
        `input` - the ciphertext to be decrypted (the ciphertext length is less than or equal to maxCipherTextSize)
      Returns:
        the decrypted message
      Throws:
        `javax.crypto.IllegalBlockSizeException` - if the input is inappropriate for this cipher.
        `javax.crypto.BadPaddingException` - if the input format is invalid.

    - #### getName

          public java.lang.String getName()

      Specified by:
        `getName` in class `CipherSpiExt`
      Returns:
        the name of this cipher

    - #### getKeySize

          public int getKeySize(java.security.Key key)
                         throws java.security.InvalidKeyException

      Description copied from class: `CipherSpiExt`
      Return the key size of the given key object in bits.
      Specified by:
        `getKeySize` in class `CipherSpiExt`
      Parameters:
        `key` - the key object
      Returns:
        the key size in bits of the given key object
      Throws:
        `java.security.InvalidKeyException` - if key is invalid.