<commit_before><!DOCTYPE html>
<html lang='ko'>
    <head>
        <meta charset='utf-8'>
        <title>Xeit</title>
        <meta name='viewport' content='width=device-width, initial-scale=1.0'>
        <link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.1/css/bootstrap-combined.min.css" rel="stylesheet">
        <link href='http://tomyun.github.io/xeit/xeit.css' rel='stylesheet'>
        <script src='http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js'></script>
        <script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.1/js/bootstrap.min.js"></script>
        <script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/pbkdf2.js"></script>
        <script src='http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/tripledes.js'></script>
        <script src='https://rawgithub.com/tomyun/crypto-js/seed-3.1.2/build/rollups/seed.js'></script>
        <script src='https://rawgithub.com/tomyun/crypto-js/seed-3.1.2/build/components/enc-cp949.js'></script>
        <script src='https://rawgithub.com/lapo-luchini/asn1js/master/asn1.js'></script>
        <script src='https://rawgithub.com/lapo-luchini/asn1js/master/base64.js'></script>
        <script src='https://rawgithub.com/lapo-luchini/asn1js/master/oids.js'></script>
        <script src='https://rawgithub.com/jugglinmike/srcdoc-polyfill/master/srcdoc-polyfill.min.js'></script>
        <script src='http://tomyun.github.io/xeit/xeit.js'></script>
        <script>
            function setupAuthDialog() {
                $('#auth-dialog').modal({backdrop: 'static', keyboard: 'false'});

                $('#auth-submit').on('click', function (e) {
                    e.preventDefault();

                    var password = $('#auth-password').val();
                    try {
                        var message = xeit.load(password);
                    } catch (e) {
                        $('#auth-password-group').addClass('error');
                        $('#auth-password-help').text(e.message);
                        return;
                    }
                    showMail(message);
                    $('#auth-dialog').modal('hide');
                });

                $('#auth-password').on('focus', function (e) {
                    $('#auth-password-group').removeClass('error');
                    $('#auth-password-help').text('');
                });
            }

            function updateAuthDialog() {
                var sender = xeit.vendor.sender;

                // 발송기관 표시.
                $('#auth-sender-name').val(sender['name']);
                if (sender['support']) {
                    $('#auth-sender-support').addClass('label-success').text('지원');
                } else {
                    $('#auth-sender-support').addClass('label-important').text('미지원');
                    $('#auth-submit').addClass('disabled');
                }

                // 비밀번호 설명 표시.
                if (sender['keylen']) {
                    $('#auth-password').prop('placeholder', sender['hint'] + ' (' + sender['keylen'].toString().replace(',', '~') + '자리)')
                                       .prop('pattern', '[0-9]{' + sender['keylen'] + '}');
                } else {
                    $('#auth-password').prop('placeholder', sender['hint'])
                                       .prop('disabled', true);
                }
            }

            function loadMail() {
                window.addEventListener('message', function (e) {
                    xeit.init(e.data);
                    updateAuthDialog();
                }, false);
                window.parent.postMessage('ready', '*');
            }

            function showMail(message) {
                var $content = $('#mail-content');
                var content = $content[0];

                //HACK: Firefox는 아직 iframe srcdoc 미지원.
                //$mailContent.attr('srcdoc', message);
                srcDoc.set(content, message);

                //HACK: 로딩 지연시 프레임 잘리는 현상 방지.
                $content.height(window.innerHeight);
                $content.load(function () {
                    $content.height(content.contentDocument.documentElement.scrollHeight);
                });

                $('#xeit-nav a[href="#mail"]').tab('show');
            }

            function loadHelp() {
                $('#xeit-nav a[href="#mail"]').remove();
                $('#xeit-nav a[href="#help"]').tab('show');
            }

            $(document).ready(function () {
                if (window.self !== window.top) {
                    setupAuthDialog();
                    loadMail();
                } else {
                    loadHelp();
                }
            });
        </script>
        <script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');ga('create','UA-40224792-1','github.io');ga('send','pageview');</script>
    </head>
    <body>
        <div id="wrap">
            <div class='navbar navbar-static-top navbar-inverse'>
                <div class='navbar-inner'>
                    <span class='brand'>Xeit</span>
                    <ul id='xeit-nav' class='nav'>
                        <li><a class='disabled' href='#mail' data-toggle='tab'>보안메일</a></li>
                        <li><a href='#help' data-toggle='tab'>도움말</a></li>
                    </ul>
                </div>
            </div>

            <div class='tab-content'>
                <div id='auth' class='tab-pane active'>
                    <div id='auth-dialog' class='modal hide fade'>
                        <div class='modal-header'>
                            <h3>보안메일</h3>
                        </div>
                        <div class='modal-body'>
                            <form id='auth-form' class='form-horizontal'>
                                <div class='control-group'>
                                    <label class='control-label' for='auth-password'>보낸 곳</label>
                                    <div class='controls'>
                                        <input type='text' id='auth-sender-name' disabled> <span class='help-inline'><span id='auth-sender-support' class='label'></span></span>
                                    </div>
                                </div>
                                <div id='auth-password-group' class='control-group'>
                                    <label class='control-label' for='auth-password'>비밀번호</label>
                                    <div class='controls'>
                                        <input type='password' id='auth-password' required> <span id='auth-password-help' class='help-inline'></span>
                                    </div>
                                </div>
                            </form>

                            <p class='muted'><i class='icon-info-sign'></i> 비밀번호와 메일 내용은 외부로 전송하거나 저장하지 않으니 걱정마세요.</p>
                        </div>
                        <div class='modal-footer'>
                            <a href='#' id='auth-submit' class='btn btn-primary'>열어보기</a>
                        </div>
                    </div>
                </div>
                <div id='mail' class='tab-pane'>
                    <iframe id='mail-content' style='width: 100%; height: 100%; border: 0;'></iframe>
                </div>
                <div id='help' class='tab-pane'>
                    <div class='container-fluid'>
                        <div class='row-fluid'>
                            <section id='faq'>
                                <div class='page-header'>
                                    <h2>FAQ <small>자주 하는 질문</small></h2>
                                </div>
                                <dl>
                                    <dt>이게 뭔가요?</dt>
                                    <dd>
                                        <p><strong>Xeit</strong>는 금융기관들이 보내주는 거래명세서 등의 보안메일을 인터넷 익스플로러가 아닌 사파리나 크롬, 파이어폭스에서도 열어볼 수 있게 해주는 서비스입니다.</p>
                                    </dd>
                                    <dt>왜 필요한거죠?</dt>
                                    <dd>
                                        <p>국내에서 사용하는 대다수의 보안메일은 윈도의 인터넷 익스플로러에 ActiveX 플러그인을 설치해야만 볼 수 있도록 되어 있습니다. 다른 OS나 브라우저를 사용하는 사람들은 볼 수 있는 방법이 없었지요.</p>
                                    </dd>
                                    <dt>어떻게 보는거죠?</dt>
                                    <dd>
                                        <p>인터넷 익스플로러가 아닌 브라우저에서 보안메일의 첨부파일을 열어보면 빈 화면 또는 플러그인 설치 안내 화면이 나오는 것을 많이 보셨을 거에요. 이 상태에서 브라우저에 등록해놓은 <strong>Xeit</strong> 북마클릿을 누르면 비밀번호 입력 화면이 등장하면서 보안메일을 읽을 수 있게 됩니다.
                                        </p>
                                    </dt>
                                    <dt>설치는 어찌하죠?</dt>
                                        <p>일단 웹 브라우저 상단에 북마클릿을 넣을 수 있는 공간이 있는지 확인해보세요. 사파리에서는 책갈피 막대(Bookmarks Bar), 크롬에서는 북마크바(Bookmarks Bar), 파이어폭스에서는 북마크 도구모음(Bookmarks Toolbar)이라고 부르는 곳입니다. 맥이라면 <span class="label">⌥</span> + <span class="label">⌘</span> + <span class="label">B</span>를 눌러서 확인해볼 수도 있습니다. 그 다음에는 아래의 버튼을 끌어 넣으면 됩니다.</p>
                                        <div class="well">
                                            <p class="text-center"><a href="javascript:(function(){var%20xeit=document.getElementById('xeit');if(xeit){return;}var%20attachment=document.getElementsByTagName('html')[0].outerHTML;var%20_body=document.body;document.body=document.createElement('body');document.body.style.margin=0;document.body.style.padding=0;document.body.style.height='100%25';xeit=document.createElement('iframe');xeit.setAttribute('id','xeit');xeit.setAttribute('src','http://tomyun.github.io/xeit/xeit.html');xeit.style.width='100%25';xeit.style.height='100%25';xeit.style.border=0;document.body.appendChild(xeit);window.addEventListener('message',function(e){switch(e.data){case%20'ready':xeit.contentWindow.postMessage(attachment,'*');break;case%20'fallback':document.body=_body;break;}},false);})();"><button class="btn btn-info" type="button"><i class="icon-bookmark icon-white"></i> Xeit</button></a></p>
                                            <p class="text-center text-info">이 버튼을 브라우저 상단의 책갈피에 끌어 넣으세요!</p>
                                        </div>
                                    </dd>
                                    <dt>어디서 쓸 수 있죠?</dt>
                                    <dd>
                                        <p>맥에서 사파리(6)를 기준으로 만들었으며 크롬(26)과 파이어폭스(20)에서도 돌아가는 것을 확인하였습니다. 인터넷 익스플로러에서는 확인해보지 못 했네요.</o>
                                    </dd>
                                    <dt>믿을 수 있나요?</dt>
                                    <dd>
                                        <p>설치된 북마클릿을 실행하면 기능을 불러오기 위해 인터넷 연결이 필요하기는 하지만 보안메일 해제를 위한 모든 연산은 브라우저 내에서 순수 JavaScript 기반으로 이루어집니다. 입력하신 비밀번호와 해제된 메일 내용은 브라우저 외부로 유출되지 않으니 걱정하지 않으셔도 됩니다. 참고로 모든 코드는 <a href="https://github.com/tomyun/xeit" target="_blank">GitHub</a>에 공개되어 있습니다.</p>
                                    </dd>
                                    <dt>어디어디 볼 수 있죠?</dt>
                                    <dd>
                                        <p>대표적인 보안메일 플러그인의 형식을 대부분 지원하지만, 발송기관별로도 조금씩 다른 관계로 아직 확인되지 않은 곳들이 많습니다. 일단 아래 목록 외에는 막아놓은 상태인데요. 최대한 빨리 확인하여 추가하겠습니다.</p>

                                        <table class="table table-condensed table-striped table-hover">
                                            <thead>
                                                <tr><commit_msg>Fix typo<commit_after><!DOCTYPE html>
