[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f-j_WbWFakUZXEUAVR_gm31Z_EpH6MC9gEiKdbK5CLI4":3},{"slug":4,"name":5,"version":6,"author":7,"author_profile":8,"description":9,"short_description":10,"active_installs":11,"downloaded":12,"rating":11,"num_ratings":11,"last_updated":13,"tested_up_to":14,"requires_at_least":15,"requires_php":16,"tags":17,"homepage":23,"download_link":24,"security_score":25,"vuln_count":11,"unpatched_count":11,"last_vuln_date":26,"fetched_at":27,"vulnerabilities":28,"developer":29,"crawl_stats":26,"alternatives":36,"analysis":133,"fingerprints":430},"lawyer-locker","Lawyer Locker","0.1","Web Guy","https:\u002F\u002Fprofiles.wordpress.org\u002Fwebguyio\u002F","\u003Cp>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fwebguyio\u002Fsupport\" rel=\"nofollow ugc\">💬 Ask Question\u003C\u002Fa> | \u003Ca href=\"mailto:webguywork@gmail.com\" rel=\"nofollow ugc\">📧 Email Me\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>Encrypted lockers for secure client communication and file sharing.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Locker Features\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Individual Client Lockers\u003C\u002Fstrong>: Each client gets a unique, password-protected, secure area\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Secure File Sharing\u003C\u002Fstrong>: Upload and download encrypted files with full privacy\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Message Thread\u003C\u002Fstrong>: Secure, timestamped communication log between lawyer and client\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Activity Audit Trail\u003C\u002Fstrong>: Track all locker access, file downloads, and messages\u003C\u002Fli>\n\u003Cli>\u003Cstrong>No Client Accounts Required\u003C\u002Fstrong>: Share a simple URL with encryption key in the fragment\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Lockbox Features\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>One-offs\u003C\u002Fstrong>: One-time encrypted messages that self-destruct after reading\u003C\u002Fli>\n\u003Cli>\u003Cstrong>End-to-End Encryption\u003C\u002Fstrong>: All data is encrypted in the browser using AES-256-GCM before transmission\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Zero-Knowledge Server\u003C\u002Fstrong>: The server never has access to encryption keys or plaintext data\u003C\u002Fli>\n\u003Cli>\u003Cstrong>No Client Accounts Required\u003C\u002Fstrong>: Share a simple URL with encryption key in the fragment\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>How it Works\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Col>\n\u003Cli>Lawyer creates a locker in WordPress admin\u003C\u002Fli>\n\u003Cli>Plugin generates a unique URL with encryption key (\u003Ccode>\u002Flocker\u002Fabc123\u002F#encryption-key\u003C\u002Fcode>)\u003C\u002Fli>\n\u003Cli>Lawyer shares this URL securely with their client\u003C\u002Fli>\n\u003Cli>Both parties access the locker using the same URL\u003C\u002Fli>\n\u003Cli>All messages and files are encrypted\u002Fdecrypted locally in the browser\u003C\u002Fli>\n\u003Cli>Server only stores encrypted blobs (no plaintext ever touches the server)\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>\u003Cstrong>Security Notice\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>The encryption key is included in the URL fragment (after the #). This must be shared securely:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Use encrypted email (Proton)\u003C\u002Fli>\n\u003Cli>Use secure messaging (Signal)\u003C\u002Fli>\n\u003Cli>Use the built-in Lockbox feature\u003C\u002Fli>\n\u003Cli>Share in-person or via phone\u003C\u002Fli>\n\u003Cli>DO NOT send via regular email (Gmail, Yahoo, Hotmail) or SMS\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Perfect For\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Law firms managing sensitive client communications\u003C\u002Fli>\n\u003Cli>Accountants sharing financial documents\u003C\u002Fli>\n\u003Cli>Healthcare providers (HIPAA compliance considerations)\u003C\u002Fli>\n\u003Cli>Politicians and government officials\u003C\u002Fli>\n\u003Cli>Journalists and activists\u003C\u002Fli>\n\u003Cli>Anyone requiring genuine privacy and confidentiality\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Technical Details\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Uses Web Crypto API for browser-based AES-256-GCM encryption\u003C\u002Fli>\n\u003Cli>Custom database tables for encrypted files and activity logs\u003C\u002Fli>\n\u003Cli>No third-party dependencies\u003C\u002Fli>\n\u003Cli>Clean, minimal codebase\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Browser Requirements\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Modern browser with Web Crypto API support (all current browsers)\u003C\u002Fli>\n\u003Cli>JavaScript must be enabled (required for encryption\u002Fdecryption)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>For the Lawyers\u003C\u002Fh4>\n\u003Cp>Lawyer Locker is part of the \u003Ca href=\"https:\u002F\u002Fforthelawyers.co\u002F\" rel=\"nofollow ugc\">For the Lawyers\u003C\u002Fa> initiative, a project dedicated to lawyers, finding all the gaps on the web to make their lives easier, and filling them.\u003C\u002Fp>\n\u003Cp>For support and other WordPress tools for legal pros, go to \u003Ca href=\"https:\u002F\u002Fforthelawyers.co\u002F\" rel=\"nofollow ugc\">forthelawyers.co\u003C\u002Fa>.\u003C\u002Fp>\n","Encrypted lockers for secure client communication and file sharing.",0,150,"","6.9.4","5.0","7.4",[18,19,20,21,22],"clients","communication","encryption","lawyers","privacy","https:\u002F\u002Fforthelawyers.co\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Flawyer-locker.zip",100,null,"2026-03-15T10:48:56.248Z",[],{"slug":30,"display_name":7,"profile_url":8,"plugin_count":31,"total_installs":32,"avg_security_score":25,"avg_patch_time_days":33,"trust_score":34,"computed_at":35},"webguyio",30,52370,629,79,"2026-04-04T18:39:56.980Z",[37,63,85,102,115],{"slug":38,"name":39,"version":40,"author":41,"author_profile":42,"description":43,"short_description":44,"active_installs":45,"downloaded":46,"rating":47,"num_ratings":48,"last_updated":49,"tested_up_to":14,"requires_at_least":50,"requires_php":51,"tags":52,"homepage":57,"download_link":58,"security_score":59,"vuln_count":60,"unpatched_count":11,"last_vuln_date":61,"fetched_at":62},"cryptx","CryptX","4.0.11","Ralf Weber","https:\u002F\u002Fprofiles.wordpress.org\u002Fd3395\u002F","\u003Cp>No more SPAM by spiders scanning your site for email addresses. With CryptX you can hide all your email addresses, with and without a mailto-link, by converting them using javascript or UNICODE.\u003C\u002Fp>\n\u003Cp>CryptX protects your email addresses from spambots while keeping them readable and functional for your visitors. The plugin automatically detects email addresses in your content and encrypts them using various methods including JavaScript encryption, Unicode conversion, and image replacement.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Key Features:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Automatic Email Detection\u003C\u002Fstrong> – Finds and encrypts email addresses in posts, pages, comments, and widgets\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Multiple Encryption Methods\u003C\u002Fstrong> – JavaScript, Unicode, image replacement, and custom text options\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Widget Support\u003C\u002Fstrong> – Works with text widgets and other widget content\u003C\u002Fli>\n\u003Cli>\u003Cstrong>RSS Feed Control\u003C\u002Fstrong> – Option to disable encryption in RSS feeds\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Whitelist Support\u003C\u002Fstrong> – Exclude specific domains from encryption\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Per-Post Control\u003C\u002Fstrong> – Enable\u002Fdisable encryption on individual posts and pages\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Shortcode Support\u003C\u002Fstrong> – Use \u003Ccode>[cryptx]email@example.com[\u002Fcryptx]\u003C\u002Fcode> for manual encryption\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Template Functions\u003C\u002Fstrong> – Developer-friendly functions for theme integration\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Ca href=\"http:\u002F\u002Fweber-nrw.de\u002Fwordpress\u002Fcryptx\u002F\" title=\"Plugin Homepage\" rel=\"nofollow ugc\">Plugin Homepage\u003C\u002Fa>\u003C\u002Fp>\n","No more SPAM by spiders scanning your site for email addresses!",10000,280578,88,19,"2025-12-18T08:01:00.000Z","6.7","8.3",[53,54,55,22,56],"antispam","email-encryption","mail","spam-protection","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fcryptx\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fcryptx.4.0.11.zip",99,1,"2025-12-04 20:35:36","2026-03-15T15:16:48.613Z",{"slug":64,"name":65,"version":66,"author":67,"author_profile":68,"description":69,"short_description":70,"active_installs":71,"downloaded":72,"rating":73,"num_ratings":74,"last_updated":75,"tested_up_to":76,"requires_at_least":77,"requires_php":13,"tags":78,"homepage":82,"download_link":83,"security_score":84,"vuln_count":11,"unpatched_count":11,"last_vuln_date":26,"fetched_at":62},"wp-pgp-encrypted-emails","WP PGP Encrypted Emails","0.8.0","Meitar","https:\u002F\u002Fprofiles.wordpress.org\u002Fmeitar\u002F","\u003Cp>WP PGP Encrypted Emails can automatically sign and encrypt any email that WordPress sends to your site’s admin email address or your users’s email addresses. You give it a copy of the recipient’s OpenPGP public key and\u002For their S\u002FMIME certificate, and it does the rest. You can even automatically generate an OpenPGP signing keypair for your site to use.\u003C\u002Fp>\n\u003Cp>Encrypting outgoing emails protects your user’s privacy by ensuring that emails intended for them can be read only by them, and them alone. Moreover, signing those emails helps your users verify that email they receive purporting to be from your site was \u003Cem>actually\u003C\u002Fem> sent by your server, and not some imposter. If you’re a plugin or theme developer, you can encrypt and\u002For sign \u003Cem>arbitrary data\u003C\u002Fem> using this plugin’s OpenPGP and S\u002FMIME APIs, which are both built with familiar, standard WordPress filter hooks. This enables you to develop highly secure communication and publishing tools fully integrated with your WordPress install. See the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffabacab\u002Fwp-pgp-encrypted-emails\u002F#readme\" rel=\"nofollow ugc\">\u003Ccode>README.markdown\u003C\u002Fcode>\u003C\u002Fa> file for details on cryptographic implementation and API usage.\u003C\u002Fp>\n\u003Cp>\u003Cem>Donations for this and my other free software plugins make up a chunk of my income. If you continue to enjoy this plugin, please consider \u003Ca href=\"https:\u002F\u002Fwww.paypal.com\u002Fcgi-bin\u002Fwebscr?cmd=_donations&business=TJLPJYXHSRBEE&lc=US&item_name=WP%20PGP%20Encrypted%20Emails&item_number=wp-pgp-encrypted-emails&currency_code=USD&bn=PP%2dDonationsBF%3abtn_donate_SM%2egif%3aNonHosted\" rel=\"nofollow ugc\">making a donation\u003C\u002Fa>. 🙂 Thank you for your support!\u003C\u002Fem>\u003C\u002Fp>\n\u003Cp>Plugin features:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Processes \u003Cem>all\u003C\u002Fem> email your site generates, automatically and transparently.\u003C\u002Fli>\n\u003Cli>Configure outbound signing: sign email sent to \u003Cem>all\u003C\u002Fem> recipients, or just savvy ones.\u003C\u002Fli>\n\u003Cli>Per-user encryption keys and certificates; user manages their own OpenPGP keys and S\u002FMIME certificates.\u003C\u002Fli>\n\u003Cli>Compatible with thousands (yes, thousands) of third-party contact form plugins.\u003C\u002Fli>\n\u003Cli>Full interoperability with all standards-compliant OpenPGP and S\u002FMIME implementations.\u003C\u002Fli>\n\u003Cli>Options to enforce further privacy best practices (e.g., removing \u003Ccode>Subject\u003C\u002Fcode> lines).\u003C\u002Fli>\n\u003Cli>Fully multisite compatible, out of the box. No additional configuration for large networks!\u003C\u002Fli>\n\u003Cli>No binaries to install or configure; everything you need is in the plugin itself.\u003C\u002Fli>\n\u003Cli>Bells and whistles included! For instance, visitors can encrypt comments on posts so only the author can read them.\u003C\u002Fli>\n\u003Cli>Built-in, customizable integration with popular third-party plugins, such as \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwoocommerce\u002F\" rel=\"ugc\">WooCommerce\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>Always \u003Cstrong>FREE\u003C\u002Fstrong>. Replaces paid email encryption “upgrades,” and gets rid of yearly subscription fees. (\u003Ca href=\"https:\u002F\u002Fwww.paypal.com\u002Fcgi-bin\u002Fwebscr?cmd=_donations&business=TJLPJYXHSRBEE&lc=US&item_name=WP%20PGP%20Encrypted%20Emails&item_number=wp-pgp-encrypted-emails&currency_code=USD&bn=PP%2dDonationsBF%3abtn_donate_SM%2egif%3aNonHosted\" rel=\"nofollow ugc\">Donations\u003C\u002Fa> appreciated!)\u003C\u002Fli>\n\u003Cli>And \u003Cem>more\u003C\u002Fem>, of course. 😉\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>The plugin works transparently for \u003Cem>all email\u003C\u002Fem> your site generates, and will also sign and encrypt outgoing email generated by other plugins (such as contact form plugins) or the built-in WordPress notification emails. All you have to do is add one or more OpenPGP keys or an S\u002FMIME certificate to the Email Encryption screen (WordPress Admin Dashboard &rarr; Settings &rarr; Email Encryption). Each user can opt to also remove envelope information such as email subject lines, which encryption schemes cannot protect. With this plugin, there’s no longer any need to pay for the “pro” version of your favorite contact form plugin to get the benefit of email privacy.\u003C\u002Fp>\n\u003Cp>Each of your site’s users can supply their own, personal OpenPGP public key and\u002For X.509 S\u002FMIME certificate for their own email address to have WordPress automatically encrypt any email destined for them. (They merely need to update their user profile.) They can choose which encryption method to use. Once set up, all future emails WordPress sends to that user will be encrypted using the standards-based OpenPGP or S\u002FMIME technologies.\u003C\u002Fp>\n\u003Cp>The OpenPGP-encrypted emails can be decrypted by any OpenPGP-compatible mail client, such as \u003Ca href=\"https:\u002F\u002Fgpgtools.org\u002F\" rel=\"nofollow ugc\">MacGPG\u003C\u002Fa> (macOS), \u003Ca href=\"https:\u002F\u002Fwww.gpg4win.org\u002F\" rel=\"nofollow ugc\">GPG4Win\u003C\u002Fa> (Windows), \u003Ca href=\"https:\u002F\u002Fwww.enigmail.net\u002F\" rel=\"nofollow ugc\">Enigmail\u003C\u002Fa> (cross-platform), \u003Ca href=\"https:\u002F\u002Fopenkeychain.org\u002F\" rel=\"nofollow ugc\">OpenKeychain\u003C\u002Fa> (Android), or \u003Ca href=\"https:\u002F\u002Fipgmail.com\u002F\" rel=\"nofollow ugc\">iPGMail\u003C\u002Fa> (iPhone\u002FiOS). For more information on reading encrypted emails, generating keys, and other uses for OpenPGP-compatible encryption, consult any (or all!) of the following guides:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fssd.eff.org\u002Fen\u002Fmodule\u002Fintroduction-public-key-cryptography-and-pgp\" rel=\"nofollow ugc\">The Electronic Frontier Foundation’s Surveillance Self-Defense guide to PGP\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fhelp.riseup.net\u002Fen\u002Fgpg-best-practices\" rel=\"nofollow ugc\">RiseUp.net’s OpenPGP best practices guide\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww.openpgp.org\u002F\" rel=\"nofollow ugc\">OpenPGP.org\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>The S\u002FMIME-encrypted emails can be decrypted by any S\u002FMIME-compatible mail client. These include \u003Ca href=\"http:\u002F\u002Fsiber-sonic.com\u002Fmac\u002FMailSMIME\u002F\" rel=\"nofollow ugc\">Apple’s Mail on macOS\u003C\u002Fa> and \u003Ca href=\"https:\u002F\u002Fsupport.apple.com\u002Fen-au\u002FHT202345\" rel=\"nofollow ugc\">iOS for iPhone and iPad\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fsupport.office.com\u002Fen-us\u002Farticle\u002FEncrypt-messages-by-using-S-MIME-in-Outlook-Web-App-2E57E4BD-4CC2-4531-9A39-426E7C873E26\" rel=\"nofollow ugc\">Microsoft Outlook\u003C\u002Fa>, \u003Ca href=\"http:\u002F\u002Fwww.claws-mail.org\u002Ffaq\u002Findex.php\u002FS\u002FMIME_howto\" rel=\"nofollow ugc\">Claws Mail for GNU\u002FLinux\u003C\u002Fa>, and more.\u003C\u002Fp>\n\u003Cp>For developers, WP PGP Encrypted Emails provides \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffabacab\u002Fwp-pgp-encrypted-emails\u002Fblob\u002Fdevelop\u002FREADME.markdown#openpgp-api\" rel=\"nofollow ugc\">an easy to use API to both OpenPGP\u003C\u002Fa> and \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffabacab\u002Fwp-pgp-encrypted-emails\u002Fblob\u002Fdevelop\u002FREADME.markdown#smime-api\" rel=\"nofollow ugc\">S\u002FMIME\u003C\u002Fa> encryption, decryption, and integrity validation operations through the familiar \u003Ca href=\"https:\u002F\u002Fcodex.wordpress.org\u002FPlugin_API\" rel=\"nofollow ugc\">WordPress plugin API\u003C\u002Fa> so you can use this plugin’s simple filter hooks to build custom OpenPGP- or S\u002FMIME-based encryption functionality into your own plugins and themes.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Security Disclaimer\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Security is a process, not a product. Using WP PGP Encrypted Emails does not guarantee that your site’s outgoing messages are invulnerable to every attacker, in every possible scenario, at all times. No single security measure, in isolation, can do that.\u003C\u002Fp>\n\u003Cp>Do not rely solely on this plugin for the security or privacy of your webserver. See the \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwp-pgp-encrypted-emails\u002Ffaq\u002F\" rel=\"ugc\">Frequently Asked Questions\u003C\u002Fa> for more security advice and for more information about the rationale for this plugin.\u003Cbr \u002F>\nIf you like this plugin, \u003Cstrong>please consider \u003Ca href=\"https:\u002F\u002Fwww.paypal.com\u002Fcgi-bin\u002Fwebscr?cmd=_donations&business=TJLPJYXHSRBEE&lc=US&item_name=WP%20PGP%20Encrypted%20Emails&item_number=wp-pgp-encrypted-emails&currency_code=USD&bn=PP%2dDonationsBF%3abtn_donate_SM%2egif%3aNonHosted\" rel=\"nofollow ugc\">making a donation\u003C\u002Fa> for your use of the plugin\u003C\u002Fstrong> or, better yet, contributing directly to \u003Ca href=\"http:\u002F\u002FCyberbusking.org\u002F\" rel=\"nofollow ugc\">my Cyberbusking fund\u003C\u002Fa>. Your support is appreciated!\u003C\u002Fp>\n\u003Ch4>Themeing\u003C\u002Fh4>\n\u003Cp>Theme authors can use the following code snippets to integrate a WordPress theme with this plugin.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>To link to a site’s OpenPGP signing public key: \u003Ccode>\u003C?php print admin_url( 'admin-ajax.php?action=download_pgp_signing_public_key' ); ?>\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Plugin hooks\u003C\u002Fh4>\n\u003Cp>This plugin offers additional functionality intended for other plugin developers or theme authors to make use of. This functionality is documented here.\u003C\u002Fp>\n\u003Ch3>Filters\u003C\u002Fh3>\n\u003Ch4>`wp_user_encryption_method`\u003C\u002Fh4>\n\u003Cp>Gets the user’s preferred encryption method (either \u003Ccode>pgp\u003C\u002Fcode> or \u003Ccode>smime\u003C\u002Fcode>), if they have provided both an OpenPGP public key and an S\u002FMIME certificate.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Optional arguments:\n\u003Cul>\n\u003Cli>\u003Ccode>WP_User\u003C\u002Fcode> \u003Ccode>$user\u003C\u002Fcode> – The WordPress user object. Defaults to the current user.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>`wp_openpgp_user_key`\u003C\u002Fh4>\n\u003Cp>Gets the user’s saved OpenPGP public key from their WordPress profile data, immediately usable in other \u003Ccode>openpgp_*\u003C\u002Fcode> filters.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Optional arguments:\n\u003Cul>\n\u003Cli>\u003Ccode>WP_User\u003C\u002Fcode> \u003Ccode>$user\u003C\u002Fcode> – The WordPress user object. Defaults to the current user.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>`openpgp_enarmor`\u003C\u002Fh4>\n\u003Cp>Gets an ASCII-armored representation of an OpenPGP data structure (like a key, or an encrypted message).\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Required parameters:\n\u003Cul>\n\u003Cli>\u003Ccode>string\u003C\u002Fcode> \u003Ccode>$data\u003C\u002Fcode> – The data to be armored.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>Optional parameters:\n\u003Cul>\n\u003Cli>\u003Ccode>string\u003C\u002Fcode> \u003Ccode>$marker\u003C\u002Fcode> – The marker of the block (the text that follows \u003Ccode>-----BEGIN\u003C\u002Fcode>). Defaults to \u003Ccode>MESSAGE\u003C\u002Fcode>, but you should set this to a more appropriate value. If you are armoring a PGP public key, for instance, set this to \u003Ccode>PGP PUBLIC KEY BLOCK\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>\u003Ccode>string[]\u003C\u002Fcode> \u003Ccode>$headers\u003C\u002Fcode> – An array of strings to apply as headers to the ASCII-armored block, usually used to insert comments or identify the OpenPGP client used. Defaults to \u003Ccode>array()\u003C\u002Fcode> (no headers).\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Example: ASCII-armor a binary public key.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>$ascii_key = apply_filters('openpgp_enarmor', $public_key, 'PGP PUBLIC KEY BLOCK');\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>`openpgp_key`\u003C\u002Fh4>\n\u003Cp>Gets a binary OpenPGP public key for use in later PGP operations from an ASCII-armored representation of that key.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Required parameters:\n\u003Cul>\n\u003Cli>\u003Ccode>string\u003C\u002Fcode> \u003Ccode>$key\u003C\u002Fcode> – The ASCII-armored PGP public key block.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Example: Get a key saved as an ASCII string in the WordPress database option \u003Ccode>my_plugin_pgp_public_key\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>$key = apply_filters('openpgp_key', get_option('my_plugin_pgp_public_key'));\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>`openpgp_sign`\u003C\u002Fh4>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwww.gnupg.org\u002Fgph\u002Fen\u002Fmanual\u002Fx135.html#AEN152\" rel=\"nofollow ugc\">Clearsigns\u003C\u002Fa> a message using a given private key.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Required parameters:\n\u003Cul>\n\u003Cli>\u003Ccode>string\u003C\u002Fcode> \u003Ccode>$data\u003C\u002Fcode> – The message data to sign.\u003C\u002Fli>\n\u003Cli>\u003Ccode>OpenPGP_SecretKeyPacket\u003C\u002Fcode> \u003Ccode>$signing_key\u003C\u002Fcode> – The signing key to use, obtained by passing the ASCII-armored private key through the \u003Ccode>openpgp_key\u003C\u002Fcode> filter.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Example: Sign a short string.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>$message = 'This is a message to sign.';\n$signing_key = apply_filters('openpgp_key', $ascii_key);\n$signed_message = apply_filters('openpgp_sign', $message, $signing_key);\n\u002F\u002F $signed_message is now a clearsigned message\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>`openpgp_encrypt`\u003C\u002Fh4>\n\u003Cp>Encrypts data to one or more PGP public keys or passphrases.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Required arguments:\n\u003Cul>\n\u003Cli>\u003Ccode>string\u003C\u002Fcode> \u003Ccode>$data\u003C\u002Fcode> – Data to encrypt.\u003C\u002Fli>\n\u003Cli>\u003Ccode>array|string\u003C\u002Fcode> \u003Ccode>$keys\u003C\u002Fcode> – Passphrases or keys to use to encrypt the data.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Example: Encrypt the content of a blog post.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u002F\u002F First, get the PGP public key(s) of the recipient(s)\n$ascii_key = '-----BEGIN PGP PUBLIC KEY BLOCK-----\n[...snipped for length...]\n-----END PGP PUBLIC KEY BLOCK-----';\n$encryption_key = apply_filters('openpgp_key', $ascii_key);\n$encrypted_post = apply_filters('openpgp_encrypt', $post->post_content, $encryption_key);\n\u002F\u002F Now you can safely send or display $encrypted_post anywhere you like and only\n\u002F\u002F those who control the corresponding private key(s) can decrypt it.\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>`openpgp_sign`\u003C\u002Fh4>\n\u003Cp>Signs a message (arbitrary data) with the given private key.\u003C\u002Fp>\n\u003Cp>Note that if your plugin uses the built-in WordPress core \u003Ccode>wp_mail()\u003C\u002Fcode> function and this plugin is active, your plugin’s outgoing emails are already automatically signed so you do not need to do anything. This filter is intended for use by plugin developers who want to create custom, trusted communiques between WordPress and some other system.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Required arguments:\n\u003Cul>\n\u003Cli>\u003Ccode>string\u003C\u002Fcode> \u003Ccode>$data\u003C\u002Fcode> – The data to sign.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>Optional arguments:\n\u003Cul>\n\u003Cli>\u003Ccode>OpenPGP_SecretKeyPacket\u003C\u002Fcode> \u003Ccode>$privatekey\u003C\u002Fcode> – The private key used for signing the message. The default is to use the private key automatically generated during plugin activation. The automatically generated keypair is intended to be a low-trust, single-purpose keypair for your website itself, so you probably do not need or want to use this argument yourself.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Example: Send a signed, encrypted JSON payload to a remote, insecure server.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>$comment_data = get_comment(2); \u002F\u002F get a WP_Comment object with comment ID 2\n\u002F\u002F Create JSON payload\n$json = array('success' => true, 'action' => 'new_comment', 'data' => $comment_data);\n$url = 'http:\u002F\u002Finsecure.example.com\u002F';\n$response = wp_safe_remote_post($url, array(\n));\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>`openpgp_sign_and_encrypt`\u003C\u002Fh4>\n\u003Cp>A convenience filter that applies \u003Ccode>openpgp_sign\u003C\u002Fcode> and then \u003Ccode>openpgp_encrypt\u003C\u002Fcode> to the result.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Required arguments:\n\u003Cul>\n\u003Cli>\u003Ccode>string\u003C\u002Fcode> \u003Ccode>$data\u003C\u002Fcode> – The data to sign and encrypt.\u003C\u002Fli>\n\u003Cli>\u003Ccode>string\u003C\u002Fcode> \u003Ccode>$signing_key\u003C\u002Fcode> – The signing key to use.\u003C\u002Fli>\n\u003Cli>\u003Ccode>array|string\u003C\u002Fcode> \u003Ccode>$recipient_keys_and_passphrases\u003C\u002Fcode> – Public key(s) of the recipient(s), or passphrases to encrypt to.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>`wp_openpgp_user_key`\u003C\u002Fh4>\n\u003Cp>Gets the user’s saved S\u002FMIME public certificate from their WordPress profile data, immediately usable in other \u003Ccode>smime_*\u003C\u002Fcode> filters.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Optional arguments:\n\u003Cul>\n\u003Cli>\u003Ccode>WP_User\u003C\u002Fcode> \u003Ccode>$user\u003C\u002Fcode> – The WordPress user object. Defaults to the current user.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>`smime_certificate`\u003C\u002Fh4>\n\u003Cp>Gets a PHP resource handle to an X.509 Certificate.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Required arguments:\n\u003Cul>\n\u003Cli>\u003Ccode>mixed\u003C\u002Fcode> \u003Ccode>$cert\u003C\u002Fcode> – The certificate, either as a string to a file, or raw PEM-encoded certificate data.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>`smime_certificate_pem_encode`\u003C\u002Fh4>\n\u003Cp>Encodes (“exports”) a given X.509 certificate as PEM format.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Required arguments:\n\u003Cul>\n\u003Cli>\u003Ccode>resource\u003C\u002Fcode> \u003Ccode>$cert\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>`smime_encrypt`\u003C\u002Fh4>\n\u003Cp>Encrypts a message as an S\u002FMIME email given a public certificate.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Required arguments:\n\u003Cul>\n\u003Cli>\u003Ccode>string\u003C\u002Fcode> \u003Ccode>$message\u003C\u002Fcode> – The message contents to encrypt.\u003C\u002Fli>\n\u003Cli>\u003Ccode>string|string[]\u003C\u002Fcode> \u003Ccode>$headers\u003C\u002Fcode> – The message headers for the encrypted part.\u003C\u002Fli>\n\u003Cli>\u003Ccode>resource|array\u003C\u002Fcode> \u003Ccode>$certificates\u003C\u002Fcode> – The recipient’s certificate, or an array of recipient certificates.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>This filter returns an array with two keys, \u003Ccode>headers\u003C\u002Fcode> and \u003Ccode>message\u003C\u002Fcode>, wherein the message is encrypted.\u003C\u002Fp>\n\u003Cp>Example: send an encrypted email via \u003Ccode>wp_mail()\u003C\u002Fcode>. (You do not need to do this if the recipient is registered as your site’s user, because this plugin does that automatically. Only do this if you need to send S\u002FMIME encrypted email to an address not stored in WordPress’s own database.)\u003C\u002Fp>\n\u003Cpre>\u003Ccode>$cert = apply_filters( 'smime_certificate', get_option( 'my_plugin_smime_certificate' ) );\n$body = 'This is a test email message body.';\n$head = array(\n    'From' => get_option( 'admin_email' ),\n);\n$smime_data = apply_filters( 'smime_encrypt', $body, $head, $cert );\nif ( $smime_data ) {\n    wp_mail(\n        'recipient@example.com',\n        'Test message.',\n        $smime_data['message'], \u002F\u002F message is sent encrypted\n        $smime_data['headers']\n    );\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n","Signs and encrypts emails using PGP\u002FGPG keys or X.509 certificates. Provides OpenPGP and S\u002FMIME functions via WordPress plugin API.",400,25921,92,16,"2021-05-25T19:04:00.000Z","5.7.15","4.4",[79,20,80,22,81],"email","pgp","security","https:\u002F\u002Fgithub.com\u002Ffabacab\u002Fwp-pgp-encrypted-emails","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-pgp-encrypted-emails.0.8.0.zip",85,{"slug":86,"name":86,"version":87,"author":86,"author_profile":88,"description":89,"short_description":90,"active_installs":91,"downloaded":92,"rating":47,"num_ratings":93,"last_updated":94,"tested_up_to":14,"requires_at_least":95,"requires_php":96,"tags":97,"homepage":100,"download_link":101,"security_score":25,"vuln_count":11,"unpatched_count":11,"last_vuln_date":26,"fetched_at":62},"wp2pgpmail","1.28","https:\u002F\u002Fprofiles.wordpress.org\u002Fwp2pgpmail\u002F","\u003Cp>With wp2pgpmail, your visitors can send you a PGP encrypted message very easily. A contact form will offer encryption for sending you confidental messages.\u003C\u002Fp>\n\u003Cp>Don’t have any PGP key? \u003Ca href=\"https:\u002F\u002Fwp2pgpmail.com\u002Fpgp-key-generator\u002F\" rel=\"nofollow ugc\">Try our online PGP key generator\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Get more features with \u003Ca href=\"https:\u002F\u002Fwp2pgpmail.com\" rel=\"nofollow ugc\">Gravity Forms PGP Encryption plugin\u003C\u002Fa>\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>If you are using \u003Ca href=\"http:\u002F\u002Fbit.ly\u002FGravityFormsWordPress\" rel=\"nofollow ugc\">Gravity Forms\u003C\u002Fa>, you can use the Pro version: \u003Ca href=\"https:\u002F\u002Fwp2pgpmail.com\" rel=\"nofollow ugc\">Gravity Forms PGP Encryption plugin\u003C\u002Fa>\u003C\u002Fp>\n\u003Cspan class=\"embed-youtube\" style=\"text-align:center; display: block;\">\u003Ciframe loading=\"lazy\" class=\"youtube-player\" width=\"750\" height=\"422\" src=\"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FBAi66orTOUs?version=3&rel=1&showsearch=0&showinfo=1&iv_load_policy=1&fs=1&hl=en-US&autohide=2&wmode=transparent\" allowfullscreen=\"true\" style=\"border:0;\" sandbox=\"allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox\">\u003C\u002Fiframe>\u003C\u002Fspan>\n\u003Cp>It’s working with \u003Ca href=\"http:\u002F\u002Fbit.ly\u002FGravityFormsWordPress\" rel=\"nofollow ugc\">Gravity Forms\u003C\u002Fa>, the best full featured contact form plugin for WordPress.\u003C\u002Fp>\n\u003Cp>With the paid version, you will get:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Additional Fields\u003C\u002Fli>\n\u003Cli>Unlimited Forms\u003C\u002Fli>\n\u003Cli>Nested Drag n’ Drop\u003C\u002Fli>\n\u003Cli>Advanced Email Configuration\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Check it at \u003Ca href=\"https:\u002F\u002Fwp2pgpmail.com\" rel=\"nofollow ugc\">https:\u002F\u002Fwp2pgpmail.com\u003C\u002Fa>. We are still working on the Free version.\u003C\u002Fp>\n\u003Cp>How does it work ?\u003C\u002Fp>\n\u003Cp>wp2pgpmail includes an OpenPGP Message Encryption System in Javascript, based on \u003Ca href=\"http:\u002F\u002Fwww.haneWIN.de\" rel=\"nofollow ugc\">Herbert Hanewinkel’s work\u003C\u002Fa>. Visitors enter a message in a form, encrypt it (with the PGP public key you entered in wp2pgpmail option settings), then an e-mail is sent to you (blog admin e-mail address). The message is encrypted locally on the visitor’s computer, so no data is transfered in clear !\u003C\u002Fp>\n\u003Cspan class=\"embed-youtube\" style=\"text-align:center; display: block;\">\u003Ciframe loading=\"lazy\" class=\"youtube-player\" width=\"750\" height=\"422\" src=\"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FnnY2xirKXkQ?version=3&rel=1&showsearch=0&showinfo=1&iv_load_policy=1&fs=1&hl=en-US&autohide=2&wmode=transparent\" allowfullscreen=\"true\" style=\"border:0;\" sandbox=\"allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox\">\u003C\u002Fiframe>\u003C\u002Fspan>\n\u003Cp>Is it secure ?\u003C\u002Fp>\n\u003Cul>\n\u003Cli>All code is implememented in readable Javascript.\u003C\u002Fli>\n\u003Cli>You can verify the source code.\u003C\u002Fli>\n\u003Cli>No binaries are loaded from a server or used embedded.\u003C\u002Fli>\n\u003Cli>No hidden transfer of plain text.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Supported languages :\u003C\u002Fp>\n\u003Cul>\n\u003Cli>English\u003C\u002Fli>\n\u003Cli>French\u003C\u002Fli>\n\u003Cli>German\u003C\u002Fli>\n\u003Cli>Spanish\u003C\u002Fli>\n\u003Cli>Estonian\u003C\u002Fli>\n\u003Cli>Greek\u003C\u002Fli>\n\u003Cli>Indonesian\u003C\u002Fli>\n\u003C\u002Ful>\n","A simple PGP Mail Form Plugin. Enter your PGP public key, then visitors will be able to send you PGP encrypted messages by mail from a form.",80,12163,5,"2026-02-23T11:04:00.000Z","2.9.2","5.6",[98,99,20,80,22],"contact-form","encrypt","http:\u002F\u002Fwp2pgpmail.com","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp2pgpmail.1.28.zip",{"slug":103,"name":104,"version":105,"author":106,"author_profile":107,"description":108,"short_description":109,"active_installs":11,"downloaded":110,"rating":11,"num_ratings":11,"last_updated":13,"tested_up_to":14,"requires_at_least":111,"requires_php":16,"tags":112,"homepage":13,"download_link":114,"security_score":25,"vuln_count":11,"unpatched_count":11,"last_vuln_date":26,"fetched_at":27},"cryptnote-secure-links","CryptNote Secure Links","1.0.0","Lucas Catão Moraes","https:\u002F\u002Fprofiles.wordpress.org\u002Fdolutech\u002F","\u003Cp>Create messages with expiration\u002Flimited views via the \u003Cstrong>CryptNote.pro\u003C\u002Fstrong> API without leaving WordPress.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Admin form to generate \u003Ccode>share_url\u003C\u002Fcode> and token via API.\u003C\u002Fli>\n\u003Cli>Option to replace all sent emails (\u003Ccode>wp_mail\u003C\u002Fcode>) with a secure link (attachments are removed).\u003C\u002Fli>\n\u003Cli>Customizable placeholders in the email body: \u003Ccode>{share_url}\u003C\u002Fcode>, \u003Ccode>{token}\u003C\u002Fcode>, \u003Ccode>{max_views}\u003C\u002Fcode>, \u003Ccode>{expire_minutes}\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>Support for optional password, expiration in minutes, and Markdown\u002FHTML flags.\u003C\u002Fli>\n\u003Cli>Configurable endpoint (default \u003Ccode>https:\u002F\u002Fcryptnote.pro\u002Fapi\u002Fv1\u003C\u002Fcode>) and optional \u003Ccode>X-API-Key\u003C\u002Fcode> header.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Privacy\u003C\u002Fh3>\n\u003Cp>This plugin uses the external \u003Cstrong>CryptNote\u003C\u002Fstrong> service to generate and host the secure link and token. When creating a link, the protected content and metadata (views, expiration, optional password) are sent to \u003Ccode>https:\u002F\u002Fcryptnote.pro\u002Fapi\u002Fv1\u003C\u002Fcode>. See the service’s privacy policy at https:\u002F\u002Fcryptnote.pro\u002Fprivacy.php?lang=en.\u003C\u002Fp>\n","Integrates CryptNote.pro to generate encrypted links directly from the WordPress dashboard and replace emails with secure links.",96,"5.8",[79,20,113,22,81],"links","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fcryptnote-secure-links.1.0.0.zip",{"slug":116,"name":117,"version":118,"author":119,"author_profile":120,"description":121,"short_description":122,"active_installs":11,"downloaded":123,"rating":11,"num_ratings":11,"last_updated":124,"tested_up_to":125,"requires_at_least":15,"requires_php":126,"tags":127,"homepage":131,"download_link":132,"security_score":73,"vuln_count":11,"unpatched_count":11,"last_vuln_date":26,"fetched_at":62},"encrypt-blogs","Encrypt Blogs","1.1.0","bokumin","https:\u002F\u002Fprofiles.wordpress.org\u002Fbokumin\u002F","\u003Cp>Encrypt Blogs is a WordPress plugin that allows you to encrypt specific content blocks in your posts and pages. It provides flexible time-based encryption with support for both PHP and GPG encryption methods.\u003C\u002Fp>\n\u003Ch4>Key Features\u003C\u002Fh4>\n\u003Cp>Time-based content encryption\u003Cbr \u002F>\nSupport for both PHP (AES-256-CBC) and GPG encryption\u003Cbr \u002F>\nMultiple display modes for encrypted content\u003Cbr \u002F>\nCustom Gutenberg block for easy content management\u003Cbr \u002F>\nFlexible date\u002Ftime format support\u003C\u002Fp>\n\u003Ch4>Display Modes\u003C\u002Fh4>\n\u003Cp>Hidden – Completely hide the encrypted content\u003Cbr \u002F>\nShow Encrypted – Display the encrypted text\u003Cbr \u002F>\nShow Message – Display a custom message\u003Cbr \u002F>\nRedacted – Show a redacted placeholder\u003C\u002Fp>\n\u003Ch4>Time Format Support\u003C\u002Fh4>\n\u003Cp>Supports various date\u002Ftime formats:\u003C\u002Fp>\n\u003Cp>Full format: “2024-03-25 14:30”\u003Cbr \u002F>\nDate only: “2024-03-25”\u003Cbr \u002F>\nMonth and day: “03-25”\u003Cbr \u002F>\nTime only: “14:30”\u003C\u002Fp>\n\u003Ch3>Usage\u003C\u002Fh3>\n\u003Cp>Create a new post or edit an existing one\u003Cbr \u002F>\nAdd the ‘Encrypted Content’ block\u003Cbr \u002F>\nEnter your content\u003Cbr \u002F>\nSet encryption parameters in the block settings:\u003C\u002Fp>\n\u003Cp>Start Date (optional)\u003Cbr \u002F>\nEnd Date (optional)\u003Cbr \u002F>\nDisplay Mode\u003C\u002Fp>\n\u003Cp>Publish or update your post\u003C\u002Fp>\n\u003Ch3>Configuration\u003C\u002Fh3>\n\u003Cp>Navigate to Settings > Encrypt Blogs\u003Cbr \u002F>\nChoose your preferred encryption method:\u003C\u002Fp>\n\u003Cp>PHP Encryption (AES-256-CBC)\u003Cbr \u002F>\nGPG Encryption\u003C\u002Fp>\n\u003Cp>Configure the chosen method:\u003C\u002Fp>\n\u003Cp>For PHP: Set a secure passphrase\u003Cbr \u002F>\nFor GPG: Add your public\u002Fprivate keys and passphrase\u003C\u002Fp>\n\u003Ch3>Development\u003C\u002Fh3>\n\u003Cp>GitHub repository: https:\u002F\u002Fgithub.com\u002Fbokumin\u002Fencrypt-blogs\u003Cbr \u002F>\nPlease report issues and contribute patches through GitHub\u003C\u002Fp>\n","Encrypt your blog content with time-based encryption using either PHP or GPG encryption methods.",875,"2024-11-07T08:34:00.000Z","6.6.5","7.2",[128,20,129,22,130],"content-protection","gpg-encryption","time-based-encryption","https:\u002F\u002Fgithub.com\u002Fbokumin\u002Fencrypt-blogs","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fencrypt-blogs.1.1.0.zip",{"attackSurface":134,"codeSignals":284,"taintFlows":300,"riskAssessment":422,"analyzedAt":429},{"hooks":135,"ajaxHandlers":197,"restRoutes":280,"shortcodes":281,"cronEvents":282,"entryPointCount":283,"unprotectedCount":11},[136,142,145,149,152,156,160,163,167,172,176,180,185,189,193],{"type":137,"name":138,"callback":139,"file":140,"line":141},"action","init","register_post_type","lawyer-locker.php",33,{"type":137,"name":138,"callback":143,"file":140,"line":144},"register_rewrite_rules",34,{"type":137,"name":146,"callback":147,"file":140,"line":148},"template_redirect","handle_locker_view",35,{"type":137,"name":146,"callback":150,"file":140,"line":151},"handle_lockbox_view",36,{"type":137,"name":153,"callback":154,"file":140,"line":155},"admin_menu","add_admin_menu",37,{"type":137,"name":157,"callback":158,"file":140,"line":159},"admin_enqueue_scripts","enqueue_admin_assets",38,{"type":137,"name":161,"callback":161,"file":140,"line":162},"add_meta_boxes",39,{"type":137,"name":164,"callback":165,"file":140,"line":166},"save_post_lawyer_locker","save_locker_meta",40,{"type":137,"name":168,"callback":169,"priority":170,"file":140,"line":171},"before_delete_post","cleanup_locker_data",10,67,{"type":137,"name":173,"callback":174,"file":140,"line":175},"wp_loaded","cleanup_old_lockbox_messages",68,{"type":137,"name":177,"callback":178,"priority":170,"file":140,"line":179},"manage_lawyer_locker_posts_custom_column","render_activity_column",69,{"type":181,"name":182,"callback":183,"priority":170,"file":140,"line":184},"filter","post_type_link","locker_permalink",70,{"type":181,"name":186,"callback":187,"file":140,"line":188},"query_vars","add_query_vars",71,{"type":181,"name":190,"callback":191,"file":140,"line":192},"add_menu_classes","add_locker_menu_bubble",72,{"type":181,"name":194,"callback":195,"file":140,"line":196},"manage_lawyer_locker_posts_columns","add_activity_column",73,[198,204,206,210,212,216,218,222,224,228,230,234,236,240,242,246,248,252,254,258,262,264,268,270,274,276],{"action":199,"nopriv":200,"callback":201,"hasNonce":202,"hasCapCheck":200,"file":140,"line":203},"lawyer_locker_save_encrypted_data",false,"ajax_save_encrypted_data",true,41,{"action":199,"nopriv":202,"callback":201,"hasNonce":202,"hasCapCheck":200,"file":140,"line":205},42,{"action":207,"nopriv":200,"callback":208,"hasNonce":202,"hasCapCheck":200,"file":140,"line":209},"lawyer_locker_get_encrypted_data","ajax_get_encrypted_data",43,{"action":207,"nopriv":202,"callback":208,"hasNonce":202,"hasCapCheck":200,"file":140,"line":211},44,{"action":213,"nopriv":200,"callback":214,"hasNonce":202,"hasCapCheck":200,"file":140,"line":215},"lawyer_locker_upload_file","ajax_upload_file",45,{"action":213,"nopriv":202,"callback":214,"hasNonce":202,"hasCapCheck":200,"file":140,"line":217},46,{"action":219,"nopriv":200,"callback":220,"hasNonce":202,"hasCapCheck":200,"file":140,"line":221},"lawyer_locker_get_files","ajax_get_files",47,{"action":219,"nopriv":202,"callback":220,"hasNonce":202,"hasCapCheck":200,"file":140,"line":223},48,{"action":225,"nopriv":200,"callback":226,"hasNonce":202,"hasCapCheck":200,"file":140,"line":227},"lawyer_locker_delete_file","ajax_delete_file",49,{"action":225,"nopriv":202,"callback":226,"hasNonce":202,"hasCapCheck":200,"file":140,"line":229},50,{"action":231,"nopriv":200,"callback":232,"hasNonce":202,"hasCapCheck":200,"file":140,"line":233},"lawyer_locker_log_activity","ajax_log_activity",51,{"action":231,"nopriv":202,"callback":232,"hasNonce":202,"hasCapCheck":200,"file":140,"line":235},52,{"action":237,"nopriv":200,"callback":238,"hasNonce":202,"hasCapCheck":200,"file":140,"line":239},"lawyer_locker_get_activity","ajax_get_activity",53,{"action":237,"nopriv":202,"callback":238,"hasNonce":202,"hasCapCheck":200,"file":140,"line":241},54,{"action":243,"nopriv":200,"callback":244,"hasNonce":202,"hasCapCheck":200,"file":140,"line":245},"lawyer_locker_save_lockbox","ajax_save_lockbox",55,{"action":243,"nopriv":202,"callback":244,"hasNonce":202,"hasCapCheck":200,"file":140,"line":247},56,{"action":249,"nopriv":200,"callback":250,"hasNonce":202,"hasCapCheck":200,"file":140,"line":251},"lawyer_locker_get_lockbox","ajax_get_lockbox",57,{"action":249,"nopriv":202,"callback":250,"hasNonce":202,"hasCapCheck":200,"file":140,"line":253},58,{"action":255,"nopriv":200,"callback":256,"hasNonce":202,"hasCapCheck":202,"file":140,"line":257},"lawyer_locker_get_client_name","ajax_get_client_name",59,{"action":259,"nopriv":200,"callback":260,"hasNonce":202,"hasCapCheck":200,"file":140,"line":261},"lawyer_locker_get_privilege_footer","ajax_get_privilege_footer",60,{"action":259,"nopriv":202,"callback":260,"hasNonce":202,"hasCapCheck":200,"file":140,"line":263},61,{"action":265,"nopriv":200,"callback":266,"hasNonce":202,"hasCapCheck":200,"file":140,"line":267},"lawyer_locker_verify_password","ajax_verify_password",62,{"action":265,"nopriv":202,"callback":266,"hasNonce":202,"hasCapCheck":200,"file":140,"line":269},63,{"action":271,"nopriv":200,"callback":272,"hasNonce":202,"hasCapCheck":200,"file":140,"line":273},"lawyer_locker_get_file_limits","ajax_get_file_limits",64,{"action":271,"nopriv":202,"callback":272,"hasNonce":202,"hasCapCheck":200,"file":140,"line":275},65,{"action":277,"nopriv":200,"callback":278,"hasNonce":202,"hasCapCheck":202,"file":140,"line":279},"lawyer_locker_mark_locker_read","ajax_mark_locker_read",66,[],[],[],26,{"dangerousFunctions":285,"sqlUsage":286,"outputEscaping":289,"fileOperations":11,"externalRequests":11,"nonceChecks":74,"capabilityChecks":93,"bundledLibraries":299},[],{"prepared":287,"raw":11,"locations":288},12,[],{"escaped":239,"rawEcho":290,"locations":291},3,[292,295,297],{"file":140,"line":293,"context":294},488,"raw output",{"file":140,"line":296,"context":294},675,{"file":140,"line":298,"context":294},1223,[],[301,324,344,356,366,378],{"entryPoint":302,"graph":303,"unsanitizedCount":60,"severity":323},"handle_locker_view (lawyer-locker.php:268)",{"nodes":304,"edges":320},[305,310,314],{"id":306,"type":307,"label":308,"file":140,"line":309},"n0","source","$_GET",276,{"id":311,"type":312,"label":313,"file":140,"line":309},"n1","transform","→ render_locker_page()",{"id":315,"type":316,"label":317,"file":140,"line":318,"wp_function":319},"n2","sink","echo() [XSS]",395,"echo",[321,322],{"from":306,"to":311,"sanitized":200},{"from":311,"to":315,"sanitized":200},"low",{"entryPoint":325,"graph":326,"unsanitizedCount":11,"severity":323},"render_settings_page (lawyer-locker.php:482)",{"nodes":327,"edges":341},[328,331,335,338],{"id":306,"type":307,"label":329,"file":140,"line":330},"$_POST (x2)",484,{"id":311,"type":316,"label":332,"file":140,"line":333,"wp_function":334},"update_option() [Settings Manipulation]",486,"update_option",{"id":315,"type":307,"label":336,"file":140,"line":337},"$_POST",485,{"id":339,"type":316,"label":317,"file":140,"line":340,"wp_function":319},"n3",526,[342,343],{"from":306,"to":311,"sanitized":202},{"from":315,"to":339,"sanitized":202},{"entryPoint":345,"graph":346,"unsanitizedCount":11,"severity":323},"ajax_get_files (lawyer-locker.php:969)",{"nodes":347,"edges":354},[348,350],{"id":306,"type":307,"label":336,"file":140,"line":349},974,{"id":311,"type":316,"label":351,"file":140,"line":352,"wp_function":353},"get_results() [SQLi]",981,"get_results",[355],{"from":306,"to":311,"sanitized":202},{"entryPoint":357,"graph":358,"unsanitizedCount":11,"severity":323},"ajax_get_activity (lawyer-locker.php:1051)",{"nodes":359,"edges":364},[360,362],{"id":306,"type":307,"label":336,"file":140,"line":361},1056,{"id":311,"type":316,"label":351,"file":140,"line":363,"wp_function":353},1063,[365],{"from":306,"to":311,"sanitized":202},{"entryPoint":367,"graph":368,"unsanitizedCount":11,"severity":323},"ajax_get_lockbox (lawyer-locker.php:1103)",{"nodes":369,"edges":376},[370,372],{"id":306,"type":307,"label":336,"file":140,"line":371},1111,{"id":311,"type":316,"label":373,"file":140,"line":374,"wp_function":375},"get_row() [SQLi]",1114,"get_row",[377],{"from":306,"to":311,"sanitized":202},{"entryPoint":379,"graph":380,"unsanitizedCount":60,"severity":323},"\u003Clawyer-locker> (lawyer-locker.php:0)",{"nodes":381,"edges":413},[382,385,386,387,388,390,392,394,396,398,400,402,407,409,411],{"id":306,"type":307,"label":383,"file":140,"line":384},"$_GET (x5)",273,{"id":311,"type":316,"label":317,"file":140,"line":318,"wp_function":319},{"id":315,"type":307,"label":329,"file":140,"line":330},{"id":339,"type":316,"label":332,"file":140,"line":333,"wp_function":334},{"id":389,"type":307,"label":336,"file":140,"line":337},"n4",{"id":391,"type":316,"label":317,"file":140,"line":340,"wp_function":319},"n5",{"id":393,"type":307,"label":329,"file":140,"line":349},"n6",{"id":395,"type":316,"label":351,"file":140,"line":352,"wp_function":353},"n7",{"id":397,"type":307,"label":336,"file":140,"line":371},"n8",{"id":399,"type":316,"label":373,"file":140,"line":374,"wp_function":375},"n9",{"id":401,"type":307,"label":336,"file":140,"line":361},"n10",{"id":403,"type":316,"label":404,"file":140,"line":405,"wp_function":406},"n11","get_var() [SQLi]",1243,"get_var",{"id":408,"type":307,"label":308,"file":140,"line":309},"n12",{"id":410,"type":312,"label":313,"file":140,"line":309},"n13",{"id":412,"type":316,"label":317,"file":140,"line":318,"wp_function":319},"n14",[414,415,416,417,418,419,420,421],{"from":306,"to":311,"sanitized":202},{"from":315,"to":339,"sanitized":202},{"from":389,"to":391,"sanitized":202},{"from":393,"to":395,"sanitized":202},{"from":397,"to":399,"sanitized":202},{"from":401,"to":403,"sanitized":202},{"from":408,"to":410,"sanitized":200},{"from":410,"to":412,"sanitized":200},{"summary":423,"deductions":424},"The 'lawyer-locker' plugin v0.1 exhibits a generally strong security posture based on the provided static analysis. The absence of dangerous functions, the use of prepared statements for all SQL queries, and a high percentage of properly escaped output are significant strengths. Furthermore, the plugin implements a commendable number of nonce and capability checks, suggesting an awareness of common WordPress security best practices. The vulnerability history being entirely clear also contributes to a positive initial impression.\n\nHowever, there are a few areas that warrant attention. The presence of two flows with unsanitized paths in the taint analysis indicates a potential for indirect vulnerabilities, even if they did not reach a critical or high severity in this specific analysis. These require careful examination to ensure no sensitive data can be manipulated or exposed indirectly. While the attack surface of 26 AJAX handlers is notable, the reported zero unprotected entry points is a crucial mitigation. The strength of this defense relies entirely on the effectiveness and completeness of those checks.\n\nIn conclusion, 'lawyer-locker' v0.1 demonstrates good security foundations with robust SQL and output handling practices and a clean vulnerability record. The main concern lies with the two unsanitized path flows, which, while not critical, represent potential vectors for subtle issues. The plugin's security is heavily dependent on the integrity of its authentication and authorization checks on the AJAX handlers.",[425,427],{"reason":426,"points":170},"Flows with unsanitized paths found",{"reason":428,"points":93},"Large AJAX attack surface (26 handlers)","2026-03-17T05:57:38.799Z",{"wat":431,"direct":444},{"assetPaths":432,"generatorPatterns":437,"scriptPaths":438,"versionParams":439},[433,434,435,436],"\u002Fwp-content\u002Fplugins\u002Flawyer-locker\u002Fassets\u002Fcss\u002Flawyer-locker-admin.css","\u002Fwp-content\u002Fplugins\u002Flawyer-locker\u002Fassets\u002Fjs\u002Flawyer-locker-admin.js","\u002Fwp-content\u002Fplugins\u002Flawyer-locker\u002Fassets\u002Fcss\u002Flawyer-locker-public.css","\u002Fwp-content\u002Fplugins\u002Flawyer-locker\u002Fassets\u002Fjs\u002Flawyer-locker-public.js",[],[434,436],[440,441,442,443],"lawyer-locker\u002Fassets\u002Fcss\u002Flawyer-locker-admin.css?ver=","lawyer-locker\u002Fassets\u002Fjs\u002Flawyer-locker-admin.js?ver=","lawyer-locker\u002Fassets\u002Fcss\u002Flawyer-locker-public.css?ver=","lawyer-locker\u002Fassets\u002Fjs\u002Flawyer-locker-public.js?ver=",{"cssClasses":445,"htmlComments":449,"htmlAttributes":454,"restEndpoints":457,"jsGlobals":472,"shortcodeOutput":476},[446,447,448],"lawyer-locker-admin-wrap","lawyer-locker-public-wrap","ll-lockbox-container",[450,451,452,453],"\u003C!-- Lawyer Locker Admin Wrapper -->","\u003C!-- Lawyer Locker Public Wrapper -->","\u003C!-- Lockbox Content Start -->","\u003C!-- Lockbox Content End -->",[455,456],"data-locker-id","data-lockbox-id",[458,459,460,461,462,463,464,465,466,467,468,469,470,471],"\u002Fwp-json\u002Flawyer-locker\u002Fv1\u002Fsave_encrypted_data","\u002Fwp-json\u002Flawyer-locker\u002Fv1\u002Fget_encrypted_data","\u002Fwp-json\u002Flawyer-locker\u002Fv1\u002Fupload_file","\u002Fwp-json\u002Flawyer-locker\u002Fv1\u002Fget_files","\u002Fwp-json\u002Flawyer-locker\u002Fv1\u002Fdelete_file","\u002Fwp-json\u002Flawyer-locker\u002Fv1\u002Flog_activity","\u002Fwp-json\u002Flawyer-locker\u002Fv1\u002Fget_activity","\u002Fwp-json\u002Flawyer-locker\u002Fv1\u002Fsave_lockbox","\u002Fwp-json\u002Flawyer-locker\u002Fv1\u002Fget_lockbox","\u002Fwp-json\u002Flawyer-locker\u002Fv1\u002Fget_client_name","\u002Fwp-json\u002Flawyer-locker\u002Fv1\u002Fget_privilege_footer","\u002Fwp-json\u002Flawyer-locker\u002Fv1\u002Fverify_password","\u002Fwp-json\u002Flawyer-locker\u002Fv1\u002Fget_file_limits","\u002Fwp-json\u002Flawyer-locker\u002Fv1\u002Fmark_locker_read",[473,474,475],"lawyerLockerAdmin","lawyerLockerPublic","lawyerLockerAjaxUrl",[]]