public static extern uint CAPI_KEY_GetMeta(StringBuilder pszKeyOn, int ulKeyTarget, ref OPT_ST_USB_META meta);
public static extern uint CAPI_KEY_SetMeta(StringBuilder pszKeyOn, int ulKeyTarget, ref OPT_ST_USB_META meta, String pszPIN,ref int ulRetry);
void FunctionCreateAdmin() { ulong m_ulRecordCount = 0; uint m_ulInfoCount = 0; KMS_USER[] m_szInfoUser = new KMS_USER[10]; KMC_API.SQL_Init(textBoxIP.Text, textBoxPORT.Text, textBoxDBName.Text, textBoxDBPin.Text, "CertificateKMS"); KMC_API.ulResult = KMC_API.SQL_DataBaseExist(); if (0 != KMC_API.ulResult) { return; } //KMC_API.CAPI_KEY_SetStr("abcdg"); //StringBuilder buffer = new StringBuilder(300); //uint tempPath = KMC_API.CAPI_KEY_GetStr(buffer); //string path = buffer.ToString(); //if (tempPath == 0) //{ // int errorcode = Marshal.GetLastWin32Error(); // Win32Exception win32expection = new Win32Exception(errorcode); //} KMC_API.ulResult = KMC_API.SQL_QueryUser(textBoxUserName.Text, null, null, 10, 0, ref m_ulRecordCount, ref m_szInfoUser, ref m_ulInfoCount); if (0 != KMC_API.ulResult) { return; } if (m_ulInfoCount > 0) { KMC_API.ulResult = (uint)eErrorCode.EStateErrorAddUser; goto EXIT; } StringBuilder strKeyOn = new StringBuilder(1024); KMC_API.ulResult = KMC_API.CAPI_KEY_SetPin(strKeyOn, 0, textBoxPinOK.Text, textBoxPinOK.Text); if (0 != KMC_API.ulResult) { goto EXIT; } OPT_ST_USB_META meta = new OPT_ST_USB_META(); meta.ulUSBMetaUseType = (uint)OPE_USB_META_USE_TYPE.OPE_USB_META_USE_TYPE_AUTH; meta.ulUSBMetaManType = (uint)OPE_USB_META_MAN_TYPE.OPE_USB_META_MAN_TYPE_ADMIN; //meta.szName = textBoxUserName.Text; string s211 = textBoxUserName.Text; meta.szName = new byte[256]; UTF8Encoding utf8 = new UTF8Encoding(); byte [] encodedBytes = utf8.GetBytes(textBoxUserName.Text); Array.Copy(encodedBytes, 0, meta.szName, 0, encodedBytes.Length); int ulRetry = 0; KMC_API.ulResult = KMC_API.CAPI_KEY_SetMeta(strKeyOn, 0,ref meta, textBoxPinOK.Text, ref ulRetry); // 其他USBKey 传输 if (0 != KMC_API.ulResult) { goto EXIT; } OPT_ST_USB_META metaref = new OPT_ST_USB_META(); KMC_API.ulResult = KMC_API.CAPI_KEY_GetMeta(strKeyOn, 0, ref metaref); // 其他USBKey 传输 if (0 != KMC_API.ulResult) { goto EXIT; } KMC_API.ulResult = KMC_API.CAPI_KEY_GenKeyPair(strKeyOn, 0, textBoxPinOK.Text, ref ulRetry); if (0 != KMC_API.ulResult) { goto EXIT; } byte [] btPK = new byte [64]; KMC_API.ulResult = KMC_API.CAPI_KEY_ExportPK(strKeyOn, 0,1, btPK); if (0 != KMC_API.ulResult) { goto EXIT; } KMS_USER user = new KMS_USER(); //// 用户名 user.strUserName = textBoxUserName.Text; //// 用户权限 user.ulType = OPE_USB_META_MAN_TYPE.OPE_USB_META_MAN_TYPE_ADMIN; // user.strDepartment = textBoxUnit.Text; user.strMobile = textBoxPhone.Text; user.strEmail = textBoxEmail.Text; user.strNote = textBoxNote.Text; user.pubKey.pbValue = btPK; KMC_API.ulResult = KMC_API.SQL_AddUser(user); if (0 != KMC_API.ulResult) { goto EXIT; } EXIT: return ; }