Я пытаюсь реализовать аутентификацию WSSE в Python 3.x. У меня есть несколько проблем, потому что использовал код из Java для перевода на Python. Например, прошел через ошибки и исправил их один за другим, но теперь у меня есть подпись с кодом ответа 401. Возможно, это связано с неправильным заполнением атрибутов USername, PasswordDigest или Nonce. Кто-нибудь может помочь?
Например, мне нужно перевести этот код:
private String getNonce() {
byte[] nonceBytes = new byte[16];
new Random().nextBytes(nonceBytes);
return bytesToHex(nonceBytes);
}
private String getPasswordDigest(String nonce, String timestamp) {
String digest = "";
try {
MessageDigest messageDigest = MessageDigest.getInstance("SHA-1");
messageDigest.reset();
String hashedString = String.format("%s%s%s", nonce, timestamp,
apiSecretKey);
messageDigest.update(hashedString.getBytes("UTF-8"));
String sha1Sum = bytesToHex(messageDigest.digest());
digest = DatatypeConverter.printBase64Binary(sha1Sum.getBytes("UTF-8"));
} catch (NoSuchAlgorithmException ex) {
System.out.println("No SHA-1 algorithm was found!");
} catch (UnsupportedEncodingException ex) {
System.out.println("Cannot use UTF-8 encoding.");
}
System.out.printf("Digest:%s\n",digest);
return digest;
}
private String bytesToHex(byte[] bytes) {
char[] hexChars = new char[bytes.length * 2];
for (int j = 0; j < bytes.length; j++) {
int v = bytes[j] & 0xFF;
hexChars[j * 2] = hexArray[v >>> 4];
hexChars[j * 2 + 1] = hexArray[v & 0x0F];
}
return new String(hexChars);
}