org.bouncycastle.asn1.ASN1Primitive Java Examples

The following examples show how to use org.bouncycastle.asn1.ASN1Primitive. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: SM2Algorithm.java    From web3sdk with Apache License 2.0 6 votes vote down vote up
public static boolean verify(byte[] data, byte[] signData, String hexPbkX, String hexPbkY)
        throws IOException {
    BigInteger biX = new BigInteger(hexPbkX, 16);
    BigInteger biY = new BigInteger(hexPbkY, 16);

    ASN1Sequence as = (ASN1Sequence) ASN1Primitive.fromByteArray(signData);
    BigInteger[] rs =
            new BigInteger[] {
                ((ASN1Integer) as.getObjectAt(0)).getValue(),
                ((ASN1Integer) as.getObjectAt(1)).getValue()
            };

    byte[] r = getEncoded(rs[0]);
    byte[] s = getEncoded(rs[1]);

    byte[] rsBytes = new byte[r.length + s.length];
    System.arraycopy(r, 0, rsBytes, 0, r.length);
    System.arraycopy(s, 0, rsBytes, r.length, s.length);

    return verify(data, rsBytes, biX, biY);
}
 
Example #2
Source File: JarSigner.java    From keystore-explorer with GNU General Public License v3.0 6 votes vote down vote up
private static CMSSignedData addTimestamp(String tsaUrl, CMSSignedData signedData) throws IOException {

		Collection<SignerInformation> signerInfos = signedData.getSignerInfos().getSigners();

		// get signature of first signer (should be the only one)
		SignerInformation si = signerInfos.iterator().next();
		byte[] signature = si.getSignature();

		// send request to TSA
		byte[] token = TimeStampingClient.getTimeStampToken(tsaUrl, signature, DigestType.SHA1);

		// create new SignerInformation with TS attribute
		Attribute tokenAttr = new Attribute(PKCSObjectIdentifiers.id_aa_signatureTimeStampToken,
				new DERSet(ASN1Primitive.fromByteArray(token)));
		ASN1EncodableVector timestampVector = new ASN1EncodableVector();
		timestampVector.add(tokenAttr);
		AttributeTable at = new AttributeTable(timestampVector);
		si = SignerInformation.replaceUnsignedAttributes(si, at);
		signerInfos.clear();
		signerInfos.add(si);
		SignerInformationStore newSignerStore = new SignerInformationStore(signerInfos);

		// create new signed data
		CMSSignedData newSignedData = CMSSignedData.replaceSigners(signedData, newSignerStore);
		return newSignedData;
	}
 
Example #3
Source File: ProxyMessage.java    From xipki with Apache License 2.0 6 votes vote down vote up
public static SlotIdAndObjectId getInstance(Object obj) throws BadAsn1ObjectException {
  if (obj == null || obj instanceof SlotIdAndObjectId) {
    return (SlotIdAndObjectId) obj;
  }

  try {
    if (obj instanceof ASN1Sequence) {
      return new SlotIdAndObjectId((ASN1Sequence) obj);
    } else if (obj instanceof byte[]) {
      return getInstance(ASN1Primitive.fromByteArray((byte[]) obj));
    } else {
      throw new BadAsn1ObjectException("unknown object: " + obj.getClass().getName());
    }
  } catch (IOException | IllegalArgumentException ex) {
    throw new BadAsn1ObjectException("unable to parse encoded object: " + ex.getMessage(), ex);
  }
}
 
Example #4
Source File: PolicyInfo.java    From signer with GNU Lesser General Public License v3.0 6 votes vote down vote up
@Override
public void parse(ASN1Primitive derObject) {
    ASN1Sequence derSequence = ASN1Object.getDERSequence(derObject);
    ASN1Primitive firstObject = derSequence.getObjectAt(0).toASN1Primitive();
    this.policyName = new DirectoryString(firstObject.toString());
    ASN1Primitive secondObject = derSequence.getObjectAt(1).toASN1Primitive();
    String fieldOfApplication = secondObject.toString();
    this.fieldOfApplication = new DirectoryString(fieldOfApplication);
    this.signingPeriod = new SigningPeriod();
    this.signingPeriod.parse(derSequence.getObjectAt(2).toASN1Primitive());

    int indice = 3;
    ASN1Primitive revocationObject = derSequence.getObjectAt(indice).toASN1Primitive();
    if (!(secondObject instanceof DERTaggedObject)) {
        indice = 4;
    }
    if (indice == 3) {
        this.revocationDate = new Time();
        this.revocationDate.parse(revocationObject);
    }
}
 
Example #5
Source File: LPA.java    From signer with GNU Lesser General Public License v3.0 6 votes vote down vote up
@Override
public void parse(ASN1Primitive derObject) {
    ASN1Sequence sequence = ASN1Object.getDERSequence(derObject);
    ASN1Primitive policyInfos = sequence.getObjectAt(0).toASN1Primitive();
    DLSequence policyInfosSequence = (DLSequence) policyInfos;
    if (policyInfosSequence != null && policyInfosSequence.size() > 0) {
        this.policyInfos = new ArrayList<>();
        for (int i = 0; i < policyInfosSequence.size(); i++) {
            PolicyInfo policyInfo = new PolicyInfo();
            policyInfo.parse(policyInfosSequence.getObjectAt(i).toASN1Primitive());
            this.policyInfos.add(policyInfo);
        }
    }
    this.nextUpdate = new Time();
    this.nextUpdate.parse(sequence.getObjectAt(1).toASN1Primitive());
}
 
