Génération de la signature HmacSHA256 dans JUnit

J’essaie de signer mon message sur Amazon AWS (à l’intérieur du test JUnit), mais j’ai rencontré un problème. Voici le code que j’utilise:

Ssortingng secretAccessKey = "secret1234678901"; SecretKeySpec keySpec = new SecretKeySpec(secretAccessKey.getBytes(UTF-8), "HmacSHA256"); Mac mac = Mac.getInstance(this.MAC_ALGO); mac.init(keySpec); // here it breaks byte[] encoded = mac.doFinal( request.toSsortingng().getBytes(this.CHARSET)); return Base64.encodeBase64URLSafeSsortingng(encoded); 

Dans la ligne marquée ( mac.init(...) ), Java lève une exception:

 java.lang.ClassCastException: com.sun.crypto.provider.HmacSHA1 cannot be cast to javax.crypto.MacSpi at javax.crypto.Mac.a(DashoA13*..) at javax.crypto.Mac.init(DashoA13*..) 

Savez-vous pourquoi cela se produit? Tous les codes que j’ai vus sur le net ressemblent presque exactement à ça, j’ai aussi essayé avec HmacSHA1, avec les mêmes résultats.

Désolé, je n’ai pas tout ajouté. Le code ci-dessus a été testé avec junit et powermockito. Mais powermockito ne peut pas améliorer les classes javax.crypto, j’ai donc dû append @PowerMockIgnore("javax.crypto.*") junit.