mirror of
https://github.com/nostr-protocol/nips.git
synced 2024-11-13 23:39:08 -05:00
Update spec to always use binary format before base64
This commit is contained in:
parent
67755c4ddd
commit
385ce170e8
36
39.md
36
39.md
|
@ -75,17 +75,19 @@ This can be located at `https://t.me/<proof>`.
|
|||
|
||||
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: "<npub encoded public key>"` in base64 format, unwrapped.
|
||||
Proof: A binary signature of the text `Verifying that I control the following Nostr public key: "<npub encoded 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: "<npub encoded public key>"' | gpg --sign --armor | base64
|
||||
echo -n 'Verifying that I control the following Nostr public key: "<npub encoded 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: "<npub encoded 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: "<npub encoded public key>"' | openssl dgst -sha256 -sign privatekey.pem | openssl base64 -A
|
||||
echo -n 'Verifying that I control the following Nostr public key: "<npub encoded 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
|
||||
```
|
Loading…
Reference in New Issue
Block a user