Example #6
Source File: DSSASN1UtilsTest.java    From dss with GNU Lesser General Public License v2.1 6 votes vote down vote up
@Test
public void isArchiveTimeStampTokenTest() {
	String atstV2 = "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";
	ASN1Primitive asn1Primitive = DSSASN1Utils.toASN1Primitive(Utils.fromBase64(atstV2));
	Attribute atstV2Attibute = new Attribute(OID.id_aa_ets_archiveTimestampV2, new DERSet(asn1Primitive));
	assertTrue(DSSASN1Utils.isArchiveTimeStampToken(atstV2Attibute));
	
	String atstV3 = "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";
	asn1Primitive = DSSASN1Utils.toASN1Primitive(Utils.fromBase64(atstV3));
	Attribute atstV3Attibute = new Attribute(OID.id_aa_ets_archiveTimestampV3, new DERSet(asn1Primitive));
	assertTrue(DSSASN1Utils.isArchiveTimeStampToken(atstV3Attibute));
	
	String sigTst = "MIIVJQYJKoZIhvcNAQcCoIIVFjCCFRICAQMxDzANBglghkgBZQMEAgEFADCCARMGCyqGSIb3DQEJEAEEoIIBAgSB/zCB/AIBAQYKKwYBBAH7SwUCAjAxMA0GCWCGSAFlAwQCAQUABCBT2S93XuvGV5XB9P74rlXpEBNQw7v+LkhVqlWcwyGgDwIVAKzJneGO+8crMY8T0qaCcD2284U4GBMyMDE4MDUwNzE0MTMxMS4xMDRaMAOAAQECCQDAIEqncxQduqB8pHoweDEpMCcGA1UEAxMgVW5pdmVyc2lnbiBUaW1lc3RhbXBpbmcgVW5pdCAwMjAxHDAaBgNVBAsTEzAwMDIgNDM5MTI5MTY0MDAwMjYxIDAeBgNVBAoTF0NyeXB0b2xvZyBJbnRlcm5hdGlvbmFsMQswCQYDVQQGEwJGUqCCBGEwggRdMIIDRaADAgECAhEArBfUtF0gHC6S0qdGjvl/XDANBgkqhkiG9w0BAQsFADB3MQswCQYDVQQGEwJGUjEgMB4GA1UEChMXQ3J5cHRvbG9nIEludGVybmF0aW9uYWwxHDAaBgNVBAsTEzAwMDIgNDM5MTI5MTY0MDAwMjYxKDAmBgNVBAMTH1VuaXZlcnNpZ24gVGltZXN0YW1waW5nIENBIDIwMTUwHhcNMTgwNDI2MTYxMDIxWhcNMjQwNDI2MTYxMDIxWjB4MSkwJwYDVQQDEyBVbml2ZXJzaWduIFRpbWVzdGFtcGluZyBVbml0IDAyMDEcMBoGA1UECxMTMDAwMiA0MzkxMjkxNjQwMDAyNjEgMB4GA1UEChMXQ3J5cHRvbG9nIEludGVybmF0aW9uYWwxCzAJBgNVBAYTAkZSMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAl6X5QfrFNO3B94xi9xV9dJ7jrV62qDK8MZ6x+3tKmXYBb0TIdXwki3ODlgBVxx2AK5mJ7QuJow3Sbd233utmKG14LNeeWGA1/X8XDD4N+iUTaCeZr5HUv4lRn8sTBtAeaDTEk1tThkNiG8+mxlSGaMEWFA4gzWGatmy5XzjstA0InCzQ0NhH4H4i3RCWO3VJeV/2pMrmbDhu08tufmkaazCo5yW+Wd/3uJYNoVLOKRGNlg8M94obfpEtbdIW/cN4uN9Q2kjA1mo8RZYIcZj401ENRpy5HTD4iXRABKAD+3PARE9y92mgB2PRc4552dR2N1VMC46u5I1nW9vpiLHQXwIDAQABo4HiMIHfMAkGA1UdEwQCMAAwQQYDVR0gBDowODA2BgorBgEEAftLBQEBMCgwJgYIKwYBBQUHAgEWGmh0dHA6Ly9kb2NzLnVuaXZlcnNpZ24uZXUvMEYGA1UdHwQ/MD0wO6A5oDeGNWh0dHA6Ly9jcmwudW5pdmVyc2lnbi5ldS91bml2ZXJzaWduX3RzYV9yb290XzIwMTUuY3JsMA4GA1UdDwEB/wQEAwIHgDAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDAfBgNVHSMEGDAWgBT6Te1XO70/85Ezmgs5pH9dEt0HRjANBgkqhkiG9w0BAQsFAAOCAQEAM1pmbLsBnQ6wIo+eZA7Gm9sgVPFkV6sT/jKzI+VV31/XluCt4FZ6QrQxpNnfYLcKW/aTlLfXv3tZxfPoSaSRo0UdwQB62wKHKK1Ht2rrDLNg/GXJFUgGbyVHd8JohphxSgahdqKZwjKw6Bz5Guq+BxeJnseLbI2a2mDQNXNWdgBLkSNIlwayNxOUW1w2oSXsvUWo/QOqwbBb+yN5/UFHNMMHQgysi2ICRXfO9VcTrtTALyXwO0lq95v4oEK+EvbBwGKN+KVfMh3AEGDvD+u0tpMMVQWqfha9aThu6hARJtvtYrQo0z0xxI8Xw6XI2CCSDJKCii5fvS3085kQYxnJnTGCD34wgg96AgEBMIGMMHcxCzAJBgNVBAYTAkZSMSAwHgYDVQQKExdDcnlwdG9sb2cgSW50ZXJuYXRpb25hbDEcMBoGA1UECxMTMDAwMiA0MzkxMjkxNjQwMDAyNjEoMCYGA1UEAxMfVW5pdmVyc2lnbiBUaW1lc3RhbXBpbmcgQ0EgMjAxNQIRAKwX1LRdIBwuktKnRo75f1wwDQYJYIZIAWUDBAIBBQCgggESMBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAvBgkqhkiG9w0BCQQxIgQgmaKGszakb6yDvyWo9JyI97mmtwpCk3ymtFDpZCtGjNYwgcIGCyqGSIb3DQEJEAIMMYGyMIGvMIGsMIGpBBQeNoFgPxJGsxWx1FHS7k2Xb23nMTCBkDB7pHkwdzELMAkGA1UEBhMCRlIxIDAeBgNVBAoTF0NyeXB0b2xvZyBJbnRlcm5hdGlvbmFsMRwwGgYDVQQLExMwMDAyIDQzOTEyOTE2NDAwMDI2MSgwJgYDVQQDEx9Vbml2ZXJzaWduIFRpbWVzdGFtcGluZyBDQSAyMDE1AhEArBfUtF0gHC6S0qdGjvl/XDANBgkqhkiG9w0BAQsFAASCAQB0l5gdcsr2if0E2vC+4HjED6vcmjX3jB6sz9pFeXad5RQaF/9KcnUPFfpBRldkl8WQmmpcNLo0c8xnG+YluDM3rxIju6IIkEMnkdAq5qW964r7mWnlHszekWPF85bNNoGNUBfTaAz0JYlMmtl//WtTjg/mXms1XKmOd/+Ec62BWlm8PrVjwSqZbMi8L20tLxM616pXWhbw5Zy4BIUhLZavQlynM/NYUwM1uxB+J40JJ59JbeZtMidXZkBp+M9Md3cOInDcARNysoeNewaJaMgLxdksHSDIuABeksKDCXUe80xXllZt1gTkQNSuThBr8qq+pA4R4hE0Un7hsSp4TaF4oYIMrDCB+wYLKoZIhvcNAQkQAhUxgeswgegwgeUwUTANBglghkgBZQMEAgMFAARA2T0WGDDbckV+bHZCcJ2LZcuu0P9BNqb+N6LA8zedQ5noDNOFgvL7lj8rZZELHM3BovZvY/Fqmx02Vfy4ij96nTCBjzB7pHkwdzELMAkGA1UEBhMCRlIxIDAeBgNVBAoTF0NyeXB0b2xvZyBJbnRlcm5hdGlvbmFsMRwwGgYDVQQLExMwMDAyIDQzOTEyOTE2NDAwMDI2MSgwJgYDVQQDEx9Vbml2ZXJzaWduIFRpbWVzdGFtcGluZyBDQSAyMDE1AhA/y6YTRhSkT/KEuIyBp6ikMIIBDgYLKoZIhvcNAQkQAhYxgf4wgfswgfigge8wgewwgekwgeYwUTANBglghkgBZQMEAgMFAARAYKPiFQeLbxNNz+1FB7Cqtl1qxS7Sq3hKf7s1SGXWO2HPf/LRo6murVuOMWS8aEGKSqRXoowRig8aNN6vDTMWyTCBkDB3MQswCQYDVQQGEwJGUjEgMB4GA1UEChMXQ3J5cHRvbG9nIEludGVybmF0aW9uYWwxHDAaBgNVBAsTEzAwMDIgNDM5MTI5MTY0MDAwMjYxKDAmBgNVBAMTH1VuaXZlcnNpZ24gVGltZXN0YW1waW5nIENBIDIwMTUXDTE4MDUwNTA2MzAzMFoCBgFLxlnQ86EEMAIwADCCAhsGCyqGSIb3DQEJEAIYMYICCjCCAgagggH+MIIB+jCCAfYwgd8CAQEwDQYJKoZIhvcNAQELBQAwdzELMAkGA1UEBhMCRlIxIDAeBgNVBAoTF0NyeXB0b2xvZyBJbnRlcm5hdGlvbmFsMRwwGgYDVQQLExMwMDAyIDQzOTEyOTE2NDAwMDI2MSgwJgYDVQQDEx9Vbml2ZXJzaWduIFRpbWVzdGFtcGluZyBDQSAyMDE1Fw0xODA1MDUwNjMwMzBaFw0xODA1MTIwNTMwMzBaoDQwMjAfBgNVHSMEGDAWgBT6Te1XO70/85Ezmgs5pH9dEt0HRjAPBgNVHRQECAIGAUvGWdDzMA0GCSqGSIb3DQEBCwUAA4IBAQAvn4IvU5VVPw2iCZs2C3EvEftqz2o9ex4Esu8Xpk+mvGU/eDH/1Z4sZQZIObiBZ+eestigPy0+qCEHHCnqMHKJVvzMekDhzggnuieXk+FWJZL52mCyXcPXybfFWKC8tVi41RBGThBQw7dpnVY6lPx7e1J00Vtn9vFbaSQrZ1HPSV3iyjO9dvM1Um+ekg6EmJTrsEyfJm1msdtdJQ9Jl1KyZdrxXDBS3pOcJ3NjsrdLT+7mTOj+LB3DuouvO2wiB3VeI6ZgR5FSMNiPAAo7NniH7axSoukWHMgt5bxKQx2oINmvImwzTh8pS+eN84e9gT3G68UOppoRFdY6LuAo4yxroQIwADCCCHkGCyqGSIb3DQEJEAIXMYIIaDCCCGQwggP/MIIC56ADAgECAhA/y6YTRhSkT/KEuIyBp6ikMA0GCSqGSIb3DQEBCwUAMHcxCzAJBgNVBAYTAkZSMSAwHgYDVQQKExdDcnlwdG9sb2cgSW50ZXJuYXRpb25hbDEcMBoGA1UECxMTMDAwMiA0MzkxMjkxNjQwMDAyNjEoMCYGA1UEAxMfVW5pdmVyc2lnbiBUaW1lc3RhbXBpbmcgQ0EgMjAxNTAeFw0xNTAxMjkxNDAzMTVaFw0yNTAxMjkxNDAzMTVaMHcxCzAJBgNVBAYTAkZSMSAwHgYDVQQKExdDcnlwdG9sb2cgSW50ZXJuYXRpb25hbDEcMBoGA1UECxMTMDAwMiA0MzkxMjkxNjQwMDAyNjEoMCYGA1UEAxMfVW5pdmVyc2lnbiBUaW1lc3RhbXBpbmcgQ0EgMjAxNTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANhzVUnr1bvSiN7C0psItn4/xsMBUnWq6POAhkS+bXkZhfsmn4eX2vDEF2zBJnxLkD/H7SPpgw4cfRn6IaXrj37QYZfWB0C6i9ApKGy8tLMP/Bog3GRddNVekBbdXh2cKBxveppX+k701OT+x1EnEzyVS1a4PtMQB8vPPtRyXqAGMNMDQbP4C1SQ1Y9yh8Ja4N+JIM46nIrBLGi917pJHAd1NdciILYOmF9+Ouvvgy8tvQtrkkBTCYksgfjaP9+uBl5aTXjzAszAFb6W+sgm0/Pt4c21OU19AuuaYkdbiX7K9Ox0kkOztBi1/MFM2DXOpXx6j+EfEVMUnz9P3BOYQ0kCAwEAAaOBhjCBgzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjBBBgNVHSAEOjA4MDYGCisGAQQB+0sFAQEwKDAmBggrBgEFBQcCARYaaHR0cDovL2RvY3MudW5pdmVyc2lnbi5ldS8wHQYDVR0OBBYEFPpN7Vc7vT/zkTOaCzmkf10S3QdGMA0GCSqGSIb3DQEBCwUAA4IBAQBzu53rv3fCB2NHxdzUvju591VNqYjlId85OG1E5+fwkvQe40cp1GC/oI6l2O23pHBARRRf+SbtD4+f4DaAD9eg9+oPSIx8/reQwzKqBqUQ9G/6VdsXDcZIL0FD2zYUvtJy9K4+btUNmGlg3nE3ofvbLjPsGCwNU2GQy7kCJbBtpYX4EfNl6K69gdfTP86BjagfSGW6i+5EBqdB3h05rvdttmFMk8VTOSB4jM6K5hLjbUiICqyOQXC7f6Th0wOph8MpRIhNszKaREOzNHRYY3MgjLY2xMFwpgIeZshX1L7XrmLxiN6StoGNNNJul9u3LzsDVLncLMDYQ3WqeZA/CoV+MIIEXTCCA0WgAwIBAgIRAKwX1LRdIBwuktKnRo75f1wwDQYJKoZIhvcNAQELBQAwdzELMAkGA1UEBhMCRlIxIDAeBgNVBAoTF0NyeXB0b2xvZyBJbnRlcm5hdGlvbmFsMRwwGgYDVQQLExMwMDAyIDQzOTEyOTE2NDAwMDI2MSgwJgYDVQQDEx9Vbml2ZXJzaWduIFRpbWVzdGFtcGluZyBDQSAyMDE1MB4XDTE4MDQyNjE2MTAyMVoXDTI0MDQyNjE2MTAyMVoweDEpMCcGA1UEAxMgVW5pdmVyc2lnbiBUaW1lc3RhbXBpbmcgVW5pdCAwMjAxHDAaBgNVBAsTEzAwMDIgNDM5MTI5MTY0MDAwMjYxIDAeBgNVBAoTF0NyeXB0b2xvZyBJbnRlcm5hdGlvbmFsMQswCQYDVQQGEwJGUjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJel+UH6xTTtwfeMYvcVfXSe461etqgyvDGesft7Spl2AW9EyHV8JItzg5YAVccdgCuZie0LiaMN0m3dt97rZihteCzXnlhgNf1/Fww+DfolE2gnma+R1L+JUZ/LEwbQHmg0xJNbU4ZDYhvPpsZUhmjBFhQOIM1hmrZsuV847LQNCJws0NDYR+B+It0Qljt1SXlf9qTK5mw4btPLbn5pGmswqOclvlnf97iWDaFSzikRjZYPDPeKG36RLW3SFv3DeLjfUNpIwNZqPEWWCHGY+NNRDUacuR0w+Il0QASgA/tzwERPcvdpoAdj0XOOednUdjdVTAuOruSNZ1vb6Yix0F8CAwEAAaOB4jCB3zAJBgNVHRMEAjAAMEEGA1UdIAQ6MDgwNgYKKwYBBAH7SwUBATAoMCYGCCsGAQUFBwIBFhpodHRwOi8vZG9jcy51bml2ZXJzaWduLmV1LzBGBgNVHR8EPzA9MDugOaA3hjVodHRwOi8vY3JsLnVuaXZlcnNpZ24uZXUvdW5pdmVyc2lnbl90c2Ffcm9vdF8yMDE1LmNybDAOBgNVHQ8BAf8EBAMCB4AwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwgwHwYDVR0jBBgwFoAU+k3tVzu9P/ORM5oLOaR/XRLdB0YwDQYJKoZIhvcNAQELBQADggEBADNaZmy7AZ0OsCKPnmQOxpvbIFTxZFerE/4ysyPlVd9f15bgreBWekK0MaTZ32C3Clv2k5S31797WcXz6EmkkaNFHcEAetsChyitR7dq6wyzYPxlyRVIBm8lR3fCaIaYcUoGoXaimcIysOgc+RrqvgcXiZ7Hi2yNmtpg0DVzVnYAS5EjSJcGsjcTlFtcNqEl7L1FqP0DqsGwW/sjef1BRzTDB0IMrItiAkV3zvVXE67UwC8l8DtJaveb+KBCvhL2wcBijfilXzIdwBBg7w/rtLaTDFUFqn4WvWk4buoQESbb7WK0KNM9McSPF8OlyNggkgySgoouX70t9POZEGMZyZ0=";
	asn1Primitive = DSSASN1Utils.toASN1Primitive(Utils.fromBase64(sigTst));
	Attribute sigTstsAttibute = new Attribute(PKCSObjectIdentifiers.id_aa_signatureTimeStampToken, new DERSet(asn1Primitive));
	assertFalse(DSSASN1Utils.isArchiveTimeStampToken(sigTstsAttibute));
	
	String certValues = "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";
	asn1Primitive = DSSASN1Utils.toASN1Primitive(Utils.fromBase64(certValues));
	Attribute certValuesAttibute = new Attribute(PKCSObjectIdentifiers.id_aa_ets_certValues, new DERSet(asn1Primitive));
	assertFalse(DSSASN1Utils.isArchiveTimeStampToken(certValuesAttibute));
}
 
