mirror of
https://github.com/bitcoin/bips.git
synced 2025-05-12 12:03:29 +00:00
Put BIP 75 in the right place in README, and clean up formatting a bit
This commit is contained in:
parent
9d86a41747
commit
19845126ec
@ -314,6 +314,12 @@ Those proposing changes should consider that ultimately consent may rest with th
|
|||||||
| Standard
|
| Standard
|
||||||
| Draft
|
| Draft
|
||||||
|-
|
|-
|
||||||
|
| [[bip-0075.mediawiki|75]]
|
||||||
|
| Out of Band Address Exchange using Payment Protocol Encryption
|
||||||
|
| Justin Newton, Matt David, Aaron Voisine, James MacWhyte
|
||||||
|
| Standard
|
||||||
|
| Draft
|
||||||
|
|-
|
||||||
| [[bip-0080.mediawiki|80]]
|
| [[bip-0080.mediawiki|80]]
|
||||||
| Hierarchy for Non-Colored Voting Pool Deterministic Multisig Wallets
|
| Hierarchy for Non-Colored Voting Pool Deterministic Multisig Wallets
|
||||||
| Justus Ranvier, Jimmy Song
|
| Justus Ranvier, Jimmy Song
|
||||||
@ -332,12 +338,6 @@ Those proposing changes should consider that ultimately consent may rest with th
|
|||||||
| Standard
|
| Standard
|
||||||
| Draft
|
| Draft
|
||||||
|-
|
|-
|
||||||
| [[bip-0075.mediawiki|75]]
|
|
||||||
| Out of Band Address Exchange using Payment Protocol Encryption
|
|
||||||
| Justin Newton, Matt David, Aaron Voisine and James MacWhyte
|
|
||||||
| Standard
|
|
||||||
| Draft
|
|
||||||
|-
|
|
||||||
| [[bip-0099.mediawiki|99]]
|
| [[bip-0099.mediawiki|99]]
|
||||||
| Motivation and deployment of consensus rule changes ([soft/hard]forks)
|
| Motivation and deployment of consensus rule changes ([soft/hard]forks)
|
||||||
| Jorge Timón
|
| Jorge Timón
|
||||||
|
@ -6,4 +6,4 @@ Add your extension below using tags starting at 1000 and submit a pull-req.
|
|||||||
| Field Number || Extension Name || Field Name || Description
|
| Field Number || Extension Name || Field Name || Description
|
||||||
|-
|
|-
|
||||||
| 1000 || [[https://example.com|(unassigned)]] || (unassigned) || (unassigned)
|
| 1000 || [[https://example.com|(unassigned)]] || (unassigned) || (unassigned)
|
||||||
|}
|
|}
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
This BIP is an extension to BIP 70 that provides two enhancements to the existing Payment Protocol.
|
This BIP is an extension to BIP 70 that provides two enhancements to the existing Payment Protocol.
|
||||||
|
|
||||||
# It allows the requester (Sender) of a Payment Request to voluntarily sign the original request and provide a certificate to allow the payee to know the identity of who they are transacting with.
|
# It allows the requester (Sender) of a Payment Request to voluntarily sign the original request and provide a certificate to allow the payee to know the identity of who they are transacting with.
|
||||||
|
|
||||||
# It encrypts the Payment Request that is returned, before handing it off to the SSL/TLS layer to prevent man in the middle viewing of the Payment Request details.
|
# It encrypts the Payment Request that is returned, before handing it off to the SSL/TLS layer to prevent man in the middle viewing of the Payment Request details.
|
||||||
|
|
||||||
@ -34,15 +34,15 @@ The motivation for defining this extension to the BIP70 Payment Protocol is to a
|
|||||||
|
|
||||||
The motivation for this extension to BIP70 is threefold:
|
The motivation for this extension to BIP70 is threefold:
|
||||||
|
|
||||||
# Ensure that the payment details can only be seen by the participants in the transaction, and not by any third party.
|
# Ensure that the payment details can only be seen by the participants in the transaction, and not by any third party.
|
||||||
|
|
||||||
# Enhance the Payment Protocol to allow for store and forward servers in order to allow, for example, mobile wallets to sign and serve Payment Requests.
|
# Enhance the Payment Protocol to allow for store and forward servers in order to allow, for example, mobile wallets to sign and serve Payment Requests.
|
||||||
|
|
||||||
# Allow a sender of funds the option of sharing their identity with the receiver. This information could then be used to:
|
# Allow a sender of funds the option of sharing their identity with the receiver. This information could then be used to:
|
||||||
|
|
||||||
#* Make Bitcoin logs more human readable
|
#* Make Bitcoin logs more human readable
|
||||||
#* Give the user the ability to decide who to release payment details to
|
#* Give the user the ability to decide who to release payment details to
|
||||||
#* Allow an entity such as a political campaign to ensure donors match regulatory and legal requirements
|
#* Allow an entity such as a political campaign to ensure donors match regulatory and legal requirements
|
||||||
#* Allow for an open standards based way for regulated financial entities to meet regulatory requirements
|
#* Allow for an open standards based way for regulated financial entities to meet regulatory requirements
|
||||||
#* Automate the active exchange of payment addresses, so static addresses and BIP32 X-Pubs can be avoided to maintain privacy and convenience
|
#* Automate the active exchange of payment addresses, so static addresses and BIP32 X-Pubs can be avoided to maintain privacy and convenience
|
||||||
|
|
||||||
@ -118,7 +118,6 @@ message EncryptedInvoiceRequest {
|
|||||||
required uint64 nonce = 5;
|
required uint64 nonce = 5;
|
||||||
optional bytes signature = 6;
|
optional bytes signature = 6;
|
||||||
optional bytes identifier = 7;
|
optional bytes identifier = 7;
|
||||||
|
|
||||||
}
|
}
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
@ -277,7 +276,7 @@ The process overview for using InvoiceRequests and receiving encrypted PaymentRe
|
|||||||
# The PaymentRequest is processed according to BIP70, including optional EncryptedPayment and EncryptedPaymentACK messages
|
# The PaymentRequest is processed according to BIP70, including optional EncryptedPayment and EncryptedPaymentACK messages
|
||||||
|
|
||||||
'''NOTE:''' See section [[#Initial_Public_Key_Retrieval_for_InvoiceRequest_Encryption|Initial Public Key Retrieval for InvoiceRequest Encryption]] below for possible options to retrieve Receiver InvoiceRequest public keys.
|
'''NOTE:''' See section [[#Initial_Public_Key_Retrieval_for_InvoiceRequest_Encryption|Initial Public Key Retrieval for InvoiceRequest Encryption]] below for possible options to retrieve Receiver InvoiceRequest public keys.
|
||||||
|
|
||||||
<img src="bip-0075/encrypted-invoice-request-process.png" alt="Flow diagram of Encrypted InvoiceRequest">
|
<img src="bip-0075/encrypted-invoice-request-process.png" alt="Flow diagram of Encrypted InvoiceRequest">
|
||||||
|
|
||||||
==Message Interaction Details==
|
==Message Interaction Details==
|
||||||
@ -334,7 +333,7 @@ Where used, '''nonce''' MUST be set to a non-repeating number AND MUST be chosen
|
|||||||
|
|
||||||
===InvoiceRequest Validation===
|
===InvoiceRequest Validation===
|
||||||
* Validate sender_public_key is a valid EC public key
|
* Validate sender_public_key is a valid EC public key
|
||||||
* The nonce MUST not be repeated. The service receiving the InvoiceRequest MAY use whatever method to make sure that the nonce is never repeated.
|
* The nonce MUST not be repeated. The service receiving the InvoiceRequest MAY use whatever method to make sure that the nonce is never repeated.
|
||||||
* Validate notification_url if set, contains characters deemed valid for a URL (avoiding XSS related characters, etc).
|
* Validate notification_url if set, contains characters deemed valid for a URL (avoiding XSS related characters, etc).
|
||||||
* If pki_type is None, InvoiceRequest is VALID
|
* If pki_type is None, InvoiceRequest is VALID
|
||||||
* If pki_type is x509+sha256 and signature is valid for the serialized InvoiceRequest where signature is set to "", InvoiceRequest is VALID
|
* If pki_type is x509+sha256 and signature is valid for the serialized InvoiceRequest where signature is set to "", InvoiceRequest is VALID
|
||||||
@ -360,7 +359,7 @@ Where used, '''nonce''' MUST be set to a non-repeating number AND MUST be chosen
|
|||||||
|
|
||||||
===ECDH Point Generation and AES-256 (CBC Mode) Setup===
|
===ECDH Point Generation and AES-256 (CBC Mode) Setup===
|
||||||
* Generate the '''secret point''' using [https://en.wikipedia.org/wiki/Elliptic_curve_Diffie–Hellman ECDH] using the local entity's private key and the remote entity's public key as inputs.
|
* Generate the '''secret point''' using [https://en.wikipedia.org/wiki/Elliptic_curve_Diffie–Hellman ECDH] using the local entity's private key and the remote entity's public key as inputs.
|
||||||
* Initialize [http://csrc.nist.gov/publications/nistpubs/800-90A/SP800-90A.pdf HMAC_DRBG]
|
* Initialize [http://csrc.nist.gov/publications/nistpubs/800-90A/SP800-90A.pdf HMAC_DRBG]
|
||||||
** Use '''secret point's''' X value for Entropy
|
** Use '''secret point's''' X value for Entropy
|
||||||
** Use the given message's nonce field for Nonce
|
** Use the given message's nonce field for Nonce
|
||||||
* Initialize AES-256 in CBC Mode
|
* Initialize AES-256 in CBC Mode
|
||||||
@ -414,11 +413,11 @@ Store & Forward servers MAY accept and/or overwrite EncryptedPayment messages un
|
|||||||
* Each ECC signature included in any message defined in this BIP MUST use the SHA-256 hashing algorithm and MUST be DER [ITU.X690.1994] encoded.
|
* Each ECC signature included in any message defined in this BIP MUST use the SHA-256 hashing algorithm and MUST be DER [ITU.X690.1994] encoded.
|
||||||
|
|
||||||
==Implementation==
|
==Implementation==
|
||||||
A reference implementation for a Store & Forward server supporting this proposal can be found here:
|
A reference implementation for a Store & Forward server supporting this proposal can be found here:
|
||||||
|
|
||||||
[https://github.com/netkicorp/addressimo Addressimo]
|
[https://github.com/netkicorp/addressimo Addressimo]
|
||||||
|
|
||||||
A reference client implementation can be found in the InvoiceRequest functional testing for Addressimo here:
|
A reference client implementation can be found in the InvoiceRequest functional testing for Addressimo here:
|
||||||
|
|
||||||
[https://github.com/netkicorp/addressimo/blob/master/functest/functest_ir.py InvoiceRequest Client Reference Implementation]
|
[https://github.com/netkicorp/addressimo/blob/master/functest/functest_ir.py InvoiceRequest Client Reference Implementation]
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user