code: func (csp *CSP) KeyImport(raw interface{}, opts bccsp.KeyImportOpts) (k bccsp.Key, err error) {
  	// Validate arguments
  	if raw == nil {
  		return nil, errors.New("Invalid raw. It must not be nil.")
  	}
  	if opts == nil {
  		return nil, errors.New("Invalid opts. It must not be nil.")
  	}
  
  	keyImporter, found := csp.KeyImporters[reflect.TypeOf(opts)]
  	if !found {
  		return nil, errors.Errorf("Unsupported 'KeyImportOpts' provided [%v]", opts)
  	}
  
  	k, err = keyImporter.KeyImport(raw, opts)
  	if err != nil {
  		return nil, errors.Wrapf(err, "Failed importing key with opts [%v]", opts)
  	}
  
  	// If the key is not Ephemeral, store it.
  	if !opts.Ephemeral() {
  		// Store the key
  		err = csp.ks.StoreKey(k)
  		if err != nil {
  			return nil, errors.Wrapf(err, "Failed storing imported key with opts [%v]", opts)
  		}
  	}
  
  	return
  }
docs: // KeyImport imports a key from its raw representation using opts.
  // The opts argument should be appropriate for the primitive used.