Example #7
Source File: ProxyMessage.java    From xipki with Apache License 2.0 6 votes vote down vote up
public static GenSM2KeypairParams getInstance(Object obj) throws BadAsn1ObjectException {
  if (obj == null || obj instanceof GenSM2KeypairParams) {
    return (GenSM2KeypairParams) obj;
  }

  try {
    if (obj instanceof ASN1Sequence) {
      return new GenSM2KeypairParams((ASN1Sequence) obj);
    } else if (obj instanceof byte[]) {
      return getInstance(ASN1Primitive.fromByteArray((byte[]) obj));
    } else {
      throw new BadAsn1ObjectException("unknown object: " + obj.getClass().getName());
    }
  } catch (IOException | IllegalArgumentException ex) {
    throw new BadAsn1ObjectException("unable to parse encoded object: " + ex.getMessage(), ex);
  }
}
 
Example #8
Source File: ProxyMessage.java    From xipki with Apache License 2.0 6 votes vote down vote up
public static AddCertParams getInstance(Object obj) throws BadAsn1ObjectException {
  if (obj == null || obj instanceof AddCertParams) {
    return (AddCertParams) obj;
  }

  try {
    if (obj instanceof ASN1Sequence) {
      return new AddCertParams((ASN1Sequence) obj);
    } else if (obj instanceof byte[]) {
      return getInstance(ASN1Primitive.fromByteArray((byte[]) obj));
    } else {
      throw new BadAsn1ObjectException("unknown object: " + obj.getClass().getName());
    }
  } catch (IOException | IllegalArgumentException ex) {
    throw new BadAsn1ObjectException("unable to parse object: " + ex.getMessage(), ex);
  }
}
 
