diff options
author | royb <roy.basmacier@primekey.com> | 2022-02-03 12:51:52 -0500 |
---|---|---|
committer | Peter Dettman <peter.dettman@bouncycastle.org> | 2022-06-23 21:58:04 +0700 |
commit | 004de388d03ebfc6734d4a613f5114ceb8f7a570 (patch) | |
tree | c796413a7589c47548c15f35ec4b27f4b17fe6a8 /crypto/src/pkcs | |
parent | New build organization (diff) | |
download | BouncyCastle.NET-ed25519-004de388d03ebfc6734d4a613f5114ceb8f7a570.tar.xz |
Initial merge of PQC port
Diffstat (limited to 'crypto/src/pkcs')
-rw-r--r-- | crypto/src/pkcs/PrivateKeyInfoFactory.cs | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/crypto/src/pkcs/PrivateKeyInfoFactory.cs b/crypto/src/pkcs/PrivateKeyInfoFactory.cs index f610c1406..e138141e3 100644 --- a/crypto/src/pkcs/PrivateKeyInfoFactory.cs +++ b/crypto/src/pkcs/PrivateKeyInfoFactory.cs @@ -13,6 +13,9 @@ using Org.BouncyCastle.Crypto; using Org.BouncyCastle.Crypto.Generators; using Org.BouncyCastle.Crypto.Parameters; using Org.BouncyCastle.Math; +using Org.BouncyCastle.Pqc.Asn1; +using Org.BouncyCastle.Pqc.Crypto.Cmce; +using Org.BouncyCastle.Pqc.Crypto.Utilities; using Org.BouncyCastle.Security; using Org.BouncyCastle.Utilities; @@ -243,6 +246,21 @@ namespace Org.BouncyCastle.Pkcs return new PrivateKeyInfo(new AlgorithmIdentifier(EdECObjectIdentifiers.id_Ed25519), new DerOctetString(key.GetEncoded()), attributes, key.GeneratePublicKey().GetEncoded()); } + + if (privateKey is CmcePrivateKeyParameters) + { + CmcePrivateKeyParameters parameters = (CmcePrivateKeyParameters)privateKey; + + byte[] encoding = parameters.GetEncoded(); + + AlgorithmIdentifier algorithmIdentifier = new AlgorithmIdentifier(PqcUtilities.McElieceOidLookup(parameters.Parameters)); + + CmcePublicKey cmcePub = new CmcePublicKey(parameters.ReconstructPublicKey()); + CmcePrivateKey cmcePriv = new CmcePrivateKey(0, parameters.Delta, parameters.C, parameters.G, parameters.Alpha, parameters.S, cmcePub); + return new PrivateKeyInfo(algorithmIdentifier, cmcePriv, attributes); + } + + throw new ArgumentException("Class provided is not convertible: " + Platform.GetTypeName(privateKey)); } |