Integrate BACKBEAT SDK and resolve KACHING license validation
Major integrations and fixes: - Added BACKBEAT SDK integration for P2P operation timing - Implemented beat-aware status tracking for distributed operations - Added Docker secrets support for secure license management - Resolved KACHING license validation via HTTPS/TLS - Updated docker-compose configuration for clean stack deployment - Disabled rollback policies to prevent deployment failures - Added license credential storage (CHORUS-DEV-MULTI-001) Technical improvements: - BACKBEAT P2P operation tracking with phase management - Enhanced configuration system with file-based secrets - Improved error handling for license validation - Clean separation of KACHING and CHORUS deployment stacks 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
		
							
								
								
									
										98
									
								
								vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										98
									
								
								vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,98 @@ | ||||
| // Copyright 2016 The Go Authors. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
|  | ||||
| // Package chacha20poly1305 implements the ChaCha20-Poly1305 AEAD and its | ||||
| // extended nonce variant XChaCha20-Poly1305, as specified in RFC 8439 and | ||||
| // draft-irtf-cfrg-xchacha-01. | ||||
| package chacha20poly1305 // import "golang.org/x/crypto/chacha20poly1305" | ||||
|  | ||||
| import ( | ||||
| 	"crypto/cipher" | ||||
| 	"errors" | ||||
| ) | ||||
|  | ||||
| const ( | ||||
| 	// KeySize is the size of the key used by this AEAD, in bytes. | ||||
| 	KeySize = 32 | ||||
|  | ||||
| 	// NonceSize is the size of the nonce used with the standard variant of this | ||||
| 	// AEAD, in bytes. | ||||
| 	// | ||||
| 	// Note that this is too short to be safely generated at random if the same | ||||
| 	// key is reused more than 2³² times. | ||||
| 	NonceSize = 12 | ||||
|  | ||||
| 	// NonceSizeX is the size of the nonce used with the XChaCha20-Poly1305 | ||||
| 	// variant of this AEAD, in bytes. | ||||
| 	NonceSizeX = 24 | ||||
|  | ||||
| 	// Overhead is the size of the Poly1305 authentication tag, and the | ||||
| 	// difference between a ciphertext length and its plaintext. | ||||
| 	Overhead = 16 | ||||
| ) | ||||
|  | ||||
| type chacha20poly1305 struct { | ||||
| 	key [KeySize]byte | ||||
| } | ||||
|  | ||||
| // New returns a ChaCha20-Poly1305 AEAD that uses the given 256-bit key. | ||||
| func New(key []byte) (cipher.AEAD, error) { | ||||
| 	if len(key) != KeySize { | ||||
| 		return nil, errors.New("chacha20poly1305: bad key length") | ||||
| 	} | ||||
| 	ret := new(chacha20poly1305) | ||||
| 	copy(ret.key[:], key) | ||||
| 	return ret, nil | ||||
| } | ||||
|  | ||||
| func (c *chacha20poly1305) NonceSize() int { | ||||
| 	return NonceSize | ||||
| } | ||||
|  | ||||
| func (c *chacha20poly1305) Overhead() int { | ||||
| 	return Overhead | ||||
| } | ||||
|  | ||||
| func (c *chacha20poly1305) Seal(dst, nonce, plaintext, additionalData []byte) []byte { | ||||
| 	if len(nonce) != NonceSize { | ||||
| 		panic("chacha20poly1305: bad nonce length passed to Seal") | ||||
| 	} | ||||
|  | ||||
| 	if uint64(len(plaintext)) > (1<<38)-64 { | ||||
| 		panic("chacha20poly1305: plaintext too large") | ||||
| 	} | ||||
|  | ||||
| 	return c.seal(dst, nonce, plaintext, additionalData) | ||||
| } | ||||
|  | ||||
| var errOpen = errors.New("chacha20poly1305: message authentication failed") | ||||
|  | ||||
| func (c *chacha20poly1305) Open(dst, nonce, ciphertext, additionalData []byte) ([]byte, error) { | ||||
| 	if len(nonce) != NonceSize { | ||||
| 		panic("chacha20poly1305: bad nonce length passed to Open") | ||||
| 	} | ||||
| 	if len(ciphertext) < 16 { | ||||
| 		return nil, errOpen | ||||
| 	} | ||||
| 	if uint64(len(ciphertext)) > (1<<38)-48 { | ||||
| 		panic("chacha20poly1305: ciphertext too large") | ||||
| 	} | ||||
|  | ||||
| 	return c.open(dst, nonce, ciphertext, additionalData) | ||||
| } | ||||
|  | ||||
| // sliceForAppend takes a slice and a requested number of bytes. It returns a | ||||
| // slice with the contents of the given slice followed by that many bytes and a | ||||
| // second slice that aliases into it and contains only the extra bytes. If the | ||||
| // original slice has sufficient capacity then no allocation is performed. | ||||
| func sliceForAppend(in []byte, n int) (head, tail []byte) { | ||||
| 	if total := len(in) + n; cap(in) >= total { | ||||
| 		head = in[:total] | ||||
| 	} else { | ||||
| 		head = make([]byte, total) | ||||
| 		copy(head, in) | ||||
| 	} | ||||
| 	tail = head[len(in):] | ||||
| 	return | ||||
| } | ||||
							
								
								
									
										86
									
								
								vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305_amd64.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										86
									
								
								vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305_amd64.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,86 @@ | ||||