Example #9
Source File: SignatureValidationPolicy.java    From signer with GNU Lesser General Public License v3.0 6 votes vote down vote up
public void parse(ASN1Primitive derObject) {
    ASN1Sequence derSequence = ASN1Object.getDERSequence(derObject);

    this.signingPeriod = new SigningPeriod();
    this.signingPeriod.parse(derSequence.getObjectAt(0).toASN1Primitive());

    this.commonRules = new CommonRules();
    this.commonRules.parse(derSequence.getObjectAt(1).toASN1Primitive());

    this.commitmentRules = new CommitmentRules();
    this.commitmentRules.parse(derSequence.getObjectAt(2).toASN1Primitive());

    if (derSequence.size() == 4) {
        this.signPolExtensions = new SignPolExtensions();
        this.signPolExtensions.parse(derSequence.getObjectAt(3).toASN1Primitive());
    }
}
 
Example #10
Source File: ProxyMessage.java    From xipki with Apache License 2.0 6 votes vote down vote up
public static ServerCaps getInstance(Object obj) throws BadAsn1ObjectException {
  if (obj == null || obj instanceof ServerCaps) {
    return (ServerCaps) obj;
  }

  try {
    if (obj instanceof ASN1Sequence) {
      return new ServerCaps((ASN1Sequence) obj);
    } else if (obj instanceof byte[]) {
      return getInstance(ASN1Primitive.fromByteArray((byte[]) obj));
    } else {
      throw new BadAsn1ObjectException("unknown object: " + obj.getClass().getName());
    }
  } catch (IOException | IllegalArgumentException ex) {
    throw new BadAsn1ObjectException("unable to parse encoded object: " + ex.getMessage(), ex);
  }
}
 
