Skip to content

Commit

Permalink
Use java crypto when signing requests if possible
Browse files Browse the repository at this point in the history
  • Loading branch information
RaphiMC committed Aug 25, 2024
1 parent a56d467 commit e64c5d5
Showing 1 changed file with 16 additions and 5 deletions.
21 changes: 16 additions & 5 deletions src/main/java/net/raphimc/minecraftauth/util/CryptUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,7 @@
import java.io.IOException;
import java.math.BigInteger;
import java.nio.charset.StandardCharsets;
import java.security.KeyFactory;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.*;
import java.security.interfaces.ECPrivateKey;
import java.security.interfaces.ECPublicKey;
import java.security.spec.InvalidKeySpecException;
Expand Down Expand Up @@ -124,7 +121,21 @@ public static HttpHeader getSignatureHeader(final HttpRequest httpRequest, final
data = new DataOutputStream(header);
data.writeInt(1); // Policy Version
data.writeLong(windowsTimestamp); // Timestamp
data.write(Jwts.SIG.ES256.digest(new DefaultSecureRequest<>(new ByteArrayInputStream(signatureContent.toByteArray()), null, null, privateKey))); // Signature

try {
byte[] signature;
try { // Java 9+ only
final Signature ecdsaSignature = Signature.getInstance("SHA256withECDSAinP1363Format");
ecdsaSignature.initSign(privateKey);
ecdsaSignature.update(signatureContent.toByteArray());
signature = ecdsaSignature.sign();
} catch (NoSuchAlgorithmException e) { // Fallback for Java 8
signature = Jwts.SIG.ES256.digest(new DefaultSecureRequest<>(new ByteArrayInputStream(signatureContent.toByteArray()), null, null, privateKey));
}
data.write(signature); // Signature
} catch (Throwable e) {
throw new RuntimeException("Could not sign request", e);
}

return new HttpHeader("Signature", Base64.getEncoder().encodeToString(header.toByteArray()));
}
Expand Down

0 comments on commit e64c5d5

Please sign in to comment.