diff --git a/39.md b/39.md index 26f9aab1..2bd99722 100644 --- a/39.md +++ b/39.md @@ -75,17 +75,19 @@ This can be located at `https://t.me/`. Identity: An OpenPGP fingerprint as described in the [openpgp4fpr URI scheme](https://metacode.biz/openpgp/openpgp4fpr), lowercased. -Proof: A signature of the text `Verifying that I control the following Nostr public key: ""` in base64 format, unwrapped. +Proof: A binary signature of the text `Verifying that I control the following Nostr public key: ""` converted to base64 format, unwrapped. -Public key material: The full OpenPGP public key (including `BEGIN`/`END` PEM markers) in base64 format, unwrapped. +Public key material: The full, binary, non-ASCII, OpenPGP public key converted to base64 format, unwrapped. #### Example +Using text `Verifying that I control the following Nostr public key: "npub1wf4pufsucer5va8g9p0rj5dnhvfeh6d8w0g6eayaep5dhps6rsgs43dgh9"` + ```jsonc { "kind": 0, "tags": [ - ["i", "openpgp4fpr:1a04e0f1a78d982bd8885b7eb325a9c5f70849d0", "LS0tLS1CRUdJTiBQR1AgTUVTU0FHRS0tLS0tCgpvd0did012TXdDVzJXWFhsMGU4Y25oY1lUeTlJWWtpVGw0bHpxbFFvemt6UHk4eExWeWpKeUN4V3lFMHRMazVNClQxWHdWRWpPejB2TExNb0ZDaWVXUUxnbFJmazVRRzZxUWtGUlpsbGlTYXBDZG1xbFFscCtFVmpNTDcrNHBFaWgKb0RRcEp6TVpMSkVIWkJ1V3A1a1VsS1lWbHlhbkZwbVdKVnFrV3hZWUZHV1pwdVJsbEtXbFpwaWxXSlFicEp1bApKbFltcGhhWXBtUVVGSnNWRmFjWG14aW5wR2RZY25XVXNqQ0ljVEhJaWlteVNMRTgrTGk4ZDRiMmpZN29PcGdQCldKbEF6bWZnNGhTQWlTU0pNVExjL2E3YmRtZUx3S0dMZWs2NkRTcDYvNmRmMzl6Nk5pN1E1dmcxLytCU0NRY1oKUm9ZOUwvN2NhWW05WnRZN2FkNm1GMy95ak83OVZqbWhZZmF4bm1mNlFaYldDM0lNQUE9PQo9ZXkyagotLS0tLUVORCBQR1AgTUVTU0FHRS0tLS0tCg", "LS0tLS1CRUdJTiBQR1AgUFVCTElDIEtFWSBCTE9DSy0tLS0tCgptRE1FWmdIZE94WUpLd1lCQkFIYVJ3OEJBUWRBNnBaZ2RzbUR2aVJGNDVDYys5TUJiK3VkUURZZ2ZHRjZrQkJVCk1CeUd4S2EwRjJaeVlXNTZZWEFnUEY5QVpuSmhibnBoY0M1amIyMCtpSk1FRXhZS0FEc1dJUVFhQk9EeHA0MlkKSzlpSVczNnpKYW5GOXdoSjBBVUNaZ0hkT3dJYkF3VUxDUWdIQWdJaUFnWVZDZ2tJQ3dJRUZnSURBUUllQndJWApnQUFLQ1JDekphbkY5d2hKMEw5R0FRQ3VFUFF0aW9EdGlKaWNVSGw4S0RqU0dmRU1laEFWdjZsTGJuZDBTRjN6Ci9BRCtQZWJCcFk3YkwvakY4QnViaU8rVm9nbUhsa2NGZ3h5V2ZEMDYwMDAwb0FvPQo9OWRBUAotLS0tLUVORCBQR1AgUFVCTElDIEtFWSBCTE9DSy0tLS0tCg"], + ["i", "openpgp4fpr:1a04e0f1a78d982bd8885b7eb325a9c5f70849d0", "owGbwMvMwCW2WXXl0e8cnhcYTzcmMaRNrekJSy3KTKvMzEtXKMlILFHwVEjOzyspys8BclMV0vJzcvLLQZJ++cUlRQoFpUk5mckK2amVVgpKeUCeYXmaSUFpWnFpcmqRaVmiRbplgUFRlmlKXkZZWmqGWYpFuUG6WWpiZWJqgWlKRkGxWVFxerGJcUp6hqUSV0cpC4MYF4OsmCKLFMuDj8t7Z2jf6IiugzmRlQnkPgYuTgGYyPY+hv9+FpdPrH+Zwn+hW5PfqcSoW2vFk08zM0xNtfXL7jRdmcLNyLB/Z3/a2cryx7NfyazK+Z/w2aWqcG+tiFz5lMtRUZuDlvEAAA==", "mDMEZgHdOxYJKwYBBAHaRw8BAQdA6pZgdsmDviRF45Cc+9MBb+udQDYgfGF6kBBUMByGxKa0F2ZyYW56YXAgPF9AZnJhbnphcC5jb20+iJMEExYKADsWIQQaBODxp42YK9iIW36zJanF9whJ0AUCZgHdOwIbAwULCQgHAgIiAgYVCgkICwIEFgIDAQIeBwIXgAAKCRCzJanF9whJ0L9GAQCuEPQtioDtiJicUHl8KDjSGfEMehAVv6lLbnd0SF3z/AD+PebBpY7bL/jF8BubiO+VogmHlkcFgxyWfD060000oAo="], // ... ], // ... @@ -95,13 +97,13 @@ Public key material: The full OpenPGP public key (including `BEGIN`/`END` PEM ma Example command to obtain a signature: ```bash -echo 'Verifying that I control the following Nostr public key: ""' | gpg --sign --armor | base64 +echo -n 'Verifying that I control the following Nostr public key: ""' | gpg --sign | base64 ``` Example command to export the public key: ```bash -gpg --armor --export name@example.com | base64 +gpg --export name@example.com | base64 ``` ### `x509` @@ -110,15 +112,17 @@ Identity: The X.509 certificate's SHA-256 fingerprint, lowercased. Proof: A signature of the text `Verifying that I control the following Nostr public key: ""` in base64 format, unwrapped. -Public key material: The full public key (including `BEGIN`/`END` PEM markers) of the certificate in base64 format, unwrapped. +Public key material: The full, binary, DER-formatted public key of the certificate converted to base64 format, unwrapped. #### Example +Using text `Verifying that I control the following Nostr public key: "npub1wf4pufsucer5va8g9p0rj5dnhvfeh6d8w0g6eayaep5dhps6rsgs43dgh9"` + ```jsonc { "kind": 0, "tags": [ - ["i", "x509:3220c353a73cfbd0c2f3052471c445324cf452bcba26de1c473a52fe5c44e1d6", "DRhQobBXnYFijFjJFZNWiAstqDv+8OACMQIzh+KKw0XS1PW869alYSW4erTUx8xlymlpMoC9et5+kLcfkOXf9jF2UVv5R1JCEGwD5L3/04OtT97h9CftPy1pvuYV6mhja3Ccv2RKGg7Hk99VlpQtFjtgbmCTxaXONGNhYbR/EL6aCEvKfyuuYyodtWTyo1Ys/R6eF7dqFPrDQ/rQ5W14Jmfxhvgn0SW83WqFy/d1A6AQqrku1ZWcHqk41Xaj72A5VmYY5bIe5NTTPTFVz6WhHkx452iZ9w6YlEz2PGzYlUAwq0arpXsD8BJrfBrTj9t+PMRvTV+Sw50Hgu4Ajl9waw==", "LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF0cDczdXhiZGdkK3ZKNTZPWGM3dwpWZHQ2aDlwL282cDNBMDNub2ErR2F3TVpSMUVpbi8wMnZlaU54dHZqM3V3emFxazJRTFEwUkRlMnNiMnVHZ0RFCitEc1RONEdOb1JRVndGQUJramp3VlpIa0lnc1c3Q3o3dFBCTW5aRjBRT3Ixa1NwR09wL0crUDJUUHFvS0o4cXQKU0xnZzBQdW5CbHRxeEhtWFlPQXVicWlHaDRmdEt3UmFpQWh0MFQxOFJiZnNvY21XR1RwclYzS1BsalNxMWxveQpjSEx3QnROT3ZQdVhsMzl4cXExek1xTmFaTXpBbFdGeU12dmllMmU3ZWJFakdjY3pLSy9jWER0RzFNb1lIV0RvCndiQWdtemhWa2JFakJRREVPUWdGWmtiTURXRUpUemZlRVJNUzU5TU1PaTVrbTBHejVaalhRWHlhSTNFN1FadlgKUVFJREFRQUIKLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tCg=="], + ["i", "x509:99e33b0c2d07e75fcd9df7e40e886646ff667e3aa6648e1a1160b036cf2b9320", "MEQCIBPBFh0cXoYYv87ncjfTs+RrGKkJ2u6Q9WsmLUjxPJ5MAiBfjY3VY78DyVK1LeOrHKdfXXUWni273B46lcKiagKsOg==", "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEH/reUjCQlypniNHFvJaW0eBAek57CEKhDOYBQp+f0GPOkooe0xLtHHmn/2cGoxvbXAjpvFkjJLXm2wcXMyB1fg=="], // ... ], // ... @@ -131,22 +135,24 @@ Example command to find the SHA-256 fingerprint of the certificate from a keysto keytool -list -keystore example.keystore ``` +Example of removing non-hexadecimal characters and lowercasing from the previous output: + +```bash +echo -n "99:E3:3B:0C:2D:07:E7:5F:CD:9D:F7:E4:0E:88:66:46:FF:66:7E:3A:A6:64:8E:1A:11:60:B0:36:CF:2B:93:20" | tr -d -c '0-9A-Fa-f' | tr '[:upper:]' '[:lower:]' +``` + Example commands to extract the private key and sign the message: ```bash keytool -importkeystore -srckeystore example.keystore -destkeystore example.p12 -deststoretype pkcs12 -openssl pkcs12 -in example.p12 -nocerts -nodes -out privatekey.pem +openssl pkcs12 -in example.p12 -nocerts -noenc -out privatekey.pem -echo 'Verifying that I control the following Nostr public key: ""' | openssl dgst -sha256 -sign privatekey.pem | openssl base64 -A +echo -n 'Verifying that I control the following Nostr public key: ""' | openssl dgst -sha256 -binary -sign privatekey.pem | openssl base64 -A ``` -Example commands to extract the public key: +Example command to extract the public key: ```bash -openssl rsa -in privatekey.pem -pubout | base64 - -// or - -openssl ec -in privatekey.pem -pubout | base64 +openssl rsa -in privatekey.pem -outform der -pubout | base64 ``` \ No newline at end of file