BCMcEliecePrivateKey (Bouncy Castle Library 1.54 API Specification)
Date: 2015-12-29

org.bouncycastle.pqc.jcajce.provider.mceliece

## Class BCMcEliecePrivateKey

- java.lang.Object
- - org.bouncycastle.pqc.jcajce.provider.mceliece.BCMcEliecePrivateKey

- All Implemented Interfaces:
    java.io.Serializable, java.security.Key, java.security.PrivateKey, CipherParameters

      public class BCMcEliecePrivateKey
      extends java.lang.Object
      implements CipherParameters, java.security.PrivateKey

  This class implements a McEliece private key and is usually instantiated by the `McElieceKeyPairGenerator` or `McElieceKeyFactorySpi`.
  See Also:
    Serialized Form

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `BCMcEliecePrivateKey(McEliecePrivateKeyParameters params)`
    `BCMcEliecePrivateKey(McEliecePrivateKeySpec keySpec)` Constructor (used by the `McElieceKeyFactorySpi`).
    `BCMcEliecePrivateKey(java.lang.String oid, int n, int k, GF2mField field, PolynomialGF2mSmallM goppaPoly, GF2Matrix sInv, Permutation p1, Permutation p2, GF2Matrix h, PolynomialGF2mSmallM[] qInv)` Constructor (used by the `McElieceKeyPairGenerator`).

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `equals(java.lang.Object other)` Compare this key with another object.
    `java.lang.String` | `getAlgorithm()` Return the name of the algorithm.
    `protected ASN1Primitive` | `getAlgParams()`
    `byte[]` | `getEncoded()` Return the key data to encode in the SubjectPublicKeyInfo structure.
    `GF2mField` | `getField()`
    `java.lang.String` | `getFormat()`
    `PolynomialGF2mSmallM` | `getGoppaPoly()`
    `GF2Matrix` | `getH()`
    `int` | `getK()`
    `McElieceParameters` | `getMcElieceParameters()`
    `int` | `getN()`
    `protected ASN1ObjectIdentifier` | `getOID()`
    `java.lang.String` | `getOIDString()`
    `Permutation` | `getP1()`
    `Permutation` | `getP2()`
    `PolynomialGF2mSmallM[]` | `getQInv()`
    `GF2Matrix` | `getSInv()`
    `int` | `hashCode()`
    `java.lang.String` | `toString()`

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

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### BCMcEliecePrivateKey

          public BCMcEliecePrivateKey(java.lang.String oid,
                              int n,
                              int k,
                              GF2mField field,
                              PolynomialGF2mSmallM goppaPoly,
                              GF2Matrix sInv,
                              Permutation p1,
                              Permutation p2,
                              GF2Matrix h,
                              PolynomialGF2mSmallM[] qInv)

      Constructor (used by the `McElieceKeyPairGenerator`).
      Parameters:
        `oid` -
        `n` - the length of the code
        `k` - the dimension of the code
        `field` - the field polynomial defining the finite field `GF(2m)`
        `goppaPoly` - the irreducible Goppa polynomial
        `sInv` - the matrix `S-1`
        `p1` - the permutation used to generate the systematic check matrix
        `p2` - the permutation used to compute the public generator matrix
        `h` - the canonical check matrix
        `qInv` - the matrix used to compute square roots in `(GF(2m))t`

    - #### BCMcEliecePrivateKey

          public BCMcEliecePrivateKey(McEliecePrivateKeySpec keySpec)

      Constructor (used by the `McElieceKeyFactorySpi`).
      Parameters:
        `keySpec` - a `McEliecePrivateKeySpec`

    - #### BCMcEliecePrivateKey

          public BCMcEliecePrivateKey(McEliecePrivateKeyParameters params)

  - ### Method Detail

    - #### getAlgorithm

          public java.lang.String getAlgorithm()

      Return the name of the algorithm.
      Specified by:
        `getAlgorithm` in interface `java.security.Key`
      Returns:
        "McEliece"

    - #### getN

          public int getN()

      Returns:
        the length of the code

    - #### getK

          public int getK()

      Returns:
        the dimension of the code

    - #### getField

          public GF2mField getField()

      Returns:
        the finite field

    - #### getGoppaPoly

          public PolynomialGF2mSmallM getGoppaPoly()

      Returns:
        the irreducible Goppa polynomial

    - #### getSInv

          public GF2Matrix getSInv()

      Returns:
        the k x k random binary non-singular matrix S

    - #### getP1

          public Permutation getP1()

      Returns:
        the permutation used to generate the systematic check matrix

    - #### getP2

          public Permutation getP2()

      Returns:
        the permutation used to compute the public generator matrix

    - #### getH

          public GF2Matrix getH()

      Returns:
        the canonical check matrix

    - #### getQInv

          public PolynomialGF2mSmallM[] getQInv()

      Returns:
        the matrix for computing square roots in `(GF(2^m))^t`

    - #### getOIDString

          public java.lang.String getOIDString()

      Returns:
        the OID of the algorithm

    - #### toString

          public java.lang.String toString()

      Overrides:
        `toString` in class `java.lang.Object`
      Returns:
        a human readable form of the key

    - #### equals

          public boolean equals(java.lang.Object other)

      Compare this key with another object.
      Overrides:
        `equals` in class `java.lang.Object`
      Parameters:
        `other` - the other object
      Returns:
        the result of the comparison

    - #### hashCode

          public int hashCode()

      Overrides:
        `hashCode` in class `java.lang.Object`
      Returns:
        the hash code of this key

    - #### getOID

          protected ASN1ObjectIdentifier getOID()

      Returns:
        the OID to encode in the SubjectPublicKeyInfo structure

    - #### getAlgParams

          protected ASN1Primitive getAlgParams()

      Returns:
        the algorithm parameters to encode in the SubjectPublicKeyInfo structure

    - #### getEncoded

          public byte[] getEncoded()

      Return the key data to encode in the SubjectPublicKeyInfo structure.

      The ASN.1 definition of the key structure is

             McEliecePrivateKey ::= SEQUENCE {
               n          INTEGER                   -- length of the code
               k          INTEGER                   -- dimension of the code
               fieldPoly  OCTET STRING              -- field polynomial defining GF(2ˆm)
               goppaPoly  OCTET STRING              -- irreducible Goppa polynomial
               sInv       OCTET STRING              -- matrix Sˆ-1
               p1         OCTET STRING              -- permutation P1
               p2         OCTET STRING              -- permutation P2
               h          OCTET STRING              -- canonical check matrix
               qInv       SEQUENCE OF OCTET STRING  -- matrix used to compute square roots
             }

      Specified by:
        `getEncoded` in interface `java.security.Key`
      Returns:
        the key data to encode in the SubjectPublicKeyInfo structure

    - #### getFormat

          public java.lang.String getFormat()

      Specified by:
        `getFormat` in interface `java.security.Key`

    - #### getMcElieceParameters

          public McElieceParameters getMcElieceParameters()