code: func (k *KeyReadWriter) ViewAndRotateKEK(cb func(KEKData, PEMKeyHeaders) (KEKData, PEMKeyHeaders, error)) error {
  	k.mu.Lock()
  	defer k.mu.Unlock()
  
  	updatedKEK, updatedHeaderObj, err := cb(k.kekData, k.headersObj)
  	if err != nil {
  		return err
  	}
  
  	keyBlock, err := k.readKey()
  	if err != nil {
  		return err
  	}
  
  	return k.writeKey(keyBlock, updatedKEK, updatedHeaderObj)
  }
docs: // ViewAndRotateKEK re-encrypts the key with a new KEK