{"id":40218,"date":"2021-12-22T10:00:11","date_gmt":"2021-12-22T15:00:11","guid":{"rendered":"https:\/\/simpleprogrammer.com\/?p=40218"},"modified":"2021-12-22T07:28:12","modified_gmt":"2021-12-22T12:28:12","slug":"code-signing-primer","status":"publish","type":"post","link":"https:\/\/simpleprogrammer.com\/code-signing-primer\/","title":{"rendered":"All About Code Signing: What it is, How it Works, And Why You Should Do it"},"content":{"rendered":"<div class=\"cl-preview-section\">\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignright wp-image-40222\" src=\"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2021\/12\/All-About-Code-Signing-square.png\" alt=\"code signing\" width=\"280\" height=\"280\" \/>In the summer of 2021, Microsoft\u00a0<a href=\"https:\/\/www.gosecure.net\/blog\/2021\/08\/13\/the-neverending-story-the-printnightmare-debacle\/\">issued a security advisory<\/a>\u00a0letting users know of a critical vulnerability in the Windows Print Spooler service. The flaw made it possible for attackers to run arbitrary code on just about any affected Windows machine if they could trick a user into installing a compromised printer driver. From there, they could gain near-total control of the machine and access to anything connected to it.<\/p>\n<\/div>\n<div class=\"cl-preview-section\">\n<p>But if you read the details of the bulletin, you\u2019d have noticed a critical piece of information: that the vulnerability revolved around the users\u2019 ability to install unsigned printer drivers. Signed drivers weren\u2019t a problem\u2014because it\u2019s all but impossible for attackers to alter them to include the malicious bits they needed to launch an attack.<\/p>\n<\/div>\n<div class=\"cl-preview-section\">\n<p>And within that distinction lies a lesson for software developers around the world: Code signing is important and something we all need to do when publishing software meant for public consumption. That said, there seem to be plenty of developers out there that don\u2019t bother with code signing or don\u2019t understand its significance.<\/p>\n<\/div>\n<div class=\"cl-preview-section\">\n<p>Make no mistake, though: Code signing is just as important to protect your customers as it is to protect yourself as a software developer. Imagine, for example, that a hacker or other bad actor decides to inject malicious code into one of your pieces of software. When that code does the damage it\u2019s designed to do, who do you think your customers are going to blame?<\/p>\n<\/div>\n<div class=\"cl-preview-section\">\n<p>Two points if you guessed it\u2019ll be you.<\/p>\n<\/div>\n<div class=\"cl-preview-section\">\n<p>Code signing isn\u2019t all that difficult to do. To help you understand how it works, here\u2019s a complete guide to code signing. We\u2019ll cover what it is, how it works, and why you should be doing it. Let\u2019s get started, shall we?<\/p>\n<\/div>\n<div class=\"cl-preview-section\">\n<h2 id=\"what-is-code-signing\">What Is Code Signing?<\/h2>\n<\/div>\n<div class=\"cl-preview-section\">\n<p>To get started, let\u2019s first take a look at what code signing is\u2014it\u2019s very simple, really. Code signing is the process of issuing a trusted digital certificate attesting to who you are and guaranteeing that a piece of software contains only the code you wrote and that you can vouch for.<\/p>\n<\/div>\n<div class=\"cl-preview-section\">\n<p>In other words, it\u2019s a bit like a certificate of authenticity you might get if you buy a signed piece of movie memorabilia. Except in the case of code signing, you\u2019re not just guaranteeing authenticity, you\u2019re guaranteeing providence and security.<\/p>\n<\/div>\n<div class=\"cl-preview-section\">\n<p>It\u2019s based on the same kind of logic that web browsers use to open\u00a0<a href=\"https:\/\/simpleprogrammer.com\/develop-secure-web-applications\/\">SSL-encrypted connections<\/a>\u00a0to remote servers. The use of trusted certification authorities makes it possible for computers\u2014and users\u2014that don\u2019t know you personally to be reasonably certain that software they\u2019re going to execute hasn\u2019t been tampered with in any way.<\/p>\n<\/div>\n<div class=\"cl-preview-section\">\n<p>If you\u2019ve ever downloaded a program from the internet and tried to run it anytime in the last twenty years, you\u2019ve likely seen code signing in action. Modern operating systems check downloaded software for a valid signature and use that information to alert you as to who is asking to alter your computer.<\/p>\n<\/div>\n<div class=\"cl-preview-section\">\n<p>Software that isn\u2019t signed will generate a colorful and dire-looking warning letting you know that an unknown entity wishes to make changes to your PC. But signed software results in a benign-looking alert listing the software developer\u2019s name and asking for permission to proceed.<\/p>\n<\/div>\n<div class=\"cl-preview-section\">\n<p>There\u2019s an excellent chapter on the subject in the book\u00a0<a href=\"https:\/\/www.amazon.com\/dp\/0596000456\/wwwerobillarc-20\"><em>Web Security, Privacy and Commerce<\/em><\/a>\u00a0that discusses code signing\u2014and numerous other web security topics developers should know about. It\u2019s also a great handbook that I believe every developer should have on their shelf as a reference on myriad online security topics.<\/p>\n<\/div>\n<div class=\"cl-preview-section\">\n<h2 id=\"how-does-code-signing-work\">How Does Code Signing Work?<\/h2>\n<\/div>\n<div class=\"cl-preview-section\">\n<p>The process of signing your code isn\u2019t all that different from the way you\u2019d obtain an SSL certificate for a website. It involves the use of a public and private encryption key pair to have a\u00a0<a href=\"https:\/\/www.sslshopper.com\/cheap-code-signing-certificates.html\">trusted certification authority<\/a>\u00a0issue a valid code signing certificate to you to use when you publish software.<\/p>\n<\/div>\n<div class=\"cl-preview-section\">\n<p>To get a code signing certificate, you have to prove your identity to a certification authority, so they\u2019ll know you are who you say you are. But how you do that depends on the kind of certificate you\u2019re trying to obtain. There are two main types:<\/p>\n<\/div>\n<div class=\"cl-preview-section\">\n<ul>\n<li><strong>Organization Validated Code Signing Certificate \u2013<\/strong>\u00a0Often called a standard code signing certificate, they\u2019re the easier of the two types of certificates to obtain. To get one, you\u2019ll have to identify yourself to a certification authority and go through a simple verification process. Obtaining one isn\u2019t much more difficult than obtaining a standard SSL certificate.<\/li>\n<li><strong>Extended Validation Code Signing Certificate \u2013<\/strong>\u00a0An Extended Validation (EV) code signing certificate is much harder to obtain. To get one, you have to go through a lengthy vetting process with a certification authority. The catch? EV certificates are only issued to organizations, not individuals. They\u2019re meant for higher-volume software publishers and come with a private encryption key stored on a physical hardware key to prevent misuse.<\/li>\n<\/ul>\n<\/div>\n<div class=\"cl-preview-section\">\n<p>The main difference between standard and EV code signing certificates is what they\u2019ll allow your software to do. Standard certificates make it possible for operating systems to compare\u00a0<a href=\"https:\/\/simpleprogrammer.com\/5-security-concepts\/\">your software\u2019s hash<\/a>\u00a0at the time of signing to its hash at runtime. It also identifies you, the developer, as the person behind a particular piece of software.<\/p>\n<\/div>\n<div class=\"cl-preview-section\">\n<p>On the other hand, EV certificates come with some additional benefits. The first is that you can use an EV certificate to sign Microsoft Windows drivers, whereas you can\u2019t use a standard certificate for that purpose. Remember the security advisory mentioned in the introduction? It was EV certificate signed drivers that were safe from the vulnerability.<\/p>\n<\/div>\n<div class=\"cl-preview-section\">\n<p>The other main added benefit of an EV certificate has to do with\u00a0<a href=\"https:\/\/support.microsoft.com\/en-us\/microsoft-edge\/what-is-smartscreen-and-how-can-it-help-protect-me-1c9a874a-6826-be5e-45b1-67fa445a74c8\">SmartScreen<\/a>, which is Microsoft\u2019s built-in website and download checking system. When you sign your software with an EV certificate, SmartScreen will instantly trust your software. That greatly improves the odds that Windows users will be able to download your software without any scary security warnings popping up on their screens.<\/p>\n<\/div>\n<div class=\"cl-preview-section\">\n<h2 id=\"why-you-should-be-signing-your-code\">Why You Should Be Signing Your Code<\/h2>\n<\/div>\n<div class=\"cl-preview-section\">\n<p><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-40224 alignright\" src=\"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2021\/12\/Code-Signing.png\" alt=\"\" width=\"280\" height=\"280\" \/>There are a variety of reasons that you should be signing your code. Some of them are very obvious. Others are less so. Let\u2019s begin with the most obvious reason of all: You want people to run your software, and if your software isn\u2019t signed, there\u2019s a very good chance that users will struggle to run it.<\/p>\n<\/div>\n<div class=\"cl-preview-section\">\n<p>Microsoft, for its part, is\u00a0<em>really<\/em>\u00a0serious about stopping users from downloading and running unsigned code. Their in-OS protection systems will present a user with an\u00a0<a href=\"https:\/\/www.theregister.com\/2020\/06\/05\/windows_10_microsoft_defender_smartscreen\/\">array of roadblocks and warnings<\/a>\u00a0to stop them from doing so. And they don\u2019t make it obvious how to bypass them.<\/p>\n<\/div>\n<div class=\"cl-preview-section\">\n<p>And MacOS, the other major consumer OS, does almost the exact same thing. And newer Apple computers that contain their native processors\u00a0<a href=\"https:\/\/mjtsai.com\/blog\/2020\/08\/19\/apple-silicon-macs-to-require-signed-code\/\">won\u2019t run unsigned software<\/a>\u00a0compiled for them at all. So if you want people to be able to use your software, you need to get in the habit of signing it.<\/p>\n<\/div>\n<div class=\"cl-preview-section\">\n<p>Another reason to sign your software is that it will improve adoption among businesses. Today\u2019s\u00a0<a href=\"https:\/\/studyonline.unsw.edu.au\/blog\/career-in-cyber-security-australia\">cybersecurity professionals<\/a>\u00a0have neither the time nor the inclination to vet unsigned software unless it\u2019s the only option. And most major corporate networks restrict the download or installation of unsigned software\u2014with good reason. When a single chunk of altered code can lead to a multimillion-dollar data breach, there\u2019s no room for error.<\/p>\n<\/div>\n<div class=\"cl-preview-section\">\n<p>Last but not least, you should be signing your code to protect your reputation. If you\u2019re an independent developer that makes a living on the software you create, you can\u2019t afford for someone to use it as an avenue for a malware attack. If that happens, affected users will make no distinction between you and the people responsible for the attack. And the reputational harm you suffer could be irreparable.<\/p>\n<\/div>\n<div class=\"cl-preview-section\">\n<h2 id=\"code-signing-is-worth-it-for-developers\">Code Signing Is Worth It for Developers<\/h2>\n<\/div>\n<div class=\"cl-preview-section\">\n<p>The bottom line here is that developers\u2014including you\u2014should be creating a process to sign all of the code they release. Doing so will help improve your reputation and increase the odds that end-users will be able to run your creations. And at the end of the day, that\u2019s what it\u2019s all about for developers, isn\u2019t it?<\/p>\n<\/div>\n<div class=\"cl-preview-section\">\n<p>But be aware, signing your code means you\u2019re putting your personal stamp of approval on your work. So you should also take great pains to write code that\u2019s secure from the ground up, too. After all, an attacker doesn\u2019t need to alter your code if you leave them an opening to use what you\u2019ve already written.<\/p>\n<\/div>\n<div class=\"cl-preview-section\">\n<p>If you\u2019re new to software development\u2014and even if you\u2019ve been around the block a few times\u2014I suggest you read\u00a0<a href=\"https:\/\/www.amazon.com\/dp\/0321444426\/wwwerobillarc-20\"><em>The Art of Software Security Assessment: Identifying and Preventing Software Vulnerabilities<\/em><\/a>\u00a0if you can find a reasonably-priced copy. It\u2019ll teach you everything you need to know about secure coding, so you can sign your software with complete confidence that it won\u2019t come back to haunt you.<\/p>\n<\/div>\n<div class=\"cl-preview-section\">\n<p>And that\u2019s all there is to it. Hopefully, you\u2019ve learned why code signing is so important and why you should be doing it. Now go get to it!<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Code signing is a valuable security tool helps make sure end-users don&#8217;t end up with altered or compromised software. <\/p>\n","protected":false},"author":1273,"featured_media":40221,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"categories":[162231890,524297,162231737,70886,8915,415,120,162229803,126441,801,53079],"tags":[],"class_list":["post-40218","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-app-development","category-code-reviews","category-cybersecurity","category-debugging","category-deployment","category-guest-post","category-mobile","category-programming","category-release-management","category-security","category-validation"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>All About Code Signing: What it is, How it Works, And Why You Should Do it - Simple Programmer<\/title>\n<meta name=\"description\" content=\"Code signing is a valuable security tool helps make sure end-users don&#039;t end up with altered or compromised software.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/simpleprogrammer.com\/code-signing-primer\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"All About Code Signing: What it is, How it Works, And Why You Should Do it - Simple Programmer\" \/>\n<meta property=\"og:description\" content=\"Code signing is a valuable security tool helps make sure end-users don&#039;t end up with altered or compromised software.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/simpleprogrammer.com\/code-signing-primer\/\" \/>\n<meta property=\"og:site_name\" content=\"Simple Programmer\" \/>\n<meta property=\"article:published_time\" content=\"2021-12-22T15:00:11+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2021\/12\/All-About-Code-Signing.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1280\" \/>\n\t<meta property=\"og:image:height\" content=\"720\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/code-signing-primer\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/code-signing-primer\\\/\"},\"author\":{\"name\":\"\",\"@id\":\"\"},\"headline\":\"All About Code Signing: What it is, How it Works, And Why You Should Do it\",\"datePublished\":\"2021-12-22T15:00:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/code-signing-primer\\\/\"},\"wordCount\":1587,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/code-signing-primer\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/simpleprogrammer.com\\\/wp-content\\\/uploads\\\/2021\\\/12\\\/All-About-Code-Signing.png\",\"articleSection\":[\"App Development\",\"Code Reviews\",\"Cybersecurity\",\"Debugging\",\"Deployment\",\"Guest Post\",\"Mobile\",\"Programming\",\"Release Management\",\"Security\",\"Validation\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/simpleprogrammer.com\\\/code-signing-primer\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/code-signing-primer\\\/\",\"url\":\"https:\\\/\\\/simpleprogrammer.com\\\/code-signing-primer\\\/\",\"name\":\"All About Code Signing: What it is, How it Works, And Why You Should Do it - Simple Programmer\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/code-signing-primer\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/code-signing-primer\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/simpleprogrammer.com\\\/wp-content\\\/uploads\\\/2021\\\/12\\\/All-About-Code-Signing.png\",\"datePublished\":\"2021-12-22T15:00:11+00:00\",\"author\":{\"@id\":\"\"},\"description\":\"Code signing is a valuable security tool helps make sure end-users don't end up with altered or compromised software.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/code-signing-primer\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/simpleprogrammer.com\\\/code-signing-primer\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/code-signing-primer\\\/#primaryimage\",\"url\":\"https:\\\/\\\/simpleprogrammer.com\\\/wp-content\\\/uploads\\\/2021\\\/12\\\/All-About-Code-Signing.png\",\"contentUrl\":\"https:\\\/\\\/simpleprogrammer.com\\\/wp-content\\\/uploads\\\/2021\\\/12\\\/All-About-Code-Signing.png\",\"width\":1280,\"height\":720},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/code-signing-primer\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/simpleprogrammer.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"All About Code Signing: What it is, How it Works, And Why You Should Do it\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/#website\",\"url\":\"https:\\\/\\\/simpleprogrammer.com\\\/\",\"name\":\"Simple Programmer\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/simpleprogrammer.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"\",\"url\":\"https:\\\/\\\/simpleprogrammer.com\\\/author\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"All About Code Signing: What it is, How it Works, And Why You Should Do it - Simple Programmer","description":"Code signing is a valuable security tool helps make sure end-users don't end up with altered or compromised software.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/simpleprogrammer.com\/code-signing-primer\/","og_locale":"en_US","og_type":"article","og_title":"All About Code Signing: What it is, How it Works, And Why You Should Do it - Simple Programmer","og_description":"Code signing is a valuable security tool helps make sure end-users don't end up with altered or compromised software.","og_url":"https:\/\/simpleprogrammer.com\/code-signing-primer\/","og_site_name":"Simple Programmer","article_published_time":"2021-12-22T15:00:11+00:00","og_image":[{"width":1280,"height":720,"url":"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2021\/12\/All-About-Code-Signing.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Written by":"","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/simpleprogrammer.com\/code-signing-primer\/#article","isPartOf":{"@id":"https:\/\/simpleprogrammer.com\/code-signing-primer\/"},"author":{"name":"","@id":""},"headline":"All About Code Signing: What it is, How it Works, And Why You Should Do it","datePublished":"2021-12-22T15:00:11+00:00","mainEntityOfPage":{"@id":"https:\/\/simpleprogrammer.com\/code-signing-primer\/"},"wordCount":1587,"commentCount":0,"image":{"@id":"https:\/\/simpleprogrammer.com\/code-signing-primer\/#primaryimage"},"thumbnailUrl":"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2021\/12\/All-About-Code-Signing.png","articleSection":["App Development","Code Reviews","Cybersecurity","Debugging","Deployment","Guest Post","Mobile","Programming","Release Management","Security","Validation"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/simpleprogrammer.com\/code-signing-primer\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/simpleprogrammer.com\/code-signing-primer\/","url":"https:\/\/simpleprogrammer.com\/code-signing-primer\/","name":"All About Code Signing: What it is, How it Works, And Why You Should Do it - Simple Programmer","isPartOf":{"@id":"https:\/\/simpleprogrammer.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/simpleprogrammer.com\/code-signing-primer\/#primaryimage"},"image":{"@id":"https:\/\/simpleprogrammer.com\/code-signing-primer\/#primaryimage"},"thumbnailUrl":"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2021\/12\/All-About-Code-Signing.png","datePublished":"2021-12-22T15:00:11+00:00","author":{"@id":""},"description":"Code signing is a valuable security tool helps make sure end-users don't end up with altered or compromised software.","breadcrumb":{"@id":"https:\/\/simpleprogrammer.com\/code-signing-primer\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/simpleprogrammer.com\/code-signing-primer\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/simpleprogrammer.com\/code-signing-primer\/#primaryimage","url":"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2021\/12\/All-About-Code-Signing.png","contentUrl":"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2021\/12\/All-About-Code-Signing.png","width":1280,"height":720},{"@type":"BreadcrumbList","@id":"https:\/\/simpleprogrammer.com\/code-signing-primer\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/simpleprogrammer.com\/"},{"@type":"ListItem","position":2,"name":"All About Code Signing: What it is, How it Works, And Why You Should Do it"}]},{"@type":"WebSite","@id":"https:\/\/simpleprogrammer.com\/#website","url":"https:\/\/simpleprogrammer.com\/","name":"Simple Programmer","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/simpleprogrammer.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"","url":"https:\/\/simpleprogrammer.com\/author\/"}]}},"_links":{"self":[{"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/posts\/40218","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/users\/1273"}],"replies":[{"embeddable":true,"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/comments?post=40218"}],"version-history":[{"count":0,"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/posts\/40218\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/media\/40221"}],"wp:attachment":[{"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/media?parent=40218"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/categories?post=40218"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/tags?post=40218"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}