/// <summary>
 /// Create an instance from the public properties of the specified CryptoProvider.
 /// </summary>
 /// <param name="CryptoProvider">Template from which to take the properties.</param>
 public CryptoAlgorithm(CryptoProvider CryptoProvider) {
     this._Name = CryptoProvider.Name;
     this._OID = CryptoConfig.MapNameToOID(Name);
     this._GetCryptoProvider = CryptoProvider.GetCryptoProvider;
     this._KeySize = CryptoProvider.Size;
     _JSON_use = CryptoProvider.JSONKeyUse;
     _JSON_kty = CryptoProvider.JSONKeyType;
     _AlgorithmClass = CryptoProvider.AlgorithmClass;
     }
 /// <summary>
 /// Create an instance with the specified property values.
 /// </summary>
 /// <param name="CryptoAlgorithmID">CryptoAlgorithmID Identifier.</param>
 /// <param name="Name">.NET Framework name.</param>
 /// <param name="KeySize">Default algorithm key size.</param>
 /// <param name="JSON_alg">JSON Algorithm Identifier.</param>
 /// <param name="JSON_kty">JSON Key type.</param>
 /// <param name="JSON_use">JSON Key Use.</param>
 /// <param name="XML">XML algorithm identifier.</param>
 /// <param name="AlgorithmClass">Algorithm type.</param>
 /// <param name="GetCryptoProvider">Delegate returning the default crypto provider.</param>
 public CryptoAlgorithm(
             CryptoAlgorithmID CryptoAlgorithmID,
             string Name,
             int KeySize,
             string JSON_kty,
             string JSON_use,
             string JSON_alg,
             string XML,
             CryptoAlgorithmClass AlgorithmClass,
             GetCryptoProvider GetCryptoProvider) {
      _CryptoAlgorithmID = CryptoAlgorithmID;
     _Name = Name;
     _OID = CryptoConfig.MapNameToOID(Name);
     _GetCryptoProvider = GetCryptoProvider;
     _KeySize = KeySize;
     _JSON_alg = JSON_alg;
     _JSON_use = JSON_use;
     _JSON_kty = JSON_kty;
     _XML = XML;
     _AlgorithmClass = AlgorithmClass;
     }