plc を追加
							
								
								
									
										71
									
								
								plc.md
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
										
											
											
										
										
									
								
							
						
						
									
										71
									
								
								plc.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,71 @@
 | 
				
			|||||||
 | 
					## handle change
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pdsの`PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX`を使用し、rotation-keyを作成後に、indigoにある`goat plc`を使用します。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					1. `goat key generate --type secp256k1`で生成されたキーを分析
 | 
				
			||||||
 | 
					2. そのキーから正しいmulticodecプレフィックスを抽出
 | 
				
			||||||
 | 
					3. PDSのhex keyに同じプレフィックスを適用
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```sh
 | 
				
			||||||
 | 
					$ go install github.com/bluesky-social/indigo/cmd/goat@latest
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```sh
 | 
				
			||||||
 | 
					$ goat account login -u syui.syui.ai -p $PASS --pds-host https://syu.is
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$ goat plc history did:plc:vzsvtbtbnwn22xjqhcu3vd6y
 | 
				
			||||||
 | 
					did:key:zQ3shZj81oA4A9CmUQgYUv97nFdd7m5qNaRMyG16XZixytTmQ
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$ goat plc update did:plc:vzsvtbtbnwn22xjqhcu3vd6y \
 | 
				
			||||||
 | 
					  --handle syui.syui.ai \
 | 
				
			||||||
 | 
					  --pds https://syu.is \
 | 
				
			||||||
 | 
					  --atproto-key did:key:zQ3shZj81oA4A9CmUQgYUv97nFdd7m5qNaRMyG16XZixytTmQ > plc_operation_syui.json
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```sh
 | 
				
			||||||
 | 
					source base58_env/bin/activate
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					python3 -c "
 | 
				
			||||||
 | 
					import base58
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# 生成されたsecp256k1キーを分析
 | 
				
			||||||
 | 
					generated_secp256k1 = '${zXXX...}'
 | 
				
			||||||
 | 
					decoded = base58.b58decode(generated_secp256k1[1:])  # 'z'を除く
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					print('Generated secp256k1 key analysis:')
 | 
				
			||||||
 | 
					print('  Total length:', len(decoded))
 | 
				
			||||||
 | 
					print('  Full hex:', decoded.hex())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# 32バイトの鍵データを除いたプレフィックスを抽出
 | 
				
			||||||
 | 
					if len(decoded) > 32:
 | 
				
			||||||
 | 
					    prefix = decoded[:-32]
 | 
				
			||||||
 | 
					    key_data = decoded[-32:]
 | 
				
			||||||
 | 
					    print('  Prefix hex:', prefix.hex())
 | 
				
			||||||
 | 
					    print('  Prefix length:', len(prefix))
 | 
				
			||||||
 | 
					    print('  Key data length:', len(key_data))
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    pds_rotation_hex = '${PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX}'
 | 
				
			||||||
 | 
					    pds_rotation_bytes = bytes.fromhex(pds_rotation_hex)
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    prefixed_rotation_key = prefix + pds_rotation_bytes
 | 
				
			||||||
 | 
					    multibase_rotation_key = 'z' + base58.b58encode(prefixed_rotation_key).decode()
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    print('\\nConverted PDS rotation key:')
 | 
				
			||||||
 | 
					    print('  Multibase:', multibase_rotation_key)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					else:
 | 
				
			||||||
 | 
					    print('  No prefix found, key is raw')
 | 
				
			||||||
 | 
					"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					deactivate
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```sh
 | 
				
			||||||
 | 
					$ PDS_ROTATION_KEY=zXXX...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$ goat plc sign --plc-signing-key "$PDS_ROTATION_KEY" plc_operation_syui.json > plc_signed_syui.json
 | 
				
			||||||
 | 
					$ goat plc submit --did did:plc:vzsvtbtbnwn22xjqhcu3vd6y  plc_signed_syui.json
 | 
				
			||||||
 | 
					success
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$ goat plc history did:plc:vzsvtbtbnwn22xjqhcu3vd6y
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
		Reference in New Issue
	
	Block a user