Example #11
Source File: ProxyMessage.java    From xipki with Apache License 2.0 6 votes vote down vote up
public static NewKeyControl getInstance(Object obj) throws BadAsn1ObjectException {
  if (obj == null || obj instanceof NewKeyControl) {
    return (NewKeyControl) obj;
  }

  try {
    if (obj instanceof ASN1Sequence) {
      return new NewKeyControl((ASN1Sequence) obj);
    } else if (obj instanceof byte[]) {
      return getInstance(ASN1Primitive.fromByteArray((byte[]) obj));
    } else {
      throw new BadAsn1ObjectException("unknown object: " + obj.getClass().getName());
    }
  } catch (IOException | IllegalArgumentException ex) {
    throw new BadAsn1ObjectException("unable to parse object: " + ex.getMessage(), ex);
  }
}
 
Example #12
Source File: ProxyMessage.java    From xipki with Apache License 2.0 6 votes vote down vote up
public static GenRSAKeypairParams getInstance(Object obj)
    throws BadAsn1ObjectException {
  if (obj == null || obj instanceof GenRSAKeypairParams) {
    return (GenRSAKeypairParams) obj;
  }

  try {
    if (obj instanceof ASN1Sequence) {
      return new GenRSAKeypairParams((ASN1Sequence) obj);
    } else if (obj instanceof byte[]) {
      return getInstance(ASN1Primitive.fromByteArray((byte[]) obj));
    } else {
      throw new BadAsn1ObjectException("unknown object: " + obj.getClass().getName());
    }
  } catch (IOException | IllegalArgumentException ex) {
    throw new BadAsn1ObjectException("unable to parse encoded object: " + ex.getMessage(), ex);
  }
}
 
