package org.activityinfo.service.blob; import com.google.appengine.api.appidentity.AppIdentityService; import com.google.appengine.api.appidentity.PublicCertificate; import org.junit.internal.AssumptionViolatedException; import java.io.File; import java.io.FileInputStream; import java.security.KeyStore; import java.security.PrivateKey; import java.security.Signature; import java.util.Collection; public class TestingIdentityService implements AppIdentityService { public static final String SERVICE_ACCOUNT_EMAIL = "135288259907-k64g5vuv9en1o89on1ru16hrusvimn9t@developer.gserviceaccount.com"; public static final String PASSWORD = "notasecret"; private PrivateKey privateKey; public TestingIdentityService() throws Exception { privateKey = loadPrivateKey(); } private PrivateKey loadPrivateKey() throws Exception { File keyFile = new File("C:\\Users\\Jorden\\BeDataDriven Development-7ca1136cac21.p12"); if (!keyFile.exists()) { throw new AssumptionViolatedException("Key file is not present"); } KeyStore keystore = KeyStore.getInstance("PKCS12"); try (FileInputStream in = new FileInputStream(keyFile)) { keystore.load(in, PASSWORD.toCharArray()); } return (PrivateKey) keystore.getKey("privatekey", PASSWORD.toCharArray()); } @Override public SigningResult signForApp(byte[] bytes) { try { Signature dsa = Signature.getInstance("SHA256withRSA"); dsa.initSign(privateKey); dsa.update(bytes); return new SigningResult(SERVICE_ACCOUNT_EMAIL, dsa.sign()); } catch(Exception e) { throw new RuntimeException(e); } } @Override public Collection<PublicCertificate> getPublicCertificatesForApp() { throw new UnsupportedOperationException(); } @Override public String getServiceAccountName() { return SERVICE_ACCOUNT_EMAIL; } @Override public String getDefaultGcsBucketName() { throw new UnsupportedOperationException(); } @Override public GetAccessTokenResult getAccessTokenUncached(Iterable<String> strings) { throw new UnsupportedOperationException(); } @Override public GetAccessTokenResult getAccessToken(Iterable<String> strings) { throw new UnsupportedOperationException(); } @Override public ParsedAppId parseFullAppId(String s) { throw new UnsupportedOperationException(); } }