Class RainbowKeyFactorySpi
java.lang.Object
java.security.KeyFactorySpi
org.bouncycastle.pqc.jcajce.provider.rainbow.RainbowKeyFactorySpi
- All Implemented Interfaces:
AsymmetricKeyInfoConverter
This class transforms Rainbow keys and Rainbow key specifications.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionengineGeneratePrivate(KeySpec keySpec) Converts, if possible, a key specification into aBCRainbowPrivateKey.engineGeneratePublic(KeySpec keySpec) Converts, if possible, a key specification into aBCRainbowPublicKey.final KeySpecengineGetKeySpec(Key key, Class keySpec) Converts a given key into a key specification, if possible.final KeyengineTranslateKey(Key key) Translates a key into a form known by the FlexiProvider.generatePrivate(PrivateKeyInfo keyInfo) generatePublic(SubjectPublicKeyInfo keyInfo)
-
Constructor Details
-
RainbowKeyFactorySpi
public RainbowKeyFactorySpi()
-
-
Method Details
-
engineGeneratePrivate
Converts, if possible, a key specification into aBCRainbowPrivateKey. Currently, the following key specifications are supported:RainbowPrivateKeySpec,PKCS8EncodedKeySpec.The ASN.1 definition of the key structure is
RainbowPrivateKey ::= SEQUENCE { oid OBJECT IDENTIFIER -- OID identifying the algorithm A1inv SEQUENCE OF OCTET STRING -- inversed matrix of L1 b1 OCTET STRING -- translation vector of L1 A2inv SEQUENCE OF OCTET STRING -- inversed matrix of L2 b2 OCTET STRING -- translation vector of L2 vi OCTET STRING -- num of elmts in each Set S layers SEQUENCE OF Layer -- layers of F } Layer ::= SEQUENCE OF Poly Poly ::= SEQUENCE { alpha SEQUENCE OF OCTET STRING beta SEQUENCE OF OCTET STRING gamma OCTET STRING eta OCTET }- Specified by:
engineGeneratePrivatein classKeyFactorySpi- Parameters:
keySpec- the key specification- Returns:
- the Rainbow private key
- Throws:
InvalidKeySpecException- if the KeySpec is not supported.
-
engineGeneratePublic
Converts, if possible, a key specification into aBCRainbowPublicKey. Currently, the following key specifications are supported:X509EncodedKeySpec.The ASN.1 definition of a public key's structure is
RainbowPublicKey ::= SEQUENCE { oid OBJECT IDENTIFIER -- OID identifying the algorithm docLength Integer -- length of signable msg coeffquadratic SEQUENCE OF OCTET STRING -- quadratic (mixed) coefficients coeffsingular SEQUENCE OF OCTET STRING -- singular coefficients coeffscalar OCTET STRING -- scalar coefficients }- Specified by:
engineGeneratePublicin classKeyFactorySpi- Parameters:
keySpec- the key specification- Returns:
- the Rainbow public key
- Throws:
InvalidKeySpecException- if the KeySpec is not supported.
-
engineGetKeySpec
Converts a given key into a key specification, if possible. Currently the following specs are supported:- for RainbowPublicKey: X509EncodedKeySpec, RainbowPublicKeySpec
- for RainbowPrivateKey: PKCS8EncodedKeySpec, RainbowPrivateKeySpec
- Specified by:
engineGetKeySpecin classKeyFactorySpi- Parameters:
key- the keykeySpec- the key specification- Returns:
- the specification of the CMSS key
- Throws:
InvalidKeySpecException- if the key type or key specification is not supported.
-
engineTranslateKey
Translates a key into a form known by the FlexiProvider. Currently the following key types are supported: RainbowPrivateKey, RainbowPublicKey.- Specified by:
engineTranslateKeyin classKeyFactorySpi- Parameters:
key- the key- Returns:
- a key of a known key type
- Throws:
InvalidKeyException- if the key is not supported.
-
generatePrivate
- Specified by:
generatePrivatein interfaceAsymmetricKeyInfoConverter- Throws:
IOException
-
generatePublic
- Specified by:
generatePublicin interfaceAsymmetricKeyInfoConverter- Throws:
IOException
-