Example #13
Source File: ProxyMessage.java    From xipki with Apache License 2.0 6 votes vote down vote up
@Override
public ASN1Primitive toASN1Primitive() {
  ASN1EncodableVector vector = new ASN1EncodableVector();
  vector.add(new DERUTF8String(control.getLabel()));

  byte[] id = control.getId();
  if (id != null) {
    vector.add(new DERTaggedObject(0, new DEROctetString(id)));
  }

  Set<P11KeyUsage> usages = control.getUsages();
  if (CollectionUtil.isNotEmpty(usages)) {
    ASN1EncodableVector asn1Usages = new ASN1EncodableVector();
    for (P11KeyUsage usage : usages) {
      int value = usageToValueMap.get(usage);
      asn1Usages.add(new ASN1Enumerated(value));
    }
    vector.add(new DERTaggedObject(1, new DERSequence(asn1Usages)));
  }

  if (control.getExtractable() != null) {
    vector.add(new DERTaggedObject(2, ASN1Boolean.getInstance(control.getExtractable())));
  }

  return new DERSequence(vector);
}
 
Example #14
Source File: ProxyMessage.java    From xipki with Apache License 2.0 6 votes vote down vote up
public static GenSecretKeyParams getInstance(Object obj) throws BadAsn1ObjectException {
  if (obj == null || obj instanceof GenSecretKeyParams) {
    return (GenSecretKeyParams) obj;
  }

  try {
    if (obj instanceof ASN1Sequence) {
      return new GenSecretKeyParams((ASN1Sequence) obj);
    } else if (obj instanceof byte[]) {
      return getInstance(ASN1Primitive.fromByteArray((byte[]) obj));
    } else {
      throw new BadAsn1ObjectException("unknown object: " + obj.getClass().getName());
    }
  } catch (IOException | IllegalArgumentException ex) {
    throw new BadAsn1ObjectException("unable to parse encoded object: " + ex.getMessage(), ex);
  }
}
 
Example #15
Source File: XmppDomainVerifier.java    From ComplianceTester with BSD 3-Clause "New" or "Revised" License 6 votes vote down vote up
private static OtherName parseOtherName(byte[] otherName) {
    try {
        ASN1Primitive asn1Primitive = ASN1Primitive.fromByteArray(otherName);
        if (asn1Primitive instanceof DERTaggedObject) {
            ASN1Primitive inner = ((DERTaggedObject) asn1Primitive).getObject();
            if (inner instanceof DLSequence) {
                DLSequence sequence = (DLSequence) inner;
                if (sequence.size() >= 2 && sequence.getObjectAt(1) instanceof DERTaggedObject) {
                    String oid = sequence.getObjectAt(0).toString();
                    ASN1Primitive value = ((DERTaggedObject) sequence.getObjectAt(1)).getObject();
                    if (value instanceof DERUTF8String) {
                        return new OtherName(oid, ((DERUTF8String) value).getString());
                    } else if (value instanceof DERIA5String) {
                        return new OtherName(oid, ((DERIA5String) value).getString());
                    }
                }
            }
        }
        return null;
    } catch (IOException e) {
        return null;
    }
}
 
Example #16
Source File: Time.java    From signer with GNU Lesser General Public License v3.0 6 votes vote down vote up
@Override
public void parse(ASN1Primitive derObject) {
    if (derObject instanceof ASN1GeneralizedTime) {
        ASN1GeneralizedTime derGeneralizedTime = (ASN1GeneralizedTime) derObject;
        try {
            this.setTime(derGeneralizedTime.getDate());
        } catch (ParseException ex) {
            this.setTime(null);
        }
    } else if (derObject instanceof DERUTCTime) {
        DERUTCTime derUTCTime = (DERUTCTime) derObject;
        try {
            this.setTime(derUTCTime.getDate());
        } catch (ParseException exception) {
            this.setTime(null);
        }
    }
}
 
