anchor.diff:         sign_verify_dsa,
          sign_verify_ecdsa,
          sign_verify_rsa_pwd,
  +       sign_verify_rsa_pwd_bad_pwd,
          priv_encrypt_pub_decrypt_rsa,
          priv_encrypt_pub_decrypt_rsa_pwd,
          pub_encrypt_priv_decrypt_rsa,
          pub_encrypt_priv_decrypt_rsa_pwd,
  +       get_pub_from_priv_key_rsa,
  +       get_pub_from_priv_key_rsa_pwd,
  +       get_pub_from_priv_key_rsa_pwd_no_pwd,
  +       get_pub_from_priv_key_rsa_pwd_bad_pwd,
          get_pub_from_priv_key_dsa,
          get_pub_from_priv_key_ecdsa
         ]}].
  
positive.code: 
  pub_encrypt_priv_decrypt_rsa_pwd(Config) ->
      Priv = #{engine => engine_ref(Config),
               key_id => key_id(Config, "rsa_private_key.pem"),
               password => "password"},
      Pub  = #{engine => engine_ref(Config),
               key_id => key_id(Config, "rsa_public_key.pem")},
      pub_enc_priv_dec(rsa, Pub, Priv,  rsa_pkcs1_padding).
  
  get_pub_from_priv_key_rsa(Config) ->
  
negative.code:              key_id => key_id(Config, "rsa_public_key_pwd.pem")},
      sign_verify(rsa, sha, Priv, Pub).
  
  sign_verify_rsa_pwd_bad_pwd(Config) ->
      Priv = #{engine => engine_ref(Config),
               key_id => key_id(Config, "rsa_private_key_pwd.pem"),
               password => "Bad password"},
      Pub  = #{engine => engine_ref(Config),
               key_id => key_id(Config, "rsa_public_key_pwd.pem")},
      try sign_verify(rsa, sha, Priv, Pub) of
          _ -> {fail, "PWD prot pubkey sign succeded with no pwd!"}
      catch
          error:badarg -> ok
      end.  
  
  priv_encrypt_pub_decrypt_rsa(Config) ->
      Priv = #{engine => engine_ref(Config),
               key_id => key_id(Config, "rsa_private_key.pem")},
  