private void gen_key_rsa_sign_Click(object sender, EventArgs e)
        {
            int       keysize = Convert.ToInt32(key_size_rsa_sign.SelectedItem.ToString());
            ArrayList getkeys = rsa_keys.generate_keys(keysize);

            BigInteger[] keys = new BigInteger[6];
            int          j    = 0;

            foreach (BigInteger i in getkeys)
            {
                keys[j++] = i;
            }
            P_RSA              = keys[0];
            Q_RSA              = keys[1];
            N                  = keys[2];
            PHI_N              = keys[3];
            PK_RSA             = keys[4];
            SK_RSA             = keys[5];
            p_rsa_sign.Text    = P_RSA.ToString();
            q_rsa_sign.Text    = Q_RSA.ToString();
            n_rsa_sign.Text    = N.ToString();
            phin_rsa_sign.Text = PHI_N.ToString();
            pk_rsa_sign.Text   = PK_RSA.ToString();
            sk_rsa_sign.Text   = SK_RSA.ToString();
            rsa_signature      = new RSASignature(PK_RSA, N, PHI_N, SK_RSA, size_rsa_sign);
        }
        private void file_key_rsa_sign_Click(object sender, EventArgs e)
        {
            OpenFileDialog get_file  = new OpenFileDialog();
            string         file_name = "";

            if (get_file.ShowDialog() == DialogResult.OK)
            {
                file_name = get_file.FileName;
            }
            string[] keys = new string[6];
            try
            {
                using (StreamReader sr = new StreamReader(file_name))
                {
                    string line;
                    int    count = 0;
                    while ((line = sr.ReadLine()) != null)
                    {
                        keys[count++] = line;
                    }
                    if (keys[3].Length <= 320)
                    {
                        key_size_rsa_sign.Text = 1024.ToString();
                        size_rsa_sign          = 1024;
                    }
                    else
                    {
                        key_size_rsa_sign.Text = 2048.ToString();
                        size_rsa_sign          = 2048;
                    }
                    P_RSA  = BigInteger.Parse(keys[0]);
                    Q_RSA  = BigInteger.Parse(keys[1]);
                    N      = BigInteger.Parse(keys[2]);
                    PHI_N  = BigInteger.Parse(keys[3]);
                    PK_RSA = BigInteger.Parse(keys[4]);
                    SK_RSA = BigInteger.Parse(keys[5]);
                }
                p_rsa_sign.Text    = P_RSA.ToString();
                q_rsa_sign.Text    = Q_RSA.ToString();
                n_rsa_sign.Text    = N.ToString();
                phin_rsa_sign.Text = PHI_N.ToString();
                pk_rsa_sign.Text   = PK_RSA.ToString();
                sk_rsa_sign.Text   = SK_RSA.ToString();
                rsa_signature      = new RSASignature(PK_RSA, N, PHI_N, SK_RSA, size_rsa_sign);
            }
            catch
            {
                return;
            }
        }
Esempio n. 3
0
        public IActionResult CreateLicense(string format, string sign, [FromBody] LicenseModel model)
        {
            ILicense license = null;

            format = format.ToUpperInvariant();
            switch (format)
            {
            case "XML":
                license = new XmlLicense();
                break;

            case "ASCII":
            case "BASE32":
                license = new StringLicense();
                break;

            default:
                return(BadRequest());
            }

            ISignatureProvider signature = null;

            switch (sign.ToUpperInvariant())
            {
            case "ECDSA":
                var ecdsa = new ECDsaSignature(ECDsaKeySize.KeySize112bit);
                ecdsa.CreateKeyPair();
                // Embed public key information in the license
                ecdsa.GenerateKeyInfo = true;
                model.PublicKey       = ecdsa.PublicKey;
                signature             = ecdsa;
                break;

            case "RSA":
                var rsa = new RSASignature(1024);
                rsa.CreateKeyPair();
                signature = rsa;
                break;

            default:
                return(BadRequest());
            }

            // Fill license
            license.WithId(model.Id ?? "1")
            .IssuedAt(DateTime.UtcNow)
            .WithType(model.Type ?? string.Empty)
            .ForProduct(model.Product ?? string.Empty, model.Version ?? string.Empty)
            .LicensedTo(model.Licensee ?? string.Empty);

            if (model.ExpireDate.HasValue)
            {
                license.ExpiresAt(model.ExpireDate.Value.ToUniversalTime());
            }

            if (model.SupportExpireDate.HasValue)
            {
                license.SupportExpiresAt(model.SupportExpireDate.Value.ToUniversalTime());
            }

            // Sign license
            var licenseBuilder = license.SignWith(signature);

            var stringBuilder = licenseBuilder as StringLicenseBuilder;

            if (stringBuilder != null)
            {
                switch (format)
                {
                case "ASCII":
                    stringBuilder.Format = StringFormat.Ascii;
                    break;

                case "BASE32":
                    stringBuilder.Format = StringFormat.Base32;
                    break;
                }
            }

            // Get license key
            model.LicenseKey = licenseBuilder.ToReadableString();

            return(Ok(model));
        }