Package org.bouncycastle.pqc.jcajce.provider.mceliece

## Class McElieceFujisakiCipherSpi

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

- All Implemented Interfaces:
    `PKCSObjectIdentifiers`, `X509ObjectIdentifiers`
  Direct Known Subclasses:
    `McElieceFujisakiCipherSpi.McElieceFujisaki`

      public class McElieceFujisakiCipherSpi
      extends AsymmetricHybridCipher
      implements PKCSObjectIdentifiers, X509ObjectIdentifiers

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `static class` | `McElieceFujisakiCipherSpi.McElieceFujisaki` |

  - ### Field Summary

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

      `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_asymmDecryptKeyID, id_aa_cmsAlgorithmProtect, id_aa_commitmentType, id_aa_communityIdentifiers, id_aa_contentHint, id_aa_contentIdentifier, id_aa_contentReference, id_aa_decryptKeyID, 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_implCompressAlgs, id_aa_implCryptoAlgs, 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_AEADChaCha20Poly1305, id_alg_CMS3DESwrap, id_alg_CMSRC2wrap, id_alg_ESDH, id_alg_hkdf_with_sha256, id_alg_hkdf_with_sha384, id_alg_hkdf_with_sha512, id_alg_hss_lms_hashsig, id_alg_PWRI_KEK, id_alg_SSDH, 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_rsa_KEM, 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, sha512_224WithRSAEncryption, sha512_256WithRSAEncryption, 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_organizationIdentifier, id_at_telephoneNumber, id_ce, id_ea_rsa, id_ecdsa_with_shake128, id_ecdsa_with_shake256, id_pe, id_pkix, id_rsassa_pss_shake128, id_rsassa_pss_shake256, id_SHA1, localityName, ocspAccessMethod, organization, organizationalUnitName, ripemd160, ripemd160WithRSAEncryption, stateOrProvinceName`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor | Description
    --- | --- | ---
    `protected` | `McElieceFujisakiCipherSpi​(Digest digest, McElieceFujisakiCipher cipher)` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected int` | `decryptOutputSize​(int inLen)` | Compute the output size of an update() or doFinal() operation of a hybrid asymmetric cipher in decryption mode when given input of the specified length.
    `byte[]` | `doFinal​(byte[] input, int inOff, int inLen)` | Encrypts or decrypts data in a single-part operation, or finishes a multiple-part operation.
    `protected int` | `encryptOutputSize​(int inLen)` | Compute the output size of an update() or doFinal() operation of a hybrid asymmetric cipher in encryption mode when given input of the specified length.
    `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 AsymmetricHybridCipher 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 AsymmetricHybridCipher with a certain key for data encryption.
    `byte[]` | `update​(byte[] input, int inOff, int inLen)` | Continue a multiple-part encryption or decryption operation.

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

      `doFinal, getBlockSize, getIV, getOutputSize, getParameters, initDecrypt, initDecrypt, initEncrypt, initEncrypt, initEncrypt, initEncrypt, setMode, setPadding, 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

    - #### McElieceFujisakiCipherSpi

          protected McElieceFujisakiCipherSpi​(Digest digest,
                                              McElieceFujisakiCipher cipher)

  - ### Method Detail

    - #### update

          public byte[] update​(byte[] input,
                               int inOff,
                               int inLen)

      Continue a multiple-part encryption or decryption operation.
      Specified by:
        `update` in class `AsymmetricHybridCipher`
      Parameters:
        `input` - byte array containing the next part of the input
        `inOff` - index in the array where the input starts
        `inLen` - length of the input
      Returns:
        the processed byte array.

    - #### doFinal

          public byte[] doFinal​(byte[] input,
                                int inOff,
                                int inLen)
                         throws javax.crypto.BadPaddingException

      Encrypts or decrypts data in a single-part operation, or finishes a multiple-part operation. The data is encrypted or decrypted, depending on how this cipher was initialized.
      Specified by:
        `doFinal` in class `AsymmetricHybridCipher`
      Parameters:
        `input` - the input buffer
        `inOff` - the offset in input where the input starts
        `inLen` - the input length
      Returns:
        the new buffer with the result
      Throws:
        `javax.crypto.BadPaddingException` - on deryption errors.

    - #### encryptOutputSize

          protected int encryptOutputSize​(int inLen)

      Description copied from class: `AsymmetricHybridCipher`
      Compute the output size of an update() or doFinal() operation of a hybrid asymmetric cipher in encryption mode when given input of the specified length.
      Specified by:
        `encryptOutputSize` in class `AsymmetricHybridCipher`
      Parameters:
        `inLen` - the length of the input
      Returns:
        the output size

    - #### decryptOutputSize

          protected int decryptOutputSize​(int inLen)

      Description copied from class: `AsymmetricHybridCipher`
      Compute the output size of an update() or doFinal() operation of a hybrid asymmetric cipher in decryption mode when given input of the specified length.
      Specified by:
        `decryptOutputSize` in class `AsymmetricHybridCipher`
      Parameters:
        `inLen` - the length of the input
      Returns:
        the output size

    - #### 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: `AsymmetricHybridCipher`
      Initialize the AsymmetricHybridCipher with a certain key for data encryption.
      Specified by:
        `initCipherEncrypt` in class `AsymmetricHybridCipher`
      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: `AsymmetricHybridCipher`
      Initialize the AsymmetricHybridCipher with a certain key for data encryption.
      Specified by:
        `initCipherDecrypt` in class `AsymmetricHybridCipher`
      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.

    - #### 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.