GenerateSampleBlackLists.js
Summary
Example black list generator
load("BlackListGenerator.js");
load("tools/x509certificategenerator.js");
function writeFileOnDisk(name, content) {
print("Writing " + filename);
var file = new java.io.FileOutputStream(filename);
file.write(content);
file.close();
}
var crypto = new Crypto();
print("Generating key pair and self-signed certificate for Alice...\n");
var privKeyA = new Key();
privKeyA.setType(Key.PRIVATE);
var pubKeyA = new Key();
pubKeyA.setType(Key.PUBLIC);
pubKeyA.setSize(2048);
crypto.generateKeyPair(Crypto.RSA, pubKeyA, privKeyA);
var x = new X509CertificateGenerator(crypto);
x.reset();
x.setSerialNumber(new ByteString("01", HEX));
x.setSignatureAlgorithm(Crypto.RSA);
var issuer = { C:"UT", O:"ACME Corporation", CN:"Test-CA" };
x.setIssuer(issuer);
x.setNotBefore("060825120000Z");
x.setNotAfter("160825120000Z");
var subject = { C:"UT", O:"Utopia CA", OU:"ACME Corporation", CN:"Alice" };
x.setSubject(subject);
x.setPublicKey(pubKeyA);
x.addKeyUsageExtension( X509CertificateGenerator.digitalSignature |
X509CertificateGenerator.keyCertSign |
X509CertificateGenerator.cRLSign );
x.addBasicConstraintsExtension(true, 0);
x.addSubjectKeyIdentifierExtension();
x.addAuthorityKeyIdentifierExtension(pubKeyA);
var certA = x.generateX509Certificate(privKeyA);
var numberOfEntries = 10;
print("Creating list for " + numberOfEntries + " entries\n");
generator = new BlackListGenerator();
var version = new ByteString("00", HEX);
generator.setVersion(version);
generator.setType(BlackListGenerator.ADDED_LIST);
var listID = new ByteString("01", HEX);
generator.setListID(listID);
var sector_A = crypto.generateRandom(32);
var sectorSpecificIDs_A = new Array();
for (var i = 0; i < numberOfEntries; i++) {
sectorSpecificIDs_A[i] = crypto.generateRandom(32);
}
generator.addBlackListDetails(sector_A, sectorSpecificIDs_A);
var sector_B = crypto.generateRandom(32);
var sectorSpecificIDs_B = new Array();
for (var i = 0; i < numberOfEntries; i++) {
sectorSpecificIDs_B[i] = crypto.generateRandom(32);
}
generator.addBlackListDetails(sector_B, sectorSpecificIDs_B);
var blackList = generator.generateBlackList();
var bl_added = new ASN1(blackList);
print(bl_added);
print("Total bytes: " + blackList.length);
var cmsGenerator = new CMSGenerator(CMSGenerator.TYPE_SIGNED_DATA);
cmsGenerator.setDataContent(blackList);
cmsGenerator.addSigner(privKeyA, certA, new ByteString("id-sha1", OID), true);
var contentOID = new ByteString("0.4.0.127.0.7.3.2.2", OID);
var cms = cmsGenerator.generate(contentOID);
var filename = GPSystem.mapFilename("blacklist.bin", GPSystem.USR);
writeFileOnDisk(filename, cms);
Documentation generated by
JSDoc on Tue Sep 3 22:29:38 2013