Bouncy Castle Cryptography 1.48

org.bouncycastle.pqc.jcajce.provider.mceliece
Class BCMcEliecePrivateKey

java.lang.Object
  extended by 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
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
 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()

Bouncy Castle Cryptography 1.48