Example usage for org.bouncycastle.crypto Signer update

List of usage examples for org.bouncycastle.crypto Signer update

Introduction

In this page you can find the example usage for org.bouncycastle.crypto Signer update.

Prototype

public void update(byte[] in, int off, int len);

Source Link

Document

update the internal digest with the byte array in

Usage

From source file:com.codename1.payments.GooglePlayValidator.java

/**
 * Create JWT token.  See https://developers.google.com/identity/protocols/OAuth2ServiceAccount#delegatingauthority
 * @param payload/*from   www.  j  a v  a  2s.c  o m*/
 * @return 
 */
private String createJWT(String payload) {
    try {
        Map header = new HashMap();
        header.put("alg", "RS256");
        header.put("typ", "JWT");

        Map claims = new HashMap();
        claims.put("iss", getGoogleClientId());
        claims.put("scope", "https://www.googleapis.com/auth/androidpublisher");
        claims.put("aud", "https://www.googleapis.com/oauth2/v4/token");
        claims.put("exp", String.valueOf(System.currentTimeMillis() / 1000l + 1800));
        claims.put("iat", String.valueOf(System.currentTimeMillis() / 1000l));

        String headerEnc = Base64.encodeNoNewline(Result.fromContent(header).toString().getBytes("UTF-8"))
                .replace('+', '-').replace('/', '_').replace("=", " ");
        String claimsEnc = Base64.encodeNoNewline(Result.fromContent(claims).toString().getBytes("UTF-8"))
                .replace('+', '-').replace('/', '_').replace("=", " ");
        ;
        String sigContent = headerEnc + "." + claimsEnc;

        Digest digest = new SHA256Digest();
        Signer signer = new RSADigestSigner(digest);

        String pkey = getGooglePrivateKey();
        RSAPrivateKey rpkey = getRSAPrivateKey(pkey);
        signer.init(true, new RSAKeyParameters(true, rpkey.getModulus(), rpkey.getPrivateExponent()));

        byte[] sigBytes = sigContent.getBytes("UTF-8");
        signer.update(sigBytes, 0, sigBytes.length);

        byte[] sig = signer.generateSignature();

        RSAKeyParameters kp = new RSAKeyParameters(false, rpkey.getModulus(), rpkey.getPublicExponent());
        signer.init(false, kp);
        signer.update(sigBytes, 0, sigBytes.length);
        boolean res = signer.verifySignature(sig);
        if (!res) {
            throw new RuntimeException("Failed to verify signature after creating it");
        }

        String jwt = headerEnc + "." + claimsEnc + "."
                + Base64.encodeNoNewline(sig).replace('+', '-').replace('/', '_').replace("=", " ");
        ;
        return jwt;
    } catch (Exception ex) {
        throw new RuntimeException(ex);
    }

}

From source file:com.github.jinahya.rfc5849.OAuthSignatureRsaSha1Bc.java

License:Apache License

@Override
byte[] get(final CipherParameters initParam, final byte[] baseBytes) throws Exception {
    final Signer signer = new RSADigestSigner(new SHA1Digest());
    signer.init(true, initParam);//from w w  w. ja v  a  2 s  . co m
    signer.update(baseBytes, 0, baseBytes.length);
    return signer.generateSignature();
}

From source file:org.candlepin.util.DERUtil.java

License:Open Source License

public static void writeBytes(OutputStream out, byte[] value, Signer signer) throws IOException {
    out.write(value);/*  w  ww.ja va2s.  c  om*/
    if (signer != null) {
        signer.update(value, 0, value.length);
    }
}

From source file:org.opcfoundation.ua.transport.security.BcCryptoProvider.java

License:Open Source License

@Override
public byte[] signAsymm(PrivateKey senderPrivate, SecurityAlgorithm algorithm, byte[] dataToSign)
        throws ServiceResultException {
    if (algorithm == null)
        return null;

    if (dataToSign == null || senderPrivate == null)
        throw new IllegalArgumentException("null arg");

    java.security.interfaces.RSAPrivateCrtKey privateKey = (java.security.interfaces.RSAPrivateCrtKey) senderPrivate;
    RSAPrivateKey privKey = new RSAPrivateKey(privateKey.getModulus(), privateKey.getPublicExponent(),
            privateKey.getPrivateExponent(), privateKey.getPrimeP(), privateKey.getPrimeQ(),
            privateKey.getPrimeExponentP(), privateKey.getPrimeExponentQ(), privateKey.getCrtCoefficient());

    Signer signer = getAsymmetricSigner(true, algorithm, privKey);
    signer.update(dataToSign, 0, dataToSign.length);

    try {/*from w w w. ja v a  2 s  .c o  m*/
        return signer.generateSignature();
    } catch (DataLengthException e) {
        logger.error("Input data is not an even number of encryption blocks.");
        throw new ServiceResultException(StatusCodes.Bad_InternalError,
                "Error in symmetric decrypt: Input data is not an even number of encryption blocks.");
    } catch (CryptoException e) {
        throw new ServiceResultException(StatusCodes.Bad_InternalError, e);
    }

}

From source file:org.opcfoundation.ua.transport.security.BcCryptoProvider.java

License:Open Source License

@Override
public boolean verifyAsymm(PublicKey signingCertificate, SecurityAlgorithm algorithm, byte[] dataToVerify,
        byte[] signature) throws ServiceResultException {
    if (algorithm == null)
        return true;
    if (signingCertificate == null || dataToVerify == null || signature == null)
        throw new IllegalArgumentException("null arg");

    java.security.interfaces.RSAPublicKey signingCertificateRSA = (java.security.interfaces.RSAPublicKey) signingCertificate;
    RSAPublicKey publicKey = new RSAPublicKey(signingCertificateRSA.getModulus(),
            signingCertificateRSA.getPublicExponent());
    Signer signer = getAsymmetricSigner(false, algorithm, publicKey);
    signer.update(dataToVerify, 0, dataToVerify.length);
    return signer.verifySignature(signature);

}