code: func (csp *CSP) Decrypt(k bccsp.Key, ciphertext []byte, opts bccsp.DecrypterOpts) (plaintext []byte, err error) {
  	// Validate arguments
  	if k == nil {
  		return nil, errors.New("Invalid Key. It must not be nil.")
  	}
  
  	decryptor, found := csp.Decryptors[reflect.TypeOf(k)]
  	if !found {
  		return nil, errors.Errorf("Unsupported 'DecryptKey' provided [%v]", k)
  	}
  
  	plaintext, err = decryptor.Decrypt(k, ciphertext, opts)
  	if err != nil {
  		return nil, errors.Wrapf(err, "Failed decrypting with opts [%v]", opts)
  	}
  
  	return
  }
docs: // Decrypt decrypts ciphertext using key k.
  // The opts argument should be appropriate for the primitive used.