internal DateTime before;
internal DateTime after;
internal int rootCa;
+ private bool gotMetadata = false;
public certificateMetadata()
{
fields = new string[Enum.GetNames(typeof(CertificateField)).Length];
}
return GetCertFieldDescription(field);
}
- }
+ public void GetMetadata()
+ {
+ if (gotMetadata == true)
+ {
+ return;
+ }
+ InstanceNew(out IntPtr instance);
+ if (instance == null)
+ {
+ Tizen.Log.Debug(LogTag, "Unable to create new instance");
+ return;
+ }
+ ErrorCode err = (ErrorCode)GetPKCS12CertificateFromStore(instance, storeType, gname, out Certificate cout);
+ if (err != ErrorCode.CERTSVC_SUCCESS)
+ {
+ Tizen.Log.Debug(LogTag, "Unable to GetPKCS12CertificateFromStore, err: " + err + ", instance: "
+ + instance + " gname: " + gname + " store_type: " + storeType);
+ InstanceFree(instance);
+ return;
+ }
+
+ err = (ErrorCode)GetCertificateNotAfter(cout, out long time);
+ if (err != ErrorCode.CERTSVC_SUCCESS)
+ {
+ Tizen.Log.Debug(LogTag, "Unable to GetCertificateNotAfter, , err: " + err + ", instance: "
+ + instance + " gname: " + gname + " store_type: " + storeType);
+ InstanceFree(instance);
+ return;
+ }
+ after = new DateTime(1970, 1, 1).ToLocalTime().AddSeconds(time);
+ err = (ErrorCode)GetCertificateNotBefore(cout, out time);
+ if (err != ErrorCode.CERTSVC_SUCCESS)
+ {
+ Tizen.Log.Debug(LogTag, "Unable to GetCertificateNotBefore, , err: " + err + ", instance: "
+ + instance + " gname: " + gname + " store_type: " + storeType);
+ InstanceFree(instance);
+ return;
+ }
+ before = new DateTime(1970, 1, 1).ToLocalTime().AddSeconds(time);
+ err = (ErrorCode)GetCertificateIsRootCa(cout, out int isRootCa);
+ if (err != ErrorCode.CERTSVC_SUCCESS)
+ {
+ Tizen.Log.Debug(LogTag, "Unable to GetCertificateIsRootCa, , err: " + err + ", instance: "
+ + instance + " gname: " + gname + " store_type: " + storeType);
+ InstanceFree(instance);
+ return;
+ }
+ rootCa = isRootCa;
+ foreach (CertificateField certificateField in Enum.GetValues(typeof(CertificateField)))
+ {
+ err = (ErrorCode)GetCertificateStringField(cout, certificateField, out CertSvcString certSvcString);
+ if (err != ErrorCode.CERTSVC_SUCCESS)
+ {
+ Tizen.Log.Debug(LogTag, "Unable to GetCertificateStringField, , err: " + err + ", instance: "
+ + instance + " gname: " + gname + " store_type: " + storeType);
+ continue;
+ }
+ string stringField = Marshal.PtrToStringUTF8(certSvcString.privateHandler);
+ fields[(int)certificateField] = stringField;
+ }
+ gotMetadata = true;
+ InstanceFree(instance);
+ }
+ }
internal struct StoreCertHandle
{
string name;
{
IntPtr cur = certList;
var list = new List<certificateMetadata>();
-
while (cur != IntPtr.Zero)
{
StoreCertList item = Marshal.PtrToStructure<Interop.CertSvc.StoreCertList>(cur);
- certificateMetadata cert = new certificateMetadata
+ certificateMetadata cert = new certificateMetadata()
{
status = item.status,
gname = Marshal.PtrToStringUTF8(item.gname),
title = Marshal.PtrToStringUTF8(item.title),
storeType = item.storeType
};
- ErrorCode err = (ErrorCode)GetPKCS12CertificateFromStore(instance, item.storeType, item.gname, out Certificate cout);
- if (err != ErrorCode.CERTSVC_SUCCESS)
- {
- Tizen.Log.Debug(LogTag, "Unable to GetPKCS12CertificateFromStore, err: " + err + ", instance: "
- + instance + " gname: " + item.gname + " store_type: " + item.storeType);
- cur = item.next;
- continue;
- }
-
- err = (ErrorCode)GetCertificateNotAfter(cout, out long time);
- if (err != ErrorCode.CERTSVC_SUCCESS)
- {
- Tizen.Log.Debug(LogTag, "Unable to GetCertificateNotAfter, , err: " + err + ", instance: "
- + instance + " gname: " + item.gname + " store_type: " + item.storeType);
- cur = item.next;
- continue;
- }
- cert.after = new DateTime(1970, 1, 1).ToLocalTime().AddSeconds(time);
- err = (ErrorCode)GetCertificateNotBefore(cout, out time);
- if (err != ErrorCode.CERTSVC_SUCCESS)
- {
- Tizen.Log.Debug(LogTag, "Unable to GetCertificateNotBefore, , err: " + err + ", instance: "
- + instance + " gname: " + item.gname + " store_type: " + item.storeType);
- cur = item.next;
- continue;
- }
- cert.before = new DateTime(1970, 1, 1).ToLocalTime().AddSeconds(time);
- err = (ErrorCode)GetCertificateIsRootCa(cout, out int isRootCa);
- if (err != ErrorCode.CERTSVC_SUCCESS)
- {
- Tizen.Log.Debug(LogTag, "Unable to GetCertificateIsRootCa, , err: " + err + ", instance: "
- + instance + " gname: " + item.gname + " store_type: " + item.storeType);
- cur = item.next;
- continue;
- }
- cert.rootCa = isRootCa;
- bool gotError = false;
- foreach (CertificateField certificateField in Enum.GetValues(typeof(CertificateField)))
- {
- err = (ErrorCode)GetCertificateStringField(cout, certificateField, out CertSvcString certSvcString);
- if (err != ErrorCode.CERTSVC_SUCCESS)
- {
- Tizen.Log.Debug(LogTag, "Unable to GetCertificateStringField, , err: " + err + ", instance: "
- + instance + " gname: " + item.gname + " store_type: " + item.storeType);
- cur = item.next;
- gotError = true;
- break;
- }
- string stringField = Marshal.PtrToStringUTF8(certSvcString.privateHandler);
- cert.fields[(int)certificateField] = stringField;
- }
- if (gotError == true)
- {
- continue;
- }
cur = item.next;
list.Add(cert);
}
// int certsvc_pkcs12_get_certificate_from_store(CertSvcInstance instance, CertStoreType storeType, const char* gname, CertSvcCertificate *certificate);
[DllImport(Libraries.CertSvc, EntryPoint = "certsvc_pkcs12_get_certificate_from_store")]
internal static extern int GetPKCS12CertificateFromStore(IntPtr instance, CertStoreType storeType, IntPtr gname, out Certificate certificate);
+ // int certsvc_pkcs12_get_certificate_from_store(CertSvcInstance instance, CertStoreType storeType, const char* gname, CertSvcCertificate *certificate);
+ [DllImport(Libraries.CertSvc, EntryPoint = "certsvc_pkcs12_get_certificate_from_store")]
+ internal static extern int GetPKCS12CertificateFromStore(IntPtr instance, CertStoreType storeType, [MarshalAs(UnmanagedType.LPStr)] string gname, out Certificate certificate);
// int certsvc_certificate_get_string_field(CertSvcCertificate certificate, CertSvcCertificateField field, CertSvcString *buffer);
[DllImport(Libraries.CertSvc, EntryPoint = "certsvc_certificate_get_string_field")]