github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/atc/db/encryption/fallback_strategy.go (about)

     1  package encryption
     2  
     3  type FallbackStrategy struct {
     4  	main     Strategy
     5  	fallback Strategy
     6  }
     7  
     8  func NewFallbackStrategy(main, fallback Strategy) *FallbackStrategy {
     9  	return &FallbackStrategy{
    10  		main:     main,
    11  		fallback: fallback,
    12  	}
    13  }
    14  
    15  func (n *FallbackStrategy) Encrypt(plaintext []byte) (string, *string, error) {
    16  	return n.main.Encrypt(plaintext)
    17  }
    18  
    19  func (n *FallbackStrategy) Decrypt(text string, nonce *string) ([]byte, error) {
    20  	plaintext, err := n.main.Decrypt(text, nonce)
    21  	if err == nil {
    22  		return plaintext, nil
    23  	}
    24  	return n.fallback.Decrypt(text, nonce)
    25  }
    26