Python - добавление аутентификации WSSE - PullRequest
0 голосов
/ 03 октября 2019

Я пытаюсь реализовать аутентификацию 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);
   }
...