Ejemplo n.º 1
0
        private void btnGetS1Msg_Click(object sender, EventArgs e)
        {
            lblGetS1MsgRet.Text = string.Empty;

            // Get S1 message from the trusted application
            IntPtr     s1Msg  = Marshal.AllocHGlobal(S1_MESSAGE_LEN);
            StatusCode status = (StatusCode)SigmaWrapper.GetS1Message(s1Msg);

            switch (status)
            {
            // S1 message was received successfully
            case StatusCode.STATUS_SUCCEEDED:
            {
                Marshal.Copy(s1Msg, S1MsgToSend, 0, S1MsgToSend.Length);

                // Update GUI
                lblGetS1MsgRet.Text = "S1 message created successfully.";
                btnGetS1Msg.Enabled = false;
                btnGetS2Msg.Enabled = true;
                break;
            }

            case StatusCode.INITIALIZE_FAILED:
                lblGetS1MsgRet.Text = "Error: JHI Initializing failed.";
                labelErrS1.Text     = GetErrorMsgAsString();
                break;

            case StatusCode.INSTALL_FAILED:
                lblGetS1MsgRet.Text = "Error: Installing TA failed.";
                labelErrS1.Text     = GetErrorMsgAsString();
                break;

            case StatusCode.OPEN_SESSION_FAILED:
                lblGetS1MsgRet.Text = "Error: Opening a session failed.";
                labelErrS1.Text     = GetErrorMsgAsString();
                break;

            case StatusCode.FAILED_TO_INITIALIZE_SIGMA:
                lblGetS1MsgRet.Text = "Error: SIGMA Initializing failed.";
                labelErrS1.Text     = GetErrorMsgAsString();
                break;

            case StatusCode.FAILED_TO_GET_PUBLIC_KEY:
                lblGetS1MsgRet.Text = "Error: Failed to get public key.\nIs your platform EPID provisioned?";
                labelErrS1.Text     = GetErrorMsgAsString();
                break;

            default:
                lblGetS1MsgRet.Text = "Failed to perform send and receive operation in\norder to get S1 message.";
                labelErrS1.Text     = GetErrorMsgAsString();
                break;
            }

            Marshal.FreeHGlobal(s1Msg);
        }
Ejemplo n.º 2
0
        private string GetErrorMsgAsString()
        {
            IntPtr errorMessageIntPtr = Marshal.AllocHGlobal(ERROR_MESSAGE_LEN);
            IntPtr errorMsgLenIntPtr  = Marshal.AllocHGlobal(INT_SIZE);

            SigmaWrapper.GetErrorMessage(errorMessageIntPtr, errorMsgLenIntPtr);

            byte[] messageLength = new byte[INT_SIZE];
            Marshal.Copy(errorMsgLenIntPtr, messageLength, 0, messageLength.Length);
            byte[] message = new byte[BitConverter.ToInt32(messageLength, 0)];
            Marshal.Copy(errorMessageIntPtr, message, 0, message.Length);

            Marshal.FreeHGlobal(errorMessageIntPtr);
            Marshal.FreeHGlobal(errorMsgLenIntPtr);

            return(System.Text.Encoding.ASCII.GetString(message));
        }
Ejemplo n.º 3
0
 private void Form1_FormClosed(object sender, FormClosedEventArgs e)
 {
     Hide();
     SigmaWrapper.Close();
     Application.Exit();
 }
Ejemplo n.º 4
0
 private void btnClose_Click(object sender, EventArgs e)
 {
     Hide();
     SigmaWrapper.Close();
     Application.Exit();
 }
Ejemplo n.º 5
0
        private void btnGetS3Msg_Click(object sender, EventArgs e)
        {
            lblGetS3MsgRet.Text = string.Empty;

            // Get S3 message length from the trusted application
            IntPtr     s3MsgLen = Marshal.AllocHGlobal(INT_SIZE);
            StatusCode status   = (StatusCode)SigmaWrapper.GetS3MessagLen(s2Message, s2MsgLen, s3MsgLen);

            switch (status)
            {
            case StatusCode.STATUS_SUCCEEDED:
            {
                byte[] S3MsgLenByteArray = new byte[INT_SIZE];
                Marshal.Copy(s3MsgLen, S3MsgLenByteArray, 0, S3MsgLenByteArray.Length);
                // Convert S3 message length from most significant byte first presentation to most significant byte last presentation
                SwapArrBitEndianness(S3MsgLenByteArray);

                int s3MessageLenInt = BitConverter.ToInt32(S3MsgLenByteArray, 0);

                // Get S3 message from the trusted application
                IntPtr s3Msg = Marshal.AllocHGlobal(s3MessageLenInt);
                status = (StatusCode)SigmaWrapper.GetS3Message(s2Message, s2MsgLen, s3MessageLenInt, s3Msg);
                switch (status)
                {
                // S3 message was received successfully
                case StatusCode.STATUS_SUCCEEDED:
                {
                    // Send S3 message length to server
                    socket.Send(BitConverter.GetBytes(s3MessageLenInt));

                    // Send S3 message to server for processing and verification
                    byte[] S3MsgToSend = new byte[s3MessageLenInt];
                    Marshal.Copy(s3Msg, S3MsgToSend, 0, S3MsgToSend.Length);
                    socket.Send(S3MsgToSend);
                    lblGetS3MsgRet.Text = "S3 message was created successfully.";

                    // Get S3 processing status from server
                    status = (StatusCode)ReceiveIntFromServer();
                    //if (status == StatusCode.STATUS_SUCCEEDED)
                    //lblEnd.Text = "Now both parties have one shared secret and\ncan use any symmetrical encryption algorithm.";
                    //else
                    //lblEnd.Text = "Server failed to verify S3 message.";
                    break;
                }

                case StatusCode.INCORRECT_S2_BUFFER:
                    lblGetS3MsgRet.Text = "Trusted application received an incorrect S2 message.";
                    break;

                case StatusCode.FAILED_TO_PROCESS_S2:
                    lblGetS3MsgRet.Text = "Failed to process S2.";
                    break;

                case StatusCode.WRONG_INTEL_SIGNED_CERT_TYPE:
                    lblGetS3MsgRet.Text = "Verifier's certificate is wrong Intel signed.";
                    break;

                case StatusCode.FAILED_TO_GET_SESSION_PARAMS:
                    lblGetS3MsgRet.Text = "Failed to get session parameters.";
                    break;

                case StatusCode.FAILED_TO_DISPOSE_SIGMA:
                    lblGetS3MsgRet.Text = "Failed to dispose SIGMA.";
                    break;

                default:
                    lblGetS3MsgRet.Text = "Failed to perform send and receive operation in\norder to get S3 message.";
                    break;
                }
                Marshal.FreeHGlobal(s3Msg);
                btnGetS3Msg.Enabled = false;
                break;
            }

            case StatusCode.FAILED_TO_GET_S3_LEN:
                lblGetS3MsgRet.Text = "Error: Failed to get S3 message length.";
                break;

            default:
                lblGetS3MsgRet.Text = "Failed to perform send and receive operation in\norder to get S3 message length.";
                break;
            }

            Marshal.FreeHGlobal(s3MsgLen);
        }