I'm trying to read the SecretKey from a p12 file, but it is not created in Bouncy Castle. A interesting thing to note is that file doesn't have any certificate and the class System.Security.Cryptography.X509Certificates can't read anything.
public void Pkcs12Pfx2()
{
Pfx bag = Pfx.GetInstance(File.ReadAllBytes(path));
ContentInfo info = bag.AuthSafe;
MacData mData = bag.MacData;
DigestInfo dInfo = mData.Mac;
AlgorithmIdentifier algId = dInfo.AlgorithmID;
byte[] salt = mData.GetSalt();
int itCount = mData.IterationCount.IntValue;
Asn1OctetString content = Asn1OctetString.GetInstance(info.Content);
AuthenticatedSafe authSafe = AuthenticatedSafe.GetInstance(content.GetOctets());
ContentInfo[] c = authSafe.GetContentInfo();
foreach (ContentInfo ci in c)
{
DerObjectIdentifier oid = ci.ContentType;
byte[] octetsCi = null;
if (oid.Equals(PkcsObjectIdentifiers.Data))
{
octetsCi = Asn1OctetString.GetInstance(ci.Content).GetOctets();
}
if (octetsCi != null)
{
Asn1Sequence seqCi = Asn1Sequence.GetInstance(octetsCi);
foreach (Asn1Sequence subSeq in seqCi)
{
SafeBag bagCi = SafeBag.GetInstance(subSeq);
foreach (var item in Asn1Sequence.GetInstance(bagCi.BagValue))
{
if (item.Equals(PkcsObjectIdentifiers.Pkcs8ShroudedKeyBag))
{
}
else
{
PrivateKeyInfo pki = new PrivateKeyInfo(algId, (Asn1Encodable)item);
var epki = EncryptedPrivateKeyInfoFactory.CreateEncryptedPrivateKeyInfo("PBEWITHSHA1AND3-KEYTRIPLEDES-CBC", password.ToCharArray(), salt, itCount, pki);
var aa = epki.ToAsn1Object();
}
}
}
}
}
The object epki contains the information of the SecretKey, but it still encrypted, or encoded. How can I decode that information?