summary refs log tree commit diff
path: root/crypto/src/pqc/crypto/picnic/PicnicKeyPairGenerator.cs
blob: fd5e441a2898f368758a50653838457a9cd9f2e0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
using Org.BouncyCastle.Crypto;
using Org.BouncyCastle.Security;

namespace Org.BouncyCastle.Pqc.Crypto.Picnic
{
    public class PicnicKeyPairGenerator
        : IAsymmetricCipherKeyPairGenerator

    {
        private SecureRandom random;
        private PicnicParameters parameters;

        public void Init(KeyGenerationParameters param)
        {
            random = param.Random;
            parameters = ((PicnicKeyGenerationParameters) param).GetParameters();
        }

        public AsymmetricCipherKeyPair GenerateKeyPair()
        {
            PicnicEngine engine = parameters.GetEngine();
            byte[] sk = new byte[engine.GetSecretKeySize()];
            byte[] pk = new byte[engine.GetPublicKeySize()];
            engine.crypto_sign_keypair(pk, sk, random);

            PicnicPublicKeyParameters pubKey = new PicnicPublicKeyParameters(parameters, pk);
            PicnicPrivateKeyParameters privKey = new PicnicPrivateKeyParameters(parameters, sk);


            return new AsymmetricCipherKeyPair(pubKey, privKey);
        }
    }
}