Example #17
Source File: ProxyMessage.java    From xipki with Apache License 2.0 6 votes vote down vote up
public static NewObjectControl getInstance(Object obj) throws BadAsn1ObjectException {
  if (obj == null || obj instanceof NewObjectControl) {
    return (NewObjectControl) obj;
  }

  try {
    if (obj instanceof ASN1Sequence) {
      return new NewObjectControl((ASN1Sequence) obj);
    } else if (obj instanceof byte[]) {
      return getInstance(ASN1Primitive.fromByteArray((byte[]) obj));
    } else {
      throw new BadAsn1ObjectException("unknown object: " + obj.getClass().getName());
    }
  } catch (IOException | IllegalArgumentException ex) {
    throw new BadAsn1ObjectException("unable to parse object: " + ex.getMessage(), ex);
  }
}
 
Example #18
Source File: X509Ext.java    From portecle with GNU General Public License v2.0 6 votes vote down vote up
/**
 * Get Microsoft CRL Next Publish (1.3.6.1.4.1.311.21.4) extension value as a string.
 *
 * @param bValue The octet string value
 * @return Extension value as a string
 * @throws IOException If an I/O problem occurs
 */
private String getMicrosoftCrlNextPublish(byte[] bValue)
    throws IOException
{
	DERUTCTime time = (DERUTCTime) ASN1Primitive.fromByteArray(bValue);
	String date = time.getAdjustedTime();
	try
	{
		date = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.LONG).format(time.getAdjustedDate());
	}
	catch (ParseException e)
	{
		// Ignored
	}
	return escapeHtml(date);
}
 
Example #19
Source File: DERIterator.java    From InflatableDonkey with MIT License 5 votes vote down vote up
<T extends ASN1Primitive> Optional<T> nextIf(Class<T> is) {
    if (hasNext() == false) {
        return Optional.empty();
    }

    ASN1Primitive primitive = DER.asPrimitive(peek());
    if (is.isAssignableFrom(primitive.getClass())) {
        next();
        return Optional.ofNullable(is.cast(primitive));

    } else {
        return Optional.empty();
    }
}
 
Example #20
Source File: X509Utils.java    From acme-client with Apache License 2.0 5 votes vote down vote up
public static String getCACertificateURL(X509Certificate certificate) throws IOException {
	byte[] bOctets = ((ASN1OctetString) ASN1Primitive.fromByteArray(certificate.getExtensionValue(Extension.authorityInfoAccess.getId()))).getOctets();
	AuthorityInformationAccess access = AuthorityInformationAccess.getInstance(ASN1Sequence.fromByteArray(bOctets));
	for (AccessDescription ad:access.getAccessDescriptions()){
		if (ad.getAccessMethod().equals(X509ObjectIdentifiers.id_ad_caIssuers)){
			return ad.getAccessLocation().getName().toString();
		}
	}
	return null;
}
 
Example #21
Source File: ProxyMessage.java    From xipki with Apache License 2.0 5 votes vote down vote up
@Override
public ASN1Primitive toASN1Primitive() {
  ASN1EncodableVector vector = new ASN1EncodableVector();
  vector.add(slotId);
  vector.add(objectId);
  vector.add(certificate);
  return new DERSequence(vector);
}
 
Example #22
Source File: DSSASN1Utils.java    From dss with GNU Lesser General Public License v2.1 5 votes vote down vote up
/**
 * Computes SHA-1 hash of the given {@code publicKey}'s
 * @param publicKey {@link PublicKey} to compute digest for
 * @return byte array of public key's SHA-1 hash
 */
public static byte[] computeSkiFromCertPublicKey(final PublicKey publicKey) {
	try {
		DLSequence seq = (DLSequence) ASN1Primitive.fromByteArray(publicKey.getEncoded());
		DERBitString item = (DERBitString) seq.getObjectAt(1);
		return DSSUtils.digest(DigestAlgorithm.SHA1, item.getOctets());
	} catch (IOException e) {
		throw new DSSException(e);
	}
}
 
Example #23
Source File: AuthorizationList.java    From android-key-attestation with Apache License 2.0 5 votes vote down vote up
private static Optional<Set<Integer>> findOptionalIntegerSetAuthorizationListEntry(
    Map<Integer, ASN1Primitive> authorizationMap, int tag) {
  ASN1Set asn1Set = (ASN1Set) findAuthorizationListEntry(authorizationMap, tag);
  if (asn1Set == null) {
    return Optional.empty();
  }
  Set<Integer> entrySet = new HashSet<>();
  for (ASN1Encodable value : asn1Set) {
    entrySet.add(ASN1Parsing.getIntegerFromAsn1(value));
  }
  return Optional.of(entrySet);
}
 
Example #24
Source File: EncryptedKeys.java    From InflatableDonkey with MIT License 5 votes vote down vote up
public EncryptedKeys(ASN1Primitive primitive) {
    DERIterator i = DER.asSequence(primitive);

    Map<Integer, ASN1Primitive> tagged = i.derTaggedObjects();

    x = DER.as(ASN1Integer.class, i)
            .getValue()
            .intValue();

    encryptedKeySet = DER.asSet(i, EncryptedKey::new);

    cont0 = Optional.ofNullable(tagged.get(CONT0))
            .map(DER.as(DEROctetString.class))
            .map(ASN1OctetString::getOctets);
}
 
Example #25
Source File: VerifySignature.java    From certificate-transparency-java with Apache License 2.0 5 votes vote down vote up
public static List<Ct.SignedCertificateTimestamp> parseSCTsFromCert(X509Certificate leafCert)
    throws IOException {
  byte[] bytes = leafCert.getExtensionValue(CTConstants.SCT_CERTIFICATE_OID);
  List<Ct.SignedCertificateTimestamp> scts = new ArrayList<>();
  ASN1Primitive p = ASN1Primitive.fromByteArray(ASN1OctetString.getInstance(bytes).getOctets());
  DEROctetString o = (DEROctetString) p;
  // These are serialized SCTs, we must de-serialize them into an array with one SCT each
  Ct.SignedCertificateTimestamp[] sctsFromCert = parseSCTsFromCertExtension(o.getOctets());
  for (Ct.SignedCertificateTimestamp signedCertificateTimestamp : sctsFromCert) {
    scts.add(signedCertificateTimestamp);
  }
  return scts;
}
 
