Example #1
0
        //입력한 위도 경도에서 사용 가능한 인증서 표시하는 함수
        private void addListViewEnabledRegion(double lat, double lon)
        {
            double distance;
            double bearing;
            double relative_angle;
            double x;
            double y;
            double a;

            Dot2CertificateInfo certInfoForRegion = new Dot2CertificateInfo();

            //현재 리스트 순서대로 유효지역 확인
            for (int i = 0; i < this.listView.Items.Count; i++)
            {
                this.listView.Items[i].SubItems[5].Text = "";                                                 //기존의 enabled region 표시 제거

                byte[] certValue = File.ReadAllBytes(fileForePath + this.listView.Items[i].SubItems[1].Text); //현재 리스트의 인증서 파일 내용 읽어오기
                DecodeDot2Certificate(certValue, certValue.Length, ref certInfoForRegion);                    //인증서 파일 분석
                Dot2CircularRegion circle = certInfoForRegion.valid_region.circular;

                distance       = gn_GetDistanceBetweenPoints(lat, lon, (double)circle.center.lat / 10000000, (double)circle.center.lon / 10000000);
                bearing        = gn_GetBearingBetweenPoints(lat, lon, (double)circle.center.lat / 10000000, (double)circle.center.lon / 10000000);
                relative_angle = bearing - 360;
                x = distance * Math.Cos(relative_angle * Math.PI / 180);
                y = distance * Math.Sin(relative_angle * Math.PI / 180);
                a = circle.radius;

                //비교하며 표기
                if ((1 - Math.Pow(x / a, 2) - Math.Pow(y / a, 2)) > 0)
                {
                    this.listView.Items[i].SubItems[5].ForeColor = Color.Blue;
                    this.listView.Items[i].SubItems[5].Text      = "●";
                }
            }
        }
Example #2
0
        //listview의 각 항목 클릭할 때 호출되는 함수
        private void listView_MouseClick(object sender, MouseEventArgs e)
        {
            this.richTxtBox.Clear();
            this.gridView.CellBorderStyle = DataGridViewCellBorderStyle.Single;

            int    indexNum = this.listView.FocusedItem.Index;
            string path     = fileForePath + this.listView.Items[indexNum].SubItems[1].Text;

            try
            {
                Dot2CertificateInfo certInfo = new Dot2CertificateInfo();

                byte[] certValue = File.ReadAllBytes(path);                       //인증서 파일 내용 읽어오기
                DecodeDot2Certificate(certValue, certValue.Length, ref certInfo); //인증서 분석 c 함수

                if (certInfo.result == 0)                                         //분석 성공시
                {
                    //table(gridview)에 인증서 분석 내용 출력
                    PrintDot2CertType(certInfo.cert_type);
                    PrintDot2CertIssuerId(certInfo.issuer_id);
                    PrintDot2CertValidPeriod(certInfo.valid_period);
                    PrintDot2CertValidRegion(certInfo.valid_region);
                    PrintDot2CertAppPermissions(certInfo.app_permissions);
                    PrintDot2CertHash(certInfo.cert_hash);
                    PrintDot2CertHashedid10(certInfo.cert_hashedid10);
                    PrintDot2CertHashedid8(certInfo.cert_hashedid8);

                    //richTextBox에 인증서 분석 full contents 출력
                    string[] fullContents = certInfo.contents_str.Split('\n');
                    for (int i = 0; i < fullContents.Length; i++)
                    {
                        this.richTxtBox.AppendText(fullContents[i] + "\r\n");
                    }

                    mapLoadByCert(certInfo.valid_region); //지도 로드
                }
                else //분석 실패시
                {
                    for (int i = 0; i < 2; i++)
                    {
                        for (int j = 0; j < 8; j++)
                        {
                            this.gridView[i, j].Value = "";
                        }
                    }
                    this.gridView[1, 0].Value = "인증서 분석에 실패했습니다.";
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.StackTrace.ToString());
            }
        }
Example #3
0
 public static extern void DecodeDot2Certificate(byte[] cert, int cert_size, ref Dot2CertificateInfo info);