ExportParameters() публичный абстрактный Метод

public abstract ExportParameters ( bool includePrivateParameters ) : DSAParameters
includePrivateParameters bool
Результат DSAParameters
Пример #1
0
        public void ImportCspBlob(byte[] keyBlob)
        {
            if (keyBlob == null)
            {
                throw new ArgumentNullException("keyBlob");
            }
            DSA dsa = CryptoConvert.FromCapiKeyBlobDSA(keyBlob);

            if (dsa is DSACryptoServiceProvider)
            {
                DSAParameters dsap = dsa.ExportParameters(!(dsa as DSACryptoServiceProvider).PublicOnly);
                ImportParameters(dsap);
            }
            else
            {
                // we can't know from DSA if the private key is available
                try {
                    // so we try it...
                    DSAParameters dsap = dsa.ExportParameters(true);
                    ImportParameters(dsap);
                }
                catch {
                    // and fall back
                    DSAParameters dsap = dsa.ExportParameters(false);
                    ImportParameters(dsap);
                }
            }
        }
Пример #2
0
        public void ImportCspBlob(byte[] keyBlob)
        {
            if (keyBlob == null)
            {
                throw new ArgumentNullException("keyBlob");
            }
            DSA dsa = CryptoConvert.FromCapiKeyBlobDSA(keyBlob);

            if (dsa is DSACryptoServiceProvider)
            {
                DSAParameters parameters = dsa.ExportParameters(!(dsa as DSACryptoServiceProvider).PublicOnly);
                this.ImportParameters(parameters);
            }
            else
            {
                try
                {
                    DSAParameters parameters2 = dsa.ExportParameters(true);
                    this.ImportParameters(parameters2);
                }
                catch
                {
                    DSAParameters parameters3 = dsa.ExportParameters(false);
                    this.ImportParameters(parameters3);
                }
            }
        }
        /// <summary>
        /// Initializes this instance of an DSA signature algorithm.
        /// </summary>
        /// <param name="dsa">DSA cryptographic service provider to use.</param>
        private void InitializeAlgorithm(System.Security.Cryptography.DSA dsa)
        {
            this.dsa = dsa;

            //Compute the identity.
            DSAParameters parameters = dsa.ExportParameters(false);

            this.identity = new DSAIdentity(parameters);
        }
        public override void Write(System.IO.BinaryWriter stream)
        {
            //Write P, Q, G, and Y.
            DSAParameters parameters = dsa.ExportParameters(false);

            WriteBytes(stream, parameters.P);
            WriteBytes(stream, parameters.Q);
            WriteBytes(stream, parameters.G);
            WriteBytes(stream, parameters.Y);
        }
Пример #5
0
        /// <summary>
        ///     Create a public key block from a private key.
        /// </summary>
        /// <param name="privateKey">The <see cref="DSA" /> PrivateKey.</param>
        /// <returns>The <see cref="DSACryptoServiceProvider" /> PublicKey.</returns>
        public static DSACryptoServiceProvider make_pubkey(DSA privateKey)
        {
            var publicKey = new DSACryptoServiceProvider(1024);
            publicKey.ImportParameters(privateKey.ExportParameters(false));

            if (!publicKey.PublicOnly)
            {
                publicKey.Dispose();
                throw new Exception("PublicKey contains PrivateKey information, cancelling.");
            }

            return publicKey;
        }
Пример #6
0
			static public byte[] Encode (DSA dsa) 
			{
				DSAParameters param = dsa.ExportParameters (true);
				return ASN1Convert.FromUnsignedBigInteger (param.X).GetBytes ();
			}
Пример #7
0
		static public byte[] ToCapiPublicKeyBlob (DSA dsa)
		{
			DSAParameters p = dsa.ExportParameters (false);
			int keyLength = p.P.Length; // in bytes

			// header + P + Q + G + Y + count + seed
			byte[] blob = new byte [16 + keyLength + 20 + keyLength + keyLength + 4 + 20];

			blob [0] = 0x06;	// Type - PUBLICKEYBLOB (0x06)
			blob [1] = 0x02;	// Version - Always CUR_BLOB_VERSION (0x02)
			// [2], [3]		// RESERVED - Always 0
			blob [5] = 0x22;	// ALGID
			blob [8] = 0x44;	// Magic
			blob [9] = 0x53;
			blob [10] = 0x53;
			blob [11] = 0x31;

			byte[] bitlen = GetBytesLE (keyLength << 3);
			blob [12] = bitlen [0];
			blob [13] = bitlen [1];
			blob [14] = bitlen [2];
			blob [15] = bitlen [3];

			int pos = 16;
			byte[] part;

			part = p.P;
			Array.Reverse (part);
			Buffer.BlockCopy (part, 0, blob, pos, keyLength);
			pos += keyLength;

			part = p.Q;
			Array.Reverse (part);
			Buffer.BlockCopy (part, 0, blob, pos, 20);
			pos += 20;

			part = p.G;
			Array.Reverse (part);
			Buffer.BlockCopy (part, 0, blob, pos, keyLength);
			pos += keyLength;

			part = p.Y;
			Array.Reverse (part);
			Buffer.BlockCopy (part, 0, blob, pos, keyLength);
			pos += keyLength;

			Buffer.BlockCopy (GetBytesLE (p.Counter), 0, blob, pos, 4);
			pos += 4;

			part = p.Seed;
			Array.Reverse (part);
			Buffer.BlockCopy (part, 0, blob, pos, 20);

			return blob;
		}
Пример #8
0
 public override DSAParameters ExportParameters(bool includePrivateParameters) =>
 _impl.ExportParameters(includePrivateParameters);
Пример #9
0
		public static DsaPublicKeyParameters GetDsaPublicKey(
			DSA dsa)
		{
			return GetDsaPublicKey(dsa.ExportParameters(false));
		}
Пример #10
0
		public static AsymmetricCipherKeyPair GetDsaKeyPair(
			DSA dsa)
		{
			return GetDsaKeyPair(dsa.ExportParameters(true));
		}