code: func compare(this, that bccsp.Key) bool {
  	var err error
  	if this.Private() {
  		this, err = this.PublicKey()
  		if err != nil {
  			return false
  		}
  	}
  	if that.Private() {
  		that, err = that.PublicKey()
  		if err != nil {
  			return false
  		}
  	}
  
  	return reflect.DeepEqual(this, that)
  }
docs: /********************/
  /* Helper functions */
  /********************/
  // compare returns true if the two supplied keys are equivalent.
  // If the supplied keys are symmetric keys, we compare their
  // public versions. This is required because when we compare
  // two entities, we might compare the public and the private
  // version of the same entity and expect to be told that the
  // entities are equivalent