private Key aus P12 Datei



Hallo,
ich brauche Hilfe zu folgendem.

Ich habe eine P12-Datei, die ich mit X509 auslese. Wie kann ich den privaten
Schlüssel bekommen, so das ich danach eine Signierung machen kann. Ich bin
schon die ganze Zeit am testen, aber dieer Schlüssel läßt sich nicht
auslesen. In einer PEM-Datei kann ich den sehen. Nur lesen klappt auch hier
nicht. Der Private Schlüssel sollte als XML gespeichert sein.

Danke.

André R.

Hier der Code den ich benutze:

HIER AUSLESEN:
private void GetAllKeys()
{
X509Certificate2 x509 = new X509Certificate2();
X509KeyStorageFlags KeyStorageFlags = new X509KeyStorageFlags();

if (mReferenceData.SignatureFile.Length < 1)
{
mKeyClass.x509_Error = "File name not found";
return;
}

try
{
rawData = ReadFile(SignatureFile);

x509.Import(rawData, mReferenceData.Password,
KeyStorageFlags);

mKeyClass.x509_Subject = x509.Subject;
mKeyClass.x509_Issuer = x509.Issuer;
mKeyClass.x509_Version = x509.Version;
mKeyClass.x509_NotBefore = x509.NotBefore;
mKeyClass.x509_NotAfter = x509.NotAfter;
mKeyClass.x509_Thumbprint = x509.Thumbprint;
mKeyClass.x509_SerialNumber = x509.SerialNumber;
mKeyClass.x509_PublicKey_Oid_FriendlyName =
x509.PublicKey.Oid.FriendlyName;
mKeyClass.x509_PublicKey_EncodedKeyValue_Format =
x509.PublicKey.EncodedKeyValue.Format(true);
mKeyClass.x509_RawData_Length = x509.RawData.Length;
mKeyClass.x509_s = x509.ToString(true);
mKeyClass.x509_PublicKey_Key_Xml =
x509.PublicKey.Key.ToXmlString(false);
mKeyClass.x509_HasPrivateKey = x509.HasPrivateKey;

if (x509.HasPrivateKey)
{
mKeyClass.x509_PrivateKey =
x509.PrivateKey.KeyExchangeAlgorithm;
mKeyClass.x509_Error = "";
}
else
{
mKeyClass.x509_Error = "No private key found. Please
convert with the tool";
}

X509Store store = new X509Store();
store.Open(OpenFlags.MaxAllowed);
store.Add(x509);
store.Close();
}
catch (Exception ExG)
{
mKeyClass.x509_Error = ExG.Message.ToString() + " (ExG)";
}
}
}


HIER SIGNIEREN:
public string Sign(string TextToSign, string PrivateKey)
{
byte[] valueToHash = null;
byte[] signedValue = null;
string ErrorText = "";

try
{
mSign = new Sign(TextToSign, PrivateKey);

RSACryptoServiceProvider rsaCryptoServiceProvider = new
RSACryptoServiceProvider();
RSAPKCS1SignatureFormatter rsaFormatter = new
RSAPKCS1SignatureFormatter(rsaCryptoServiceProvider);
RSA RSA = RSA.Create();
ASCIIEncoding Encoding = new ASCIIEncoding();
SHA1Managed SHA1 = new SHA1Managed();
rsaFormatter.SetHashAlgorithm("SHA1");

rsaCryptoServiceProvider.ImportCspBlob(ConvertStringHexadecimalToByteArray(mSign.PrivateKey.ToString()));
rsaFormatter.SetKey(RSA);

valueToHash = Encoding.GetBytes(PrivateKey);
signedValue =
rsaFormatter.CreateSignature(SHA1.ComputeHash(valueToHash));
}
catch (Exception sEx)
{
ErrorText = sEx.Message.ToString() + " (sEx)";
}
return Convert.ToBase64String(signedValue);
}


.



Relevant Pages

  • RE: Implementing RSACryptoServiceProvider *and* JavaScript
    ... One of the things I discovered is the 'standard' RSA algorithms, ... I've more-or-less come to the conclusion that the RSACryptoServiceProvider ... >> passwords and other sensitive information is passed from the client back to ... >> a JavaScript RSA implementation that works with the RSACryptoServiceProvider. ...
    (microsoft.public.dotnet.framework.aspnet.security)
  • 2.0 breaking change. Cant figure it out.
    ... If you create a new RSA, ... private const int magic_size = 4; ... RSACryptoServiceProvider rsa = GetRSAFromSnkBytes; ... RSAParameters ret = new RSAParameters; ...
    (microsoft.public.dotnet.languages.csharp)
  • Re: Suggested additional constructor for RSACryptoServiceProvider
    ... Since we're on the subject of the RSACryptoServiceProvider class, ... generates new RSA public/private transient key-pairs each time invoked. ... creates a persistent key container with the name ... >> constructors support initializing with existing RSA credentials using ...
    (microsoft.public.dotnet.security)
  • RSA maximum key size
    ... I have a question about what key lengths are supported by RSA ... encryption in .Net. ... RSACryptoServiceProvider RSA = new RSACryptoServiceProvider; ... asking is whether the .Net libraries are actually capable of supporting the ...
    (microsoft.public.dotnet.security)
  • Re: RSA.Create() - performance issues
    ... Using RSACryptoServiceProvider doesn't change anything. ... // XML document resource. ... RSA myKey = RSA.Create; ... Is there really no way to just create an empty RSA object when you know, ...
    (microsoft.public.dotnet.security)