Example #26
Source File: CAdESWithContentTimestampTest.java    From dss with GNU Lesser General Public License v2.1 5 votes vote down vote up
@Override
protected DSSDocument getSignedDocument() {
	FileDocument fileDocument = new FileDocument("src/test/resources/validation/Signature-C-BES-4.p7m");
	
	try (InputStream is = fileDocument.openStream(); ASN1InputStream asn1sInput = new ASN1InputStream(is)) {
		ASN1Sequence asn1Seq = (ASN1Sequence) asn1sInput.readObject();

		ASN1TaggedObject taggedObj = ASN1TaggedObject.getInstance(asn1Seq.getObjectAt(1));
		ASN1Primitive object = taggedObj.getObject();
		SignedData signedData = SignedData.getInstance(object);

		ASN1Set signerInfosAsn1 = signedData.getSignerInfos();
		ASN1Sequence seqSignedInfo = ASN1Sequence.getInstance(signerInfosAsn1.getObjectAt(0));

		SignerInfo signedInfo = SignerInfo.getInstance(seqSignedInfo);
		ASN1Set authenticatedAttributes = signedInfo.getAuthenticatedAttributes();

		boolean found = false;
		for (int i = 0; i < authenticatedAttributes.size(); i++) {
			ASN1Sequence authAttrSeq = ASN1Sequence.getInstance(authenticatedAttributes.getObjectAt(i));
			ASN1ObjectIdentifier attrOid = ASN1ObjectIdentifier.getInstance(authAttrSeq.getObjectAt(0));
			if (PKCSObjectIdentifiers.id_aa_ets_contentTimestamp.equals(attrOid)) {
				found = true;
			}
		}
		assertTrue(found);
	} catch (Exception e) {
		fail(e);
	}
	
	return fileDocument;
}
 
Example #27
Source File: X509CertificateUtils.java    From vespa with Apache License 2.0 5 votes vote down vote up
public static List<SubjectAlternativeName> getSubjectAlternativeNames(X509Certificate certificate) {
    try {
        byte[] extensionValue = certificate.getExtensionValue(SUBJECT_ALTERNATIVE_NAMES.getOId());
        if (extensionValue == null) return Collections.emptyList();
        ASN1Encodable asn1Encodable = ASN1Primitive.fromByteArray(extensionValue);
        if (asn1Encodable instanceof ASN1OctetString) {
            asn1Encodable = ASN1Primitive.fromByteArray(((ASN1OctetString) asn1Encodable).getOctets());
        }
        GeneralNames names = GeneralNames.getInstance(asn1Encodable);
        return SubjectAlternativeName.fromGeneralNames(names);
    } catch (IOException e) {
        throw new UncheckedIOException(e);
    }
}
 
Example #28
Source File: ClientIdentity.java    From fabric-chaincode-java with Apache License 2.0 5 votes vote down vote up
/**
 * parseAttributes returns a map of the attributes associated with an identity.
 *
 * @param extensionValue DER-encoded Octet string stored in the attributes
 *                       extension of the certificate, as a byte array
 * @return attrMap {Map<String, String>} a map of identity attributes as key
 *         value pair strings
 * @throws IOException
 */
private Map<String, String> parseAttributes(final byte[] extensionValue) throws IOException {

    final Map<String, String> attrMap = new HashMap<String, String>();

    // Create ASN1InputStream from extensionValue
    try (ByteArrayInputStream inStream = new ByteArrayInputStream(extensionValue); ASN1InputStream asn1InputStream = new ASN1InputStream(inStream)) {

        // Read the DER object
        final ASN1Primitive derObject = asn1InputStream.readObject();
        if (derObject instanceof DEROctetString) {
            final DEROctetString derOctetString = (DEROctetString) derObject;

            // Create attributeString from octets and create JSON object
            final String attributeString = new String(derOctetString.getOctets(), UTF_8);
            final JSONObject extJSON = new JSONObject(attributeString);
            final JSONObject attrs = extJSON.getJSONObject("attrs");

            final Iterator<String> keys = attrs.keys();
            while (keys.hasNext()) {
                final String key = keys.next();
                // Populate map with attributes and values
                attrMap.put(key, attrs.getString(key));
            }
        }
    } catch (final JSONException error) {
        // creating a JSON object failed
        // decoded extensionValue is not a string containing JSON
        logger.error(() -> logger.formatError(error));
        // return empty map
    }
    return attrMap;
}
 
Example #29
Source File: ProxyMessage.java    From xipki with Apache License 2.0 5 votes vote down vote up
@Override
public ASN1Primitive toASN1Primitive() {
  ASN1EncodableVector vector = new ASN1EncodableVector();
  vector.add(new ASN1Integer(mechanism));
  if (params != null) {
    vector.add(params);
  }
  return new DERSequence(vector);
}
 
Example #30
Source File: PrivateKey.java    From InflatableDonkey with MIT License 5 votes vote down vote up
@Override
public ASN1Primitive toASN1Primitive() {

    ASN1EncodableVector vector = DER.vector(
            new DEROctetString(privateKey()),
            publicKeyInfo.orElse(null));

    return new DERSequence(vector);
}