protected Signer createSigner(AlgorithmIdentifier sigAlgId, AlgorithmIdentifier digAlgId) throws OperatorCreationException { if (!AlgorithmUtil.isRSASigAlgId(sigAlgId)) { throw new OperatorCreationException( "the given algorithm is not a valid RSA signature algirthm '" + sigAlgId.getAlgorithm().getId() + "'"); } if (!PKCSObjectIdentifiers.id_RSASSA_PSS.equals(sigAlgId.getAlgorithm())) { Digest dig = digestProvider.get(digAlgId); return new RSADigestSigner(dig); } try { return SignerUtil.createPSSRSASigner(sigAlgId); } catch (XiSecurityException ex) { throw new OperatorCreationException(ex.getMessage(), ex); } }
static Signer createSigner(int keyAlgorithm, int hashAlgorithm) throws PGPException { switch(keyAlgorithm) { case PublicKeyAlgorithmTags.RSA_GENERAL: case PublicKeyAlgorithmTags.RSA_SIGN: return new RSADigestSigner(createDigest(hashAlgorithm)); case PublicKeyAlgorithmTags.DSA: return new DSADigestSigner(new DSASigner(), createDigest(hashAlgorithm)); case PublicKeyAlgorithmTags.ECDSA: return new DSADigestSigner(new ECDSASigner(), createDigest(hashAlgorithm)); default: throw new PGPException("cannot recognise keyAlgorithm: " + keyAlgorithm); } }
/** * Calculates the signature of a ticket and updates the given {@link Ticket} object directly. * * @throws IllegalStateException * If ticket cannot be signed. */ public void signTicket(Ticket ticket) throws IllegalStateException { byte[] serialized = TicketUtil.serialize(ticket); byte[] claimBytes = TicketUtil.deserialize(ByteBuffer.wrap(serialized)).getRight(); RSAPrivateCrtKeyParameters signingKey = keyManager.getPrivateSigningKey(); if (signingKey == null) throw new IllegalStateException("Cannot sign ticket because there is no private signing key available."); RSADigestSigner signer = new RSADigestSigner(new SHA256Digest()); signer.init(true, signingKey); signer.update(claimBytes, 0, claimBytes.length); try { byte[] signature = signer.generateSignature(); ticket.setSignature(signature); } catch (DataLengthException | CryptoException e) { throw new IllegalStateException("Cannot sign ticket", e); } }
protected Signer createSigner(AlgorithmIdentifier sigAlgId) throws OperatorCreationException { AlgorithmIdentifier digAlg = digestAlgorithmFinder.find(sigAlgId); Digest dig = digestProvider.get(digAlg); return new RSADigestSigner(dig); }
protected Signer createSigner(AlgorithmIdentifier sigAlgId, AlgorithmIdentifier digAlgId) throws OperatorCreationException { Digest dig = digestProvider.get(digAlgId); return new RSADigestSigner(dig); }
@Override protected Signer createSigner(AlgorithmIdentifier sigAlgId) throws OperatorCreationException { if (PKCSObjectIdentifiers.id_RSASSA_PSS.equals(sigAlgId.getAlgorithm())) { try { return SignerUtil.createPSSRSASigner(sigAlgId); } catch (XiSecurityException ex) { throw new OperatorCreationException(ex.getMessage(), ex); } } else { AlgorithmIdentifier digAlg = digestAlgorithmFinder.find(sigAlgId); return new RSADigestSigner(digestProvider.get(digAlg)); } }
public static void verifySignatureSHA256(APublicKey publicKey, byte[] payload, byte[] sig) throws Exception { CipherParameters pub = getCipherParameters(publicKey); RSADigestSigner signer = new RSADigestSigner(new SHA256Digest()); signer.init(false, pub); signer.update(payload, 0, payload.length); if(!signer.verifySignature(sig)) { throw new Exception("failed signature verification"); } }
public static byte[] generateSignatureSHA256(APrivateKey privateKey, byte[] payload) throws Exception { CipherParameters pub = getCipherParameters(privateKey); RSADigestSigner signer = new RSADigestSigner(new SHA256Digest()); signer.init(true, pub); signer.update(payload, 0, payload.length); return signer.generateSignature(); }
/** * Checks if a {@link Ticket} has a valid signature. * * @param deserializedTicket * The result of {@link TicketUtil#deserialize(ByteBuffer)} of the serialized {@link Ticket}. * @return true if {@link Ticket} signature is valid. */ public boolean isValidTicketSignature(Pair<Ticket, byte[]> deserializedTicket) { for (RSAKeyParameters pubKey : keyManager.getPublicValidationKeys()) { RSADigestSigner signer = new RSADigestSigner(new SHA256Digest()); signer.init(false, pubKey); signer.update(deserializedTicket.getRight(), 0, deserializedTicket.getRight().length); if (signer.verifySignature(deserializedTicket.getLeft().getSignature())) return true; } return false; }
static Signer createSigner(int keyAlgorithm, int hashAlgorithm) throws PGPException { switch(keyAlgorithm) { case PublicKeyAlgorithmTags.RSA_GENERAL: case PublicKeyAlgorithmTags.RSA_SIGN: return new RSADigestSigner(createDigest(hashAlgorithm)); case PublicKeyAlgorithmTags.DSA: return new DSADigestSigner(new DSASigner(), createDigest(hashAlgorithm)); default: throw new PGPException("cannot recognise keyAlgorithm"); } }
/** * Creates a new RSA signature class that uses the given digest algorithm * for message digest computation. * * @param d * Message digest algorithm. */ public RSASignature(final DigestAlgorithm d) { super(ALGORITHM); digest = d; signer = new RSADigestSigner(d.getDigest()); }