AES standard C library implementation I'm working to implement AES (128/256 - either) on one of the RISCV ISA processors &amp; later improve performance by introducing a custom instruction in RISCV ISA. 

I'm a crypto newbie and plan to use the 
NIST test vectors to validate this C code. 

I need to know the below things 

1) Is there a link wherein i can find implementation of AES using standard C library ?

2) Do i have to use some hashing scheme along with AES ?  If yes, which one ?

3) Is it a good idea to validate my AES C code  with the NIST test vectors

4) Do you recommend using a encryption library instead ? If so where can i find it ?
Don't roll your own. (AKA: The first rule of cryptography.)



Do not create your own cipher, do not implement a cipher.


  Is there a link wherein i can find implementation of AES using standard C library ?


You can find a C implementation of AES in The Design of Rijndael, Section E, page 221. Test vectors are also provided in Section D. However, it is not recommended to use this implementation because it is vulnerable to 
cache timing attacks: 


Cache-timing attacks on AES.: Dan J. Bernstein 
Cache Attacks and Countermeasures: the Case of AES, Dag Arne Osvik, Adi Shamir and Eran Tromer
Faster and Timing-Attack Resistant AES-GCM: Emilia Kasper and Peter Schwabe



  Do i have to use some hashing scheme along with AES ? If yes, which one ?


You need a hashing scheme only if you want to provide authenticity/integrity (see MAC schemes, for more reading about this see here).
Thus having a hashing scheme along is completely independent to having your AES implementation. You might however want to have a look at AES with GCM, EAX or CCM  to provide authentication.

For hashing function, if you go by the standards, it is advised to use at least SHA-256 or even better SHA3-256 (as specified in FIPS 202 by the NIST).


  Is it a good idea to validate my AES C code with the NIST test vectors


It is more than a good idea. It is required. However, making your implementation work and produce the same results as the test vectors does not guarantees you that your implementation is correct (it does still provide you a strong confidence that your code might be correct). You have to check that every parts of your implementation matches the specifications of the algorithm.


  Do you recommend using a encryption library instead ? If so where can i find it ? 


Using a encryption library is highly recommended. It will prevent you from suffering from cache timing attacks and other nasty things. It also guarantees that the code is correctly implemented. As for which library to use, at the time of the post (October 2016), you can have a look at OpenSSL, Libsodium or NaCl.