| // Copyright 2016 The Go Authors. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
|  | ||||
| //go:build gc && !purego | ||||
|  | ||||
| package chacha20poly1305 | ||||
|  | ||||
| import ( | ||||
| 	"encoding/binary" | ||||
|  | ||||
| 	"golang.org/x/crypto/internal/alias" | ||||
| 	"golang.org/x/sys/cpu" | ||||
| ) | ||||
|  | ||||
| //go:noescape | ||||
| func chacha20Poly1305Open(dst []byte, key []uint32, src, ad []byte) bool | ||||
|  | ||||
| //go:noescape | ||||
| func chacha20Poly1305Seal(dst []byte, key []uint32, src, ad []byte) | ||||
|  | ||||
| var ( | ||||
| 	useAVX2 = cpu.X86.HasAVX2 && cpu.X86.HasBMI2 | ||||
| ) | ||||
|  | ||||
| // setupState writes a ChaCha20 input matrix to state. See | ||||
| // https://tools.ietf.org/html/rfc7539#section-2.3. | ||||
| func setupState(state *[16]uint32, key *[32]byte, nonce []byte) { | ||||
| 	state[0] = 0x61707865 | ||||
| 	state[1] = 0x3320646e | ||||
| 	state[2] = 0x79622d32 | ||||
| 	state[3] = 0x6b206574 | ||||
|  | ||||
| 	state[4] = binary.LittleEndian.Uint32(key[0:4]) | ||||
| 	state[5] = binary.LittleEndian.Uint32(key[4:8]) | ||||
| 	state[6] = binary.LittleEndian.Uint32(key[8:12]) | ||||
| 	state[7] = binary.LittleEndian.Uint32(key[12:16]) | ||||
| 	state[8] = binary.LittleEndian.Uint32(key[16:20]) | ||||
| 	state[9] = binary.LittleEndian.Uint32(key[20:24]) | ||||
| 	state[10] = binary.LittleEndian.Uint32(key[24:28]) | ||||
| 	state[11] = binary.LittleEndian.Uint32(key[28:32]) | ||||
|  | ||||
| 	state[12] = 0 | ||||
| 	state[13] = binary.LittleEndian.Uint32(nonce[0:4]) | ||||
| 	state[14] = binary.LittleEndian.Uint32(nonce[4:8]) | ||||
| 	state[15] = binary.LittleEndian.Uint32(nonce[8:12]) | ||||
| } | ||||
|  | ||||
| func (c *chacha20poly1305) seal(dst, nonce, plaintext, additionalData []byte) []byte { | ||||
| 	if !cpu.X86.HasSSSE3 { | ||||
| 		return c.sealGeneric(dst, nonce, plaintext, additionalData) | ||||
| 	} | ||||
|  | ||||
| 	var state [16]uint32 | ||||
| 	setupState(&state, &c.key, nonce) | ||||
|  | ||||
| 	ret, out := sliceForAppend(dst, len(plaintext)+16) | ||||
| 	if alias.InexactOverlap(out, plaintext) { | ||||
| 		panic("chacha20poly1305: invalid buffer overlap") | ||||
| 	} | ||||
| 	chacha20Poly1305Seal(out[:], state[:], plaintext, additionalData) | ||||
| 	return ret | ||||
| } | ||||
|  | ||||
| func (c *chacha20poly1305) open(dst, nonce, ciphertext, additionalData []byte) ([]byte, error) { | ||||
| 	if !cpu.X86.HasSSSE3 { | ||||
| 		return c.openGeneric(dst, nonce, ciphertext, additionalData) | ||||
| 	} | ||||
|  | ||||
| 	var state [16]uint32 | ||||
| 	setupState(&state, &c.key, nonce) | ||||
|  | ||||
| 	ciphertext = ciphertext[:len(ciphertext)-16] | ||||
| 	ret, out := sliceForAppend(dst, len(ciphertext)) | ||||
| 	if alias.InexactOverlap(out, ciphertext) { | ||||
| 		panic("chacha20poly1305: invalid buffer overlap") | ||||
| 	} | ||||
| 	if !chacha20Poly1305Open(out, state[:], ciphertext, additionalData) { | ||||
| 		for i := range out { | ||||
| 			out[i] = 0 | ||||
| 		} | ||||
| 		return nil, errOpen | ||||
| 	} | ||||
|  | ||||
| 	return ret, nil | ||||
| } | ||||
							
								
								
									
										2715
									
								
								vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305_amd64.s
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2715
									
								
								vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305_amd64.s
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										81
									
								
								vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305_generic.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										81
									
								
								vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305_generic.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,81 @@ | ||||
