Changeset 28 for trunk/standards
- Timestamp:
- 12/19/07 17:19:45 (4 years ago)
- Location:
- trunk/standards
- Files:
-
- 6 modified
-
messages/DSDB.to.wallet.txt (modified) (3 diffs)
-
messages/IS.to.wallet.txt (modified) (6 diffs)
-
messages/all.txt (modified) (13 diffs)
-
messages/wallet.to.wallet.txt (modified) (3 diffs)
-
protocol-containers.txt (modified) (7 diffs)
-
protocol.txt (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/standards/messages/DSDB.to.wallet.txt
r19 r28 4 4 5 5 ================= 6 = LOCK_COINS =7 = UNLOCK_COINS =6 = LOCK_COINS = 7 = UNLOCK_COINS = 8 8 ================= 9 9 … … 12 12 13 13 Wallet: 14 LOCK_COINS_REQUEST #key_id_of_DSDB #hex_string(transaction_id) #hex_string(#number_of_obfuscated_blanks)15 #key_identifier1 #encrypted_serial116 #key_identifier2 #encrypted_serial217 Prior:Hello18 Follow:LOCK_COINS_ACCEPT19 LOCK_COINS_FAILURE14 LOCK_COINS_REQUEST #key_id_of_DSDB #hex_string(transaction_id) #hex_string(#number_of_obfuscated_blanks) 15 #key_identifier1 #encrypted_serial1 16 #key_identifier2 #encrypted_serial2 17 Prior: Hello 18 Follow: LOCK_COINS_ACCEPT 19 LOCK_COINS_FAILURE 20 20 21 21 DSDB: 22 LOCK_COINS_ACCEPT #hex_string(transaction_id) TIME(lock_expires)23 Prior:LOCK_COINS_REQUEST24 Follow:Goodbye22 LOCK_COINS_ACCEPT #hex_string(transaction_id) TIME(lock_expires) 23 Prior: LOCK_COINS_REQUEST 24 Follow: Goodbye 25 25 26 LOCK_COINS_FAILURE #hex_string(transaction_id) #hex_string(number_of_failures)27 #key_identifier1 #encrypted_serial1 "Reason 1"28 #key_identifier2 #encrypted_serial2 "Reason 2"29 Reasons:30 Key ID of DSDB is unknown or expiredPermanant31 Key ID of blank is unknown or expiredPermanant32 Decryption of serial failedPermanant33 Serial already redeemedPermanant34 Serial locked (not spent)Temporary35 Prior:LOCK_COINS_REQUEST36 Follow:Goodbye26 LOCK_COINS_FAILURE #hex_string(transaction_id) #hex_string(number_of_failures) 27 #key_identifier1 #encrypted_serial1 "Reason 1" 28 #key_identifier2 #encrypted_serial2 "Reason 2" 29 Reasons: 30 Key ID of DSDB is unknown or expired Permanant 31 Key ID of blank is unknown or expired Permanant 32 Decryption of serial failed Permanant 33 Serial already redeemed Permanant 34 Serial locked (not spent) Temporary 35 Prior: LOCK_COINS_REQUEST 36 Follow: Goodbye 37 37 38 38 … … 42 42 43 43 Wallet: 44 UNLOCK_COINS_REQUEST #hex_string(transaction_id)45 Prior:Hello46 Follow:UNLOCK_COINS_PASS47 UNLOCK_COINS_FAILURE44 UNLOCK_COINS_REQUEST #hex_string(transaction_id) 45 Prior: Hello 46 Follow: UNLOCK_COINS_PASS 47 UNLOCK_COINS_FAILURE 48 48 49 49 DSDB: 50 50 UNLOCK_COINS_PASS 51 Prior:UNLOCK_COINS_REQUEST52 Follow:Goodbye53 54 UNLOCK_COINS_FAILURE #hex_string(transaction_id) "Reason"55 Reasons:56 Unknown transaction_id57 Transaction already completed58 Lock expired *Not really a failure...*59 Prior:UNLOCK_COINS_REQUEST60 Follow:Goodbye51 Prior: UNLOCK_COINS_REQUEST 52 Follow: Goodbye 53 54 UNLOCK_COINS_FAILURE #hex_string(transaction_id) "Reason" 55 Reasons: 56 Unknown transaction_id 57 Transaction already completed 58 Lock expired *Not really a failure...* 59 Prior: UNLOCK_COINS_REQUEST 60 Follow: Goodbye -
trunk/standards/messages/IS.to.wallet.txt
r19 r28 4 4 5 5 ===================== 6 = MINTING_KEY =7 = MINT =8 = FETCH_MINTED =9 = DSDB_KEY =10 = REDEEM_COINS =6 = MINTING_KEY = 7 = MINT = 8 = FETCH_MINTED = 9 = DSDB_KEY = 10 = REDEEM_COINS = 11 11 ===================== 12 12 … … 15 15 16 16 Wallet: 17 MINTING_KEY_FETCH_DENOMINATION #string(denomination)18 Prior:Hello19 Follow:MINTING_KEY_PASS20 MINTING_KEY_FAILURE21 22 MINTING_KEY_FETCH_KEYID #hexstring(key_id)23 Prior:Hello24 Follow:MINTING_KEY_PASS25 MINTING_KEY_FAILURE17 MINTING_KEY_FETCH_DENOMINATION #string(denomination) 18 Prior: Hello 19 Follow: MINTING_KEY_PASS 20 MINTING_KEY_FAILURE 21 22 MINTING_KEY_FETCH_KEYID #hexstring(key_id) 23 Prior: Hello 24 Follow: MINTING_KEY_PASS 25 MINTING_KEY_FAILURE 26 26 27 27 IS: 28 MINTING_KEY_PASS keycertificate29 Prior:MINTING_KEY_FETCH_DENOMINATION30 MINTING_KEY_FETCH_KEYID31 Follow:Goodbye32 33 MINTING_KEY_FAILURE "Reason"34 Reasons:35 Unknown denomination36 Unknown key_id37 Prior:MINTING_KEY_FETCH_DENOMINATION38 MINTING_KEY_FETCH_KEYID39 Follow:Goodbye28 MINTING_KEY_PASS keycertificate 29 Prior: MINTING_KEY_FETCH_DENOMINATION 30 MINTING_KEY_FETCH_KEYID 31 Follow: Goodbye 32 33 MINTING_KEY_FAILURE "Reason" 34 Reasons: 35 Unknown denomination 36 Unknown key_id 37 Prior: MINTING_KEY_FETCH_DENOMINATION 38 MINTING_KEY_FETCH_KEYID 39 Follow: Goodbye 40 40 41 41 … … 45 45 46 46 Wallet: 47 MINT_REQUEST #base64(request_id) #hex_string(number_of_blinds)48 #key_id(blind1) #base64(blind1)49 #key_id(blind2) #base64(blind2)50 Prior:Hello51 Follow:MINT_REJECT52 MINT_ACCEPT47 MINT_REQUEST #base64(request_id) #hex_string(number_of_blinds) 48 #key_id(blind1) #base64(blind1) 49 #key_id(blind2) #base64(blind2) 50 Prior: Hello 51 Follow: MINT_REJECT 52 MINT_ACCEPT 53 53 54 54 IS: 55 MINT_REJECT #hex_string(number_of_rejected_blinds)56 #key_id(blind1) "Reason1"57 #key_id(blind2) "Reason2"58 Reasons:59 Unknown key_id60 Unable to blind61 Question: if the IS doesn't have the minting key, use a similar key to test?62 Prior:MINT_REQUEST63 Follow:Goodbye55 MINT_REJECT #hex_string(number_of_rejected_blinds) 56 #key_id(blind1) "Reason1" 57 #key_id(blind2) "Reason2" 58 Reasons: 59 Unknown key_id 60 Unable to blind 61 Question: if the IS doesn't have the minting key, use a similar key to test? 62 Prior: MINT_REQUEST 63 Follow: Goodbye 64 64 65 MINT_ACCEPT #base64(request_id)66 Prior:MINT_REQUEST67 Follow: Goodbye65 MINT_ACCEPT #base64(request_id) 66 Prior: MINT_REQUEST 67 Follow: Goodbye 68 68 69 69 … … 73 73 74 74 Wallet: 75 FETCH_MINTED_REQUEST #base64(request_id)76 Prior:Hello77 Follow:FETCH_MINTED_FAILURE78 FETCH_MINTED_WAIT79 FETCH_MINTED_ACCEPT75 FETCH_MINTED_REQUEST #base64(request_id) 76 Prior: Hello 77 Follow: FETCH_MINTED_FAILURE 78 FETCH_MINTED_WAIT 79 FETCH_MINTED_ACCEPT 80 80 81 81 82 82 IS: 83 FETCH_MINTED_FAILURE #base64(request_id) "Reason"84 Reasons:85 Request not credited86 Note: this message may be a temporary failure (FETCH_MINTED_WAIT)87 Unknown request_id88 Unable to blind (note: redundant? maybe not for all signatures)89 Prior:FETCH_MINTED_REQUEST90 Follow:Goodbye91 92 FETCH_MINTED_WAIT #base64(request_id) "Reason"93 Reasons:94 Not yet minted95 Request not credited96 Note: this message may be a permanant failure (FETCH_MINTED_FAILURE)97 Prior:FETCH_MINTED_REQUEST98 Follow:Goodbye83 FETCH_MINTED_FAILURE #base64(request_id) "Reason" 84 Reasons: 85 Request not credited 86 Note: this message may be a temporary failure (FETCH_MINTED_WAIT) 87 Unknown request_id 88 Unable to blind (note: redundant? maybe not for all signatures) 89 Prior: FETCH_MINTED_REQUEST 90 Follow: Goodbye 91 92 FETCH_MINTED_WAIT #base64(request_id) "Reason" 93 Reasons: 94 Not yet minted 95 Request not credited 96 Note: this message may be a permanant failure (FETCH_MINTED_FAILURE) 97 Prior: FETCH_MINTED_REQUEST 98 Follow: Goodbye 99 99 100 FETCH_MINTED_ACCEPT #base64(request_id) #hex_string(number_of_blinds)101 #base64(signature_of_blind1)102 #base64(signature_of_blind2)103 Prior:FETCH_MINTED_REQUEST104 Follow:Goodbye100 FETCH_MINTED_ACCEPT #base64(request_id) #hex_string(number_of_blinds) 101 #base64(signature_of_blind1) 102 #base64(signature_of_blind2) 103 Prior: FETCH_MINTED_REQUEST 104 Follow: Goodbye 105 105 106 106 … … 111 111 Wallet: 112 112 DSDB_KEY_REQUEST 113 Prior:Hello114 Follow: DSDB_KEY_PASS113 Prior: Hello 114 Follow: DSDB_KEY_PASS 115 115 116 116 IS: 117 DSDB_KEY_PASS keycertificate118 Prior:DSDB_KEY_REQUEST119 Follow: Goodbye117 DSDB_KEY_PASS keycertificate 118 Prior: DSDB_KEY_REQUEST 119 Follow: Goodbye 120 120 121 121 … … 125 125 126 126 Wallet: 127 REDEEM_COINS_REQUEST #hex_string(transaction_id) "#string(target)" #hex_string(number_of_coins)128 #base64(coin1)129 #base64(coin2)130 Targets:131 Strings which refer to a specific target for the redeeming of the coins.132 i.e. an account somewhere, a request for more coins, etc.133 The only required defined target is for another transaction to the mint.134 MINT_REQUEST=#string(request_id)135 Prior:Hello136 Follow:REDEEM_COINS_REJECT137 REDEEM_COINS_ACCEPT127 REDEEM_COINS_REQUEST #hex_string(transaction_id) "#string(target)" #hex_string(number_of_coins) 128 #base64(coin1) 129 #base64(coin2) 130 Targets: 131 Strings which refer to a specific target for the redeeming of the coins. 132 i.e. an account somewhere, a request for more coins, etc. 133 The only required defined target is for another transaction to the mint. 134 MINT_REQUEST=#string(request_id) 135 Prior: Hello 136 Follow: REDEEM_COINS_REJECT 137 REDEEM_COINS_ACCEPT 138 138 IS: 139 REDEEM_COINS_REJECT #hex_string(number_of_coins)140 #base64(coin1) "Reason1"141 #base64(coin2) "Reason2"142 Reasons:143 Unknown key_id144 Coin expired145 Coin already redeemed146 Invalid coin147 Unknown target148 Note: Can be used if Mint requires request_id to already be awaiting minting149 Prior:REDEEM_COINS_REQUEST150 Follow:Goodbye139 REDEEM_COINS_REJECT #hex_string(number_of_coins) 140 #base64(coin1) "Reason1" 141 #base64(coin2) "Reason2" 142 Reasons: 143 Unknown key_id 144 Coin expired 145 Coin already redeemed 146 Invalid coin 147 Unknown target 148 Note: Can be used if Mint requires request_id to already be awaiting minting 149 Prior: REDEEM_COINS_REQUEST 150 Follow: Goodbye 151 151 152 152 REDEEM_COINS_ACCEPT 153 Prior:REDEEM_COINS_REQUEST154 Follow: Goodbye153 Prior: REDEEM_COINS_REQUEST 154 Follow: Goodbye -
trunk/standards/messages/all.txt
r19 r28 2 2 3 3 4 Wallet & Wallet Wallet & ISWallet & DSDB5 6 ============= ======================================7 = BLANK = = MINTING_KEY = = LOCK_COINS=8 = COINS = = MINT = = UNLOCK_COINS=9 ============= = FETCH_MINTED ==================10 = DSDB_KEY=11 = REDEEM_COINS=12 =====================13 14 Prior: All messages between two entities that can occur directly before this one15 Follow: All messages between two entities that can occur directly after this one16 17 Hello is the initial handshake between two entities or the state after a Goodbye18 Goodbye is the end of a transaction, although also a Hello for a new transaction4 Wallet & Wallet Wallet & IS Wallet & DSDB 5 6 ============= ===================== ================= 7 = BLANK = = MINTING_KEY = = LOCK_COINS = 8 = COINS = = MINT = = UNLOCK_COINS = 9 ============= = FETCH_MINTED = ================= 10 = DSDB_KEY = 11 = REDEEM_COINS = 12 ===================== 13 14 Prior: All messages between two entities that can occur directly before this one 15 Follow: All messages between two entities that can occur directly after this one 16 17 Hello is the initial handshake between two entities or the state after a Goodbye 18 Goodbye is the end of a transaction, although also a Hello for a new transaction 19 19 20 20 ============================================================================ … … 26 26 27 27 ============= 28 = BLANK =29 = COINS =28 = BLANK = 29 = COINS = 30 30 ============= 31 31 … … 34 34 35 35 A: 36 BLANK_PRESENT #hex_string(number_of_blanks)37 blank138 blank239 Prior:Hello40 Follow:BLANK_FAILURE41 BLANK_REJECT42 BLANK_ACCEPT36 BLANK_PRESENT #hex_string(number_of_blanks) 37 blank1 38 blank2 39 Prior: Hello 40 Follow: BLANK_FAILURE 41 BLANK_REJECT 42 BLANK_ACCEPT 43 43 44 44 B: 45 BLANK_FAILURE #hex_string(number_of_failures)46 #base64(encrypted serial of blank1) "Reason1"47 #base64(encrypted serial of blank2) "Reason2"48 Reasons:49 Malformed blank50 Unknown issuer51 Note: Also used for an untrusted issuer52 Prior:BLANK_PRESENT53 Follow:Goodbye54 55 BLANK_FAILURE #hex_string(0) "reason"56 Reason:57 Cancelled58 Prior:BLANK_PRESENT59 Follow:Goodbye60 61 62 BLANK_REJECT #hex_string(number_of_failures)63 #base64(encrypted serial of blank1) "Reason1"64 #base64(encrypted serial of blank2) "Reason2"65 Reasons:66 DSDB: Key ID of DSDB is unknown or expiredPermanant67 DSDB: Key ID of blank is unknown or expiredPermanant68 DSDB: Decryption of serial failedPermanant69 DSDB: Serial already redeemedPermanant70 DSDB: Serial locked (not spent)Temporary71 Prior:BLANK_PRESENT72 Follow:Goodbye73 74 BLANK_REJECT #hex_string(0) "reason"75 Reasons:76 Cancelled77 Prior:BLANK_PRESENT78 BLANK_ACCEPT (Message from self)79 Follow:Goodbye45 BLANK_FAILURE #hex_string(number_of_failures) 46 #base64(encrypted serial of blank1) "Reason1" 47 #base64(encrypted serial of blank2) "Reason2" 48 Reasons: 49 Malformed blank 50 Unknown issuer 51 Note: Also used for an untrusted issuer 52 Prior: BLANK_PRESENT 53 Follow: Goodbye 54 55 BLANK_FAILURE #hex_string(0) "reason" 56 Reason: 57 Cancelled 58 Prior: BLANK_PRESENT 59 Follow: Goodbye 60 61 62 BLANK_REJECT #hex_string(number_of_failures) 63 #base64(encrypted serial of blank1) "Reason1" 64 #base64(encrypted serial of blank2) "Reason2" 65 Reasons: 66 DSDB: Key ID of DSDB is unknown or expired Permanant 67 DSDB: Key ID of blank is unknown or expired Permanant 68 DSDB: Decryption of serial failed Permanant 69 DSDB: Serial already redeemed Permanant 70 DSDB: Serial locked (not spent) Temporary 71 Prior: BLANK_PRESENT 72 Follow: Goodbye 73 74 BLANK_REJECT #hex_string(0) "reason" 75 Reasons: 76 Cancelled 77 Prior: BLANK_PRESENT 78 BLANK_ACCEPT (Message from self) 79 Follow: Goodbye 80 80 81 81 BLANK_ACCEPT 82 Note:After ACCEPT, a REJECT #hex_string(0) can be given to abort the transaction83 Prior:BLANK_PRESENT84 Follow:COINS_REDEEM85 BLANK_REJECT (Message from self)82 Note: After ACCEPT, a REJECT #hex_string(0) can be given to abort the transaction 83 Prior: BLANK_PRESENT 84 Follow: COINS_REDEEM 85 BLANK_REJECT (Message from self) 86 86 87 87 … … 91 91 92 92 A: 93 COINS_REDEEM #hex_string(number_of)94 #base64(coin1)95 #base64(coin2)96 Prior:BLANK_ACCEPT97 Follow:COINS_REJECT98 COINS_ACCEPT93 COINS_REDEEM #hex_string(number_of) 94 #base64(coin1) 95 #base64(coin2) 96 Prior: BLANK_ACCEPT 97 Follow: COINS_REJECT 98 COINS_ACCEPT 99 99 100 100 B: 101 COINS_REJECT #hex_string(number_of)102 #base64(coin1) "Reason1"103 #base64(coin2) "Reason2"104 Reasons:105 Invalid coin106 Unknown coin107 Note: Used when the coin we are given is different than the blank108 Prior:COINS_REDEEM109 Follow: COINS_REDEEM110 Goodbye111 112 COINS_REJECT #hex_string(0) "Reason"113 Reasons:114 *I can't think of anything valid*115 Prior:COINS_REDEEM116 Follow:COINS_REDEEM117 Goodbye101 COINS_REJECT #hex_string(number_of) 102 #base64(coin1) "Reason1" 103 #base64(coin2) "Reason2" 104 Reasons: 105 Invalid coin 106 Unknown coin 107 Note: Used when the coin we are given is different than the blank 108 Prior: COINS_REDEEM 109 Follow: COINS_REDEEM 110 Goodbye 111 112 COINS_REJECT #hex_string(0) "Reason" 113 Reasons: 114 *I can't think of anything valid* 115 Prior: COINS_REDEEM 116 Follow: COINS_REDEEM 117 Goodbye 118 118 119 119 COINS_ACCEPT 120 Prior:COINS_REDEEM121 Follow:Goodbye120 Prior: COINS_REDEEM 121 Follow: Goodbye 122 122 123 123 … … 130 130 131 131 ===================== 132 = MINTING_KEY =133 = MINT =134 = FETCH_MINTED =135 = DSDB_KEY =136 = REDEEM_COINS =132 = MINTING_KEY = 133 = MINT = 134 = FETCH_MINTED = 135 = DSDB_KEY = 136 = REDEEM_COINS = 137 137 ===================== 138 138 … … 141 141 142 142 Wallet: 143 MINTING_KEY_FETCH_DENOMINATION #string(denomination)144 Prior:Hello145 Follow:MINTING_KEY_PASS146 MINTING_KEY_FAILURE147 148 MINTING_KEY_FETCH_KEYID #hexstring(key_id)149 Prior:Hello150 Follow:MINTING_KEY_PASS151 MINTING_KEY_FAILURE152 153 IS: 154 MINTING_KEY_PASS keycertificate155 Prior:MINTING_KEY_FETCH_DENOMINATION156 MINTING_KEY_FETCH_KEYID157 Follow:Goodbye158 159 MINTING_KEY_FAILURE "Reason"160 Reasons:161 Unknown denomination162 Unknown key_id163 Prior:MINTING_KEY_FETCH_DENOMINATION164 MINTING_KEY_FETCH_KEYID165 Follow:Goodbye143 MINTING_KEY_FETCH_DENOMINATION #string(denomination) 144 Prior: Hello 145 Follow: MINTING_KEY_PASS 146 MINTING_KEY_FAILURE 147 148 MINTING_KEY_FETCH_KEYID #hexstring(key_id) 149 Prior: Hello 150 Follow: MINTING_KEY_PASS 151 MINTING_KEY_FAILURE 152 153 IS: 154 MINTING_KEY_PASS keycertificate 155 Prior: MINTING_KEY_FETCH_DENOMINATION 156 MINTING_KEY_FETCH_KEYID 157 Follow: Goodbye 158 159 MINTING_KEY_FAILURE "Reason" 160 Reasons: 161 Unknown denomination 162 Unknown key_id 163 Prior: MINTING_KEY_FETCH_DENOMINATION 164 MINTING_KEY_FETCH_KEYID 165 Follow: Goodbye 166 166 167 167 … … 171 171 172 172 Wallet: 173 MINT_REQUEST #base64(request_id) #hex_string(number_of_blinds)174 #key_id(blind1) #base64(blind1)175 #key_id(blind2) #base64(blind2)176 Prior:Hello177 Follow:MINT_REJECT178 MINT_ACCEPT179 180 IS: 181 MINT_REJECT #hex_string(number_of_rejected_blinds)182 #key_id(blind1) "Reason1"183 #key_id(blind2) "Reason2"184 Reasons:185 Unknown key_id186 Unable to blind187 Question: if the IS doesn't have the minting key, use a similar key to test?188 Prior:MINT_REQUEST189 Follow:Goodbye190 191 MINT_ACCEPT #base64(request_id)192 Prior:MINT_REQUEST193 Follow: Goodbye173 MINT_REQUEST #base64(request_id) #hex_string(number_of_blinds) 174 #key_id(blind1) #base64(blind1) 175 #key_id(blind2) #base64(blind2) 176 Prior: Hello 177 Follow: MINT_REJECT 178 MINT_ACCEPT 179 180 IS: 181 MINT_REJECT #hex_string(number_of_rejected_blinds) 182 #key_id(blind1) "Reason1" 183 #key_id(blind2) "Reason2" 184 Reasons: 185 Unknown key_id 186 Unable to blind 187 Question: if the IS doesn't have the minting key, use a similar key to test? 188 Prior: MINT_REQUEST 189 Follow: Goodbye 190 191 MINT_ACCEPT #base64(request_id) 192 Prior: MINT_REQUEST 193 Follow: Goodbye 194 194 195 195 … … 199 199 200 200 Wallet: 201 FETCH_MINTED_REQUEST #base64(request_id)202 Prior:Hello203 Follow:FETCH_MINTED_FAILURE204 FETCH_MINTED_WAIT205 FETCH_MINTED_ACCEPT206 207 208 IS: 209 FETCH_MINTED_FAILURE #base64(request_id) "Reason"210 Reasons:211 Request not credited212 Note: this message may be a temporary failure (FETCH_MINTED_WAIT)213 Unknown request_id214 Unable to blind (note: redundant? maybe not for all signatures)215 Prior:FETCH_MINTED_REQUEST216 Follow:Goodbye217 218 FETCH_MINTED_WAIT #base64(request_id) "Reason"219 Reasons:220 Not yet minted221 Request not credited222 Note: this message may be a permanant failure (FETCH_MINTED_FAILURE)223 Prior:FETCH_MINTED_REQUEST224 Follow:Goodbye201 FETCH_MINTED_REQUEST #base64(request_id) 202 Prior: Hello 203 Follow: FETCH_MINTED_FAILURE 204 FETCH_MINTED_WAIT 205 FETCH_MINTED_ACCEPT 206 207 208 IS: 209 FETCH_MINTED_FAILURE #base64(request_id) "Reason" 210 Reasons: 211 Request not credited 212 Note: this message may be a temporary failure (FETCH_MINTED_WAIT) 213 Unknown request_id 214 Unable to blind (note: redundant? maybe not for all signatures) 215 Prior: FETCH_MINTED_REQUEST 216 Follow: Goodbye 217 218 FETCH_MINTED_WAIT #base64(request_id) "Reason" 219 Reasons: 220 Not yet minted 221 Request not credited 222 Note: this message may be a permanant failure (FETCH_MINTED_FAILURE) 223 Prior: FETCH_MINTED_REQUEST 224 Follow: Goodbye 225 225 226 FETCH_MINTED_ACCEPT #base64(request_id) #hex_string(number_of_blinds)227 #base64(signature_of_blind1)228 #base64(signature_of_blind2)229 Prior:FETCH_MINTED_REQUEST230 Follow:Goodbye226 FETCH_MINTED_ACCEPT #base64(request_id) #hex_string(number_of_blinds) 227 #base64(signature_of_blind1) 228 #base64(signature_of_blind2) 229 Prior: FETCH_MINTED_REQUEST 230 Follow: Goodbye 231 231 232 232 … … 237 237 Wallet: 238 238 DSDB_KEY_REQUEST 239 Prior:Hello240 Follow: DSDB_KEY_PASS241 242 IS: 243 DSDB_KEY_PASS keycertificate244 Prior:DSDB_KEY_REQUEST245 Follow: Goodbye239 Prior: Hello 240 Follow: DSDB_KEY_PASS 241 242 IS: 243 DSDB_KEY_PASS keycertificate 244 Prior: DSDB_KEY_REQUEST 245 Follow: Goodbye 246 246 247 247 … … 251 251 252 252 Wallet: 253 REDEEM_COINS_REQUEST #hex_string(transaction_id) "#string(target)" #hex_string(number_of_coins)254 #base64(coin1)255 #base64(coin2)256 Targets:257 Strings which refer to a specific target for the redeeming of the coins.258 i.e. an account somewhere, a request for more coins, etc.259 The only required defined target is for another transaction to the mint.260 MINT_REQUEST=#string(request_id)261 Prior:Hello262 Follow:REDEEM_COINS_REJECT263 REDEEM_COINS_ACCEPT264 IS: 265 REDEEM_COINS_REJECT #hex_string(number_of_coins)266 #base64(coin1) "Reason1"267 #base64(coin2) "Reason2"268 Reasons:269 Unknown key_id270 Coin expired271 Coin already redeemed272 Invalid coin273 Unknown target274 Note: Can be used if Mint requires request_id to already be awaiting minting275 Prior:REDEEM_COINS_REQUEST276 Follow:Goodbye253 REDEEM_COINS_REQUEST #hex_string(transaction_id) "#string(target)" #hex_string(number_of_coins) 254 #base64(coin1) 255 #base64(coin2) 256 Targets: 257 Strings which refer to a specific target for the redeeming of the coins. 258 i.e. an account somewhere, a request for more coins, etc. 259 The only required defined target is for another transaction to the mint. 260 MINT_REQUEST=#string(request_id) 261 Prior: Hello 262 Follow: REDEEM_COINS_REJECT 263 REDEEM_COINS_ACCEPT 264 IS: 265 REDEEM_COINS_REJECT #hex_string(number_of_coins) 266 #base64(coin1) "Reason1" 267 #base64(coin2) "Reason2" 268 Reasons: 269 Unknown key_id 270 Coin expired 271 Coin already redeemed 272 Invalid coin 273 Unknown target 274 Note: Can be used if Mint requires request_id to already be awaiting minting 275 Prior: REDEEM_COINS_REQUEST 276 Follow: Goodbye 277 277 278 278 REDEEM_COINS_ACCEPT 279 Prior:REDEEM_COINS_REQUEST280 Follow: Goodbye279 Prior: REDEEM_COINS_REQUEST 280 Follow: Goodbye 281 281 282 282 … … 289 289 290 290 ================= 291 = LOCK_COINS =292 = UNLOCK_COINS =291 = LOCK_COINS = 292 = UNLOCK_COINS = 293 293 ================= 294 294 … … 297 297 298 298 Wallet: 299 LOCK_COINS_REQUEST #key_id_of_DSDB #hex_string(transaction_id) #hex_string(#number_of_obfuscated_blanks)300 #key_identifier1 #encrypted_serial1301 #key_identifier2 #encrypted_serial2302 Prior:Hello303 Follow:LOCK_COINS_ACCEPT304 LOCK_COINS_FAILURE299 LOCK_COINS_REQUEST #key_id_of_DSDB #hex_string(transaction_id) #hex_string(#number_of_obfuscated_blanks) 300 #key_identifier1 #encrypted_serial1 301 #key_identifier2 #encrypted_serial2 302 Prior: Hello 303 Follow: LOCK_COINS_ACCEPT 304 LOCK_COINS_FAILURE 305 305 306 306 DSDB: 307 LOCK_COINS_ACCEPT #hex_string(transaction_id) TIME(lock_expires)308 Prior:LOCK_COINS_REQUEST309 Follow:Goodbye310 311 LOCK_COINS_FAILURE #hex_string(transaction_id) #hex_string(number_of_failures)312 #key_identifier1 #encrypted_serial1 "Reason 1"313 #key_identifier2 #encrypted_serial2 "Reason 2"314 Reasons:315 Key ID of DSDB is unknown or expiredPermanant316 Key ID of blank is unknown or expiredPermanant317 Decryption of serial failedPermanant318 Serial already redeemedPermanant319 Serial locked (not spent)Temporary320 Prior:LOCK_COINS_REQUEST321 Follow:Goodbye307 LOCK_COINS_ACCEPT #hex_string(transaction_id) TIME(lock_expires) 308 Prior: LOCK_COINS_REQUEST 309 Follow: Goodbye 310 311 LOCK_COINS_FAILURE #hex_string(transaction_id) #hex_string(number_of_failures) 312 #key_identifier1 #encrypted_serial1 "Reason 1" 313 #key_identifier2 #encrypted_serial2 "Reason 2" 314 Reasons: 315 Key ID of DSDB is unknown or expired Permanant 316 Key ID of blank is unknown or expired Permanant 317 Decryption of serial failed Permanant 318 Serial already redeemed Permanant 319 Serial locked (not spent) Temporary 320 Prior: LOCK_COINS_REQUEST 321 Follow: Goodbye 322 322 323 323 … … 327 327 328 328 Wallet: 329 UNLOCK_COINS_REQUEST #hex_string(transaction_id)330 Prior:Hello331 Follow:UNLOCK_COINS_PASS332 UNLOCK_COINS_FAILURE329 UNLOCK_COINS_REQUEST #hex_string(transaction_id) 330 Prior: Hello 331 Follow: UNLOCK_COINS_PASS 332 UNLOCK_COINS_FAILURE 333 333 334 334 DSDB: 335 335 UNLOCK_COINS_PASS 336 Prior:UNLOCK_COINS_REQUEST337 Follow:Goodbye338 339 UNLOCK_COINS_FAILURE #hex_string(transaction_id) "Reason"340 Reasons:341 Unknown transaction_id342 Transaction already completed343 Lock expired *Not really a failure...*344 Prior:UNLOCK_COINS_REQUEST345 Follow:Goodbye346 347 348 349 336 Prior: UNLOCK_COINS_REQUEST 337 Follow: Goodbye 338 339 UNLOCK_COINS_FAILURE #hex_string(transaction_id) "Reason" 340 Reasons: 341 Unknown transaction_id 342 Transaction already completed 343 Lock expired *Not really a failure...* 344 Prior: UNLOCK_COINS_REQUEST 345 Follow: Goodbye 346 347 348 349 -
trunk/standards/messages/wallet.to.wallet.txt
r18 r28 4 4 5 5 ============= 6 = BLANK =7 = COINS =6 = BLANK = 7 = COINS = 8 8 ============= 9 9 … … 12 12 13 13 A: 14 BLANK_PRESENT #hex_string(number_of_blanks)15 blank116 blank217 Prior:Hello18 Follow:BLANK_FAILURE19 BLANK_REJECT20 BLANK_ACCEPT14 BLANK_PRESENT #hex_string(number_of_blanks) 15 blank1 16 blank2 17 Prior: Hello 18 Follow: BLANK_FAILURE 19 BLANK_REJECT 20 BLANK_ACCEPT 21 21 22 22 B: 23 BLANK_FAILURE #hex_string(number_of_failures)24 #base64(encrypted serial of blank1) "Reason1"25 #base64(encrypted serial of blank2) "Reason2"26 Reasons:27 Malformed blank28 Unknown issuer29 Note: Also used for an untrusted issuer30 Prior:BLANK_PRESENT31 Follow:Goodbye32 33 BLANK_FAILURE #hex_string(0) "reason"34 Reason:35 Cancelled36 Prior:BLANK_PRESENT37 Follow:Goodbye38 23 BLANK_FAILURE #hex_string(number_of_failures) 24 #base64(encrypted serial of blank1) "Reason1" 25 #base64(encrypted serial of blank2) "Reason2" 26 Reasons: 27 Malformed blank 28 Unknown issuer 29 Note: Also used for an untrusted issuer 30 Prior: BLANK_PRESENT 31 Follow: Goodbye 32 33 BLANK_FAILURE #hex_string(0) "reason" 34 Reason: 35 Cancelled 36 Prior: BLANK_PRESENT 37 Follow: Goodbye 38 39 39 40 BLANK_REJECT #hex_string(number_of_failures)41 #base64(encrypted serial of blank1) "Reason1"42 #base64(encrypted serial of blank2) "Reason2"43 Reasons:44 DSDB: Key ID of DSDB is unknown or expiredPermanant45 DSDB: Key ID of blank is unknown or expiredPermanant46 DSDB: Decryption of serial failedPermanant47 DSDB: Serial already redeemedPermanant48 DSDB: Serial locked (not spent)Temporary49 Prior:BLANK_PRESENT50 Follow:Goodbye40 BLANK_REJECT #hex_string(number_of_failures) 41 #base64(encrypted serial of blank1) "Reason1" 42 #base64(encrypted serial of blank2) "Reason2" 43 Reasons: 44 DSDB: Key ID of DSDB is unknown or expired Permanant 45 DSDB: Key ID of blank is unknown or expired Permanant 46 DSDB: Decryption of serial failed Permanant 47 DSDB: Serial already redeemed Permanant 48 DSDB: Serial locked (not spent) Temporary 49 Prior: BLANK_PRESENT 50 Follow: Goodbye 51 51 52 BLANK_REJECT #hex_string(0) "reason"53 Reasons:54 Cancelled55 Prior:BLANK_PRESENT56 BLANK_ACCEPT (Message from self)57 Follow:Goodbye52 BLANK_REJECT #hex_string(0) "reason" 53 Reasons: 54 Cancelled 55 Prior: BLANK_PRESENT 56 BLANK_ACCEPT (Message from self) 57 Follow: Goodbye 58 58 59 59 BLANK_ACCEPT 60 Note:After ACCEPT, a REJECT #hex_string(0) can be given to abort the transaction61 Prior:BLANK_PRESENT62 Follow:COINS_REDEEM63 BLANK_REJECT (Message from self)60 Note: After ACCEPT, a REJECT #hex_string(0) can be given to abort the transaction 61 Prior: BLANK_PRESENT 62 Follow: COINS_REDEEM 63 BLANK_REJECT (Message from self) 64 64 65 65 … … 69 69 70 70 A: 71 COINS_REDEEM #hex_string(number_of)72 #base64(coin1)73 #base64(coin2)74 Prior:BLANK_ACCEPT75 Follow:COINS_REJECT76 COINS_ACCEPT71 COINS_REDEEM #hex_string(number_of) 72 #base64(coin1) 73 #base64(coin2) 74 Prior: BLANK_ACCEPT 75 Follow: COINS_REJECT 76 COINS_ACCEPT 77 77 78 78 B: 79 COINS_REJECT #hex_string(number_of)80 #base64(coin1) "Reason1"81 #base64(coin2) "Reason2"82 Reasons:83 Invalid coin84 Unknown coin85 Note: Used when the coin we are given is different than the blank86 Prior:COINS_REDEEM87 Follow: COINS_REDEEM88 Goodbye79 COINS_REJECT #hex_string(number_of) 80 #base64(coin1) "Reason1" 81 #base64(coin2) "Reason2" 82 Reasons: 83 Invalid coin 84 Unknown coin 85 Note: Used when the coin we are given is different than the blank 86 Prior: COINS_REDEEM 87 Follow: COINS_REDEEM 88 Goodbye 89 89 90 COINS_REJECT #hex_string(0) "Reason"91 Reasons:92 *I can't think of anything valid*93 Prior:COINS_REDEEM94 Follow:COINS_REDEEM95 Goodbye90 COINS_REJECT #hex_string(0) "Reason" 91 Reasons: 92 *I can't think of anything valid* 93 Prior: COINS_REDEEM 94 Follow: COINS_REDEEM 95 Goodbye 96 96 97 97 COINS_ACCEPT 98 Prior:COINS_REDEEM99 Follow:Goodbye98 Prior: COINS_REDEEM 99 Follow: Goodbye -
trunk/standards/protocol-containers.txt
r19 r28 8 8 The format is 9 9 Name1 = { 10 ContentName1 = Value111 ContentName2 = Value212 ContentName3 = Value313 14 ExtraName1 = Value415 ExtraName2 = Value516 17 RepeatableExtraName1 = Value618 RepeatableExtraname2 = Value710 ContentName1 = Value1 11 ContentName2 = Value2 12 ContentName3 = Value3 13 14 ExtraName1 = Value4 15 ExtraName2 = Value5 16 17 RepeatableExtraName1 = Value6 18 RepeatableExtraname2 = Value7 19 19 } 20 20 … … 46 46 Currency Description Document (CCD) = 47 47 { 48 standard version= http://opencoin.org/OpenCoinProtocol/1.049 currency identifier= http://opencent.net/OpenCent50 short currency identifier= OC51 issuer service location= opencoin://issuer.opencent.net:800252 denominations= 1, 2, 5, 10, 20, 50, 100, 200, 500, 1000 #list of strings seperated by commas53 issuer cipher suite= HASH-ALG, SIGN-ALG, BLINDING-ALG54 issuer public master key= base64(pM)48 standard version = http://opencoin.org/OpenCoinProtocol/1.0 49 currency identifier = http://opencent.net/OpenCent 50 short currency identifier = OC 51 issuer service location = opencoin://issuer.opencent.net:8002 52 denominations = 1, 2, 5, 10, 20, 50, 100, 200, 500, 1000 #list of strings seperated by commas 53 issuer cipher suite = HASH-ALG, SIGN-ALG, BLINDING-ALG 54 issuer public master key = base64(pM) 55 55 56 issuer= hash(pM)57 signature= base64(sig(sM,hash(content part)))56 issuer = hash(pM) 57 signature = base64(sig(sM,hash(content part))) 58 58 59 signer= Hash(pM)60 ad_signature= base64(sig(sM, hash(content part)))59 signer = Hash(pM) 60 ad_signature = base64(sig(sM, hash(content part))) 61 61 } 62 62 … … 64 64 Mint Key = 65 65 { 66 key identifier= base64(hash(p))67 currency identifier = http://opencent.net/OpenCent68 denomination= denomination69 not_before= TIME(...)70 key_not_after= TIME(...)71 coin_not_after= TIME(...)72 public key= base64(p)66 key identifier = base64(hash(p)) 67 currency identifier = http://opencent.net/OpenCent 68 denomination = denomination 69 not_before = TIME(...) 70 key_not_after = TIME(...) 71 coin_not_after = TIME(...) 72 public key = base64(p) 73 73 74 issuer= hash(pM)75 signature= base64(sig(sM, hash(content part)))74 issuer = hash(pM) 75 signature = base64(sig(sM, hash(content part))) 76 76 } 77 77 … … 79 79 DSDB Key = 80 80 { 81 key identifier= base64(hash(p))82 not_before= TIME(...)83 not_after= TIME(...)84 public key= base64(p)81 key identifier = base64(hash(p)) 82 not_before = TIME(...) 83 not_after = TIME(...) 84 public key = base64(p) 85 85 86 issuer= Hash(pM)87 signature= base64(sig(sM, hash(content part)))86 issuer = Hash(pM) 87 signature = base64(sig(sM, hash(content part))) 88 88 89 signer= Hash(pM)90 ad_signature= base64(sig(sM, hash(content part)))89 signer = Hash(pM) 90 ad_signature = base64(sig(sM, hash(content part))) 91 91 } 92 92 … … 99 99 Blank = 100 100 { 101 standard identifier= http://opencoin.org/OpenCoinProtocol/1.0102 currency identifier= http://opencent.net/OpenCent103 denomination= denomination104 key identifier= key_id(signing key)105 serial= base64(128bit random number)101 standard identifier = http://opencoin.org/OpenCoinProtocol/1.0 102 currency identifier = http://opencent.net/OpenCent 103 denomination = denomination 104 key identifier = key_id(signing key) 105 serial = base64(128bit random number) 106 106 } 107 107 … … 109 109 Coin = 110 110 { 111 standard identifier= http://opencoin.org/OpenCoinProtocol/1.0112 currency identifier= http://opencent.net/OpenCent113 denomination= denomination114 key identifier= key_id(signing key)115 serial= base64(128bit random number)116 117 signature= base64(encrypt(ALG,priv-key-of-signing-key, content part))111 standard identifier = http://opencoin.org/OpenCoinProtocol/1.0 112 currency identifier = http://opencent.net/OpenCent 113 denomination = denomination 114 key identifier = key_id(signing key) 115 serial = base64(128bit random number) 116 117 signature = base64(encrypt(ALG,priv-key-of-signing-key, content part)) 118 118 } 119 119 … … 121 121 Obfuscated Blank = 122 122 { 123 standard identifier= http://opencoin.org/OpenCoinProtocol/1.0124 currency identifier= http://opencent.net/OpenCent125 denomination= denomination126 key identifier= key_id(signing key)127 serial= base64(encrypt(ALG,pub-key-of-DSDB, serial))123 standard identifier = http://opencoin.org/OpenCoinProtocol/1.0 124 currency identifier = http://opencent.net/OpenCent 125 denomination = denomination 126 key identifier = key_id(signing key) 127 serial = base64(encrypt(ALG,pub-key-of-DSDB, serial)) 128 128 } -
trunk/standards/protocol.txt
r19 r28 81 81 82 82 Wallet: 83 MINTING_KEY_FETCH_DENOMINATION(denomination) or MINTING_KEY_FETCH_KEYID(key_id)83 MINTING_KEY_FETCH_DENOMINATION(denomination) or MINTING_KEY_FETCH_KEYID(key_id) 84 84 IS: 85 MINTING_KEY_PASS(keycertificate) or MINTING_KEY_FAILURE(reason)85 MINTING_KEY_PASS(keycertificate) or MINTING_KEY_FAILURE(reason) 86 86 87 87 * Wallet: creates blank according to CDD: … … 152 152 153 153 FETCH_MINTED_ACCEPT(request_id, list(signature_of_blind1, ...) ) 154 154 155 155 Session terminates 156 156 … … 228 228 - lock list of encrypted coin serial numbers at IS (DSDB) 229 229 LOCK_COINS_REQUEST( DSDB_key_key_id, transaction_id, 230 list( (key_identifier1, encrypted_serial1), ... ) )230 list( (key_identifier1, encrypted_serial1), ... ) ) 231 231 232 232 - IS either accepts with locking time or rejects with list of rejected serials + reason (locked, spent) … … 256 256 257 257 Note: After BLANK_ACCEPT, a BLANK_REJECT(emptylist, "Reason) can be given to abort the transaction until 258 COINS_SPEND is sent259 258 COINS_SPEND is sent 259 260 260 * Wallet Alice sends coins to Wallet Bob (this time including their clear serial and signature) 261 261