<html lang='ko'>
    <head>
        <meta charset='utf-8'>
        <title>Xeit</title>
        <meta name='viewport' content='width=device-width, initial-scale=1.0'>
        <link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.1/css/bootstrap-combined.min.css" rel="stylesheet">
        <link href='http://tomyun.github.io/xeit/xeit.css' rel='stylesheet'>
        <script src='http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js'></script>
        <script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.1/js/bootstrap.min.js"></script>
        <script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/pbkdf2.js"></script>
        <script src='http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/tripledes.js'></script>
        <script src='https://rawgithub.com/tomyun/crypto-js/seed-3.1.2/build/rollups/seed.js'></script>
        <script src='https://rawgithub.com/tomyun/crypto-js/seed-3.1.2/build/components/enc-cp949.js'></script>
        <script src='https://rawgithub.com/lapo-luchini/asn1js/master/asn1.js'></script>
        <script src='https://rawgithub.com/lapo-luchini/asn1js/master/base64.js'></script>
        <script src='https://rawgithub.com/lapo-luchini/asn1js/master/oids.js'></script>
        <script src='https://rawgithub.com/jugglinmike/srcdoc-polyfill/master/srcdoc-polyfill.min.js'></script>
        <script src='http://tomyun.github.io/xeit/xeit.js'></script>
        <script>
            function setupAuthDialog() {
                $('#auth-dialog').modal({backdrop: 'static', keyboard: 'false'});

                $('#auth-submit').on('click', function (e) {
                    e.preventDefault();

                    var password = $('#auth-password').val();
                    try {
                        var message = xeit.load(password);
                    } catch (e) {
                        $('#auth-password-group').addClass('error');
                        $('#auth-password-help').text(e.message);
                        return;
                    }
                    showMail(message);
                    $('#auth-dialog').modal('hide');
                });

                $('#auth-password').on('focus', function (e) {
                    $('#auth-password-group').removeClass('error');
                    $('#auth-password-help').text('');
                });
            }

            function updateAuthDialog() {
                var sender = xeit.vendor.sender;

                // 발송기관 표시.
                $('#auth-sender-name').val(sender['name']);
                if (sender['support']) {
                    $('#auth-sender-support').addClass('label-success').text('지원');
                } else {
                    $('#auth-sender-support').addClass('label-important').text('미지원');
                    $('#auth-submit').addClass('disabled');
                }

                // 비밀번호 설명 표시.
                if (sender['keylen']) {
                    $('#auth-password').prop('placeholder', sender['hint'] + ' (' + sender['keylen'].toString().replace(',', '~') + '자리)')
                                       .prop('pattern', '[0-9]{' + sender['keylen'] + '}');
                } else {
                    $('#auth-password').prop('placeholder', sender['hint'])
                                       .prop('disabled', true);
                }
            }

            function loadMail() {
                window.addEventListener('message', function (e) {
                    xeit.init(e.data);
                    updateAuthDialog();
                }, false);
                window.parent.postMessage('ready', '*');
            }

            function showMail(message) {
                var $content = $('#mail-content');
                var content = $content[0];

                //HACK: Firefox는 아직 iframe srcdoc 미지원.
                //$mailContent.attr('srcdoc', message);
                srcDoc.set(content, message);

                //HACK: 로딩 지연시 프레임 잘리는 현상 방지.
                $content.height(window.innerHeight);
                $content.load(function () {
                    $content.height(content.contentDocument.documentElement.scrollHeight);
                });

                $('#xeit-nav a[href="#mail"]').tab('show');
            }

            function loadHelp() {
                $('#xeit-nav a[href="#mail"]').remove();
                $('#xeit-nav a[href="#help"]').tab('show');
            }

            $(document).ready(function () {
                if (window.self !== window.top) {
                    setupAuthDialog();
                    loadMail();
                } else {
                    loadHelp();
                }
            });
        </script>
        <script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');ga('create','UA-40224792-1','github.io');ga('send','pageview');</script>
    </head>
    <body>
        <div id="wrap">
            <div class='navbar navbar-static-top navbar-inverse'>
                <div class='navbar-inner'>
                    <span class='brand'>Xeit</span>
                    <ul id='xeit-nav' class='nav'>
                        <li><a class='disabled' href='#mail' data-toggle='tab'>보안메일</a></li>
                        <li><a href='#help' data-toggle='tab'>도움말</a></li>
                    </ul>
                </div>
            </div>

            <div class='tab-content'>
                <div id='auth' class='tab-pane active'>
                    <div id='auth-dialog' class='modal hide fade'>
                        <div class='modal-header'>
                            <h3>보안메일</h3>
                        </div>
                        <div class='modal-body'>
                            <form id='auth-form' class='form-horizontal'>
                                <div class='control-group'>
                                    <label class='control-label' for='auth-password'>보낸 곳</label>
                                    <div class='controls'>
                                        <input type='text' id='auth-sender-name' disabled> <span class='help-inline'><span id='auth-sender-support' class='label'></span></span>
                                    </div>
                                </div>
                                <div id='auth-password-group' class='control-group'>
                                    <label class='control-label' for='auth-password'>비밀번호</label>
                                    <div class='controls'>
                                        <input type='password' id='auth-password' required> <span id='auth-password-help' class='help-inline'></span>
                                    </div>
                                </div>
                            </form>

                            <p class='muted'><i class='icon-info-sign'></i> 비밀번호와 메일 내용은 외부로 전송하거나 저장하지 않으니 걱정마세요.</p>
                        </div>
                        <div class='modal-footer'>
                            <a href='#' id='auth-submit' class='btn btn-primary'>열어보기</a>
                        </div>
                    </div>
                </div>
                <div id='mail' class='tab-pane'>
                    <iframe id='mail-content' style='width: 100%; height: 100%; border: 0;'></iframe>
                </div>
                <div id='help' class='tab-pane'>
                    <div class='container-fluid'>
                        <div class='row-fluid'>
                            <section id='faq'>
                                <div class='page-header'>
                                    <h2>FAQ <small>자주 하는 질문</small></h2>
                                </div>
                                <dl>
                                    <dt>이게 뭔가요?</dt>
                                    <dd>
                                        <p><strong>Xeit</strong>는 금융기관들이 보내주는 거래명세서 등의 보안메일을 인터넷 익스플로러가 아닌 사파리나 크롬, 파이어폭스에서도 열어볼 수 있게 해주는 서비스입니다.</p>
                                    </dd>
                                    <dt>왜 필요한거죠?</dt>
                                    <dd>
                                        <p>국내에서 사용하는 대다수의 보안메일은 윈도의 인터넷 익스플로러에 ActiveX 플러그인을 설치해야만 볼 수 있도록 되어 있습니다. 다른 OS나 브라우저를 사용하는 사람들은 볼 수 있는 방법이 없었지요.</p>
                                    </dd>
                                    <dt>어떻게 보는거죠?</dt>
                                    <dd>
                                        <p>인터넷 익스플로러가 아닌 브라우저에서 보안메일의 첨부파일을 열어보면 빈 화면 또는 플러그인 설치 안내 화면이 나오는 것을 많이 보셨을 거에요. 이 상태에서 브라우저에 등록해놓은 <strong>Xeit</strong> 북마클릿을 누르면 비밀번호 입력 화면이 등장하면서 보안메일을 읽을 수 있게 됩니다.
                                        </p>
                                    </dt>
                                    <dt>설치는 어찌하죠?</dt>
                                        <p>일단 웹 브라우저 상단에 북마클릿을 넣을 수 있는 공간이 있는지 확인해보세요. 사파리에서는 책갈피 막대(Bookmarks Bar), 크롬에서는 북마크바(Bookmarks Bar), 파이어폭스에서는 북마크 도구모음(Bookmarks Toolbar)이라고 부르는 곳입니다. 맥이라면 <span class="label">⌥</span> + <span class="label">⌘</span> + <span class="label">B</span>를 눌러서 확인해볼 수도 있습니다. 그 다음에는 아래의 버튼을 끌어 넣으면 됩니다.</p>
                                        <div class="well">
                                            <p class="text-center"><a href="javascript:(function(){var%20xeit=document.getElementById('xeit');if(xeit){return;}var%20attachment=document.getElementsByTagName('html')[0].outerHTML;var%20_body=document.body;document.body=document.createElement('body');document.body.style.margin=0;document.body.style.padding=0;document.body.style.height='100%25';xeit=document.createElement('iframe');xeit.setAttribute('id','xeit');xeit.setAttribute('src','http://tomyun.github.io/xeit/xeit.html');xeit.style.width='100%25';xeit.style.height='100%25';xeit.style.border=0;document.body.appendChild(xeit);window.addEventListener('message',function(e){switch(e.data){case%20'ready':xeit.contentWindow.postMessage(attachment,'*');break;case%20'fallback':document.body=_body;break;}},false);})();"><button class="btn btn-info" type="button"><i class="icon-bookmark icon-white"></i> Xeit</button></a></p>
                                            <p class="text-center text-info">이 버튼을 브라우저 상단의 책갈피에 끌어 넣으세요!</p>
                                        </div>
                                    </dd>
                                    <dt>어디서 쓸 수 있죠?</dt>
                                    <dd>
                                        <p>맥에서 사파리(6)를 기준으로 만들었으며 크롬(26)과 파이어폭스(20)에서도 돌아가는 것을 확인하였습니다. 인터넷 익스플로러에서는 확인해보지 못 했네요.</p>
                                    </dd>
                                    <dt>믿을 수 있나요?</dt>
                                    <dd>
                                        <p>설치된 북마클릿을 실행하면 기능을 불러오기 위해 인터넷 연결이 필요하기는 하지만 보안메일 해제를 위한 모든 연산은 브라우저 내에서 순수 JavaScript 기반으로 이루어집니다. 입력하신 비밀번호와 해제된 메일 내용은 브라우저 외부로 유출되지 않으니 걱정하지 않으셔도 됩니다. 참고로 모든 코드는 <a href="https://github.com/tomyun/xeit" target="_blank">GitHub</a>에 공개되어 있습니다.</p>
                                    </dd>
                                    <dt>어디어디 볼 수 있죠?</dt>
                                    <dd>
                                        <p>대표적인 보안메일 플러그인의 형식을 대부분 지원하지만, 발송기관별로도 조금씩 다른 관계로 아직 확인되지 않은 곳들이 많습니다. 일단 아래 목록 외에는 막아놓은 상태인데요. 최대한 빨리 확인하여 추가하겠습니다.</p>

                                        <table class="table table-condensed table-striped table-hover">
                                            <thead>
                                                <tr>
{'fraction_non_alphanumeric': 0.15302082002810066, 'fraction_numerical': 0.00800442798143654, 'mean_word_length': 1.3371144278606966, 'pattern_counts': {'":': 0, '<': 357, '<?xml version=': 0, '>': 357, 'https://': 14, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 104, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4058683', 'n_tokens_mistral': 8144, 'n_tokens_neox': 8799, 'n_words': 1096}