{"componentChunkName":"component---src-templates-post-template-jsx","path":"/works/posts/2020-11-25--001","result":{"data":{"site":{"siteMetadata":{"title":"Blog by Eunyoung","subtitle":"작업 기록 블로그","copyright":"© All rights reserved.","author":{"name":"EunYoung","twitter":"#"},"disqusShortname":"","url":"https://ssongey.github.io"}},"markdownRemark":{"id":"eac80c0d-5aba-5f9c-b8ca-ede64eb8c74f","html":"<h2>HashAlgorithm 에 따른 OCSP Request 생성 방법</h2>\n<h3>SHA-1</h3>\n<ul>\n<li>id-sha1</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\">    <span class=\"token class-name\">X509Certificate</span> cert <span class=\"token operator\">=</span> <span class=\"token class-name\">PkiFactory</span><span class=\"token punctuation\">.</span><span class=\"token function\">x509StringToClass</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"MIICmzCCAkGgAwIBAgIGAOjUpRAeMAoGCCqGSM49BAMCMEAxCzAJBgNVBAYTAktSMQwwCgYDVQQKDANITUMxDDAKBgNVBAsMA0hNQzEVMBMGA1UEAwwMSE1DX01PU3ViQ0EyMB4XDTIwMTEyNDEyNTk1N1oXDTIyMTEyNDE0NTk1OVowQzELMAkGA1UEBhMCS1IxDDAKBgNVBAoMA0hNQzEMMAoGA1UECwwDSE1DMRgwFgYDVQQDDA9LUkVWUDAwMDAwMDA1QVgwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQaoaM2ufpGTDqLVDPOYKJYeKb65vJ36EXY/zsTh/9EYi8yzPSQTrm0blb3s74YsvZ9BUJfDdX6Hh0X5gFTrugLo4IBIjCCAR4waAYDVR0jBGEwX4AULT3vADHec7fHnQwHDR1BvaZI8dihRKRCMEAxCzAJBgNVBAYTAktSMQwwCgYDVQQKDANITUMxDDAKBgNVBAsMA0hNQzEVMBMGA1UEAwwMSE1DX01PU3ViQ0ExggEwMB0GA1UdDgQWBBSHpsbH4R8RnTS3EDJ/8lS46eBRAzAOBgNVHQ8BAf8EBAMCA+gwRQYDVR0fBD4wPDA6oDigNoY0Y249ZHBfVmZ0Y05Ec3RRd21jYXg0TkZfZ3FmUXAwLG91PUhNQyxvPUhNQyxjPUtSLmNybDA8BggrBgEFBQcBAQQwMC4wLAYIKwYBBQUHMAGGIGh0dHA6Ly8xMjcuMC4wLjE6ODA4OS9PQ1NQU2VydmVyMAoGCCqGSM49BAMCA0gAMEUCIQDa2APe7zqfBBXBUtWjhwAkxxqJNiMHdnnGWRKL3/tdMgIgDuwTB/iByJO4uf+Mx/Sfs+vs5Snhi6DQ0A4lJyQLL1E=\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token class-name\">X509Certificate</span> issuerCert <span class=\"token operator\">=</span> <span class=\"token class-name\">PkiFactory</span><span class=\"token punctuation\">.</span><span class=\"token function\">x509StringToClass</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"MIIB0zCCAXmgAwIBAgIBMDAKBggqhkjOPQQDAjBAMQswCQYDVQQGEwJLUjEMMAoGA1UECgwDSE1DMQwwCgYDVQQLDANITUMxFTATBgNVBAMMDEhNQ19NT1N1YkNBMTAeFw0yMDExMDQxNTAwMDBaFw0yMjExMDQxNTAwMDBaMEAxCzAJBgNVBAYTAktSMQwwCgYDVQQKDANITUMxDDAKBgNVBAsMA0hNQzEVMBMGA1UEAwwMSE1DX01PU3ViQ0EyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEQevrFh4ZAsgrxz7mKT1igUUbiXnH5Yyj2bw7Fo07hluYWxtFQd8TYwwm5IYkudRNygj69OspvAQf0NdnonQ5BqNkMGIwDgYDVR0PAQH/BAQDAgHGMBIGA1UdEwEB/wQIMAYBAf8CAQAwPAYIKwYBBQUHAQEEMDAuMCwGCCsGAQUFBzABhiBodHRwOi8vMTI3LjAuMC4xOjgwODkvT0NTUFNlcnZlcjAKBggqhkjOPQQDAgNIADBFAiEA7EU/OnEAChywBv+1RLh3mScq6HX9pGdQJl4wAzKMFGsCIBVKjvuqiQoaabi2s+9nLsLLLXO1hEElmJc/2noaB0FH\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token class-name\">X509CertificateHolder</span> issuerCertHolder <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">X509CertificateHolder</span><span class=\"token punctuation\">(</span>issuerCert<span class=\"token punctuation\">.</span><span class=\"token function\">getEncoded</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token class-name\">DigestCalculator</span> digestCalculator <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">BcDigestCalculatorProvider</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">get</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">CertificateID</span><span class=\"token punctuation\">.</span>HASH_SHA1<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token class-name\">CertificateID</span> id <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">CertificateID</span><span class=\"token punctuation\">(</span>digestCalculator<span class=\"token punctuation\">,</span> issuerCertHolder<span class=\"token punctuation\">,</span> cert<span class=\"token punctuation\">.</span><span class=\"token function\">getSerialNumber</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token class-name\">VerifyContractByOcspReq</span> req <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">VerifyContractByOcspReq</span><span class=\"token punctuation\">(</span>\n      emaid<span class=\"token punctuation\">,</span>\n      <span class=\"token keyword\">new</span> <span class=\"token class-name\">OcspData</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">{</span>\n        <span class=\"token class-name\">OcspData</span><span class=\"token punctuation\">.</span><span class=\"token function\">builder</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n          <span class=\"token punctuation\">.</span><span class=\"token function\">hashAlgorithm</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"SHA1\"</span><span class=\"token punctuation\">)</span>\n          <span class=\"token punctuation\">.</span><span class=\"token function\">issuerNameHash</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">Base64</span><span class=\"token punctuation\">.</span><span class=\"token function\">toBase64String</span><span class=\"token punctuation\">(</span>id<span class=\"token punctuation\">.</span><span class=\"token function\">getIssuerNameHash</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n          <span class=\"token punctuation\">.</span><span class=\"token function\">issuerKeyHash</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">Base64</span><span class=\"token punctuation\">.</span><span class=\"token function\">toBase64String</span><span class=\"token punctuation\">(</span>id<span class=\"token punctuation\">.</span><span class=\"token function\">getIssuerKeyHash</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n          <span class=\"token punctuation\">.</span><span class=\"token function\">serialNumber</span><span class=\"token punctuation\">(</span>id<span class=\"token punctuation\">.</span><span class=\"token function\">getSerialNumber</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">toString</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n          <span class=\"token punctuation\">.</span><span class=\"token function\">build</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n      <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<h3>SHA-256</h3>\n<ul>\n<li>id-sha256 에 대한 정의를 못찾아서 직접 OID를 넣는 방법을 택\n\n  <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/devHistoryBlog/static/dc9513729221b2b3a91c46716047f22b/764be/001-01.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n  \n  <span\n    class=\"gatsby-resp-image-wrapper\"\n    style=\"position: relative; display: block;  max-width: 806px; margin-left: auto; margin-right: auto;\"\n  >\n    <span\n      class=\"gatsby-resp-image-background-image\"\n      style=\"padding-bottom: 30.83333333333333%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAABYlAAAWJQFJUiTwAAABQ0lEQVQY02WQy3KCQBBF+f9f0WxcBAIqCqS0osKIgYH4AESIltFU+Yq7m+5JlZssTvVMT3fPva3NZjMIESDLMqxWGdI0xXK5xGKxgIylitF7hPW6xOFwwPH4TXUrjEZvsDsdvHou7G4XnuvgI02g2bYN13Wx2+1QVzWKokD9WdO5QpEXqDhSbr//wu12w8/9jiRJ4FDPs27A7vdhtttwPA8ySaF1abrjOKRgjYIoyxKbaoPT6YTr9YrL5aLi+XxWOSaKInik7KnZRKvVgqHrdKeBMobG9qSU6lcuZMtxHCHPc6V6u93+Yz6fqzUZhoFer6dglzxL00l2o/H302AwQJ8sdGg3lmXhhRp0gs9Mm6yZpklY4FVxLefG4zH8yUSJ0oQQGA6HKhmGIfgeBMEDnxAB58Tjzfd9FSc0hOG+6XSqFP4CqWyfRK/VcSQAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n    >\n      <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;\"\n        alt=\"001 01\"\n        title=\"\"\n        src=\"/devHistoryBlog/static/dc9513729221b2b3a91c46716047f22b/764be/001-01.png\"\n        srcset=\"/devHistoryBlog/static/dc9513729221b2b3a91c46716047f22b/8ff5a/001-01.png 240w,\n/devHistoryBlog/static/dc9513729221b2b3a91c46716047f22b/e85cb/001-01.png 480w,\n/devHistoryBlog/static/dc9513729221b2b3a91c46716047f22b/764be/001-01.png 806w\"\n        sizes=\"(max-width: 806px) 100vw, 806px\"\n      />\n    </span>\n  </span>\n  \n  </a>\n    </li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\">    <span class=\"token class-name\">X509Certificate</span> cert <span class=\"token operator\">=</span> <span class=\"token class-name\">PkiFactory</span><span class=\"token punctuation\">.</span><span class=\"token function\">x509StringToClass</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"MIICmzCCAkGgAwIBAgIGAOjUpRAeMAoGCCqGSM49BAMCMEAxCzAJBgNVBAYTAktSMQwwCgYDVQQKDANITUMxDDAKBgNVBAsMA0hNQzEVMBMGA1UEAwwMSE1DX01PU3ViQ0EyMB4XDTIwMTEyNDEyNTk1N1oXDTIyMTEyNDE0NTk1OVowQzELMAkGA1UEBhMCS1IxDDAKBgNVBAoMA0hNQzEMMAoGA1UECwwDSE1DMRgwFgYDVQQDDA9LUkVWUDAwMDAwMDA1QVgwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQaoaM2ufpGTDqLVDPOYKJYeKb65vJ36EXY/zsTh/9EYi8yzPSQTrm0blb3s74YsvZ9BUJfDdX6Hh0X5gFTrugLo4IBIjCCAR4waAYDVR0jBGEwX4AULT3vADHec7fHnQwHDR1BvaZI8dihRKRCMEAxCzAJBgNVBAYTAktSMQwwCgYDVQQKDANITUMxDDAKBgNVBAsMA0hNQzEVMBMGA1UEAwwMSE1DX01PU3ViQ0ExggEwMB0GA1UdDgQWBBSHpsbH4R8RnTS3EDJ/8lS46eBRAzAOBgNVHQ8BAf8EBAMCA+gwRQYDVR0fBD4wPDA6oDigNoY0Y249ZHBfVmZ0Y05Ec3RRd21jYXg0TkZfZ3FmUXAwLG91PUhNQyxvPUhNQyxjPUtSLmNybDA8BggrBgEFBQcBAQQwMC4wLAYIKwYBBQUHMAGGIGh0dHA6Ly8xMjcuMC4wLjE6ODA4OS9PQ1NQU2VydmVyMAoGCCqGSM49BAMCA0gAMEUCIQDa2APe7zqfBBXBUtWjhwAkxxqJNiMHdnnGWRKL3/tdMgIgDuwTB/iByJO4uf+Mx/Sfs+vs5Snhi6DQ0A4lJyQLL1E=\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token class-name\">X509Certificate</span> issuerCert <span class=\"token operator\">=</span> <span class=\"token class-name\">PkiFactory</span><span class=\"token punctuation\">.</span><span class=\"token function\">x509StringToClass</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"MIIB0zCCAXmgAwIBAgIBMDAKBggqhkjOPQQDAjBAMQswCQYDVQQGEwJLUjEMMAoGA1UECgwDSE1DMQwwCgYDVQQLDANITUMxFTATBgNVBAMMDEhNQ19NT1N1YkNBMTAeFw0yMDExMDQxNTAwMDBaFw0yMjExMDQxNTAwMDBaMEAxCzAJBgNVBAYTAktSMQwwCgYDVQQKDANITUMxDDAKBgNVBAsMA0hNQzEVMBMGA1UEAwwMSE1DX01PU3ViQ0EyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEQevrFh4ZAsgrxz7mKT1igUUbiXnH5Yyj2bw7Fo07hluYWxtFQd8TYwwm5IYkudRNygj69OspvAQf0NdnonQ5BqNkMGIwDgYDVR0PAQH/BAQDAgHGMBIGA1UdEwEB/wQIMAYBAf8CAQAwPAYIKwYBBQUHAQEEMDAuMCwGCCsGAQUFBzABhiBodHRwOi8vMTI3LjAuMC4xOjgwODkvT0NTUFNlcnZlcjAKBggqhkjOPQQDAgNIADBFAiEA7EU/OnEAChywBv+1RLh3mScq6HX9pGdQJl4wAzKMFGsCIBVKjvuqiQoaabi2s+9nLsLLLXO1hEElmJc/2noaB0FH\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token class-name\">X509CertificateHolder</span> issuerCertHolder <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">X509CertificateHolder</span><span class=\"token punctuation\">(</span>issuerCert<span class=\"token punctuation\">.</span><span class=\"token function\">getEncoded</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token class-name\">AlgorithmIdentifier</span> HASH_SHA256 <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">AlgorithmIdentifier</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">new</span> <span class=\"token class-name\">ASN1ObjectIdentifier</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"2.16.840.1.101.3.4.2.1\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token class-name\">DERNull</span><span class=\"token punctuation\">.</span>INSTANCE<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token class-name\">DigestCalculator</span> digestCalculator <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">BcDigestCalculatorProvider</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">get</span><span class=\"token punctuation\">(</span>HASH_SHA256<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token class-name\">CertificateID</span> id <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">CertificateID</span><span class=\"token punctuation\">(</span>digestCalculator<span class=\"token punctuation\">,</span> issuerCertHolder<span class=\"token punctuation\">,</span> cert<span class=\"token punctuation\">.</span><span class=\"token function\">getSerialNumber</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token class-name\">VerifyContractByOcspReq</span> req <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">VerifyContractByOcspReq</span><span class=\"token punctuation\">(</span>\n      emaid<span class=\"token punctuation\">,</span>\n      <span class=\"token keyword\">new</span> <span class=\"token class-name\">OcspData</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">{</span>\n        <span class=\"token class-name\">OcspData</span><span class=\"token punctuation\">.</span><span class=\"token function\">builder</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n          <span class=\"token punctuation\">.</span><span class=\"token function\">hashAlgorithm</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"SHA256\"</span><span class=\"token punctuation\">)</span>\n          <span class=\"token punctuation\">.</span><span class=\"token function\">issuerNameHash</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">Base64</span><span class=\"token punctuation\">.</span><span class=\"token function\">toBase64String</span><span class=\"token punctuation\">(</span>id<span class=\"token punctuation\">.</span><span class=\"token function\">getIssuerNameHash</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n          <span class=\"token punctuation\">.</span><span class=\"token function\">issuerKeyHash</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">Base64</span><span class=\"token punctuation\">.</span><span class=\"token function\">toBase64String</span><span class=\"token punctuation\">(</span>id<span class=\"token punctuation\">.</span><span class=\"token function\">getIssuerKeyHash</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n          <span class=\"token punctuation\">.</span><span class=\"token function\">serialNumber</span><span class=\"token punctuation\">(</span>id<span class=\"token punctuation\">.</span><span class=\"token function\">getSerialNumber</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">toString</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n          <span class=\"token punctuation\">.</span><span class=\"token function\">build</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n      <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>","fields":{"tagSlugs":["/tags/pki/","/tags/ocsp/"],"slug":"/works/posts/2020-11-25--001"},"frontmatter":{"title":"[PKI] OCSP Request 생성","tags":["pki","ocsp"],"date":"2020-11-25","description":"HashAlgorithm 에 따른 OCSP Request 생성 방법"}}},"pageContext":{"slug":"/works/posts/2020-11-25--001"}},"staticQueryHashes":[]}