| // Copyright 2016 The Go Authors. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
|  | ||||
| package chacha20poly1305 | ||||
|  | ||||
| import ( | ||||
| 	"encoding/binary" | ||||
|  | ||||
| 	"golang.org/x/crypto/chacha20" | ||||
| 	"golang.org/x/crypto/internal/alias" | ||||
| 	"golang.org/x/crypto/internal/poly1305" | ||||
| ) | ||||
|  | ||||
| func writeWithPadding(p *poly1305.MAC, b []byte) { | ||||
| 	p.Write(b) | ||||
| 	if rem := len(b) % 16; rem != 0 { | ||||
| 		var buf [16]byte | ||||
| 		padLen := 16 - rem | ||||
| 		p.Write(buf[:padLen]) | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func writeUint64(p *poly1305.MAC, n int) { | ||||
| 	var buf [8]byte | ||||
| 	binary.LittleEndian.PutUint64(buf[:], uint64(n)) | ||||
| 	p.Write(buf[:]) | ||||
| } | ||||
|  | ||||
| func (c *chacha20poly1305) sealGeneric(dst, nonce, plaintext, additionalData []byte) []byte { | ||||
| 	ret, out := sliceForAppend(dst, len(plaintext)+poly1305.TagSize) | ||||
| 	ciphertext, tag := out[:len(plaintext)], out[len(plaintext):] | ||||
| 	if alias.InexactOverlap(out, plaintext) { | ||||
| 		panic("chacha20poly1305: invalid buffer overlap") | ||||
| 	} | ||||
|  | ||||
| 	var polyKey [32]byte | ||||
| 	s, _ := chacha20.NewUnauthenticatedCipher(c.key[:], nonce) | ||||
| 	s.XORKeyStream(polyKey[:], polyKey[:]) | ||||
| 	s.SetCounter(1) // set the counter to 1, skipping 32 bytes | ||||
| 	s.XORKeyStream(ciphertext, plaintext) | ||||
|  | ||||
| 	p := poly1305.New(&polyKey) | ||||
| 	writeWithPadding(p, additionalData) | ||||
| 	writeWithPadding(p, ciphertext) | ||||
| 	writeUint64(p, len(additionalData)) | ||||
| 	writeUint64(p, len(plaintext)) | ||||
| 	p.Sum(tag[:0]) | ||||
|  | ||||
| 	return ret | ||||
| } | ||||
|  | ||||
| func (c *chacha20poly1305) openGeneric(dst, nonce, ciphertext, additionalData []byte) ([]byte, error) { | ||||
| 	tag := ciphertext[len(ciphertext)-16:] | ||||
| 	ciphertext = ciphertext[:len(ciphertext)-16] | ||||
|  | ||||
| 	var polyKey [32]byte | ||||
| 	s, _ := chacha20.NewUnauthenticatedCipher(c.key[:], nonce) | ||||
| 	s.XORKeyStream(polyKey[:], polyKey[:]) | ||||
| 	s.SetCounter(1) // set the counter to 1, skipping 32 bytes | ||||
|  | ||||
| 	p := poly1305.New(&polyKey) | ||||
| 	writeWithPadding(p, additionalData) | ||||
| 	writeWithPadding(p, ciphertext) | ||||
| 	writeUint64(p, len(additionalData)) | ||||
| 	writeUint64(p, len(ciphertext)) | ||||
|  | ||||
| 	ret, out := sliceForAppend(dst, len(ciphertext)) | ||||
| 	if alias.InexactOverlap(out, ciphertext) { | ||||
| 		panic("chacha20poly1305: invalid buffer overlap") | ||||
| 	} | ||||
| 	if !p.Verify(tag) { | ||||
| 		for i := range out { | ||||
| 			out[i] = 0 | ||||
| 		} | ||||
| 		return nil, errOpen | ||||
| 	} | ||||
|  | ||||
| 	s.XORKeyStream(out, ciphertext) | ||||
| 	return ret, nil | ||||
| } | ||||
							
								
								
									
										15
									
								
								vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305_noasm.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305_noasm.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| // Copyright 2016 The Go Authors. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
|  | ||||
| //go:build !amd64 || !gc || purego | ||||
|  | ||||
| package chacha20poly1305 | ||||
|  | ||||
| func (c *chacha20poly1305) seal(dst, nonce, plaintext, additionalData []byte) []byte { | ||||
| 	return c.sealGeneric(dst, nonce, plaintext, additionalData) | ||||
| } | ||||
|  | ||||
| func (c *chacha20poly1305) open(dst, nonce, ciphertext, additionalData []byte) ([]byte, error) { | ||||
| 	return c.openGeneric(dst, nonce, ciphertext, additionalData) | ||||
| } | ||||
							
								
								
									
										86
									
								
								vendor/golang.org/x/crypto/chacha20poly1305/xchacha20poly1305.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										86
									
								
								vendor/golang.org/x/crypto/chacha20poly1305/xchacha20poly1305.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,86 @@ | ||||
| // Copyright 2018 The Go Authors. All rights reserved. | ||||
| // Use of this source code is governed by a BSD-style | ||||
| // license that can be found in the LICENSE file. | ||||
|  | ||||
| package chacha20poly1305 | ||||
|  | ||||
| import ( | ||||
| 	"crypto/cipher" | ||||
| 	"errors" | ||||
|  | ||||
| 	"golang.org/x/crypto/chacha20" | ||||
| ) | ||||
|  | ||||
| type xchacha20poly1305 struct { | ||||
| 	key [KeySize]byte | ||||
| } | ||||
|  | ||||
| // NewX returns a XChaCha20-Poly1305 AEAD that uses the given 256-bit key. | ||||
| // | ||||
| // XChaCha20-Poly1305 is a ChaCha20-Poly1305 variant that takes a longer nonce, | ||||
| // suitable to be generated randomly without risk of collisions. It should be | ||||
| // preferred when nonce uniqueness cannot be trivially ensured, or whenever | ||||
| // nonces are randomly generated. | ||||
| func NewX(key []byte) (cipher.AEAD, error) { | ||||
| 	if len(key) != KeySize { | ||||
| 		return nil, errors.New("chacha20poly1305: bad key length") | ||||
| 	} | ||||
| 	ret := new(xchacha20poly1305) | ||||
| 	copy(ret.key[:], key) | ||||
| 	return ret, nil | ||||
| } | ||||
|  | ||||
| func (*xchacha20poly1305) NonceSize() int { | ||||
| 	return NonceSizeX | ||||
| } | ||||
|  | ||||
| func (*xchacha20poly1305) Overhead() int { | ||||
| 	return Overhead | ||||
| } | ||||
|  | ||||
| func (x *xchacha20poly1305) Seal(dst, nonce, plaintext, additionalData []byte) []byte { | ||||
| 	if len(nonce) != NonceSizeX { | ||||
| 		panic("chacha20poly1305: bad nonce length passed to Seal") | ||||
| 	} | ||||
|  | ||||
| 	// XChaCha20-Poly1305 technically supports a 64-bit counter, so there is no | ||||
| 	// size limit. However, since we reuse the ChaCha20-Poly1305 implementation, | ||||
| 	// the second half of the counter is not available. This is unlikely to be | ||||
| 	// an issue because the cipher.AEAD API requires the entire message to be in | ||||
| 	// memory, and the counter overflows at 256 GB. | ||||
| 	if uint64(len(plaintext)) > (1<<38)-64 { | ||||
| 		panic("chacha20poly1305: plaintext too large") | ||||
| 	} | ||||
|  | ||||
| 	c := new(chacha20poly1305) | ||||
| 	hKey, _ := chacha20.HChaCha20(x.key[:], nonce[0:16]) | ||||
| 	copy(c.key[:], hKey) | ||||
|  | ||||
| 	// The first 4 bytes of the final nonce are unused counter space. | ||||
| 	cNonce := make([]byte, NonceSize) | ||||
| 	copy(cNonce[4:12], nonce[16:24]) | ||||
|  | ||||
| 	return c.seal(dst, cNonce[:], plaintext, additionalData) | ||||
| } | ||||
|  | ||||
| func (x *xchacha20poly1305) Open(dst, nonce, ciphertext, additionalData []byte) ([]byte, error) { | ||||
| 	if len(nonce) != NonceSizeX { | ||||
| 		panic("chacha20poly1305: bad nonce length passed to Open") | ||||
| 	} | ||||
| 	if len(ciphertext) < 16 { | ||||
| 		return nil, errOpen | ||||
| 	} | ||||
| 	if uint64(len(ciphertext)) > (1<<38)-48 { | ||||
| 		panic("chacha20poly1305: ciphertext too large") | ||||
| 	} | ||||
|  | ||||
| 	c := new(chacha20poly1305) | ||||
| 	hKey, _ := chacha20.HChaCha20(x.key[:], nonce[0:16]) | ||||
| 	copy(c.key[:], hKey) | ||||
|  | ||||
| 	// The first 4 bytes of the final nonce are unused counter space. | ||||
| 	cNonce := make([]byte, NonceSize) | ||||
| 	copy(cNonce[4:12], nonce[16:24]) | ||||
|  | ||||
| 	return c.open(dst, cNonce[:], ciphertext, additionalData) | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 anthonyrawlins
					anthonyrawlins